From 55d959029df940b3299b7f96d02ce55d7f7eee46 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 19:49:46 -0400 Subject: [PATCH 01/13] Bump nokogiri from 1.15.6 to 1.16.5 in /docs (#575) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.15.6 to 1.16.5. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.15.6...v1.16.5) --- updated-dependencies: - dependency-name: nokogiri dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 45d98251..aecf3b2e 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -221,7 +221,7 @@ GEM jekyll-seo-tag (~> 2.1) minitest (5.22.3) mutex_m (0.2.0) - nokogiri (1.15.6-x86_64-linux) + nokogiri (1.16.5-x86_64-linux) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) From 349bed37a1edf03f6b8ed7061bdd97f3e50df8eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 May 2024 21:37:22 -0400 Subject: [PATCH 02/13] Bump rexml from 3.2.6 to 3.2.8 in /docs (#577) Bumps [rexml](https://github.com/ruby/rexml) from 3.2.6 to 3.2.8. - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.2.6...v3.2.8) --- updated-dependencies: - dependency-name: rexml dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/Gemfile.lock | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index aecf3b2e..3cde142f 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -233,7 +233,8 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) - rexml (3.2.6) + rexml (3.2.8) + strscan (>= 3.0.9) rouge (3.30.0) ruby2_keywords (0.0.5) rubyzip (2.3.2) @@ -248,6 +249,7 @@ GEM faraday (>= 0.17.3, < 3) simpleidn (0.2.1) unf (~> 0.1.4) + strscan (3.1.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) typhoeus (1.4.1) From 1ba26876fc9dc1dd290fac657914cc1a8cf4c487 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Aug 2024 20:16:12 -0700 Subject: [PATCH 03/13] Bump rexml from 3.2.8 to 3.3.3 in /docs (#588) Bumps [rexml](https://github.com/ruby/rexml) from 3.2.8 to 3.3.3. - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.2.8...v3.3.3) --- updated-dependencies: - dependency-name: rexml dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 3cde142f..3f538d4d 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -233,8 +233,8 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) - rexml (3.2.8) - strscan (>= 3.0.9) + rexml (3.3.3) + strscan rouge (3.30.0) ruby2_keywords (0.0.5) rubyzip (2.3.2) From 619115c0d22f5604fd20160f9a9955c1b2c977b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Aug 2024 17:20:09 -0400 Subject: [PATCH 04/13] Bump rexml from 3.3.3 to 3.3.6 in /docs (#595) Bumps [rexml](https://github.com/ruby/rexml) from 3.3.3 to 3.3.6. - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.3.3...v3.3.6) --- updated-dependencies: - dependency-name: rexml dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 3f538d4d..1bddb3ef 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -233,7 +233,7 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) - rexml (3.3.3) + rexml (3.3.6) strscan rouge (3.30.0) ruby2_keywords (0.0.5) From 4dae04fd6406dcae1f6183703439f0e114dd9ca0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:42:46 -0400 Subject: [PATCH 05/13] Bump rexml from 3.3.6 to 3.3.9 in /docs (#608) Bumps [rexml](https://github.com/ruby/rexml) from 3.3.6 to 3.3.9. - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.3.6...v3.3.9) --- updated-dependencies: - dependency-name: rexml dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/Gemfile.lock | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 1bddb3ef..384fcb39 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -233,8 +233,7 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) - rexml (3.3.6) - strscan + rexml (3.3.9) rouge (3.30.0) ruby2_keywords (0.0.5) rubyzip (2.3.2) @@ -249,7 +248,6 @@ GEM faraday (>= 0.17.3, < 3) simpleidn (0.2.1) unf (~> 0.1.4) - strscan (3.1.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) typhoeus (1.4.1) From bb141853f50eabea0997b6ceb92c8dfdcf744c1d Mon Sep 17 00:00:00 2001 From: ClearScript Date: Tue, 3 Dec 2024 08:58:13 -0500 Subject: [PATCH 06/13] Store assembly table as XML to eliminate BinaryFormatter security issues. --- .../Util/AssemblyTable.NetFramework.cs | 53 ++++++++++++++++--- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/ClearScript/Util/AssemblyTable.NetFramework.cs b/ClearScript/Util/AssemblyTable.NetFramework.cs index b0571b29..2365aff9 100644 --- a/ClearScript/Util/AssemblyTable.NetFramework.cs +++ b/ClearScript/Util/AssemblyTable.NetFramework.cs @@ -3,9 +3,11 @@ using System; using System.Collections.Concurrent; +using System.Collections.Generic; using System.IO; +using System.Linq; using System.Reflection; -using System.Runtime.Serialization.Formatters.Binary; +using System.Xml.Serialization; using Microsoft.Win32; namespace Microsoft.ClearScript.Util @@ -71,8 +73,8 @@ private static bool ReadAssemblyTable(string rootPath) { using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { - var formatter = new BinaryFormatter(); - table = (ConcurrentDictionary)formatter.Deserialize(stream); + var serializer = new XmlSerializer(typeof(AssemblyTableData)); + table = ((AssemblyTableData)serializer.Deserialize(stream)).CreateTable(); } } }); @@ -120,8 +122,8 @@ private static bool WriteAssemblyTable(string rootPath) var filePath = GetFilePath(rootPath); using (var stream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)) { - var formatter = new BinaryFormatter(); - formatter.Serialize(stream, table); + var serializer = new XmlSerializer(typeof(AssemblyTableData)); + serializer.Serialize(stream, new AssemblyTableData(table)); } }); } @@ -131,7 +133,7 @@ private static string GetFilePath(string rootPath) var dirPath = Path.Combine(rootPath, GetRuntimeVersionDirectoryName()); Directory.CreateDirectory(dirPath); - return Path.Combine(dirPath, "AssemblyTable.bin"); + return Path.Combine(dirPath, "AssemblyTable.xml"); } private static string GetRuntimeVersionDirectoryName() @@ -142,4 +144,43 @@ private static string GetRuntimeVersionDirectoryName() #endregion } + + /// + [XmlRoot("AssemblyTable")] + public sealed class AssemblyTableData + { + /// + [XmlArray] public List Entries; + + /// + public AssemblyTableData() + { + } + + /// + public AssemblyTableData(ConcurrentDictionary table) + { + Entries = table.Select(pair => new Entry { Name = pair.Key, FullName = pair.Value }).ToList(); + } + + /// + public ConcurrentDictionary CreateTable() + { + return (Entries is null) ? null : new ConcurrentDictionary(Entries.Select(entry => new KeyValuePair(entry.Name, entry.FullName))); + } + + #region Nested type: Entry + + /// + public sealed class Entry + { + /// + [XmlAttribute] public string Name { get; set; } + + /// + [XmlAttribute] public string FullName { get; set; } + } + + #endregion + } } From b594ec1710c2db14e931a428a12e2ebacffde9c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ansis=20M=C4=81li=C5=86=C5=A1?= Date: Tue, 3 Dec 2024 15:50:23 +0100 Subject: [PATCH 07/13] Don't depend on vulnerable packages (#614) --- NetCore/ClearScript.V8/ClearScript.V8.csproj | 4 +++- NetCore/ClearScriptConsole/ClearScriptConsole.csproj | 2 +- NetCore/ClearScriptTest/ClearScriptTest.csproj | 1 + NetFramework/ClearScript.V8/ClearScript.V8.csproj | 3 ++- NetFramework/ClearScriptConsole/ClearScriptConsole.csproj | 2 +- NetFramework/ClearScriptTest/ClearScriptTest.csproj | 3 ++- .../ClearScript.V8.ICUData/ClearScript.V8.ICUData.csproj | 3 ++- NetStandard/ClearScript.V8/ClearScript.V8.csproj | 4 +++- NetStandard/ClearScriptConsole/ClearScriptConsole.csproj | 3 ++- .../ClearScriptTest.NetStandard.csproj | 1 + Unix/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj | 1 + Unix/ClearScriptConsole/ClearScriptConsole.csproj | 3 ++- .../ClearScriptTest.NetStandard.csproj | 1 + Unix/ClearScriptTest/ClearScriptTest.csproj | 1 + 14 files changed, 23 insertions(+), 9 deletions(-) diff --git a/NetCore/ClearScript.V8/ClearScript.V8.csproj b/NetCore/ClearScript.V8/ClearScript.V8.csproj index 3d5e764e..43cd7140 100644 --- a/NetCore/ClearScript.V8/ClearScript.V8.csproj +++ b/NetCore/ClearScript.V8/ClearScript.V8.csproj @@ -144,7 +144,9 @@ - + + + diff --git a/NetCore/ClearScriptConsole/ClearScriptConsole.csproj b/NetCore/ClearScriptConsole/ClearScriptConsole.csproj index 9c912312..08b531fb 100644 --- a/NetCore/ClearScriptConsole/ClearScriptConsole.csproj +++ b/NetCore/ClearScriptConsole/ClearScriptConsole.csproj @@ -40,7 +40,7 @@ - + diff --git a/NetCore/ClearScriptTest/ClearScriptTest.csproj b/NetCore/ClearScriptTest/ClearScriptTest.csproj index 02b7ddcf..90806daf 100644 --- a/NetCore/ClearScriptTest/ClearScriptTest.csproj +++ b/NetCore/ClearScriptTest/ClearScriptTest.csproj @@ -136,6 +136,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/NetFramework/ClearScript.V8/ClearScript.V8.csproj b/NetFramework/ClearScript.V8/ClearScript.V8.csproj index 7337379d..ea73290b 100644 --- a/NetFramework/ClearScript.V8/ClearScript.V8.csproj +++ b/NetFramework/ClearScript.V8/ClearScript.V8.csproj @@ -175,7 +175,8 @@ - + + diff --git a/NetFramework/ClearScriptConsole/ClearScriptConsole.csproj b/NetFramework/ClearScriptConsole/ClearScriptConsole.csproj index 6b72dc46..14b98fe3 100644 --- a/NetFramework/ClearScriptConsole/ClearScriptConsole.csproj +++ b/NetFramework/ClearScriptConsole/ClearScriptConsole.csproj @@ -44,7 +44,7 @@ - + diff --git a/NetFramework/ClearScriptTest/ClearScriptTest.csproj b/NetFramework/ClearScriptTest/ClearScriptTest.csproj index 6a7989df..abdb720e 100644 --- a/NetFramework/ClearScriptTest/ClearScriptTest.csproj +++ b/NetFramework/ClearScriptTest/ClearScriptTest.csproj @@ -126,7 +126,8 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + + diff --git a/NetStandard/ClearScript.V8.ICUData/ClearScript.V8.ICUData.csproj b/NetStandard/ClearScript.V8.ICUData/ClearScript.V8.ICUData.csproj index 60af8250..1d5c8d50 100644 --- a/NetStandard/ClearScript.V8.ICUData/ClearScript.V8.ICUData.csproj +++ b/NetStandard/ClearScript.V8.ICUData/ClearScript.V8.ICUData.csproj @@ -52,7 +52,8 @@ - + + diff --git a/NetStandard/ClearScript.V8/ClearScript.V8.csproj b/NetStandard/ClearScript.V8/ClearScript.V8.csproj index 7bdcb1b8..11e14a78 100644 --- a/NetStandard/ClearScript.V8/ClearScript.V8.csproj +++ b/NetStandard/ClearScript.V8/ClearScript.V8.csproj @@ -141,7 +141,9 @@ - + + + diff --git a/NetStandard/ClearScriptConsole/ClearScriptConsole.csproj b/NetStandard/ClearScriptConsole/ClearScriptConsole.csproj index eeba81e9..77abf8be 100644 --- a/NetStandard/ClearScriptConsole/ClearScriptConsole.csproj +++ b/NetStandard/ClearScriptConsole/ClearScriptConsole.csproj @@ -42,7 +42,8 @@ - + + diff --git a/NetStandard/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj b/NetStandard/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj index 076adbf0..5a6b1b2b 100644 --- a/NetStandard/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj +++ b/NetStandard/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj @@ -141,6 +141,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Unix/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj b/Unix/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj index 698576fa..7a73e7bb 100644 --- a/Unix/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj +++ b/Unix/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj @@ -43,6 +43,7 @@ + diff --git a/Unix/ClearScriptConsole/ClearScriptConsole.csproj b/Unix/ClearScriptConsole/ClearScriptConsole.csproj index 17860462..b13dec7e 100644 --- a/Unix/ClearScriptConsole/ClearScriptConsole.csproj +++ b/Unix/ClearScriptConsole/ClearScriptConsole.csproj @@ -46,7 +46,8 @@ - + + diff --git a/Unix/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj b/Unix/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj index 1e17ccba..35adb93c 100644 --- a/Unix/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj +++ b/Unix/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj @@ -114,6 +114,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Unix/ClearScriptTest/ClearScriptTest.csproj b/Unix/ClearScriptTest/ClearScriptTest.csproj index 7adbb7dd..cd8b143d 100644 --- a/Unix/ClearScriptTest/ClearScriptTest.csproj +++ b/Unix/ClearScriptTest/ClearScriptTest.csproj @@ -260,6 +260,7 @@ + From 1d2800b2575863b4de9cc2cb6d05c4b2623b49f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ansis=20M=C4=81li=C5=86=C5=A1?= Date: Fri, 13 Dec 2024 22:04:21 +0100 Subject: [PATCH 08/13] Change MethodBindResult to a readonly ref struct (#616) * Changed MethodBindResult to a readonly ref struct * Use IsSuccess, add braces around single line blocks --- ClearScript/HostItem.InvokeMethod.cs | 165 +++++++++++---------------- 1 file changed, 64 insertions(+), 101 deletions(-) diff --git a/ClearScript/HostItem.InvokeMethod.cs b/ClearScript/HostItem.InvokeMethod.cs index c6e74dea..9d8890ca 100644 --- a/ClearScript/HostItem.InvokeMethod.cs +++ b/ClearScript/HostItem.InvokeMethod.cs @@ -53,7 +53,7 @@ private object InvokeMethod(string name, object[] args, object[] bindArgs) private object InvokeMethod(string name, Type[] typeArgs, object[] args, object[] bindArgs) { var bindResult = BindMethod(name, typeArgs, args, bindArgs); - if ((bindResult is MethodBindFailure) && Target.GetFlags(this).HasFlag(HostTargetFlags.AllowExtensionMethods)) + if (!bindResult.IsSuccess && Target.GetFlags(this).HasFlag(HostTargetFlags.AllowExtensionMethods)) { var targetArg = Target.Target.ToEnumerable(); var extensionArgs = targetArg.Concat(args).ToArray(); @@ -65,7 +65,7 @@ private object InvokeMethod(string name, Type[] typeArgs, object[] args, object[ { var extensionHostItem = (HostItem)Wrap(Engine, HostType.Wrap(type)); var extensionBindResult = extensionHostItem.BindMethod(name, typeArgs, extensionArgs, extensionBindArgs); - if (extensionBindResult is MethodBindSuccess) + if (extensionBindResult.IsSuccess) { var result = extensionBindResult.Invoke(extensionHostItem); for (var index = 1; index < extensionArgs.Length; index++) @@ -121,16 +121,16 @@ private MethodBindResult BindMethod(string name, Type[] typeArgs, object[] args, if (forceReflection) { - result = new MethodBindFailure(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); + result = new MethodBindResult(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); } else { result = BindMethodInternal(signature, AccessContext, bindFlags, Target, name, typeArgs, args, bindArgs); if (!result.IsPreferredMethod(this, name)) { - if (result is MethodBindSuccess) + if (result.IsSuccess) { - result = new MethodBindFailure(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); + result = new MethodBindResult(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); } foreach (var altName in GetAltMethodNames(name, bindFlags)) @@ -145,10 +145,10 @@ private MethodBindResult BindMethod(string name, Type[] typeArgs, object[] args, } } - if ((result is MethodBindFailure) && (forceReflection || Engine.UseReflectionBindFallback)) + if ((!result.IsSuccess) && (forceReflection || Engine.UseReflectionBindFallback)) { var reflectionResult = BindMethodUsingReflection(bindFlags, Target, name, typeArgs, args, bindArgs); - if ((reflectionResult is MethodBindSuccess) || forceReflection) + if ((reflectionResult.IsSuccess) || forceReflection) { result = reflectionResult; } @@ -197,7 +197,7 @@ private static MethodBindResult BindMethodCore(Type bindContext, BindingFlags bi var rawResult = BindMethodRaw(bindFlags, binder, target, bindArgs); var result = MethodBindResult.Create(name, bindFlags, rawResult, target, args); - if ((result is MethodBindFailure) && !(target is HostType) && target.Type.IsInterface) + if (!result.IsSuccess && !(target is HostType) && target.Type.IsInterface) { // binding through interface failed; try base interfaces foreach (var interfaceType in target.Type.GetInterfaces()) @@ -206,7 +206,7 @@ private static MethodBindResult BindMethodCore(Type bindContext, BindingFlags bi rawResult = BindMethodRaw(bindFlags, binder, baseInterfaceTarget, bindArgs); var baseInterfaceResult = MethodBindResult.Create(name, bindFlags, rawResult, target, args); - if (baseInterfaceResult is MethodBindSuccess) + if (baseInterfaceResult.IsSuccess) { return baseInterfaceResult; } @@ -217,7 +217,7 @@ private static MethodBindResult BindMethodCore(Type bindContext, BindingFlags bi rawResult = BindMethodRaw(bindFlags, binder, objectTarget, bindArgs); var objectResult = MethodBindResult.Create(name, bindFlags, rawResult, target, args); - if (objectResult is MethodBindSuccess) + if (objectResult.IsSuccess) { return objectResult; } @@ -354,11 +354,11 @@ private MethodBindResult BindMethodUsingReflection(BindingFlags bindFlags, HostT } catch (AmbiguousMatchException) { - return new MethodBindFailure(() => new AmbiguousMatchException(MiscHelpers.FormatInvariant("The object has multiple methods named '{0}' that match the specified arguments", name))); + return new MethodBindResult(() => new AmbiguousMatchException(MiscHelpers.FormatInvariant("The object has multiple methods named '{0}' that match the specified arguments", name))); } } - return new MethodBindFailure(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); + return new MethodBindResult(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); } private IEnumerable GetReflectionCandidates(BindingFlags bindFlags, HostTarget hostTarget, string name, Type[] typeArgs) @@ -437,117 +437,80 @@ internal static long GetCoreBindCount() #region Nested type: MethodBindResult - private abstract class MethodBindResult - { - public static MethodBindResult Create(string name, BindingFlags bindFlags, object rawResult, HostTarget hostTarget, object[] args) - { - var method = rawResult as MethodInfo; - if (method != null) - { - if (method.IsStatic && !bindFlags.HasFlag(BindingFlags.Static)) - { - return new MethodBindFailure(() => new InvalidOperationException(MiscHelpers.FormatInvariant("Cannot access static method '{0}' in non-static context", method.Name))); - } - - return new MethodBindSuccess(hostTarget, method, args); - } - - return new MethodBindFailure((rawResult as Func) ?? (() => new NotSupportedException(MiscHelpers.FormatInvariant("Invocation of method '{0}' failed (unrecognized binding)", name)))); - } - - public abstract object RawResult { get; } - - public abstract bool IsPreferredMethod(HostItem hostItem, string name); - - public abstract bool IsUnblockedMethod(HostItem hostItem); - - public abstract object Invoke(HostItem hostItem); - } - - #endregion - - #region Nested type: MethodBindSuccess - - private sealed class MethodBindSuccess : MethodBindResult - { - private static readonly MethodInfo[] reflectionMethods = + private readonly ref struct MethodBindResult + { + private readonly HostTarget hostTarget; + private readonly MethodInfo method; + private readonly object[] args; + private readonly Func exceptionFactory; + + private static readonly MethodInfo[] reflectionMethods = { typeof(object).GetMethod("GetType"), typeof(System.Runtime.InteropServices._Exception).GetMethod("GetType"), typeof(Exception).GetMethod("GetType") - }; - - private readonly HostTarget hostTarget; - private readonly MethodInfo method; - private readonly object[] args; - - public MethodBindSuccess(HostTarget hostTarget, MethodInfo method, object[] args) + }; + + public MethodBindResult(HostTarget hostTarget, MethodInfo method, object[] args) { this.hostTarget = hostTarget; this.method = method; this.args = args; + exceptionFactory = null; + } + + public MethodBindResult(Func exceptionFactory) + { + hostTarget = null; + method = null; + args = null; + this.exceptionFactory = exceptionFactory; } - #region MethodBindResult overrides - - public override object RawResult => method; - - public override bool IsPreferredMethod(HostItem hostItem, string name) - { - return IsUnblockedMethod(hostItem) && (method.GetScriptName(hostItem) == name); - } - - public override bool IsUnblockedMethod(HostItem hostItem) - { - return !method.IsBlockedFromScript(hostItem, hostItem.DefaultAccess); - } - - public override object Invoke(HostItem hostItem) + public static MethodBindResult Create(string name, BindingFlags bindFlags, object rawResult, HostTarget hostTarget, object[] args) { - if (reflectionMethods.Contains(method, MemberComparer.Instance)) + var method = rawResult as MethodInfo; + if (method != null) { - hostItem.Engine.CheckReflection(); - } - - return InvokeHelpers.InvokeMethod(hostItem, method, hostTarget.InvokeTarget, args, method.GetScriptMemberFlags(hostItem)); - } - - #endregion - } + if (method.IsStatic && !bindFlags.HasFlag(BindingFlags.Static)) + { + return new MethodBindResult(() => new InvalidOperationException(MiscHelpers.FormatInvariant("Cannot access static method '{0}' in non-static context", method.Name))); + } - #endregion + return new MethodBindResult(hostTarget, method, args); + } - #region Nested type: MethodBindFailure + return new MethodBindResult((rawResult as Func) ?? (() => new NotSupportedException(MiscHelpers.FormatInvariant("Invocation of method '{0}' failed (unrecognized binding)", name)))); + } + + public bool IsSuccess => method != null; - private sealed class MethodBindFailure : MethodBindResult - { - private readonly Func exceptionFactory; + public object RawResult => IsSuccess ? (object)method : exceptionFactory; - public MethodBindFailure(Func exceptionFactory) - { - this.exceptionFactory = exceptionFactory; + public bool IsPreferredMethod(HostItem hostItem, string name) + { + return IsSuccess && IsUnblockedMethod(hostItem) && (method.GetScriptName(hostItem) == name); } - #region MethodBindResult overrides - - public override object RawResult => exceptionFactory; - - public override bool IsPreferredMethod(HostItem hostItem, string name) - { - return false; + public bool IsUnblockedMethod(HostItem hostItem) + { + return IsSuccess && !method.IsBlockedFromScript(hostItem, hostItem.DefaultAccess); } - public override bool IsUnblockedMethod(HostItem hostItem) - { - return false; - } + public object Invoke(HostItem hostItem) + { + if (!IsSuccess) + { + throw exceptionFactory(); + } + + if (reflectionMethods.Contains(method, MemberComparer.Instance)) + { + hostItem.Engine.CheckReflection(); + } - public override object Invoke(HostItem hostItem) - { - throw exceptionFactory(); + return InvokeHelpers.InvokeMethod(hostItem, method, hostTarget.InvokeTarget, args, method.GetScriptMemberFlags(hostItem)); } - - #endregion } #endregion From 855b7816373160e46a11a2efe71769f26d0acc48 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Feb 2025 07:15:20 -0500 Subject: [PATCH 09/13] Bump nokogiri from 1.16.5 to 1.18.3 in /docs (#638) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.16.5 to 1.18.3. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/v1.18.3/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.16.5...v1.18.3) --- updated-dependencies: - dependency-name: nokogiri dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 384fcb39..a8c53d4e 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -221,7 +221,7 @@ GEM jekyll-seo-tag (~> 2.1) minitest (5.22.3) mutex_m (0.2.0) - nokogiri (1.16.5-x86_64-linux) + nokogiri (1.18.3-x86_64-linux-gnu) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) @@ -229,7 +229,7 @@ GEM pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (5.0.4) - racc (1.7.3) + racc (1.8.1) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) From ebfa4268fdd4899a300b4b339a5dec5580a37e9c Mon Sep 17 00:00:00 2001 From: ClearScript Date: Fri, 7 Mar 2025 12:03:31 -0500 Subject: [PATCH 10/13] =?UTF-8?q?ClearScript=207.5:=20[V8]=20added=20initi?= =?UTF-8?q?al=20support=20for=20the=20new=20FastProxy=20API;=20overhauled?= =?UTF-8?q?=20the=20codebase=20in=20favor=20of=20static=20lambdas;=20repla?= =?UTF-8?q?ced=20most=20scope=20objects=20with=20ref=20structures;=20minim?= =?UTF-8?q?ized=20boxing=20and=20structure=20copying=20on=20performance-cr?= =?UTF-8?q?itical=20code=20paths;=20eliminated=20the=20use=20of=20argument?= =?UTF-8?q?=20vectors=20for=20host=20calls=20with=20typical=20argument=20c?= =?UTF-8?q?ounts;=20[V8]=20added=20span=20support=20to=20array=20buffers?= =?UTF-8?q?=20and=20related=20types=20(GitHub=20Issue=20#632);=20[V8]=20en?= =?UTF-8?q?hanced=20task-promise=20interop=20with=20support=20for=20pre-se?= =?UTF-8?q?ttled=20promises=20and=20pre-completed=20tasks=20(GitHub=20Issu?= =?UTF-8?q?e=20#641);=20[V8]=20added=20V8ScriptEngineFlags.EnableArrayConv?= =?UTF-8?q?ersion=20(GitHub=20Issue=20#634);=20[V8]=20fixed=20fast=20data?= =?UTF-8?q?=20transfer=20bounds=20checking=20for=20zero-length=20arrays=20?= =?UTF-8?q?and=20buffers=20(GitHub=20Issue=20#581);=20[V8]=20added=20impor?= =?UTF-8?q?t.meta.setResult=20to=20enable=20reliable=20module=20evaluation?= =?UTF-8?q?=20results;=20[V8]=20fixed=20MaxHeapSize=20and=20MaxRuntimeHeap?= =?UTF-8?q?Size=20behavior=20(GitHub=20Issue=20#571);=20incorporated=20Ans?= =?UTF-8?q?is=20M=C4=81li=C5=86=C5=A1'=20conversion=20of=20MethodBindResul?= =?UTF-8?q?t=20to=20a=20ref=20structure=20(GitHub=20PR=20#616);=20added=20?= =?UTF-8?q?promise=20state=20indicators=20to=20JavaScriptObjectFlags;=20fi?= =?UTF-8?q?xed=20XMLDOM=20enumeration=20issue=20discussed=20in=20GitHub=20?= =?UTF-8?q?Issue=20#594;=20added=20sparse=20argument=20support=20to=20the?= =?UTF-8?q?=20reflection=20binder=20(GitHub=20Discussion=20#624);=20added?= =?UTF-8?q?=20ScriptEngine.NullImportValue=20(GitHub=20Issue=20#629);=20sw?= =?UTF-8?q?itched=20to=20XML=20for=20assembly=20table=20storage=20to=20eli?= =?UTF-8?q?minate=20security=20issues=20related=20to=20BinaryFormatter;=20?= =?UTF-8?q?updated=20API=20documentation.=20Tested=20with=20V8=2013.3.415.?= =?UTF-8?q?23.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ClearScript.NoV8.sln.DotSettings | 12 +- ClearScript.sln | 354 +++ ClearScript.sln.DotSettings | 12 +- ClearScript/BindSignature.cs | 14 +- ClearScript/CanonicalRefTable.cs | 21 +- ClearScript/CustomAttributeCache.cs | 6 +- ClearScript/CustomAttributeLoader.cs | 4 +- ClearScript/DefaultDocumentLoader.cs | 46 +- ClearScript/DelegateFactory.cs | 14 +- ClearScript/DocumentAccessFlags.cs | 10 + ClearScript/DocumentCategory.cs | 4 +- ClearScript/DocumentFlags.cs | 8 +- ClearScript/DocumentInfo.cs | 4 +- ClearScript/DocumentLoader.cs | 2 +- ClearScript/DocumentSettings.cs | 4 +- ClearScript/Exports/VersionSymbols.h | 6 +- ClearScript/ExtendedHostFunctions.cs | 10 +- ClearScript/ExtensionMethods.cs | 4 +- ClearScript/Extensions.cs | 12 +- ClearScript/HostEvent.cs | 6 +- ClearScript/HostFunctions.cs | 16 +- ClearScript/HostIndexedProperty.cs | 4 +- ClearScript/HostItem.InvokeMethod.cs | 1154 ++++---- ClearScript/HostItem.NetFramework.cs | 44 - ClearScript/HostItem.NetStandard.cs | 68 +- ClearScript/HostItem.cs | 719 +++-- ClearScript/HostItemCollateral.cs | 18 +- ClearScript/HostItemFlags.cs | 6 + ClearScript/HostObject.cs | 23 +- ClearScript/HostTargetFlags.cs | 6 + ClearScript/HostType.cs | 32 +- ClearScript/HostTypeCollection.cs | 19 +- ClearScript/HostVariable.cs | 10 +- ClearScript/IScriptEngine.cs | 19 +- ClearScript/IScriptObject.cs | 4 +- ClearScript/Invocability.cs | 2 +- ClearScript/JavaScript/CommonJSManager.cs | 24 +- ClearScript/JavaScript/IArrayBuffer.cs | 52 +- ClearScript/JavaScript/IArrayBufferView.cs | 52 +- .../IJavaScriptEngine.NetStandard.cs | 13 - ClearScript/JavaScript/IJavaScriptEngine.cs | 5 +- ClearScript/JavaScript/ITypedArray.cs | 28 +- .../JavaScriptExtensions.NetStandard.cs | 163 -- .../JavaScript/JavaScriptExtensions.cs | 145 +- .../JavaScript/JavaScriptObjectFlags.cs | 23 +- ClearScript/JavaScript/JsonModuleManager.cs | 6 +- ClearScript/JavaScript/ModuleCategory.cs | 4 +- ClearScript/Properties/AssemblyInfo.Core.cs | 10 +- .../Properties/AssemblyInfo.V8.ICUData.cs | 6 +- ClearScript/Properties/AssemblyInfo.V8.cs | 6 +- .../Properties/AssemblyInfo.Windows.Core.cs | 6 +- .../Properties/AssemblyInfo.Windows.cs | 6 +- ClearScript/PropertyBag.cs | 8 +- ClearScript/ScriptEngine.cs | 200 +- ClearScript/ScriptEngineException.cs | 8 +- ClearScript/ScriptInterruptedException.cs | 8 +- ClearScript/ScriptItem.cs | 64 +- ClearScript/ScriptMemberFlags.cs | 6 + ClearScript/ScriptMethod.cs | 2 +- ClearScript/Undefined.cs | 2 +- ClearScript/Util/ArrayHelpers.cs | 11 + ClearScript/Util/AssemblyHelpers.cs | 26 +- .../Util/AssemblyTable.NetFramework.cs | 83 +- ClearScript/Util/COM/Dispatch.cs | 18 + ClearScript/Util/COM/DispatchHelpers.cs | 10 +- ClearScript/Util/COM/DispatchMember.cs | 16 +- ClearScript/Util/COM/DispatchWrappers.cs | 12 +- ClearScript/Util/COM/HResult.cs | 2 +- ClearScript/Util/COM/StructHelpers.cs | 2 +- .../Util/COM/TypeInfoHelpers.NetFramework.cs | 2 +- ClearScript/Util/COM/TypeInfoHelpers.cs | 2 +- ClearScript/Util/COM/TypeLibHelpers.cs | 5 +- ClearScript/Util/Collateral.cs | 6 +- ClearScript/Util/ConcurrentWeakSet.cs | 10 +- ClearScript/Util/DateTimeHelpers.cs | 23 + ClearScript/Util/DynamicHelpers.cs | 48 +- .../Util/EnumerableHelpers.NetFramework.cs | 148 - .../Util/EnumerableHelpers.NetStandard.cs | 188 -- ClearScript/Util/EnumerableHelpers.cs | 164 +- ClearScript/Util/IHostItem.cs | 9 + ClearScript/Util/InvokeHelpers.cs | 80 +- ClearScript/Util/MemberComparer.cs | 4 +- ClearScript/Util/MemberHelpers.cs | 26 +- ClearScript/Util/MemberMap.cs | 17 +- ClearScript/Util/MiscHelpers.cs | 112 +- ClearScript/Util/NativeCallbackTimer.cs | 6 +- ClearScript/Util/Nonexistent.cs | 2 +- ClearScript/Util/ObjectHelpers.Common.cs | 8 +- ClearScript/Util/ObjectHelpers.cs | 36 +- ClearScript/Util/Scope.cs | 48 +- ClearScript/Util/StructPtr.cs | 22 + ClearScript/Util/TypeHelpers.NetStandard.cs | 4 +- ClearScript/Util/TypeHelpers.cs | 88 +- ClearScript/Util/TypeTags.cs | 5 +- ClearScript/Util/UniqueNameManager.cs | 8 +- ClearScript/Util/UnmanagedMemoryHelpers.cs | 575 +++- ClearScript/Util/VTablePatcher.cs | 5 +- ClearScript/Util/ValueScope.cs | 79 + ClearScript/Util/Web/WebResponse.cs | 2 +- ClearScript/Util/Web/WebSocket.cs | 12 +- .../V8/FastProxy/IV8FastAsyncEnumerator.cs | 26 + ClearScript/V8/FastProxy/IV8FastEnumerator.cs | 25 + .../FastProxy/IV8FastHostDynamicProperties.cs | 77 + .../V8/FastProxy/IV8FastHostFunction.cs | 16 + .../IV8FastHostFunctionOperations.cs | 19 + ClearScript/V8/FastProxy/IV8FastHostMethod.cs | 16 + .../FastProxy/IV8FastHostMethodOperations.cs | 18 + ClearScript/V8/FastProxy/IV8FastHostObject.cs | 16 + .../FastProxy/IV8FastHostObjectOperations.cs | 113 + ClearScript/V8/FastProxy/V8FastArg.cs | 373 +++ ClearScript/V8/FastProxy/V8FastArgImpl.cs | 808 ++++++ ClearScript/V8/FastProxy/V8FastArgKind.cs | 12 + ClearScript/V8/FastProxy/V8FastArgs.cs | 449 +++ .../V8/FastProxy/V8FastHostDelegates.cs | 54 + .../V8/FastProxy/V8FastHostDynamicObject.cs | 165 ++ .../V8/FastProxy/V8FastHostFunction.cs | 143 + .../FastProxy/V8FastHostFunctionOperations.cs | 128 + ClearScript/V8/FastProxy/V8FastHostItem.cs | 535 ++++ ClearScript/V8/FastProxy/V8FastHostMethod.cs | 72 + .../FastProxy/V8FastHostMethodOperations.cs | 96 + ClearScript/V8/FastProxy/V8FastHostObject.cs | 45 + .../V8FastHostObjectConfiguration.cs | 309 ++ .../FastProxy/V8FastHostObjectOperations.cs | 395 +++ .../V8/FastProxy/V8FastHostPropertyFlags.cs | 52 + .../V8/FastProxy/V8FastProxyHelpers.cs | 71 + ClearScript/V8/FastProxy/V8FastResult.cs | 497 ++++ ClearScript/V8/IV8Object.cs | 1 + .../V8/SplitProxy/IV8SplitProxyNative.cs | 19 +- .../V8/SplitProxy/NativeCallbackImpl.cs | 2 +- .../V8/SplitProxy/V8ContextProxyImpl.cs | 301 +- .../V8/SplitProxy/V8DebugListenerImpl.cs | 6 +- ClearScript/V8/SplitProxy/V8EntityHolder.cs | 4 +- .../V8/SplitProxy/V8IsolateProxyImpl.cs | 262 +- ClearScript/V8/SplitProxy/V8ObjectImpl.cs | 95 +- .../V8/SplitProxy/V8SplitProxyHelpers.cs | 1466 +++++++--- .../V8/SplitProxy/V8SplitProxyManaged.Net5.cs | 92 +- .../V8/SplitProxy/V8SplitProxyManaged.cs | 381 ++- .../SplitProxy/V8SplitProxyNative.Common.tt | 118 +- .../V8SplitProxyNative.Generated.cs | 952 ++++-- .../V8SplitProxyNative.UWP.Generated.cs | 354 ++- .../V8/SplitProxy/V8SplitProxyNative.cs | 97 +- ClearScript/V8/SplitProxy/V8TestProxyImpl.cs | 4 +- ClearScript/V8/V8ContextProxy.cs | 2 + ClearScript/V8/V8CpuProfile.cs | 14 +- ClearScript/V8/V8CpuProfileFlags.cs | 11 +- ClearScript/V8/V8DebugAgent.cs | 44 +- ClearScript/V8/V8DebugClient.cs | 6 +- ClearScript/V8/V8Proxy.cs | 10 +- ClearScript/V8/V8ProxyHelpers.cs | 162 +- ClearScript/V8/V8Runtime.cs | 10 +- ClearScript/V8/V8ScriptEngine.InitScript.cs | 2 +- ClearScript/V8/V8ScriptEngine.InitScript.js | 58 +- ClearScript/V8/V8ScriptEngine.NetStandard.cs | 99 - ClearScript/V8/V8ScriptEngine.cs | 629 ++-- ClearScript/V8/V8ScriptEngineFlags.cs | 40 +- ClearScript/V8/V8ScriptItem.cs | 540 +++- ClearScript/VoidResult.cs | 2 +- ClearScript/Windows/Core/ActiveXDebugging.cs | 4 +- ClearScript/Windows/Core/ActiveXScripting.cs | 6 + ClearScript/Windows/Core/ActiveXWrappers.cs | 12 +- .../Windows/Core/JScriptEngine.NetStandard.cs | 26 - ClearScript/Windows/Core/JScriptEngine.cs | 16 +- ClearScript/Windows/Core/VBScriptEngine.cs | 4 +- .../Windows/Core/WindowsScriptEngine.Debug.cs | 4 +- .../Windows/Core/WindowsScriptEngine.Site.cs | 24 +- .../Windows/Core/WindowsScriptEngine.cs | 278 +- ClearScript/Windows/Core/WindowsScriptItem.cs | 119 +- .../Windows/JScriptEngine.NetStandard.cs | 26 - ClearScript/Windows/JScriptEngine.cs | 12 +- ClearScript/Windows/Nothing.cs | 2 +- .../Windows/WindowsScriptEngineFlags.cs | 6 + ClearScript/doc/Reference.chm | Bin 1058410 -> 1344678 bytes ClearScript/doc/Reference.shfbproj | 3 +- ClearScript/doc/WebReference.shfbproj | 3 +- .../ClearScriptBenchmarks.Unix.cs | 18 +- .../ClearScriptBenchmarks.Windows.cs | 34 +- .../Properties/AssemblyInfo.cs | 6 +- ClearScriptBenchmarks/SunSpider.cs | 2 +- ClearScriptConsole/ClearScriptConsole.cs | 4 +- ClearScriptConsole/ConsoleTest.cs | 6 +- ClearScriptConsole/Properties/AssemblyInfo.cs | 6 +- ClearScriptTest/BugFixTest.NetFramework.cs | 79 + ClearScriptTest/BugFixTest.Windows.cs | 109 +- ClearScriptTest/BugFixTest.cs | 232 +- ClearScriptTest/DynamicTestObject.cs | 4 +- ClearScriptTest/ExtensionsTest.NetStandard.cs | 136 - ClearScriptTest/ExtensionsTest.cs | 109 + ClearScriptTest/HostListTest.cs | 3 + ClearScriptTest/HostTypeCollectionTest.cs | 4 +- ClearScriptTest/JScriptCoreEngineTest.cs | 35 +- ClearScriptTest/JScriptCoreModuleTest.cs | 2 +- ClearScriptTest/JScriptEngineTest.cs | 35 +- ClearScriptTest/JScriptModuleTest.cs | 2 +- .../JavaScript/StandardModule/Module.js | 2 +- .../StandardModule/ModuleWithSideEffects.js | 2 +- ClearScriptTest/Misc.cs | 116 +- ClearScriptTest/Properties/AssemblyInfo.cs | 6 +- ClearScriptTest/PropertyBagTest.Windows.cs | 4 +- ClearScriptTest/PropertyBagTest.cs | 2 +- ClearScriptTest/ScriptAccessTest.cs | 8 +- ClearScriptTest/TestEnumerable.NetStandard.cs | 43 - ClearScriptTest/TestEnumerable.cs | 35 +- ClearScriptTest/TestObject.cs | 2 +- ClearScriptTest/TypeRestrictionTest.cs | 2 +- ClearScriptTest/V8ArrayBufferOrViewTest.cs | 1118 ++++++- ClearScriptTest/V8FastProxyTest.cs | 2564 +++++++++++++++++ ClearScriptTest/V8ModuleTest.cs | 136 +- .../V8ScriptEngineTest.NetStandard.cs | 398 --- ClearScriptTest/V8ScriptEngineTest.cs | 640 +++- ClearScriptTest/VBScriptCoreEngineTest.cs | 18 + ClearScriptTest/VBScriptEngineTest.cs | 18 + ClearScriptV8/ClearScriptV8Native.h | 1 + ClearScriptV8/CommonPlatform.h | 60 +- ClearScriptV8/HighResolutionClock.cpp | 13 +- ClearScriptV8/HighResolutionClock.h | 2 +- ClearScriptV8/HostObjectHolder.h | 3 + ClearScriptV8/HostObjectHolderImpl.cpp | 24 +- ClearScriptV8/HostObjectHolderImpl.h | 7 +- ClearScriptV8/HostObjectUtil.cpp | 582 ++-- ClearScriptV8/HostObjectUtil.h | 105 +- ClearScriptV8/StdString.h | 23 +- ClearScriptV8/Timer.h | 8 +- ClearScriptV8/V8Context.h | 14 +- ClearScriptV8/V8ContextImpl.cpp | 1383 +++++++-- ClearScriptV8/V8ContextImpl.h | 68 +- ClearScriptV8/V8DocumentInfo.h | 6 +- ClearScriptV8/V8IsolateImpl.cpp | 136 +- ClearScriptV8/V8IsolateImpl.h | 4 +- ClearScriptV8/V8ObjectHelpers.cpp | 4 +- ClearScriptV8/V8ObjectHolder.h | 2 +- ClearScriptV8/V8Platform.h | 40 +- ClearScriptV8/V8SplitProxyManaged.h | 26 +- ClearScriptV8/V8SplitProxyNative.cpp | 200 +- ClearScriptV8/V8SplitProxyNative.h | 40 +- ClearScriptV8/V8Value.h | 141 +- ClearScriptV8/V8ValueWireData.h | 132 + ClearScriptV8/V8WeakContextBinding.h | 4 +- .../win-arm64/ClearScriptV8.win-arm64.vcxproj | 9 +- .../ClearScriptV8.win-arm64.vcxproj.filters | 3 + .../win-x64/ClearScriptV8.win-x64.vcxproj | 9 +- .../ClearScriptV8.win-x64.vcxproj.filters | 3 + .../win-x86/ClearScriptV8.win-x86.vcxproj | 9 +- .../ClearScriptV8.win-x86.vcxproj.filters | 3 + .../DisableJScriptReplacement_CurrentUser.reg | Bin 0 -> 300 bytes ...DisableJScriptReplacement_LocalMachine.reg | Bin 0 -> 302 bytes .../CLSID_ProcessDebugManager.reg | Bin 1018 -> 1844 bytes Misc/macOS/GitConfiguration.txt | 3 + .../ClearScript.Core/ClearScript.Core.csproj | 8 +- NetCore/ClearScript.V8/ClearScript.V8.csproj | 33 +- .../ClearScript.Windows.Core.csproj | 2 +- .../ClearScript.Windows.csproj | 3 +- .../ClearScriptBenchmarks.csproj | 3 +- .../ClearScriptConsole.csproj | 7 +- .../ClearScriptTest/ClearScriptTest.csproj | 36 +- .../ClearScript.Core/ClearScript.Core.csproj | 21 +- .../ClearScript.V8/ClearScript.V8.csproj | 46 +- .../ClearScript.Windows.Core.csproj | 13 +- .../ClearScript.Windows.csproj | 8 +- .../ClearScriptBenchmarks.csproj | 5 +- .../ClearScriptConsole.csproj | 5 +- .../ClearScriptTest/ClearScriptTest.csproj | 28 +- .../ClearScript.Core/ClearScript.Core.csproj | 11 +- .../ClearScript.V8.ICUData.csproj | 11 +- .../ClearScript.V8/ClearScript.V8.csproj | 32 +- .../ClearScript.Windows.Core.csproj | 2 +- .../ClearScriptConsole.csproj | 11 +- .../ClearScriptTest.NetStandard.csproj | 36 +- ReadMe.md | 4 +- UWP/ClearScript.Core/ClearScript.Core.csproj | 16 +- UWP/ClearScript.V8/ClearScript.V8.csproj | 38 +- .../ClearScriptConsole.csproj | 6 +- UWP/ClearScriptTest/ClearScriptTest.csproj | 5 +- .../ClearScriptBenchmarks.csproj | 9 +- .../ClearScriptConsole.csproj | 11 +- .../ClearScriptTest.NetStandard.csproj | 26 +- Unix/ClearScriptTest/ClearScriptTest.csproj | 26 +- Unix/ClearScriptV8/Makefile | 1 + Unix/V8Update.sh | 13 +- V8/AbseilCppPatch.txt | 18 +- V8/BuildPatch.txt | 13 + V8/V8Patch.txt | 505 +--- V8Update.cmd | 16 +- Version.tt | 2 +- docs/Gemfile.lock | 50 +- docs/Reference/SearchHelp.aspx | 6 +- docs/Reference/SearchHelp.inc.php | 4 +- docs/Reference/fti/FTI_100.json | 2 +- docs/Reference/fti/FTI_101.json | 2 +- docs/Reference/fti/FTI_102.json | 2 +- docs/Reference/fti/FTI_103.json | 2 +- docs/Reference/fti/FTI_104.json | 2 +- docs/Reference/fti/FTI_105.json | 2 +- docs/Reference/fti/FTI_106.json | 2 +- docs/Reference/fti/FTI_107.json | 2 +- docs/Reference/fti/FTI_108.json | 2 +- docs/Reference/fti/FTI_109.json | 2 +- docs/Reference/fti/FTI_110.json | 2 +- docs/Reference/fti/FTI_111.json | 2 +- docs/Reference/fti/FTI_112.json | 2 +- docs/Reference/fti/FTI_113.json | 2 +- docs/Reference/fti/FTI_114.json | 2 +- docs/Reference/fti/FTI_115.json | 2 +- docs/Reference/fti/FTI_116.json | 2 +- docs/Reference/fti/FTI_117.json | 2 +- docs/Reference/fti/FTI_118.json | 2 +- docs/Reference/fti/FTI_119.json | 2 +- docs/Reference/fti/FTI_121.json | 2 +- docs/Reference/fti/FTI_122.json | 2 +- docs/Reference/fti/FTI_48.json | 1 + docs/Reference/fti/FTI_49.json | 1 + docs/Reference/fti/FTI_50.json | 1 + docs/Reference/fti/FTI_51.json | 1 + docs/Reference/fti/FTI_52.json | 1 + docs/Reference/fti/FTI_53.json | 1 + docs/Reference/fti/FTI_54.json | 1 + docs/Reference/fti/FTI_55.json | 1 + docs/Reference/fti/FTI_56.json | 1 + docs/Reference/fti/FTI_97.json | 2 +- docs/Reference/fti/FTI_98.json | 2 +- docs/Reference/fti/FTI_99.json | 2 +- docs/Reference/fti/FTI_Files.json | 2 +- ...learScript_PropertyBag_PropertyChanged.htm | 2 +- ...rScript_V8_V8Runtime_DebuggerConnected.htm | 2 +- ...ript_V8_V8Runtime_DebuggerDisconnected.htm | 2 +- ...ClearScript_ScriptInterruptedException.htm | 6 + ..._Microsoft_ClearScript_Undefined_Value.htm | 2 +- ..._V8_V8CpuProfile_Node_HitLine_HitCount.htm | 2 +- ...8_V8CpuProfile_Node_HitLine_LineNumber.htm | 2 +- ...Microsoft_ClearScript_ValueRef_1_Value.htm | 2 +- ...Microsoft_ClearScript_VoidResult_Value.htm | 2 +- ..._Windows_Core_NullSyncInvoker_Instance.htm | 2 +- ...soft_ClearScript_Windows_Nothing_Value.htm | 2 +- ...learScript_ConcurrentPropertyBag__ctor.htm | 2 +- ...arScript_ConcurrentPropertyBag__ctor_1.htm | 2 +- ...arScript_ConcurrentPropertyBag__ctor_2.htm | 2 +- ...arScript_ConcurrentPropertyBag__ctor_3.htm | 2 +- ...ttributeLoader_LoadCustomAttributes__1.htm | 2 +- ...learScript_CustomAttributeLoader__ctor.htm | 2 +- ...pt_DefaultDocumentLoader_CacheDocument.htm | 2 +- ...tDocumentLoader_DiscardCachedDocuments.htm | 2 +- ...efaultDocumentLoader_GetCachedDocument.htm | 2 +- ...efaultDocumentLoader_LoadDocumentAsync.htm | 2 +- ...learScript_DefaultDocumentLoader__ctor.htm | 2 +- ...ript_DefaultScriptUsageAttribute__ctor.htm | 2 +- ...pt_DefaultScriptUsageAttribute__ctor_1.htm | 2 +- ...crosoft_ClearScript_DocumentInfo__ctor.htm | 2 +- ...osoft_ClearScript_DocumentInfo__ctor_1.htm | 2 +- ...earScript_DocumentLoader_CacheDocument.htm | 2 +- ..._DocumentLoader_DiscardCachedDocuments.htm | 2 +- ...cript_DocumentLoader_GetCachedDocument.htm | 2 +- ...learScript_DocumentLoader_LoadDocument.htm | 2 +- ...cript_DocumentLoader_LoadDocumentAsync.htm | 2 +- ...osoft_ClearScript_DocumentLoader__ctor.htm | 2 +- ...ipt_DocumentSettings_AddSystemDocument.htm | 2 +- ...t_DocumentSettings_AddSystemDocument_1.htm | 2 +- ...t_DocumentSettings_AddSystemDocument_2.htm | 2 +- ...t_DocumentSettings_AddSystemDocument_3.htm | 2 +- ...oft_ClearScript_DocumentSettings__ctor.htm | 2 +- ...M_Microsoft_ClearScript_Document__ctor.htm | 2 +- ...learScript_DynamicHostObject_HasMember.htm | 2 +- ...ft_ClearScript_DynamicHostObject__ctor.htm | 2 +- ...ClearScript_EventConnection_disconnect.htm | 2 +- ...soft_ClearScript_EventSource_1_connect.htm | 2 +- ...rosoft_ClearScript_EventSource_connect.htm | 2 +- ...learScript_ExtendedHostFunctions__ctor.htm | 2 +- ...cript_ExtendedHostFunctions_arrType__1.htm | 2 +- ...arScript_ExtendedHostFunctions_comType.htm | 2 +- ..._ClearScript_ExtendedHostFunctions_lib.htm | 2 +- ...learScript_ExtendedHostFunctions_lib_1.htm | 2 +- ...Script_ExtendedHostFunctions_newComObj.htm | 2 +- ...ClearScript_ExtendedHostFunctions_type.htm | 2 +- ..._ExtendedHostFunctions_typeLibEnums__1.htm | 2 +- ...earScript_ExtendedHostFunctions_type_1.htm | 2 +- ...earScript_ExtendedHostFunctions_type_2.htm | 2 +- ...soft_ClearScript_Extensions_ToHostType.htm | 2 +- ...ft_ClearScript_Extensions_ToHostType_1.htm | 2 +- ...ript_Extensions_ToRestrictedHostObject.htm | 6 +- ...pt_Extensions_ToRestrictedHostObject_1.htm | 6 +- ...t_Extensions_ToRestrictedHostObject__1.htm | 2 +- ...Extensions_ToRestrictedHostObject__1_1.htm | 2 +- ...rosoft_ClearScript_HostFunctions__ctor.htm | 2 +- ...ft_ClearScript_HostFunctions_asType__1.htm | 2 +- ...soft_ClearScript_HostFunctions_cast__1.htm | 2 +- ...osoft_ClearScript_HostFunctions_del__1.htm | 2 +- ...oft_ClearScript_HostFunctions_flags__1.htm | 2 +- ...crosoft_ClearScript_HostFunctions_func.htm | 2 +- ...soft_ClearScript_HostFunctions_func__1.htm | 2 +- ...t_ClearScript_HostFunctions_getElement.htm | 2 +- ..._ClearScript_HostFunctions_getProperty.htm | 2 +- ...learScript_HostFunctions_getProperty_1.htm | 2 +- ...osoft_ClearScript_HostFunctions_isNull.htm | 2 +- ...ft_ClearScript_HostFunctions_isTypeObj.htm | 2 +- ...ClearScript_HostFunctions_isTypeObj__1.htm | 2 +- ...ft_ClearScript_HostFunctions_isType__1.htm | 2 +- ...osoft_ClearScript_HostFunctions_newArr.htm | 2 +- ...ft_ClearScript_HostFunctions_newArr__1.htm | 2 +- ...osoft_ClearScript_HostFunctions_newObj.htm | 2 +- ...oft_ClearScript_HostFunctions_newObj_1.htm | 2 +- ...oft_ClearScript_HostFunctions_newObj_2.htm | 2 +- ...ft_ClearScript_HostFunctions_newObj__1.htm | 2 +- ...ft_ClearScript_HostFunctions_newVar__1.htm | 2 +- ...crosoft_ClearScript_HostFunctions_proc.htm | 2 +- ...learScript_HostFunctions_removeElement.htm | 2 +- ...earScript_HostFunctions_removeProperty.htm | 2 +- ...rScript_HostFunctions_removeProperty_1.htm | 2 +- ...t_ClearScript_HostFunctions_setElement.htm | 2 +- ..._ClearScript_HostFunctions_setProperty.htm | 2 +- ...learScript_HostFunctions_setProperty_1.htm | 2 +- ...osoft_ClearScript_HostFunctions_toByte.htm | 2 +- ...osoft_ClearScript_HostFunctions_toChar.htm | 2 +- ...ft_ClearScript_HostFunctions_toDecimal.htm | 2 +- ...oft_ClearScript_HostFunctions_toDouble.htm | 2 +- ...soft_ClearScript_HostFunctions_toInt16.htm | 2 +- ...soft_ClearScript_HostFunctions_toInt32.htm | 2 +- ...soft_ClearScript_HostFunctions_toInt64.htm | 2 +- ...soft_ClearScript_HostFunctions_toSByte.htm | 2 +- ...oft_ClearScript_HostFunctions_toSingle.htm | 2 +- ...ClearScript_HostFunctions_toStaticType.htm | 2 +- ...oft_ClearScript_HostFunctions_toUInt16.htm | 2 +- ...oft_ClearScript_HostFunctions_toUInt32.htm | 2 +- ...oft_ClearScript_HostFunctions_toUInt64.htm | 2 +- ...oft_ClearScript_HostFunctions_tryCatch.htm | 2 +- ...osoft_ClearScript_HostFunctions_typeOf.htm | 2 +- ...ft_ClearScript_HostFunctions_typeOf__1.htm | 2 +- ...rScript_HostTypeCollection_AddAssembly.htm | 2 +- ...cript_HostTypeCollection_AddAssembly_1.htm | 2 +- ...cript_HostTypeCollection_AddAssembly_2.htm | 2 +- ...cript_HostTypeCollection_AddAssembly_3.htm | 2 +- ...ClearScript_HostTypeCollection_AddType.htm | 2 +- ...earScript_HostTypeCollection_AddType_1.htm | 2 +- ...earScript_HostTypeCollection_AddType_2.htm | 2 +- ...pt_HostTypeCollection_GetNamespaceNode.htm | 2 +- ...t_ClearScript_HostTypeCollection__ctor.htm | 2 +- ...ClearScript_HostTypeCollection__ctor_1.htm | 2 +- ...ClearScript_HostTypeCollection__ctor_2.htm | 2 +- ...ClearScript_HostTypeCollection__ctor_3.htm | 2 +- ...ClearScript_HostTypeCollection__ctor_4.htm | 2 +- ...ClearScript_IScriptEngine_AddCOMObject.htm | 2 +- ...earScript_IScriptEngine_AddCOMObject_1.htm | 2 +- ...earScript_IScriptEngine_AddCOMObject_2.htm | 2 +- ...earScript_IScriptEngine_AddCOMObject_3.htm | 2 +- ...earScript_IScriptEngine_AddCOMObject_4.htm | 2 +- ...earScript_IScriptEngine_AddCOMObject_5.htm | 2 +- ...earScript_IScriptEngine_AddCOMObject_6.htm | 2 +- ...earScript_IScriptEngine_AddCOMObject_7.htm | 2 +- ...t_ClearScript_IScriptEngine_AddCOMType.htm | 2 +- ...ClearScript_IScriptEngine_AddCOMType_1.htm | 2 +- ...ClearScript_IScriptEngine_AddCOMType_2.htm | 2 +- ...ClearScript_IScriptEngine_AddCOMType_3.htm | 2 +- ...ClearScript_IScriptEngine_AddCOMType_4.htm | 2 +- ...ClearScript_IScriptEngine_AddCOMType_5.htm | 2 +- ...ClearScript_IScriptEngine_AddCOMType_6.htm | 2 +- ...ClearScript_IScriptEngine_AddCOMType_7.htm | 2 +- ...learScript_IScriptEngine_AddHostObject.htm | 2 +- ...arScript_IScriptEngine_AddHostObject_1.htm | 2 +- ..._ClearScript_IScriptEngine_AddHostType.htm | 2 +- ...learScript_IScriptEngine_AddHostType_1.htm | 2 +- ...learScript_IScriptEngine_AddHostType_2.htm | 2 +- ...learScript_IScriptEngine_AddHostType_3.htm | 2 +- ...learScript_IScriptEngine_AddHostType_4.htm | 2 +- ...learScript_IScriptEngine_AddHostType_5.htm | 2 +- ...learScript_IScriptEngine_AddHostType_6.htm | 2 +- ...learScript_IScriptEngine_AddHostType_7.htm | 2 +- ...ClearScript_IScriptEngine_AddHostTypes.htm | 2 +- ...criptEngine_AddRestrictedHostObject__1.htm | 2 +- ...iptEngine_AddRestrictedHostObject__1_1.htm | 2 +- ...earScript_IScriptEngine_CollectGarbage.htm | 2 +- ...oft_ClearScript_IScriptEngine_Evaluate.htm | 2 +- ...rScript_IScriptEngine_EvaluateDocument.htm | 2 +- ...cript_IScriptEngine_EvaluateDocument_1.htm | 2 +- ...cript_IScriptEngine_EvaluateDocument_2.htm | 2 +- ...t_ClearScript_IScriptEngine_Evaluate_1.htm | 2 +- ...t_ClearScript_IScriptEngine_Evaluate_2.htm | 2 +- ...t_ClearScript_IScriptEngine_Evaluate_3.htm | 2 +- ...soft_ClearScript_IScriptEngine_Execute.htm | 2 +- ...earScript_IScriptEngine_ExecuteCommand.htm | 2 +- ...arScript_IScriptEngine_ExecuteDocument.htm | 2 +- ...Script_IScriptEngine_ExecuteDocument_1.htm | 2 +- ...Script_IScriptEngine_ExecuteDocument_2.htm | 2 +- ...ft_ClearScript_IScriptEngine_Execute_1.htm | 2 +- ...ft_ClearScript_IScriptEngine_Execute_2.htm | 2 +- ...ft_ClearScript_IScriptEngine_Execute_3.htm | 2 +- ...learScript_IScriptEngine_GetStackTrace.htm | 2 +- ...ft_ClearScript_IScriptEngine_Interrupt.htm | 2 +- ...osoft_ClearScript_IScriptEngine_Invoke.htm | 2 +- ...earScript_IScriptObject_DeleteProperty.htm | 4 +- ...rScript_IScriptObject_DeleteProperty_1.htm | 4 +- ..._ClearScript_IScriptObject_GetProperty.htm | 2 +- ...learScript_IScriptObject_GetProperty_1.htm | 2 +- ...osoft_ClearScript_IScriptObject_Invoke.htm | 2 +- ...rScript_IScriptObject_InvokeAsFunction.htm | 2 +- ...ClearScript_IScriptObject_InvokeMethod.htm | 2 +- ..._ClearScript_IScriptObject_SetProperty.htm | 2 +- ...learScript_IScriptObject_SetProperty_1.htm | 2 +- ...ScriptableObject_OnExposedToScriptCode.htm | 2 +- ...arScript_ImmutableValueAttribute__ctor.htm | 2 +- ...t_JavaScript_IArrayBufferView_GetBytes.htm | 4 +- ...ArrayBufferView_InvokeWithDirectAccess.htm | 4 +- ...ayBufferView_InvokeWithDirectAccess__1.htm | 24 +- ...BufferView_InvokeWithDirectAccess__1_1.htm | 21 + ...ayBufferView_InvokeWithDirectAccess__2.htm | 25 + ..._JavaScript_IArrayBufferView_ReadBytes.htm | 6 +- ...avaScript_IArrayBufferView_ReadBytes_1.htm | 27 + ...JavaScript_IArrayBufferView_WriteBytes.htm | 6 +- ...vaScript_IArrayBufferView_WriteBytes_1.htm | 27 + ...cript_JavaScript_IArrayBuffer_GetBytes.htm | 4 +- ...pt_IArrayBuffer_InvokeWithDirectAccess.htm | 4 +- ...IArrayBuffer_InvokeWithDirectAccess__1.htm | 24 +- ...rrayBuffer_InvokeWithDirectAccess__1_1.htm | 21 + ...IArrayBuffer_InvokeWithDirectAccess__2.htm | 25 + ...ript_JavaScript_IArrayBuffer_ReadBytes.htm | 6 +- ...pt_JavaScript_IArrayBuffer_ReadBytes_1.htm | 27 + ...ipt_JavaScript_IArrayBuffer_WriteBytes.htm | 6 +- ...t_JavaScript_IArrayBuffer_WriteBytes_1.htm | 27 + ...arScript_JavaScript_ITypedArray_1_Read.htm | 16 +- ...Script_JavaScript_ITypedArray_1_Read_1.htm | 27 + ...cript_JavaScript_ITypedArray_1_ToArray.htm | 4 +- ...rScript_JavaScript_ITypedArray_1_Write.htm | 16 +- ...cript_JavaScript_ITypedArray_1_Write_1.htm | 27 + ...JavaScriptExtensions_ToAsyncEnumerable.htm | 2 +- ...ript_JavaScriptExtensions_ToEnumerable.htm | 2 +- ...aScript_JavaScriptExtensions_ToPromise.htm | 2 +- ...cript_JavaScriptExtensions_ToPromise_1.htm | 2 +- ...cript_JavaScriptExtensions_ToPromise_2.htm | 6 +- ...cript_JavaScriptExtensions_ToPromise_3.htm | 6 +- ...ript_JavaScriptExtensions_ToPromise__1.htm | 2 +- ...pt_JavaScriptExtensions_ToPromise__1_1.htm | 2 +- ...pt_JavaScriptExtensions_ToPromise__1_2.htm | 6 +- ...pt_JavaScriptExtensions_ToPromise__1_3.htm | 6 +- ...JavaScript_JavaScriptExtensions_ToTask.htm | 2 +- ...t_NoDefaultScriptAccessAttribute__ctor.htm | 2 +- ...arScript_NoScriptAccessAttribute__ctor.htm | 2 +- ..._Microsoft_ClearScript_PropertyBag_Add.htm | 2 +- ...t_ClearScript_PropertyBag_ClearNoCheck.htm | 2 +- ...ft_ClearScript_PropertyBag_ContainsKey.htm | 2 +- ...crosoft_ClearScript_PropertyBag_Remove.htm | 4 +- ...ript_PropertyBag_RemovePropertyNoCheck.htm | 2 +- ...rScript_PropertyBag_SetPropertyNoCheck.htm | 2 +- ...ft_ClearScript_PropertyBag_TryGetValue.htm | 2 +- ...icrosoft_ClearScript_PropertyBag__ctor.htm | 2 +- ...rosoft_ClearScript_PropertyBag__ctor_1.htm | 2 +- ...rosoft_ClearScript_PropertyBag__ctor_2.htm | 2 +- ...rosoft_ClearScript_PropertyBag__ctor_3.htm | 2 +- ...pt_ScriptEngineException_GetObjectData.htm | 2 +- ...rScript_ScriptEngineException_ToString.htm | 2 +- ...learScript_ScriptEngineException__ctor.htm | 2 +- ...arScript_ScriptEngineException__ctor_1.htm | 2 +- ...arScript_ScriptEngineException__ctor_2.htm | 2 +- ...arScript_ScriptEngineException__ctor_3.htm | 2 +- ..._ClearScript_ScriptEngine_AddCOMObject.htm | 2 +- ...learScript_ScriptEngine_AddCOMObject_1.htm | 2 +- ...learScript_ScriptEngine_AddCOMObject_2.htm | 2 +- ...learScript_ScriptEngine_AddCOMObject_3.htm | 2 +- ...learScript_ScriptEngine_AddCOMObject_4.htm | 2 +- ...learScript_ScriptEngine_AddCOMObject_5.htm | 2 +- ...learScript_ScriptEngine_AddCOMObject_6.htm | 2 +- ...learScript_ScriptEngine_AddCOMObject_7.htm | 2 +- ...ft_ClearScript_ScriptEngine_AddCOMType.htm | 2 +- ..._ClearScript_ScriptEngine_AddCOMType_1.htm | 2 +- ..._ClearScript_ScriptEngine_AddCOMType_2.htm | 2 +- ..._ClearScript_ScriptEngine_AddCOMType_3.htm | 2 +- ..._ClearScript_ScriptEngine_AddCOMType_4.htm | 2 +- ..._ClearScript_ScriptEngine_AddCOMType_5.htm | 2 +- ..._ClearScript_ScriptEngine_AddCOMType_6.htm | 2 +- ..._ClearScript_ScriptEngine_AddCOMType_7.htm | 2 +- ...ClearScript_ScriptEngine_AddHostObject.htm | 2 +- ...earScript_ScriptEngine_AddHostObject_1.htm | 2 +- ...t_ClearScript_ScriptEngine_AddHostType.htm | 2 +- ...ClearScript_ScriptEngine_AddHostType_1.htm | 2 +- ...ClearScript_ScriptEngine_AddHostType_2.htm | 2 +- ...ClearScript_ScriptEngine_AddHostType_3.htm | 2 +- ...ClearScript_ScriptEngine_AddHostType_4.htm | 2 +- ...ClearScript_ScriptEngine_AddHostType_5.htm | 2 +- ...ClearScript_ScriptEngine_AddHostType_6.htm | 2 +- ...ClearScript_ScriptEngine_AddHostType_7.htm | 2 +- ..._ClearScript_ScriptEngine_AddHostTypes.htm | 2 +- ...criptEngine_AddRestrictedHostObject__1.htm | 2 +- ...iptEngine_AddRestrictedHostObject__1_1.htm | 2 +- ...learScript_ScriptEngine_CollectGarbage.htm | 2 +- ...osoft_ClearScript_ScriptEngine_Dispose.htm | 2 +- ...oft_ClearScript_ScriptEngine_Dispose_1.htm | 2 +- ...soft_ClearScript_ScriptEngine_Evaluate.htm | 2 +- ...arScript_ScriptEngine_EvaluateDocument.htm | 2 +- ...Script_ScriptEngine_EvaluateDocument_1.htm | 2 +- ...Script_ScriptEngine_EvaluateDocument_2.htm | 2 +- ...ft_ClearScript_ScriptEngine_Evaluate_1.htm | 2 +- ...ft_ClearScript_ScriptEngine_Evaluate_2.htm | 2 +- ...ft_ClearScript_ScriptEngine_Evaluate_3.htm | 2 +- ...osoft_ClearScript_ScriptEngine_Execute.htm | 2 +- ...learScript_ScriptEngine_ExecuteCommand.htm | 2 +- ...earScript_ScriptEngine_ExecuteDocument.htm | 2 +- ...rScript_ScriptEngine_ExecuteDocument_1.htm | 2 +- ...rScript_ScriptEngine_ExecuteDocument_2.htm | 2 +- ...oft_ClearScript_ScriptEngine_Execute_1.htm | 2 +- ...oft_ClearScript_ScriptEngine_Execute_2.htm | 2 +- ...oft_ClearScript_ScriptEngine_Execute_3.htm | 2 +- ...soft_ClearScript_ScriptEngine_Finalize.htm | 2 +- ...ClearScript_ScriptEngine_GetStackTrace.htm | 2 +- ...oft_ClearScript_ScriptEngine_Interrupt.htm | 2 +- ...rosoft_ClearScript_ScriptEngine_Invoke.htm | 2 +- ...crosoft_ClearScript_ScriptEngine__ctor.htm | 2 +- ...osoft_ClearScript_ScriptEngine__ctor_1.htm | 2 +- ...riptInterruptedException_GetObjectData.htm | 8 +- ...pt_ScriptInterruptedException_ToString.htm | 4 +- ...cript_ScriptInterruptedException__ctor.htm | 2 +- ...ipt_ScriptInterruptedException__ctor_1.htm | 2 +- ...ipt_ScriptInterruptedException__ctor_2.htm | 2 +- ...ipt_ScriptInterruptedException__ctor_3.htm | 2 +- ...learScript_ScriptMemberAttribute__ctor.htm | 2 +- ...arScript_ScriptMemberAttribute__ctor_1.htm | 2 +- ...arScript_ScriptMemberAttribute__ctor_2.htm | 2 +- ...arScript_ScriptMemberAttribute__ctor_3.htm | 2 +- ...arScript_ScriptMemberAttribute__ctor_4.htm | 2 +- ...arScript_ScriptMemberAttribute__ctor_5.htm | 2 +- ...arScript_ScriptMemberAttribute__ctor_6.htm | 2 +- ...arScript_ScriptMemberAttribute__ctor_7.htm | 2 +- ...learScript_ScriptObject_DeleteProperty.htm | 4 +- ...arScript_ScriptObject_DeleteProperty_1.htm | 4 +- ...osoft_ClearScript_ScriptObject_Dispose.htm | 2 +- ...t_ClearScript_ScriptObject_GetProperty.htm | 2 +- ...ClearScript_ScriptObject_GetProperty_1.htm | 2 +- ...rosoft_ClearScript_ScriptObject_Invoke.htm | 2 +- ...arScript_ScriptObject_InvokeAsFunction.htm | 2 +- ..._ClearScript_ScriptObject_InvokeMethod.htm | 2 +- ...t_ClearScript_ScriptObject_SetProperty.htm | 2 +- ...ClearScript_ScriptObject_SetProperty_1.htm | 2 +- ...ClearScript_ScriptUsageAttribute__ctor.htm | 2 +- ...earScript_ScriptUsageAttribute__ctor_1.htm | 2 +- ...osoft_ClearScript_StringDocument__ctor.htm | 2 +- ...crosoft_ClearScript_Undefined_ToString.htm | 2 +- ...roxy_IV8FastAsyncEnumerator_GetCurrent.htm | 15 + ...y_IV8FastAsyncEnumerator_MoveNextAsync.htm | 8 + ...FastProxy_IV8FastEnumerator_GetCurrent.htm | 15 + ...8_FastProxy_IV8FastEnumerator_MoveNext.htm | 8 + ...ynamicProperties_DeleteDynamicProperty.htm | 15 + ...amicProperties_DeleteDynamicProperty_1.htm | 15 + ...stDynamicProperties_GetDynamicProperty.htm | 19 + ...DynamicProperties_GetDynamicProperty_1.htm | 19 + ...stDynamicProperties_HasDynamicProperty.htm | 15 + ...DynamicProperties_HasDynamicProperty_1.htm | 15 + ...stDynamicProperties_SetDynamicProperty.htm | 19 + ...DynamicProperties_SetDynamicProperty_1.htm | 19 + ...y_IV8FastHostFunctionOperations_Invoke.htm | 23 + ...oxy_IV8FastHostMethodOperations_Invoke.htm | 19 + ...ObjectOperations_CreateAsyncEnumerator.htm | 15 + ...tHostObjectOperations_CreateEnumerator.htm | 15 + ...astHostObjectOperations_DeleteProperty.htm | 19 + ...tHostObjectOperations_DeleteProperty_1.htm | 19 + ...stHostObjectOperations_GetFriendlyName.htm | 15 + ...V8FastHostObjectOperations_GetProperty.htm | 23 + ...ostObjectOperations_GetPropertyIndices.htm | 15 + ...tHostObjectOperations_GetPropertyNames.htm | 15 + ...FastHostObjectOperations_GetProperty_1.htm | 27 + ...FastHostObjectOperations_QueryProperty.htm | 19 + ...stHostObjectOperations_QueryProperty_1.htm | 19 + ...V8FastHostObjectOperations_SetProperty.htm | 23 + ...FastHostObjectOperations_SetProperty_1.htm | 23 + ...t_V8_FastProxy_V8FastArg_GetBigInteger.htm | 22 + ...ript_V8_FastProxy_V8FastArg_GetBoolean.htm | 22 + ...rScript_V8_FastProxy_V8FastArg_GetByte.htm | 22 + ...rScript_V8_FastProxy_V8FastArg_GetChar.htm | 22 + ...ipt_V8_FastProxy_V8FastArg_GetCharSpan.htm | 22 + ...ipt_V8_FastProxy_V8FastArg_GetDateTime.htm | 22 + ...ript_V8_FastProxy_V8FastArg_GetDecimal.htm | 22 + ...cript_V8_FastProxy_V8FastArg_GetDouble.htm | 22 + ...Script_V8_FastProxy_V8FastArg_GetInt16.htm | 22 + ...Script_V8_FastProxy_V8FastArg_GetInt32.htm | 22 + ...Script_V8_FastProxy_V8FastArg_GetInt64.htm | 22 + ..._V8_FastProxy_V8FastArg_GetNullable__1.htm | 26 + ...Script_V8_FastProxy_V8FastArg_GetSByte.htm | 22 + ...cript_V8_FastProxy_V8FastArg_GetSingle.htm | 22 + ...cript_V8_FastProxy_V8FastArg_GetString.htm | 22 + ...cript_V8_FastProxy_V8FastArg_GetUInt16.htm | 22 + ...cript_V8_FastProxy_V8FastArg_GetUInt32.htm | 22 + ...cript_V8_FastProxy_V8FastArg_GetUInt64.htm | 22 + ...arScript_V8_FastProxy_V8FastArg_Get__1.htm | 24 + ...arScript_V8_FastProxy_V8FastArg_TryGet.htm | 16 + ...Script_V8_FastProxy_V8FastArg_TryGet_1.htm | 16 + ...cript_V8_FastProxy_V8FastArg_TryGet_10.htm | 16 + ...cript_V8_FastProxy_V8FastArg_TryGet_11.htm | 16 + ...cript_V8_FastProxy_V8FastArg_TryGet_12.htm | 16 + ...cript_V8_FastProxy_V8FastArg_TryGet_13.htm | 16 + ...cript_V8_FastProxy_V8FastArg_TryGet_14.htm | 16 + ...cript_V8_FastProxy_V8FastArg_TryGet_15.htm | 16 + ...cript_V8_FastProxy_V8FastArg_TryGet_16.htm | 16 + ...Script_V8_FastProxy_V8FastArg_TryGet_2.htm | 16 + ...Script_V8_FastProxy_V8FastArg_TryGet_3.htm | 16 + ...Script_V8_FastProxy_V8FastArg_TryGet_4.htm | 16 + ...Script_V8_FastProxy_V8FastArg_TryGet_5.htm | 16 + ...Script_V8_FastProxy_V8FastArg_TryGet_6.htm | 16 + ...Script_V8_FastProxy_V8FastArg_TryGet_7.htm | 16 + ...Script_V8_FastProxy_V8FastArg_TryGet_8.htm | 16 + ...Script_V8_FastProxy_V8FastArg_TryGet_9.htm | 16 + ...cript_V8_FastProxy_V8FastArg_TryGet__1.htm | 20 + ...ipt_V8_FastProxy_V8FastArg_TryGet__1_1.htm | 18 + ..._V8_FastProxy_V8FastArgs_GetBigInteger.htm | 26 + ...ipt_V8_FastProxy_V8FastArgs_GetBoolean.htm | 26 + ...Script_V8_FastProxy_V8FastArgs_GetByte.htm | 26 + ...Script_V8_FastProxy_V8FastArgs_GetChar.htm | 26 + ...pt_V8_FastProxy_V8FastArgs_GetCharSpan.htm | 26 + ...pt_V8_FastProxy_V8FastArgs_GetDateTime.htm | 26 + ...ipt_V8_FastProxy_V8FastArgs_GetDecimal.htm | 26 + ...ript_V8_FastProxy_V8FastArgs_GetDouble.htm | 26 + ...cript_V8_FastProxy_V8FastArgs_GetInt16.htm | 26 + ...cript_V8_FastProxy_V8FastArgs_GetInt32.htm | 26 + ...cript_V8_FastProxy_V8FastArgs_GetInt64.htm | 26 + ...V8_FastProxy_V8FastArgs_GetNullable__1.htm | 30 + ...cript_V8_FastProxy_V8FastArgs_GetSByte.htm | 26 + ...ript_V8_FastProxy_V8FastArgs_GetSingle.htm | 26 + ...ript_V8_FastProxy_V8FastArgs_GetString.htm | 26 + ...ript_V8_FastProxy_V8FastArgs_GetUInt16.htm | 26 + ...ript_V8_FastProxy_V8FastArgs_GetUInt32.htm | 26 + ...ript_V8_FastProxy_V8FastArgs_GetUInt64.htm | 26 + ...rScript_V8_FastProxy_V8FastArgs_Get__1.htm | 28 + ...Script_V8_FastProxy_V8FastArgs_IsFalsy.htm | 16 + ...rScript_V8_FastProxy_V8FastArgs_IsNull.htm | 16 + ...cript_V8_FastProxy_V8FastArgs_IsTruthy.htm | 16 + ...pt_V8_FastProxy_V8FastArgs_IsUndefined.htm | 16 + ...rScript_V8_FastProxy_V8FastArgs_TryGet.htm | 20 + ...cript_V8_FastProxy_V8FastArgs_TryGet_1.htm | 20 + ...ript_V8_FastProxy_V8FastArgs_TryGet_10.htm | 20 + ...ript_V8_FastProxy_V8FastArgs_TryGet_11.htm | 20 + ...ript_V8_FastProxy_V8FastArgs_TryGet_12.htm | 20 + ...ript_V8_FastProxy_V8FastArgs_TryGet_13.htm | 20 + ...ript_V8_FastProxy_V8FastArgs_TryGet_14.htm | 20 + ...ript_V8_FastProxy_V8FastArgs_TryGet_15.htm | 20 + ...ript_V8_FastProxy_V8FastArgs_TryGet_16.htm | 20 + ...cript_V8_FastProxy_V8FastArgs_TryGet_2.htm | 20 + ...cript_V8_FastProxy_V8FastArgs_TryGet_3.htm | 20 + ...cript_V8_FastProxy_V8FastArgs_TryGet_4.htm | 20 + ...cript_V8_FastProxy_V8FastArgs_TryGet_5.htm | 20 + ...cript_V8_FastProxy_V8FastArgs_TryGet_6.htm | 20 + ...cript_V8_FastProxy_V8FastArgs_TryGet_7.htm | 20 + ...cript_V8_FastProxy_V8FastArgs_TryGet_8.htm | 20 + ...cript_V8_FastProxy_V8FastArgs_TryGet_9.htm | 20 + ...ript_V8_FastProxy_V8FastArgs_TryGet__1.htm | 24 + ...pt_V8_FastProxy_V8FastArgs_TryGet__1_1.htm | 22 + ...xy_V8FastHostDynamicObject_1_Configure.htm | 19 + ...tDynamicObject_1_DeleteDynamicProperty.htm | 18 + ...ynamicObject_1_DeleteDynamicProperty_1.htm | 18 + ...HostDynamicObject_1_GetDynamicProperty.htm | 20 + ...stDynamicObject_1_GetDynamicProperty_1.htm | 20 + ...HostDynamicObject_1_HasDynamicProperty.htm | 18 + ...stDynamicObject_1_HasDynamicProperty_1.htm | 18 + ...HostDynamicObject_1_SetDynamicProperty.htm | 20 + ...stDynamicObject_1_SetDynamicProperty_1.htm | 20 + ...tProxy_V8FastHostDynamicObject_1__ctor.htm | 9 + ...y_V8FastHostFunctionOperations_1__ctor.htm | 16 + ...V8FastHostFunctionOperations_1__ctor_1.htm | 20 + ...V8FastHostFunctionOperations_1__ctor_2.htm | 20 + ...V8FastHostFunctionOperations_1__ctor_3.htm | 24 + ...V8FastHostFunctionOperations_1__ctor_4.htm | 20 + ...V8FastHostFunctionOperations_1__ctor_5.htm | 24 + ...V8FastHostFunctionOperations_1__ctor_6.htm | 24 + ...V8FastHostFunctionOperations_1__ctor_7.htm | 28 + ...FastHostFunction_VerifyConstructorCall.htm | 20 + ..._V8FastHostFunction_VerifyFunctionCall.htm | 20 + ..._V8_FastProxy_V8FastHostFunction__ctor.htm | 16 + ...8_FastProxy_V8FastHostFunction__ctor_1.htm | 20 + ...8_FastProxy_V8FastHostFunction__ctor_2.htm | 20 + ...8_FastProxy_V8FastHostFunction__ctor_3.htm | 24 + ...8_FastProxy_V8FastHostFunction__ctor_4.htm | 20 + ...8_FastProxy_V8FastHostFunction__ctor_5.htm | 24 + ...8_FastProxy_V8FastHostFunction__ctor_6.htm | 24 + ...8_FastProxy_V8FastHostFunction__ctor_7.htm | 28 + ...oxy_V8FastHostMethodOperations_2__ctor.htm | 24 + ...y_V8FastHostMethodOperations_2__ctor_1.htm | 28 + ...y_V8FastHostMethodOperations_2__ctor_2.htm | 28 + ...y_V8FastHostMethodOperations_2__ctor_3.htm | 32 + ..._V8_FastProxy_V8FastHostMethod_1__ctor.htm | 24 + ...8_FastProxy_V8FastHostMethod_1__ctor_1.htm | 28 + ...8_FastProxy_V8FastHostMethod_1__ctor_2.htm | 28 + ...8_FastProxy_V8FastHostMethod_1__ctor_3.htm | 32 + ...tObjectConfiguration_1_AddMethodGetter.htm | 23 + ...bjectConfiguration_1_AddMethodGetter_1.htm | 27 + ...bjectConfiguration_1_AddMethodGetter_2.htm | 27 + ...bjectConfiguration_1_AddMethodGetter_3.htm | 31 + ...ctConfiguration_1_AddPropertyAccessors.htm | 26 + ...Configuration_1_AddPropertyAccessors_1.htm | 33 + ...onfiguration_1_AddPropertyAccessors__1.htm | 24 + ...figuration_1_AddPropertyAccessors__1_1.htm | 31 + ...bjectConfiguration_1_AddPropertyGetter.htm | 23 + ...ectConfiguration_1_AddPropertyGetter_1.htm | 29 + ...ctConfiguration_1_AddPropertyGetter__1.htm | 25 + ...Configuration_1_AddPropertyGetter__1_1.htm | 31 + ...figuration_1_SetAsyncEnumeratorFactory.htm | 16 + ...uration_1_SetAsyncEnumeratorFactory__1.htm | 18 + ...iguration_1_SetDynamicPropertiesGetter.htm | 16 + ...ctConfiguration_1_SetEnumeratorFactory.htm | 16 + ...Configuration_1_SetEnumeratorFactory_1.htm | 16 + ...onfiguration_1_SetEnumeratorFactory__1.htm | 18 + ..._V8FastHostObjectConfiguration_1__ctor.htm | 9 + ...V8FastHostObjectOperations_1_Configure.htm | 18 + ...oxy_V8FastHostObjectOperations_1__ctor.htm | 9 + ...y_V8FastHostObjectOperations_1__ctor_1.htm | 16 + ...FastProxy_V8FastHostObject_1_Configure.htm | 19 + ..._V8_FastProxy_V8FastHostObject_1__ctor.htm | 9 + ...arScript_V8_FastProxy_V8FastResult_Set.htm | 16 + ...ript_V8_FastProxy_V8FastResult_SetNull.htm | 9 + ...V8_FastProxy_V8FastResult_SetUndefined.htm | 9 + ...Script_V8_FastProxy_V8FastResult_Set_1.htm | 16 + ...cript_V8_FastProxy_V8FastResult_Set_10.htm | 16 + ...cript_V8_FastProxy_V8FastResult_Set_11.htm | 16 + ...cript_V8_FastProxy_V8FastResult_Set_12.htm | 16 + ...cript_V8_FastProxy_V8FastResult_Set_13.htm | 16 + ...cript_V8_FastProxy_V8FastResult_Set_14.htm | 16 + ...cript_V8_FastProxy_V8FastResult_Set_15.htm | 16 + ...cript_V8_FastProxy_V8FastResult_Set_16.htm | 16 + ...Script_V8_FastProxy_V8FastResult_Set_2.htm | 16 + ...Script_V8_FastProxy_V8FastResult_Set_3.htm | 16 + ...Script_V8_FastProxy_V8FastResult_Set_4.htm | 16 + ...Script_V8_FastProxy_V8FastResult_Set_5.htm | 16 + ...Script_V8_FastProxy_V8FastResult_Set_6.htm | 16 + ...Script_V8_FastProxy_V8FastResult_Set_7.htm | 16 + ...Script_V8_FastProxy_V8FastResult_Set_8.htm | 16 + ...Script_V8_FastProxy_V8FastResult_Set_9.htm | 16 + ...cript_V8_FastProxy_V8FastResult_Set__1.htm | 20 + ...ipt_V8_FastProxy_V8FastResult_Set__1_1.htm | 18 + ...oft_ClearScript_V8_V8CpuProfile_ToJson.htm | 2 +- ..._ClearScript_V8_V8CpuProfile_WriteJson.htm | 2 +- ...arScript_V8_V8RuntimeConstraints__ctor.htm | 2 +- ...earScript_V8_V8Runtime_BeginCpuProfile.htm | 2 +- ...rScript_V8_V8Runtime_BeginCpuProfile_1.htm | 2 +- ...t_V8_V8Runtime_CollectCpuProfileSample.htm | 2 +- ...learScript_V8_V8Runtime_CollectGarbage.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime_Compile.htm | 2 +- ...earScript_V8_V8Runtime_CompileDocument.htm | 2 +- ...rScript_V8_V8Runtime_CompileDocument_1.htm | 2 +- ...Script_V8_V8Runtime_CompileDocument_10.htm | 2 +- ...Script_V8_V8Runtime_CompileDocument_11.htm | 2 +- ...rScript_V8_V8Runtime_CompileDocument_2.htm | 2 +- ...rScript_V8_V8Runtime_CompileDocument_3.htm | 2 +- ...rScript_V8_V8Runtime_CompileDocument_4.htm | 2 +- ...rScript_V8_V8Runtime_CompileDocument_5.htm | 2 +- ...rScript_V8_V8Runtime_CompileDocument_6.htm | 2 +- ...rScript_V8_V8Runtime_CompileDocument_7.htm | 2 +- ...rScript_V8_V8Runtime_CompileDocument_8.htm | 2 +- ...rScript_V8_V8Runtime_CompileDocument_9.htm | 2 +- ...oft_ClearScript_V8_V8Runtime_Compile_1.htm | 2 +- ...ft_ClearScript_V8_V8Runtime_Compile_10.htm | 2 +- ...ft_ClearScript_V8_V8Runtime_Compile_11.htm | 2 +- ...oft_ClearScript_V8_V8Runtime_Compile_2.htm | 2 +- ...oft_ClearScript_V8_V8Runtime_Compile_3.htm | 2 +- ...oft_ClearScript_V8_V8Runtime_Compile_4.htm | 2 +- ...oft_ClearScript_V8_V8Runtime_Compile_5.htm | 2 +- ...oft_ClearScript_V8_V8Runtime_Compile_6.htm | 2 +- ...oft_ClearScript_V8_V8Runtime_Compile_7.htm | 2 +- ...oft_ClearScript_V8_V8Runtime_Compile_8.htm | 2 +- ...oft_ClearScript_V8_V8Runtime_Compile_9.htm | 2 +- ...Script_V8_V8Runtime_CreateScriptEngine.htm | 2 +- ...ript_V8_V8Runtime_CreateScriptEngine_1.htm | 2 +- ...ript_V8_V8Runtime_CreateScriptEngine_2.htm | 2 +- ...ript_V8_V8Runtime_CreateScriptEngine_3.htm | 2 +- ...ript_V8_V8Runtime_CreateScriptEngine_4.htm | 2 +- ...ript_V8_V8Runtime_CreateScriptEngine_5.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime_Dispose.htm | 2 +- ...ClearScript_V8_V8Runtime_EndCpuProfile.htm | 2 +- ...t_ClearScript_V8_V8Runtime_GetHeapInfo.htm | 2 +- ...rScript_V8_V8Runtime_WriteHeapSnapshot.htm | 2 +- ...crosoft_ClearScript_V8_V8Runtime__ctor.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime__ctor_1.htm | 2 +- ...soft_ClearScript_V8_V8Runtime__ctor_10.htm | 2 +- ...soft_ClearScript_V8_V8Runtime__ctor_11.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime__ctor_2.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime__ctor_3.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime__ctor_4.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime__ctor_5.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime__ctor_6.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime__ctor_7.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime__ctor_8.htm | 2 +- ...osoft_ClearScript_V8_V8Runtime__ctor_9.htm | 2 +- ...ript_V8_V8ScriptEngine_BeginCpuProfile.htm | 2 +- ...pt_V8_V8ScriptEngine_BeginCpuProfile_1.htm | 2 +- ..._V8_V8ScriptEngine_CancelAwaitDebugger.htm | 2 +- ...ript_V8_V8ScriptEngine_CancelInterrupt.htm | 2 +- ...V8ScriptEngine_CollectCpuProfileSample.htm | 2 +- ...cript_V8_V8ScriptEngine_CollectGarbage.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine_Compile.htm | 2 +- ...ript_V8_V8ScriptEngine_CompileDocument.htm | 2 +- ...pt_V8_V8ScriptEngine_CompileDocument_1.htm | 2 +- ...t_V8_V8ScriptEngine_CompileDocument_10.htm | 2 +- ...t_V8_V8ScriptEngine_CompileDocument_11.htm | 2 +- ...pt_V8_V8ScriptEngine_CompileDocument_2.htm | 2 +- ...pt_V8_V8ScriptEngine_CompileDocument_3.htm | 2 +- ...pt_V8_V8ScriptEngine_CompileDocument_4.htm | 2 +- ...pt_V8_V8ScriptEngine_CompileDocument_5.htm | 2 +- ...pt_V8_V8ScriptEngine_CompileDocument_6.htm | 2 +- ...pt_V8_V8ScriptEngine_CompileDocument_7.htm | 2 +- ...pt_V8_V8ScriptEngine_CompileDocument_8.htm | 2 +- ...pt_V8_V8ScriptEngine_CompileDocument_9.htm | 2 +- ...learScript_V8_V8ScriptEngine_Compile_1.htm | 2 +- ...earScript_V8_V8ScriptEngine_Compile_10.htm | 2 +- ...earScript_V8_V8ScriptEngine_Compile_11.htm | 2 +- ...learScript_V8_V8ScriptEngine_Compile_2.htm | 2 +- ...learScript_V8_V8ScriptEngine_Compile_3.htm | 2 +- ...learScript_V8_V8ScriptEngine_Compile_4.htm | 2 +- ...learScript_V8_V8ScriptEngine_Compile_5.htm | 2 +- ...learScript_V8_V8ScriptEngine_Compile_6.htm | 2 +- ...learScript_V8_V8ScriptEngine_Compile_7.htm | 2 +- ...learScript_V8_V8ScriptEngine_Compile_8.htm | 2 +- ...learScript_V8_V8ScriptEngine_Compile_9.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine_Dispose.htm | 2 +- ...Script_V8_V8ScriptEngine_EndCpuProfile.htm | 2 +- ...ClearScript_V8_V8ScriptEngine_Evaluate.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine_Execute.htm | 2 +- ...cript_V8_V8ScriptEngine_ExecuteCommand.htm | 2 +- ...t_V8_V8ScriptEngine_GetRuntimeHeapInfo.htm | 2 +- ...Script_V8_V8ScriptEngine_GetStackTrace.htm | 2 +- ...learScript_V8_V8ScriptEngine_Interrupt.htm | 2 +- ...8ScriptEngine_WriteRuntimeHeapSnapshot.htm | 2 +- ...ft_ClearScript_V8_V8ScriptEngine__ctor.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine__ctor_1.htm | 2 +- ...ClearScript_V8_V8ScriptEngine__ctor_10.htm | 2 +- ...ClearScript_V8_V8ScriptEngine__ctor_11.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine__ctor_2.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine__ctor_3.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine__ctor_4.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine__ctor_5.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine__ctor_6.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine__ctor_7.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine__ctor_8.htm | 2 +- ..._ClearScript_V8_V8ScriptEngine__ctor_9.htm | 2 +- ...rosoft_ClearScript_V8_V8Script_Dispose.htm | 2 +- ...crosoft_ClearScript_ValueRef_Create__1.htm | 2 +- ...rosoft_ClearScript_VoidResult_ToString.htm | 2 +- ..._Windows_Core_ISyncInvoker_CheckAccess.htm | 2 +- ...cript_Windows_Core_ISyncInvoker_Invoke.htm | 2 +- ...pt_Windows_Core_ISyncInvoker_Invoke__1.htm | 2 +- ...Windows_Core_ISyncInvoker_VerifyAccess.htm | 2 +- ...dows_Core_JScriptEngine_ExecuteCommand.htm | 2 +- ...cript_Windows_Core_JScriptEngine__ctor.htm | 2 +- ...ipt_Windows_Core_JScriptEngine__ctor_1.htm | 2 +- ...ipt_Windows_Core_JScriptEngine__ctor_2.htm | 2 +- ...ipt_Windows_Core_JScriptEngine__ctor_3.htm | 2 +- ...ipt_Windows_Core_JScriptEngine__ctor_4.htm | 2 +- ...ndows_Core_NullSyncInvoker_CheckAccess.htm | 2 +- ...pt_Windows_Core_NullSyncInvoker_Invoke.htm | 2 +- ...Windows_Core_NullSyncInvoker_Invoke__1.htm | 2 +- ...dows_Core_NullSyncInvoker_VerifyAccess.htm | 2 +- ...ows_Core_VBScriptEngine_ExecuteCommand.htm | 2 +- ...ript_Windows_Core_VBScriptEngine__ctor.htm | 2 +- ...pt_Windows_Core_VBScriptEngine__ctor_1.htm | 2 +- ...pt_Windows_Core_VBScriptEngine__ctor_2.htm | 2 +- ...pt_Windows_Core_VBScriptEngine__ctor_3.htm | 2 +- ...pt_Windows_Core_VBScriptEngine__ctor_4.htm | 2 +- ...s_Core_WindowsScriptEngine_CheckAccess.htm | 2 +- ...ore_WindowsScriptEngine_CollectGarbage.htm | 2 +- ...ndows_Core_WindowsScriptEngine_Dispose.htm | 2 +- ...Core_WindowsScriptEngine_GetStackTrace.htm | 2 +- ...ows_Core_WindowsScriptEngine_Interrupt.htm | 2 +- ..._Core_WindowsScriptEngine_VerifyAccess.htm | 2 +- ...Windows_Core_WindowsScriptEngine__ctor.htm | 2 +- ...ipt_Windows_IHostWindow_EnableModeless.htm | 2 +- ...indowsScriptObject_GetUnderlyingObject.htm | 2 +- ...t_Windows_JScriptEngine_ExecuteCommand.htm | 2 +- ...learScript_Windows_JScriptEngine__ctor.htm | 2 +- ...arScript_Windows_JScriptEngine__ctor_1.htm | 2 +- ...arScript_Windows_JScriptEngine__ctor_2.htm | 2 +- ...arScript_Windows_JScriptEngine__ctor_3.htm | 2 +- ...arScript_Windows_JScriptEngine__ctor_4.htm | 2 +- ...t_ClearScript_Windows_Nothing_ToString.htm | 2 +- ..._Windows_VBScriptEngine_ExecuteCommand.htm | 2 +- ...earScript_Windows_VBScriptEngine__ctor.htm | 2 +- ...rScript_Windows_VBScriptEngine__ctor_1.htm | 2 +- ...rScript_Windows_VBScriptEngine__ctor_2.htm | 2 +- ...rScript_Windows_VBScriptEngine__ctor_3.htm | 2 +- ...rScript_Windows_VBScriptEngine__ctor_4.htm | 2 +- ...ript_Windows_WindowsScriptEngine__ctor.htm | 2 +- ...ods_T_Microsoft_ClearScript_Extensions.htm | 8 +- ...ft_ClearScript_JavaScript_IArrayBuffer.htm | 18 +- ...learScript_JavaScript_IArrayBufferView.htm | 18 +- ...osoft_ClearScript_JavaScript_IDataView.htm | 16 +- ...oft_ClearScript_JavaScript_ITypedArray.htm | 16 +- ...t_ClearScript_JavaScript_ITypedArray_1.htm | 28 +- ...ClearScript_ScriptInterruptedException.htm | 6 +- ...pt_V8_FastProxy_IV8FastAsyncEnumerator.htm | 10 + ...rScript_V8_FastProxy_IV8FastEnumerator.htm | 10 + ...FastProxy_IV8FastHostDynamicProperties.htm | 22 + ...astProxy_IV8FastHostFunctionOperations.htm | 34 + ..._FastProxy_IV8FastHostMethodOperations.htm | 34 + ..._FastProxy_IV8FastHostObjectOperations.htm | 32 + ...oft_ClearScript_V8_FastProxy_V8FastArg.htm | 82 + ...ft_ClearScript_V8_FastProxy_V8FastArgs.htm | 90 + ...V8_FastProxy_V8FastHostDynamicObject_1.htm | 24 + ...Script_V8_FastProxy_V8FastHostFunction.htm | 12 + ...stProxy_V8FastHostFunctionOperations_1.htm | 8 + ...FastProxy_V8FastHostMethodOperations_2.htm | 8 + ...Script_V8_FastProxy_V8FastHostMethod_1.htm | 8 + ...tProxy_V8FastHostObjectConfiguration_1.htm | 42 + ...FastProxy_V8FastHostObjectOperations_1.htm | 8 + ...Script_V8_FastProxy_V8FastHostObject_1.htm | 8 + ..._ClearScript_V8_FastProxy_V8FastResult.htm | 48 + .../N_Microsoft_ClearScript_V8_FastProxy.htm | 60 + ...ript_Extensions_ToRestrictedHostObject.htm | 8 +- ...ArrayBufferView_InvokeWithDirectAccess.htm | 8 +- ..._JavaScript_IArrayBufferView_ReadBytes.htm | 10 + ...JavaScript_IArrayBufferView_WriteBytes.htm | 10 + ...pt_IArrayBuffer_InvokeWithDirectAccess.htm | 8 +- ...ript_JavaScript_IArrayBuffer_ReadBytes.htm | 10 + ...ipt_JavaScript_IArrayBuffer_WriteBytes.htm | 10 + ...arScript_JavaScript_ITypedArray_1_Read.htm | 10 + ...rScript_JavaScript_ITypedArray_1_Write.htm | 10 + ...ynamicProperties_DeleteDynamicProperty.htm | 10 + ...stDynamicProperties_GetDynamicProperty.htm | 10 + ...stDynamicProperties_HasDynamicProperty.htm | 10 + ...stDynamicProperties_SetDynamicProperty.htm | 10 + ...astHostObjectOperations_DeleteProperty.htm | 10 + ...V8FastHostObjectOperations_GetProperty.htm | 10 + ...FastHostObjectOperations_QueryProperty.htm | 10 + ...V8FastHostObjectOperations_SetProperty.htm | 10 + ...arScript_V8_FastProxy_V8FastArg_TryGet.htm | 44 + ...rScript_V8_FastProxy_V8FastArgs_TryGet.htm | 44 + ...tDynamicObject_1_DeleteDynamicProperty.htm | 10 + ...HostDynamicObject_1_GetDynamicProperty.htm | 10 + ...HostDynamicObject_1_HasDynamicProperty.htm | 10 + ...HostDynamicObject_1_SetDynamicProperty.htm | 10 + ...y_V8FastHostFunctionOperations_1__ctor.htm | 22 + ..._V8_FastProxy_V8FastHostFunction__ctor.htm | 22 + ...oxy_V8FastHostMethodOperations_2__ctor.htm | 14 + ..._V8_FastProxy_V8FastHostMethod_1__ctor.htm | 14 + ...tObjectConfiguration_1_AddMethodGetter.htm | 14 + ...ctConfiguration_1_AddPropertyAccessors.htm | 14 + ...bjectConfiguration_1_AddPropertyGetter.htm | 14 + ...figuration_1_SetAsyncEnumeratorFactory.htm | 10 + ...ctConfiguration_1_SetEnumeratorFactory.htm | 12 + ...oxy_V8FastHostObjectOperations_1__ctor.htm | 10 + ...arScript_V8_FastProxy_V8FastResult_Set.htm | 44 + ...arScript_CustomAttributeLoader_Default.htm | 2 +- ...ipt_DefaultDocumentLoader_MaxCacheSize.htm | 2 +- ...ipt_DefaultScriptUsageAttribute_Access.htm | 2 +- ...soft_ClearScript_DocumentCategory_Json.htm | 2 +- ...arScript_DocumentCategory_MaxCacheSize.htm | 2 +- ...ft_ClearScript_DocumentCategory_Script.htm | 2 +- ...soft_ClearScript_DocumentInfo_Category.htm | 2 +- ...earScript_DocumentInfo_ContextCallback.htm | 2 +- ...crosoft_ClearScript_DocumentInfo_Flags.htm | 2 +- ...icrosoft_ClearScript_DocumentInfo_Name.htm | 2 +- ..._ClearScript_DocumentInfo_SourceMapUri.htm | 2 +- ...Microsoft_ClearScript_DocumentInfo_Uri.htm | 2 +- ...oft_ClearScript_DocumentLoader_Default.htm | 2 +- ...learScript_DocumentLoader_MaxCacheSize.htm | 2 +- ...earScript_DocumentSettings_AccessFlags.htm | 2 +- ...ipt_DocumentSettings_AsyncLoadCallback.htm | 2 +- ...cript_DocumentSettings_ContextCallback.htm | 2 +- ...pt_DocumentSettings_FileNameExtensions.htm | 2 +- ...arScript_DocumentSettings_LoadCallback.htm | 2 +- ...ft_ClearScript_DocumentSettings_Loader.htm | 2 +- ...learScript_DocumentSettings_SearchPath.htm | 2 +- ...icrosoft_ClearScript_Document_Contents.htm | 2 +- ...icrosoft_ClearScript_Document_Encoding.htm | 2 +- .../P_Microsoft_ClearScript_Document_Info.htm | 2 +- ...cript_HostSettings_AuxiliarySearchPath.htm | 2 +- ...ipt_HostSettings_CustomAttributeLoader.htm | 2 +- ...arScript_HostSettings_UseAssemblyTable.htm | 2 +- ...ript_IScriptEngineException_EngineName.htm | 2 +- ...pt_IScriptEngineException_ErrorDetails.htm | 2 +- ...ScriptEngineException_ExecutionStarted.htm | 2 +- ...rScript_IScriptEngineException_HResult.htm | 2 +- ..._IScriptEngineException_InnerException.htm | 2 +- ...rScript_IScriptEngineException_IsFatal.htm | 2 +- ...rScript_IScriptEngineException_Message.htm | 2 +- ...IScriptEngineException_ScriptException.htm | 2 +- ...ngineException_ScriptExceptionAsObject.htm | 2 +- ...learScript_IScriptEngine_AccessContext.htm | 4 +- ...arScript_IScriptEngine_AllowReflection.htm | 4 +- ...ipt_IScriptEngine_ContinuationCallback.htm | 4 +- ...pt_IScriptEngine_CustomAttributeLoader.htm | 4 +- ...learScript_IScriptEngine_DefaultAccess.htm | 4 +- ...pt_IScriptEngine_DisableDynamicBinding.htm | 4 +- ..._IScriptEngine_DisableExtensionMethods.htm | 4 +- ...pt_IScriptEngine_DisableFloatNarrowing.htm | 4 +- ...Engine_DisableListIndexTypeRestriction.htm | 4 +- ...t_IScriptEngine_DisableTypeRestriction.htm | 4 +- ...rScript_IScriptEngine_DocumentSettings.htm | 4 +- ..._IScriptEngine_EnableAutoHostVariables.htm | 4 +- ...IScriptEngine_EnableNullResultWrapping.htm | 4 +- ...criptEngine_EnforceAnonymousTypeAccess.htm | 4 +- ...ptEngine_ExposeHostObjectStaticMembers.htm | 4 +- ...Script_IScriptEngine_FileNameExtension.htm | 4 +- ...t_ClearScript_IScriptEngine_FormatCode.htm | 4 +- ...osoft_ClearScript_IScriptEngine_Global.htm | 4 +- ...oft_ClearScript_IScriptEngine_HostData.htm | 4 +- ...crosoft_ClearScript_IScriptEngine_Name.htm | 4 +- ...arScript_IScriptEngine_NullExportValue.htm | 10 +- ...arScript_IScriptEngine_NullImportValue.htm | 18 + ...osoft_ClearScript_IScriptEngine_Script.htm | 4 +- ...ipt_IScriptEngine_UndefinedImportValue.htm | 4 +- ...ScriptEngine_UseReflectionBindFallback.htm | 6 +- ...arScript_IScriptEngine_VoidResultValue.htm | 4 +- ...osoft_ClearScript_IScriptObject_Engine.htm | 2 +- ...crosoft_ClearScript_IScriptObject_Item.htm | 2 +- ...osoft_ClearScript_IScriptObject_Item_1.htm | 2 +- ...arScript_IScriptObject_PropertyIndices.htm | 2 +- ...learScript_IScriptObject_PropertyNames.htm | 2 +- ...avaScript_IArrayBufferView_ArrayBuffer.htm | 2 +- ...ipt_JavaScript_IArrayBufferView_Offset.htm | 2 +- ...cript_JavaScript_IArrayBufferView_Size.htm | 2 +- ...earScript_JavaScript_IArrayBuffer_Size.htm | 2 +- ...ipt_JavaScript_IJavaScriptObject_Flags.htm | 2 +- ...ript_JavaScript_IJavaScriptObject_Kind.htm | 2 +- ...arScript_JavaScript_ITypedArray_Length.htm | 2 +- ...ipt_JavaScript_ModuleCategory_CommonJS.htm | 2 +- ...ipt_JavaScript_ModuleCategory_Standard.htm | 2 +- ...osoft_ClearScript_PropertyBag_Comparer.htm | 2 +- ...Microsoft_ClearScript_PropertyBag_Item.htm | 2 +- ...Microsoft_ClearScript_PropertyBag_Keys.htm | 2 +- ...crosoft_ClearScript_PropertyBag_Values.htm | 2 +- ...cript_ScriptEngineException_EngineName.htm | 2 +- ...ipt_ScriptEngineException_ErrorDetails.htm | 2 +- ...ScriptEngineException_ExecutionStarted.htm | 2 +- ...arScript_ScriptEngineException_IsFatal.htm | 2 +- ..._ScriptEngineException_ScriptException.htm | 2 +- ...ngineException_ScriptExceptionAsObject.htm | 2 +- ...ClearScript_ScriptEngine_AccessContext.htm | 4 +- ...earScript_ScriptEngine_AllowReflection.htm | 4 +- ...ript_ScriptEngine_ContinuationCallback.htm | 4 +- ...osoft_ClearScript_ScriptEngine_Current.htm | 4 +- ...ipt_ScriptEngine_CustomAttributeLoader.htm | 4 +- ...ClearScript_ScriptEngine_DefaultAccess.htm | 4 +- ...ipt_ScriptEngine_DisableDynamicBinding.htm | 4 +- ...t_ScriptEngine_DisableExtensionMethods.htm | 4 +- ...ipt_ScriptEngine_DisableFloatNarrowing.htm | 4 +- ...Engine_DisableListIndexTypeRestriction.htm | 4 +- ...pt_ScriptEngine_DisableTypeRestriction.htm | 4 +- ...arScript_ScriptEngine_DocumentSettings.htm | 4 +- ...t_ScriptEngine_EnableAutoHostVariables.htm | 4 +- ..._ScriptEngine_EnableNullResultWrapping.htm | 4 +- ...criptEngine_EnforceAnonymousTypeAccess.htm | 4 +- ...ptEngine_ExposeHostObjectStaticMembers.htm | 4 +- ...rScript_ScriptEngine_FileNameExtension.htm | 4 +- ...ft_ClearScript_ScriptEngine_FormatCode.htm | 4 +- ...rosoft_ClearScript_ScriptEngine_Global.htm | 4 +- ...soft_ClearScript_ScriptEngine_HostData.htm | 4 +- ...icrosoft_ClearScript_ScriptEngine_Name.htm | 4 +- ...earScript_ScriptEngine_NullExportValue.htm | 10 +- ...earScript_ScriptEngine_NullImportValue.htm | 20 + ...rosoft_ClearScript_ScriptEngine_Script.htm | 4 +- ...ript_ScriptEngine_UndefinedImportValue.htm | 4 +- ...ScriptEngine_UseReflectionBindFallback.htm | 6 +- ...earScript_ScriptEngine_VoidResultValue.htm | 4 +- ..._ScriptInterruptedException_EngineName.htm | 2 +- ...criptInterruptedException_ErrorDetails.htm | 2 +- ...tInterruptedException_ExecutionStarted.htm | 2 +- ...ipt_ScriptInterruptedException_IsFatal.htm | 2 +- ...ptInterruptedException_ScriptException.htm | 2 +- ...uptedException_ScriptExceptionAsObject.htm | 2 +- ...learScript_ScriptMemberAttribute_Flags.htm | 2 +- ...ClearScript_ScriptMemberAttribute_Name.htm | 2 +- ...rosoft_ClearScript_ScriptObject_Engine.htm | 2 +- ...icrosoft_ClearScript_ScriptObject_Item.htm | 2 +- ...rosoft_ClearScript_ScriptObject_Item_1.htm | 2 +- ...earScript_ScriptObject_PropertyIndices.htm | 2 +- ...ClearScript_ScriptObject_PropertyNames.htm | 2 +- ...learScript_ScriptUsageAttribute_Access.htm | 2 +- ...ft_ClearScript_StringDocument_Contents.htm | 2 +- ...ft_ClearScript_StringDocument_Encoding.htm | 2 +- ...rosoft_ClearScript_StringDocument_Info.htm | 2 +- ...arScript_StringDocument_StringContents.htm | 2 +- ...namicProperties_DynamicPropertyIndices.htm | 11 + ...DynamicProperties_DynamicPropertyNames.htm | 11 + ...stProxy_IV8FastHostFunction_Operations.htm | 11 + ...FastProxy_IV8FastHostMethod_Operations.htm | 11 + ...FastProxy_IV8FastHostObject_Operations.htm | 11 + ...rScript_V8_FastProxy_V8FastArg_IsFalsy.htm | 12 + ...arScript_V8_FastProxy_V8FastArg_IsNull.htm | 12 + ...Script_V8_FastProxy_V8FastArg_IsTruthy.htm | 12 + ...ipt_V8_FastProxy_V8FastArg_IsUndefined.htm | 12 + ...arScript_V8_FastProxy_V8FastArgs_Count.htm | 12 + ...DynamicObject_1_DynamicPropertyIndices.htm | 13 + ...stDynamicObject_1_DynamicPropertyNames.htm | 13 + ...iguration_1_EnumerateIndexedProperties.htm | 14 + ...Script_V8_FastProxy_V8FastResult_IsSet.htm | 14 + ...earScript_V8_V8CpuProfile_EndTimestamp.htm | 2 +- ...osoft_ClearScript_V8_V8CpuProfile_Name.htm | 2 +- ...ipt_V8_V8CpuProfile_Node_BailoutReason.htm | 2 +- ...Script_V8_V8CpuProfile_Node_ChildNodes.htm | 2 +- ...ript_V8_V8CpuProfile_Node_ColumnNumber.htm | 2 +- ...ript_V8_V8CpuProfile_Node_FunctionName.htm | 2 +- ...arScript_V8_V8CpuProfile_Node_HitCount.htm | 2 +- ...arScript_V8_V8CpuProfile_Node_HitLines.htm | 2 +- ...Script_V8_V8CpuProfile_Node_LineNumber.htm | 2 +- ...learScript_V8_V8CpuProfile_Node_NodeId.htm | 2 +- ...arScript_V8_V8CpuProfile_Node_ScriptId.htm | 2 +- ...Script_V8_V8CpuProfile_Node_ScriptName.htm | 2 +- ...t_ClearScript_V8_V8CpuProfile_RootNode.htm | 2 +- ...learScript_V8_V8CpuProfile_Sample_Node.htm | 2 +- ...cript_V8_V8CpuProfile_Sample_Timestamp.htm | 2 +- ...ft_ClearScript_V8_V8CpuProfile_Samples.htm | 2 +- ...rScript_V8_V8CpuProfile_StartTimestamp.htm | 2 +- ...imeConstraints_HeapExpansionMultiplier.htm | 2 +- ...meConstraints_MaxArrayBufferAllocation.htm | 2 +- ...V8RuntimeConstraints_MaxExecutableSize.htm | 2 +- ...8_V8RuntimeConstraints_MaxNewSpaceSize.htm | 2 +- ...8_V8RuntimeConstraints_MaxOldSpaceSize.htm | 2 +- ...V8RuntimeConstraints_MaxYoungSpaceSize.htm | 2 +- ...ipt_V8_V8RuntimeDebuggerEventArgs_Name.htm | 2 +- ...ipt_V8_V8RuntimeDebuggerEventArgs_Port.htm | 2 +- ...ipt_V8_V8RuntimeHeapInfo_HeapSizeLimit.htm | 2 +- ...8_V8RuntimeHeapInfo_TotalAvailableSize.htm | 2 +- ...V8_V8RuntimeHeapInfo_TotalExternalSize.htm | 2 +- ...ipt_V8_V8RuntimeHeapInfo_TotalHeapSize.htm | 2 +- ...untimeHeapInfo_TotalHeapSizeExecutable.htm | 2 +- ...V8_V8RuntimeHeapInfo_TotalPhysicalSize.htm | 2 +- ...ript_V8_V8RuntimeHeapInfo_UsedHeapSize.htm | 2 +- ..._V8_V8Runtime_CpuProfileSampleInterval.htm | 2 +- ...arScript_V8_V8Runtime_DocumentSettings.htm | 2 +- ...8_V8Runtime_EnableInterruptPropagation.htm | 2 +- ...ft_ClearScript_V8_V8Runtime_FormatCode.htm | 2 +- ...pt_V8_V8Runtime_HeapSizeSampleInterval.htm | 2 +- ...t_V8_V8Runtime_HeapSizeViolationPolicy.htm | 2 +- ...t_ClearScript_V8_V8Runtime_MaxHeapSize.htm | 2 +- ...ClearScript_V8_V8Runtime_MaxStackUsage.htm | 2 +- ...icrosoft_ClearScript_V8_V8Runtime_Name.htm | 2 +- ...8ScriptEngine_CpuProfileSampleInterval.htm | 2 +- ...gine_EnableRuntimeInterruptPropagation.htm | 2 +- ...pt_V8_V8ScriptEngine_FileNameExtension.htm | 2 +- ...t_ClearScript_V8_V8ScriptEngine_Global.htm | 2 +- ...t_V8_V8ScriptEngine_MaxRuntimeHeapSize.htm | 2 +- ...V8_V8ScriptEngine_MaxRuntimeStackUsage.htm | 2 +- ...ptEngine_RuntimeHeapSizeSampleInterval.htm | 2 +- ...tEngine_RuntimeHeapSizeViolationPolicy.htm | 2 +- ...t_ClearScript_V8_V8ScriptEngine_Script.htm | 2 +- ...ine_SuppressExtensionMethodEnumeration.htm | 2 +- ...gine_SuppressInstanceMethodEnumeration.htm | 2 +- ...t_ClearScript_V8_V8Script_DocumentInfo.htm | 2 +- ...Microsoft_ClearScript_V8_V8Script_Name.htm | 2 +- ...ript_V8_V8Settings_EnableTopLevelAwait.htm | 2 +- ..._ClearScript_V8_V8Settings_GlobalFlags.htm | 2 +- ...s_Core_JScriptEngine_FileNameExtension.htm | 2 +- ..._Core_VBScriptEngine_FileNameExtension.htm | 2 +- ...indows_Core_WindowsScriptEngine_Global.htm | 2 +- ...ws_Core_WindowsScriptEngine_HostWindow.htm | 2 +- ...indows_Core_WindowsScriptEngine_Script.htm | 2 +- ...s_Core_WindowsScriptEngine_SyncInvoker.htm | 2 +- ...Script_Windows_IHostWindow_OwnerHandle.htm | 2 +- ...indows_JScriptEngine_FileNameExtension.htm | 2 +- ...ndows_VBScriptEngine_FileNameExtension.htm | 2 +- ...Windows_WindowsScriptEngine_Dispatcher.htm | 2 +- ..._T_Microsoft_ClearScript_IScriptEngine.htm | 4 +- ...s_T_Microsoft_ClearScript_ScriptEngine.htm | 4 +- ...ClearScript_ScriptInterruptedException.htm | 8 +- ...FastProxy_IV8FastHostDynamicProperties.htm | 10 + ...cript_V8_FastProxy_IV8FastHostFunction.htm | 8 + ...rScript_V8_FastProxy_IV8FastHostMethod.htm | 8 + ...rScript_V8_FastProxy_IV8FastHostObject.htm | 8 + ...oft_ClearScript_V8_FastProxy_V8FastArg.htm | 14 + ...ft_ClearScript_V8_FastProxy_V8FastArgs.htm | 8 + ...V8_FastProxy_V8FastHostDynamicObject_1.htm | 10 + ...tProxy_V8FastHostObjectConfiguration_1.htm | 8 + ..._ClearScript_V8_FastProxy_V8FastResult.htm | 8 + ...icrosoft_ClearScript_V8_V8ScriptEngine.htm | 2 + ...ClearScript_Windows_Core_JScriptEngine.htm | 2 + ...learScript_Windows_Core_VBScriptEngine.htm | 2 + ...cript_Windows_Core_WindowsScriptEngine.htm | 2 + ...soft_ClearScript_Windows_JScriptEngine.htm | 2 + ...oft_ClearScript_Windows_VBScriptEngine.htm | 2 + ...learScript_Windows_WindowsScriptEngine.htm | 2 + docs/Reference/html/R_Project_Reference.htm | 2 +- ..._ClearScript_AsyncDocumentLoadCallback.htm | 2 +- ...soft_ClearScript_ConcurrentPropertyBag.htm | 2 +- ...osoft_ClearScript_ContinuationCallback.htm | 2 +- ...soft_ClearScript_CustomAttributeLoader.htm | 2 +- ...soft_ClearScript_DefaultDocumentLoader.htm | 2 +- ...learScript_DefaultScriptUsageAttribute.htm | 2 +- .../html/T_Microsoft_ClearScript_Document.htm | 2 +- ...rosoft_ClearScript_DocumentAccessFlags.htm | 2 +- ...Microsoft_ClearScript_DocumentCategory.htm | 2 +- ...ft_ClearScript_DocumentContextCallback.htm | 2 +- .../T_Microsoft_ClearScript_DocumentFlags.htm | 2 +- .../T_Microsoft_ClearScript_DocumentInfo.htm | 2 +- ...osoft_ClearScript_DocumentLoadCallback.htm | 2 +- ...T_Microsoft_ClearScript_DocumentLoader.htm | 2 +- ...Microsoft_ClearScript_DocumentSettings.htm | 2 +- ...icrosoft_ClearScript_DynamicHostObject.htm | 2 +- ..._Microsoft_ClearScript_EventConnection.htm | 2 +- ...icrosoft_ClearScript_EventConnection_1.htm | 2 +- .../T_Microsoft_ClearScript_EventSource.htm | 2 +- .../T_Microsoft_ClearScript_EventSource_1.htm | 2 +- ...soft_ClearScript_ExtendedHostFunctions.htm | 2 +- .../T_Microsoft_ClearScript_Extensions.htm | 10 +- .../T_Microsoft_ClearScript_HostFunctions.htm | 2 +- .../T_Microsoft_ClearScript_HostItemFlags.htm | 2 +- .../T_Microsoft_ClearScript_HostSettings.htm | 2 +- ...crosoft_ClearScript_HostTypeCollection.htm | 2 +- .../T_Microsoft_ClearScript_IPropertyBag.htm | 2 +- .../T_Microsoft_ClearScript_IScriptEngine.htm | 4 +- ...oft_ClearScript_IScriptEngineException.htm | 2 +- .../T_Microsoft_ClearScript_IScriptObject.htm | 2 +- ...icrosoft_ClearScript_IScriptableObject.htm | 2 +- ...ft_ClearScript_ImmutableValueAttribute.htm | 2 +- ...ft_ClearScript_JavaScript_IArrayBuffer.htm | 18 +- ...learScript_JavaScript_IArrayBufferView.htm | 18 +- ...osoft_ClearScript_JavaScript_IDataView.htm | 18 +- ...earScript_JavaScript_IJavaScriptObject.htm | 2 +- ...oft_ClearScript_JavaScript_ITypedArray.htm | 18 +- ...t_ClearScript_JavaScript_ITypedArray_1.htm | 32 +- ...Script_JavaScript_JavaScriptExtensions.htm | 2 +- ...cript_JavaScript_JavaScriptObjectFlags.htm | 13 +- ...Script_JavaScript_JavaScriptObjectKind.htm | 2 +- ..._ClearScript_JavaScript_ModuleCategory.htm | 2 +- ...rScript_NoDefaultScriptAccessAttribute.htm | 2 +- ...ft_ClearScript_NoScriptAccessAttribute.htm | 2 +- .../T_Microsoft_ClearScript_PropertyBag.htm | 2 +- .../T_Microsoft_ClearScript_ScriptAccess.htm | 2 +- .../T_Microsoft_ClearScript_ScriptEngine.htm | 4 +- ...soft_ClearScript_ScriptEngineException.htm | 2 +- ...ClearScript_ScriptInterruptedException.htm | 18 +- ...soft_ClearScript_ScriptMemberAttribute.htm | 2 +- ...icrosoft_ClearScript_ScriptMemberFlags.htm | 2 +- .../T_Microsoft_ClearScript_ScriptObject.htm | 2 +- ...osoft_ClearScript_ScriptUsageAttribute.htm | 2 +- ...T_Microsoft_ClearScript_StringDocument.htm | 2 +- .../T_Microsoft_ClearScript_Undefined.htm | 2 +- ...pt_V8_FastProxy_IV8FastAsyncEnumerator.htm | 16 + ...rScript_V8_FastProxy_IV8FastEnumerator.htm | 16 + ...FastProxy_IV8FastHostDynamicProperties.htm | 28 + ...cript_V8_FastProxy_IV8FastHostFunction.htm | 14 + ...astProxy_IV8FastHostFunctionOperations.htm | 40 + ...rScript_V8_FastProxy_IV8FastHostMethod.htm | 14 + ..._FastProxy_IV8FastHostMethodOperations.htm | 40 + ...rScript_V8_FastProxy_IV8FastHostObject.htm | 10 + ..._FastProxy_IV8FastHostObjectOperations.htm | 34 + ...oft_ClearScript_V8_FastProxy_V8FastArg.htm | 96 + ...ft_ClearScript_V8_FastProxy_V8FastArgs.htm | 98 + ...V8_FastProxy_V8FastHostDynamicObject_1.htm | 51 + ...V8_FastProxy_V8FastHostFieldAccessor_2.htm | 20 + ...Script_V8_FastProxy_V8FastHostFunction.htm | 40 + ...V8_FastProxy_V8FastHostFunctionInvoker.htm | 24 + ...stProxy_V8FastHostFunctionOperations_1.htm | 39 + ...V8_FastProxy_V8FastHostMethodInvoker_1.htm | 28 + ...FastProxy_V8FastHostMethodOperations_2.htm | 33 + ...Script_V8_FastProxy_V8FastHostMethod_1.htm | 32 + ...tProxy_V8FastHostObjectConfiguration_1.htm | 57 + ...stProxy_V8FastHostObjectConfigurator_1.htm | 20 + ...FastProxy_V8FastHostObjectOperations_1.htm | 22 + ...Script_V8_FastProxy_V8FastHostObject_1.htm | 27 + ...t_V8_FastProxy_V8FastHostPropertyFlags.htm | 24 + ...8_FastProxy_V8FastHostPropertyGetter_1.htm | 24 + ...8_FastProxy_V8FastHostPropertySetter_1.htm | 24 + ..._ClearScript_V8_FastProxy_V8FastResult.htm | 56 + ...T_Microsoft_ClearScript_V8_V8CacheKind.htm | 2 +- ...Microsoft_ClearScript_V8_V8CacheResult.htm | 2 +- ..._Microsoft_ClearScript_V8_V8CpuProfile.htm | 2 +- ...osoft_ClearScript_V8_V8CpuProfileFlags.htm | 2 +- ...osoft_ClearScript_V8_V8CpuProfile_Node.htm | 2 +- ...earScript_V8_V8CpuProfile_Node_HitLine.htm | 2 +- ...oft_ClearScript_V8_V8CpuProfile_Sample.htm | 2 +- ...Microsoft_ClearScript_V8_V8GlobalFlags.htm | 2 +- .../T_Microsoft_ClearScript_V8_V8Runtime.htm | 2 +- ...ft_ClearScript_V8_V8RuntimeConstraints.htm | 2 +- ...arScript_V8_V8RuntimeDebuggerEventArgs.htm | 2 +- ...icrosoft_ClearScript_V8_V8RuntimeFlags.htm | 2 +- ...osoft_ClearScript_V8_V8RuntimeHeapInfo.htm | 2 +- ...learScript_V8_V8RuntimeViolationPolicy.htm | 2 +- .../T_Microsoft_ClearScript_V8_V8Script.htm | 2 +- ...icrosoft_ClearScript_V8_V8ScriptEngine.htm | 4 +- ...oft_ClearScript_V8_V8ScriptEngineFlags.htm | 25 +- .../T_Microsoft_ClearScript_V8_V8Settings.htm | 2 +- .../html/T_Microsoft_ClearScript_ValueRef.htm | 2 +- .../T_Microsoft_ClearScript_ValueRef_1.htm | 2 +- .../T_Microsoft_ClearScript_VoidResult.htm | 2 +- ..._ClearScript_Windows_Core_ISyncInvoker.htm | 2 +- ...ClearScript_Windows_Core_JScriptEngine.htm | 4 +- ...earScript_Windows_Core_NullSyncInvoker.htm | 2 +- ...learScript_Windows_Core_VBScriptEngine.htm | 4 +- ...cript_Windows_Core_WindowsScriptEngine.htm | 4 +- ...rosoft_ClearScript_Windows_IHostWindow.htm | 2 +- ...earScript_Windows_IWindowsScriptObject.htm | 2 +- ...soft_ClearScript_Windows_JScriptEngine.htm | 4 +- ..._Microsoft_ClearScript_Windows_Nothing.htm | 2 +- ...oft_ClearScript_Windows_VBScriptEngine.htm | 4 +- ...learScript_Windows_WindowsScriptEngine.htm | 4 +- ...cript_Windows_WindowsScriptEngineFlags.htm | 2 +- docs/Reference/scripts/branding-Website.js | 15 +- ...ft_ClearScript_JavaScript_IArrayBuffer.xml | 2 +- ...learScript_JavaScript_IArrayBufferView.xml | 2 +- ...t_ClearScript_JavaScript_ITypedArray_1.xml | 2 +- ...pt_V8_FastProxy_IV8FastAsyncEnumerator.xml | 1 + ...rScript_V8_FastProxy_IV8FastEnumerator.xml | 1 + ...FastProxy_IV8FastHostDynamicProperties.xml | 1 + ...astProxy_IV8FastHostFunctionOperations.xml | 1 + ..._FastProxy_IV8FastHostMethodOperations.xml | 1 + ..._FastProxy_IV8FastHostObjectOperations.xml | 1 + ...oft_ClearScript_V8_FastProxy_V8FastArg.xml | 1 + ...ft_ClearScript_V8_FastProxy_V8FastArgs.xml | 1 + ...V8_FastProxy_V8FastHostDynamicObject_1.xml | 1 + ...Script_V8_FastProxy_V8FastHostFunction.xml | 1 + ...tProxy_V8FastHostObjectConfiguration_1.xml | 1 + ...FastProxy_V8FastHostObjectOperations_1.xml | 1 + ...Script_V8_FastProxy_V8FastHostObject_1.xml | 1 + ..._ClearScript_V8_FastProxy_V8FastResult.xml | 1 + .../N_Microsoft_ClearScript_V8_FastProxy.xml | 1 + ...ArrayBufferView_InvokeWithDirectAccess.xml | 2 +- ..._JavaScript_IArrayBufferView_ReadBytes.xml | 1 + ...JavaScript_IArrayBufferView_WriteBytes.xml | 1 + ...pt_IArrayBuffer_InvokeWithDirectAccess.xml | 2 +- ...ript_JavaScript_IArrayBuffer_ReadBytes.xml | 1 + ...ipt_JavaScript_IArrayBuffer_WriteBytes.xml | 1 + ...arScript_JavaScript_ITypedArray_1_Read.xml | 1 + ...rScript_JavaScript_ITypedArray_1_Write.xml | 1 + ...ynamicProperties_DeleteDynamicProperty.xml | 1 + ...stDynamicProperties_GetDynamicProperty.xml | 1 + ...stDynamicProperties_HasDynamicProperty.xml | 1 + ...stDynamicProperties_SetDynamicProperty.xml | 1 + ...astHostObjectOperations_DeleteProperty.xml | 1 + ...V8FastHostObjectOperations_GetProperty.xml | 1 + ...FastHostObjectOperations_QueryProperty.xml | 1 + ...V8FastHostObjectOperations_SetProperty.xml | 1 + ...arScript_V8_FastProxy_V8FastArg_TryGet.xml | 1 + ...rScript_V8_FastProxy_V8FastArgs_TryGet.xml | 1 + ...tDynamicObject_1_DeleteDynamicProperty.xml | 1 + ...HostDynamicObject_1_GetDynamicProperty.xml | 1 + ...HostDynamicObject_1_HasDynamicProperty.xml | 1 + ...HostDynamicObject_1_SetDynamicProperty.xml | 1 + ...y_V8FastHostFunctionOperations_1__ctor.xml | 1 + ..._V8_FastProxy_V8FastHostFunction__ctor.xml | 1 + ...oxy_V8FastHostMethodOperations_2__ctor.xml | 1 + ..._V8_FastProxy_V8FastHostMethod_1__ctor.xml | 1 + ...tObjectConfiguration_1_AddMethodGetter.xml | 1 + ...ctConfiguration_1_AddPropertyAccessors.xml | 1 + ...bjectConfiguration_1_AddPropertyGetter.xml | 1 + ...figuration_1_SetAsyncEnumeratorFactory.xml | 1 + ...ctConfiguration_1_SetEnumeratorFactory.xml | 1 + ...oxy_V8FastHostObjectOperations_1__ctor.xml | 1 + ...arScript_V8_FastProxy_V8FastResult_Set.xml | 1 + ..._T_Microsoft_ClearScript_IScriptEngine.xml | 2 +- ...s_T_Microsoft_ClearScript_ScriptEngine.xml | 2 +- ...FastProxy_IV8FastHostDynamicProperties.xml | 1 + ...cript_V8_FastProxy_IV8FastHostFunction.xml | 1 + ...rScript_V8_FastProxy_IV8FastHostMethod.xml | 1 + ...rScript_V8_FastProxy_IV8FastHostObject.xml | 1 + ...oft_ClearScript_V8_FastProxy_V8FastArg.xml | 1 + ...ft_ClearScript_V8_FastProxy_V8FastArgs.xml | 1 + ...V8_FastProxy_V8FastHostDynamicObject_1.xml | 1 + ...tProxy_V8FastHostObjectConfiguration_1.xml | 1 + ..._ClearScript_V8_FastProxy_V8FastResult.xml | 1 + docs/Reference/toc/R_Project_Reference.xml | 2 +- ...ClearScript_ScriptInterruptedException.xml | 2 +- ...pt_V8_FastProxy_IV8FastAsyncEnumerator.xml | 1 + ...rScript_V8_FastProxy_IV8FastEnumerator.xml | 1 + ...FastProxy_IV8FastHostDynamicProperties.xml | 1 + ...cript_V8_FastProxy_IV8FastHostFunction.xml | 1 + ...astProxy_IV8FastHostFunctionOperations.xml | 1 + ...rScript_V8_FastProxy_IV8FastHostMethod.xml | 1 + ..._FastProxy_IV8FastHostMethodOperations.xml | 1 + ...rScript_V8_FastProxy_IV8FastHostObject.xml | 1 + ..._FastProxy_IV8FastHostObjectOperations.xml | 1 + ...oft_ClearScript_V8_FastProxy_V8FastArg.xml | 1 + ...ft_ClearScript_V8_FastProxy_V8FastArgs.xml | 1 + ...V8_FastProxy_V8FastHostDynamicObject_1.xml | 1 + ...Script_V8_FastProxy_V8FastHostFunction.xml | 1 + ...stProxy_V8FastHostFunctionOperations_1.xml | 1 + ...FastProxy_V8FastHostMethodOperations_2.xml | 1 + ...Script_V8_FastProxy_V8FastHostMethod_1.xml | 1 + ...tProxy_V8FastHostObjectConfiguration_1.xml | 1 + ...FastProxy_V8FastHostObjectOperations_1.xml | 1 + ...Script_V8_FastProxy_V8FastHostObject_1.xml | 1 + ..._ClearScript_V8_FastProxy_V8FastResult.xml | 1 + docs/about.md | 4 +- 1459 files changed, 27802 insertions(+), 7113 deletions(-) delete mode 100644 ClearScript/JavaScript/IJavaScriptEngine.NetStandard.cs delete mode 100644 ClearScript/JavaScript/JavaScriptExtensions.NetStandard.cs create mode 100644 ClearScript/Util/DateTimeHelpers.cs delete mode 100644 ClearScript/Util/EnumerableHelpers.NetFramework.cs delete mode 100644 ClearScript/Util/EnumerableHelpers.NetStandard.cs create mode 100644 ClearScript/Util/IHostItem.cs create mode 100644 ClearScript/Util/StructPtr.cs create mode 100644 ClearScript/Util/ValueScope.cs create mode 100644 ClearScript/V8/FastProxy/IV8FastAsyncEnumerator.cs create mode 100644 ClearScript/V8/FastProxy/IV8FastEnumerator.cs create mode 100644 ClearScript/V8/FastProxy/IV8FastHostDynamicProperties.cs create mode 100644 ClearScript/V8/FastProxy/IV8FastHostFunction.cs create mode 100644 ClearScript/V8/FastProxy/IV8FastHostFunctionOperations.cs create mode 100644 ClearScript/V8/FastProxy/IV8FastHostMethod.cs create mode 100644 ClearScript/V8/FastProxy/IV8FastHostMethodOperations.cs create mode 100644 ClearScript/V8/FastProxy/IV8FastHostObject.cs create mode 100644 ClearScript/V8/FastProxy/IV8FastHostObjectOperations.cs create mode 100644 ClearScript/V8/FastProxy/V8FastArg.cs create mode 100644 ClearScript/V8/FastProxy/V8FastArgImpl.cs create mode 100644 ClearScript/V8/FastProxy/V8FastArgKind.cs create mode 100644 ClearScript/V8/FastProxy/V8FastArgs.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostDelegates.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostDynamicObject.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostFunction.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostFunctionOperations.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostItem.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostMethod.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostMethodOperations.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostObject.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostObjectConfiguration.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostObjectOperations.cs create mode 100644 ClearScript/V8/FastProxy/V8FastHostPropertyFlags.cs create mode 100644 ClearScript/V8/FastProxy/V8FastProxyHelpers.cs create mode 100644 ClearScript/V8/FastProxy/V8FastResult.cs delete mode 100644 ClearScript/V8/V8ScriptEngine.NetStandard.cs delete mode 100644 ClearScript/Windows/Core/JScriptEngine.NetStandard.cs delete mode 100644 ClearScript/Windows/JScriptEngine.NetStandard.cs delete mode 100644 ClearScriptTest/ExtensionsTest.NetStandard.cs delete mode 100644 ClearScriptTest/TestEnumerable.NetStandard.cs create mode 100644 ClearScriptTest/V8FastProxyTest.cs delete mode 100644 ClearScriptTest/V8ScriptEngineTest.NetStandard.cs create mode 100644 ClearScriptV8/V8ValueWireData.h create mode 100644 Misc/JScriptReplacement/DisableJScriptReplacement_CurrentUser.reg create mode 100644 Misc/JScriptReplacement/DisableJScriptReplacement_LocalMachine.reg create mode 100644 Misc/macOS/GitConfiguration.txt create mode 100644 V8/BuildPatch.txt create mode 100644 docs/Reference/fti/FTI_48.json create mode 100644 docs/Reference/fti/FTI_49.json create mode 100644 docs/Reference/fti/FTI_50.json create mode 100644 docs/Reference/fti/FTI_51.json create mode 100644 docs/Reference/fti/FTI_52.json create mode 100644 docs/Reference/fti/FTI_53.json create mode 100644 docs/Reference/fti/FTI_54.json create mode 100644 docs/Reference/fti/FTI_55.json create mode 100644 docs/Reference/fti/FTI_56.json create mode 100644 docs/Reference/html/Events_T_Microsoft_ClearScript_ScriptInterruptedException.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_InvokeWithDirectAccess__1_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_InvokeWithDirectAccess__2.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_ReadBytes_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_WriteBytes_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_InvokeWithDirectAccess__1_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_InvokeWithDirectAccess__2.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_ReadBytes_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_WriteBytes_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_Read_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_Write_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastAsyncEnumerator_GetCurrent.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastAsyncEnumerator_MoveNextAsync.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastEnumerator_GetCurrent.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastEnumerator_MoveNext.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DeleteDynamicProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DeleteDynamicProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_GetDynamicProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_GetDynamicProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_HasDynamicProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_HasDynamicProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_SetDynamicProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_SetDynamicProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunctionOperations_Invoke.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethodOperations_Invoke.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_CreateAsyncEnumerator.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_CreateEnumerator.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_DeleteProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_DeleteProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetFriendlyName.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetPropertyIndices.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetPropertyNames.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_QueryProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_QueryProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_SetProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_SetProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetBigInteger.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetBoolean.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetByte.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetChar.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetCharSpan.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetDateTime.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetDecimal.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetDouble.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetInt16.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetInt32.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetInt64.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetNullable__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetSByte.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetSingle.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetString.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetUInt16.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetUInt32.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetUInt64.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_Get__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_10.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_11.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_12.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_13.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_14.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_15.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_16.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_2.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_3.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_4.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_5.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_6.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_7.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_8.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_9.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet__1_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetBigInteger.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetBoolean.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetByte.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetChar.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetCharSpan.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetDateTime.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetDecimal.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetDouble.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetInt16.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetInt32.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetInt64.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetNullable__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetSByte.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetSingle.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetString.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetUInt16.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetUInt32.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetUInt64.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_Get__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_IsFalsy.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_IsNull.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_IsTruthy.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_IsUndefined.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_10.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_11.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_12.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_13.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_14.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_15.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_16.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_2.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_3.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_4.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_5.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_6.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_7.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_8.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_9.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet__1_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_Configure.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DeleteDynamicProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DeleteDynamicProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_GetDynamicProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_GetDynamicProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_HasDynamicProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_HasDynamicProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_SetDynamicProperty.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_SetDynamicProperty_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1__ctor.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_2.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_3.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_4.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_5.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_6.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_7.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction_VerifyConstructorCall.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction_VerifyFunctionCall.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_2.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_3.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_4.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_5.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_6.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_7.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor_2.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor_3.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor_2.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor_3.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter_2.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter_3.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors__1_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter__1_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetAsyncEnumeratorFactory.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetAsyncEnumeratorFactory__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetDynamicPropertiesGetter.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetEnumeratorFactory.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetEnumeratorFactory_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetEnumeratorFactory__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1__ctor.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1_Configure.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1__ctor.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1__ctor_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObject_1_Configure.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObject_1__ctor.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_SetNull.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_SetUndefined.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_10.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_11.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_12.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_13.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_14.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_15.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_16.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_2.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_3.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_4.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_5.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_6.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_7.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_8.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_9.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set__1.htm create mode 100644 docs/Reference/html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set__1_1.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastAsyncEnumerator.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastEnumerator.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunctionOperations.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethodOperations.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastArg.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastArgs.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObject_1.htm create mode 100644 docs/Reference/html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastResult.htm create mode 100644 docs/Reference/html/N_Microsoft_ClearScript_V8_FastProxy.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_JavaScript_IArrayBufferView_ReadBytes.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_JavaScript_IArrayBufferView_WriteBytes.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_JavaScript_IArrayBuffer_ReadBytes.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_JavaScript_IArrayBuffer_WriteBytes.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_JavaScript_ITypedArray_1_Read.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_JavaScript_ITypedArray_1_Write.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DeleteDynamicProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_GetDynamicProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_HasDynamicProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_SetDynamicProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_DeleteProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_QueryProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_SetProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DeleteDynamicProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_GetDynamicProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_HasDynamicProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_SetDynamicProperty.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetAsyncEnumeratorFactory.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetEnumeratorFactory.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1__ctor.htm create mode 100644 docs/Reference/html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_IScriptEngine_NullImportValue.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_ScriptEngine_NullImportValue.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DynamicPropertyIndices.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DynamicPropertyNames.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunction_Operations.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethod_Operations.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObject_Operations.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_V8FastArg_IsFalsy.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_V8FastArg_IsNull.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_V8FastArg_IsTruthy.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_V8FastArg_IsUndefined.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_Count.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DynamicPropertyIndices.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DynamicPropertyNames.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_EnumerateIndexedProperties.htm create mode 100644 docs/Reference/html/P_Microsoft_ClearScript_V8_FastProxy_V8FastResult_IsSet.htm create mode 100644 docs/Reference/html/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties.htm create mode 100644 docs/Reference/html/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunction.htm create mode 100644 docs/Reference/html/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethod.htm create mode 100644 docs/Reference/html/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObject.htm create mode 100644 docs/Reference/html/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastArg.htm create mode 100644 docs/Reference/html/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastArgs.htm create mode 100644 docs/Reference/html/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1.htm create mode 100644 docs/Reference/html/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1.htm create mode 100644 docs/Reference/html/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastResult.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastAsyncEnumerator.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastEnumerator.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunction.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunctionOperations.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethod.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethodOperations.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObject.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastArg.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastArgs.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFieldAccessor_2.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionInvoker.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodInvoker_1.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfigurator_1.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObject_1.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostPropertyFlags.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostPropertyGetter_1.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostPropertySetter_1.htm create mode 100644 docs/Reference/html/T_Microsoft_ClearScript_V8_FastProxy_V8FastResult.htm create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastAsyncEnumerator.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastEnumerator.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunctionOperations.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethodOperations.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastArg.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastArgs.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObject_1.xml create mode 100644 docs/Reference/toc/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastResult.xml create mode 100644 docs/Reference/toc/N_Microsoft_ClearScript_V8_FastProxy.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_JavaScript_IArrayBufferView_ReadBytes.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_JavaScript_IArrayBufferView_WriteBytes.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_JavaScript_IArrayBuffer_ReadBytes.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_JavaScript_IArrayBuffer_WriteBytes.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_JavaScript_ITypedArray_1_Read.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_JavaScript_ITypedArray_1_Write.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DeleteDynamicProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_GetDynamicProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_HasDynamicProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_SetDynamicProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_DeleteProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_QueryProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_SetProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DeleteDynamicProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_GetDynamicProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_HasDynamicProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_SetDynamicProperty.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetAsyncEnumeratorFactory.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetEnumeratorFactory.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1__ctor.xml create mode 100644 docs/Reference/toc/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set.xml create mode 100644 docs/Reference/toc/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties.xml create mode 100644 docs/Reference/toc/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunction.xml create mode 100644 docs/Reference/toc/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethod.xml create mode 100644 docs/Reference/toc/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObject.xml create mode 100644 docs/Reference/toc/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastArg.xml create mode 100644 docs/Reference/toc/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastArgs.xml create mode 100644 docs/Reference/toc/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1.xml create mode 100644 docs/Reference/toc/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1.xml create mode 100644 docs/Reference/toc/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastResult.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_IV8FastAsyncEnumerator.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_IV8FastEnumerator.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunction.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunctionOperations.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethod.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethodOperations.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObject.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastArg.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastArgs.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObject_1.xml create mode 100644 docs/Reference/toc/T_Microsoft_ClearScript_V8_FastProxy_V8FastResult.xml diff --git a/ClearScript.NoV8.sln.DotSettings b/ClearScript.NoV8.sln.DotSettings index 471fe022..69cbbc79 100644 --- a/ClearScript.NoV8.sln.DotSettings +++ b/ClearScript.NoV8.sln.DotSettings @@ -1,7 +1,7 @@  - CSharp80 + CSharp90 True - ExplicitlyExcluded + True False SUGGESTION DO_NOT_SHOW @@ -43,6 +43,11 @@ <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static readonly fields (private)"><ElementKinds><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Private" Description="Constant fields (private)"><ElementKinds><Kind Name="CONSTANT_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"><ElementKinds><Kind Name="FIELD" /><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Constant fields (not private)"><ElementKinds><Kind Name="CONSTANT_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"><ElementKinds><Kind Name="FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> False @@ -50,6 +55,7 @@ True True True + True True True True @@ -128,9 +134,11 @@ True True True + True True True True True True + True True \ No newline at end of file diff --git a/ClearScript.sln b/ClearScript.sln index 254f2e4d..5984307e 100644 --- a/ClearScript.sln +++ b/ClearScript.sln @@ -174,125 +174,479 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|arm64 = Debug|arm64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|arm64 = Release|arm64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Debug|arm64.ActiveCfg = Debug|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Debug|arm64.Build.0 = Debug|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Debug|x64.ActiveCfg = Debug|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Debug|x64.Build.0 = Debug|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Debug|x86.ActiveCfg = Debug|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Debug|x86.Build.0 = Debug|Any CPU {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Release|Any CPU.ActiveCfg = Release|Any CPU {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Release|Any CPU.Build.0 = Release|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Release|arm64.ActiveCfg = Release|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Release|arm64.Build.0 = Release|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Release|x64.ActiveCfg = Release|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Release|x64.Build.0 = Release|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Release|x86.ActiveCfg = Release|Any CPU + {EDC7144E-FDA9-4CC7-B2CD-B5EBFD610A7D}.Release|x86.Build.0 = Release|Any CPU {28980C99-77E7-4B62-8484-AF06C5745B8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {28980C99-77E7-4B62-8484-AF06C5745B8C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Debug|arm64.ActiveCfg = Debug|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Debug|arm64.Build.0 = Debug|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Debug|x64.ActiveCfg = Debug|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Debug|x64.Build.0 = Debug|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Debug|x86.ActiveCfg = Debug|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Debug|x86.Build.0 = Debug|Any CPU {28980C99-77E7-4B62-8484-AF06C5745B8C}.Release|Any CPU.ActiveCfg = Release|Any CPU {28980C99-77E7-4B62-8484-AF06C5745B8C}.Release|Any CPU.Build.0 = Release|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Release|arm64.ActiveCfg = Release|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Release|arm64.Build.0 = Release|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Release|x64.ActiveCfg = Release|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Release|x64.Build.0 = Release|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Release|x86.ActiveCfg = Release|Any CPU + {28980C99-77E7-4B62-8484-AF06C5745B8C}.Release|x86.Build.0 = Release|Any CPU {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Debug|arm64.ActiveCfg = Debug|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Debug|arm64.Build.0 = Debug|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Debug|x64.ActiveCfg = Debug|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Debug|x64.Build.0 = Debug|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Debug|x86.ActiveCfg = Debug|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Debug|x86.Build.0 = Debug|Any CPU {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Release|Any CPU.ActiveCfg = Release|Any CPU {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Release|Any CPU.Build.0 = Release|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Release|arm64.ActiveCfg = Release|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Release|arm64.Build.0 = Release|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Release|x64.ActiveCfg = Release|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Release|x64.Build.0 = Release|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Release|x86.ActiveCfg = Release|Any CPU + {7922A2F5-3585-4A60-98FB-1BDB4D5ECD29}.Release|x86.Build.0 = Release|Any CPU {497012BC-959C-43A0-90A6-156A35DF2F43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {497012BC-959C-43A0-90A6-156A35DF2F43}.Debug|Any CPU.Build.0 = Debug|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Debug|arm64.ActiveCfg = Debug|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Debug|arm64.Build.0 = Debug|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Debug|x64.ActiveCfg = Debug|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Debug|x64.Build.0 = Debug|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Debug|x86.ActiveCfg = Debug|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Debug|x86.Build.0 = Debug|Any CPU {497012BC-959C-43A0-90A6-156A35DF2F43}.Release|Any CPU.ActiveCfg = Release|Any CPU {497012BC-959C-43A0-90A6-156A35DF2F43}.Release|Any CPU.Build.0 = Release|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Release|arm64.ActiveCfg = Release|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Release|arm64.Build.0 = Release|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Release|x64.ActiveCfg = Release|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Release|x64.Build.0 = Release|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Release|x86.ActiveCfg = Release|Any CPU + {497012BC-959C-43A0-90A6-156A35DF2F43}.Release|x86.Build.0 = Release|Any CPU {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Debug|arm64.ActiveCfg = Debug|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Debug|arm64.Build.0 = Debug|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Debug|x64.ActiveCfg = Debug|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Debug|x64.Build.0 = Debug|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Debug|x86.ActiveCfg = Debug|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Debug|x86.Build.0 = Debug|Any CPU {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Release|Any CPU.ActiveCfg = Release|Any CPU {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Release|Any CPU.Build.0 = Release|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Release|arm64.ActiveCfg = Release|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Release|arm64.Build.0 = Release|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Release|x64.ActiveCfg = Release|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Release|x64.Build.0 = Release|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Release|x86.ActiveCfg = Release|Any CPU + {269669D3-78D8-4AF3-A2AF-08D3446BD6BC}.Release|x86.Build.0 = Release|Any CPU {925DD842-4585-4D44-80BB-78E1FB7E9438}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {925DD842-4585-4D44-80BB-78E1FB7E9438}.Debug|Any CPU.Build.0 = Debug|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Debug|arm64.ActiveCfg = Debug|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Debug|arm64.Build.0 = Debug|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Debug|x64.ActiveCfg = Debug|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Debug|x64.Build.0 = Debug|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Debug|x86.ActiveCfg = Debug|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Debug|x86.Build.0 = Debug|Any CPU {925DD842-4585-4D44-80BB-78E1FB7E9438}.Release|Any CPU.ActiveCfg = Release|Any CPU {925DD842-4585-4D44-80BB-78E1FB7E9438}.Release|Any CPU.Build.0 = Release|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Release|arm64.ActiveCfg = Release|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Release|arm64.Build.0 = Release|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Release|x64.ActiveCfg = Release|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Release|x64.Build.0 = Release|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Release|x86.ActiveCfg = Release|Any CPU + {925DD842-4585-4D44-80BB-78E1FB7E9438}.Release|x86.Build.0 = Release|Any CPU {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Debug|Any CPU.ActiveCfg = Debug|Win32 {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Debug|Any CPU.Build.0 = Debug|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Debug|arm64.ActiveCfg = Debug|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Debug|arm64.Build.0 = Debug|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Debug|x64.ActiveCfg = Debug|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Debug|x64.Build.0 = Debug|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Debug|x86.ActiveCfg = Debug|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Debug|x86.Build.0 = Debug|Win32 {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Release|Any CPU.ActiveCfg = Release|Win32 {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Release|Any CPU.Build.0 = Release|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Release|arm64.ActiveCfg = Release|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Release|arm64.Build.0 = Release|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Release|x64.ActiveCfg = Release|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Release|x64.Build.0 = Release|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Release|x86.ActiveCfg = Release|Win32 + {2D63EA35-BA9C-4E77-B5A4-4938DBBFEFA6}.Release|x86.Build.0 = Release|Win32 {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Debug|Any CPU.ActiveCfg = Debug|x64 {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Debug|Any CPU.Build.0 = Debug|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Debug|arm64.ActiveCfg = Debug|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Debug|arm64.Build.0 = Debug|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Debug|x64.ActiveCfg = Debug|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Debug|x64.Build.0 = Debug|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Debug|x86.ActiveCfg = Debug|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Debug|x86.Build.0 = Debug|x64 {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Release|Any CPU.ActiveCfg = Release|x64 {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Release|Any CPU.Build.0 = Release|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Release|arm64.ActiveCfg = Release|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Release|arm64.Build.0 = Release|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Release|x64.ActiveCfg = Release|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Release|x64.Build.0 = Release|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Release|x86.ActiveCfg = Release|x64 + {CDCF4EEA-1CA4-412E-8C77-78893A67A577}.Release|x86.Build.0 = Release|x64 {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Debug|arm64.ActiveCfg = Debug|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Debug|arm64.Build.0 = Debug|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Debug|x64.ActiveCfg = Debug|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Debug|x64.Build.0 = Debug|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Debug|x86.ActiveCfg = Debug|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Debug|x86.Build.0 = Debug|Any CPU {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Release|Any CPU.ActiveCfg = Release|Any CPU {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Release|Any CPU.Build.0 = Release|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Release|arm64.ActiveCfg = Release|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Release|arm64.Build.0 = Release|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Release|x64.ActiveCfg = Release|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Release|x64.Build.0 = Release|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Release|x86.ActiveCfg = Release|Any CPU + {F1022C3F-AFBC-4F23-B4DE-C6C0742AEFF2}.Release|x86.Build.0 = Release|Any CPU {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Debug|arm64.ActiveCfg = Debug|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Debug|arm64.Build.0 = Debug|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Debug|x64.ActiveCfg = Debug|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Debug|x64.Build.0 = Debug|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Debug|x86.ActiveCfg = Debug|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Debug|x86.Build.0 = Debug|Any CPU {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Release|Any CPU.ActiveCfg = Release|Any CPU {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Release|Any CPU.Build.0 = Release|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Release|arm64.ActiveCfg = Release|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Release|arm64.Build.0 = Release|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Release|x64.ActiveCfg = Release|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Release|x64.Build.0 = Release|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Release|x86.ActiveCfg = Release|Any CPU + {BC560FF8-AB7A-4DA9-A1FD-99221447D370}.Release|x86.Build.0 = Release|Any CPU {59CC81A3-3D97-469A-9C8B-533F920085F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {59CC81A3-3D97-469A-9C8B-533F920085F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Debug|arm64.ActiveCfg = Debug|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Debug|arm64.Build.0 = Debug|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Debug|x64.ActiveCfg = Debug|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Debug|x64.Build.0 = Debug|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Debug|x86.ActiveCfg = Debug|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Debug|x86.Build.0 = Debug|Any CPU {59CC81A3-3D97-469A-9C8B-533F920085F1}.Release|Any CPU.ActiveCfg = Release|Any CPU {59CC81A3-3D97-469A-9C8B-533F920085F1}.Release|Any CPU.Build.0 = Release|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Release|arm64.ActiveCfg = Release|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Release|arm64.Build.0 = Release|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Release|x64.ActiveCfg = Release|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Release|x64.Build.0 = Release|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Release|x86.ActiveCfg = Release|Any CPU + {59CC81A3-3D97-469A-9C8B-533F920085F1}.Release|x86.Build.0 = Release|Any CPU {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Debug|arm64.ActiveCfg = Debug|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Debug|arm64.Build.0 = Debug|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Debug|x64.ActiveCfg = Debug|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Debug|x64.Build.0 = Debug|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Debug|x86.ActiveCfg = Debug|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Debug|x86.Build.0 = Debug|Any CPU {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Release|Any CPU.ActiveCfg = Release|Any CPU {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Release|Any CPU.Build.0 = Release|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Release|arm64.ActiveCfg = Release|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Release|arm64.Build.0 = Release|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Release|x64.ActiveCfg = Release|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Release|x64.Build.0 = Release|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Release|x86.ActiveCfg = Release|Any CPU + {7B3EA81F-F60B-46DB-B3F0-22F68E8A8FAD}.Release|x86.Build.0 = Release|Any CPU {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Debug|arm64.ActiveCfg = Debug|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Debug|arm64.Build.0 = Debug|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Debug|x64.ActiveCfg = Debug|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Debug|x64.Build.0 = Debug|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Debug|x86.ActiveCfg = Debug|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Debug|x86.Build.0 = Debug|Any CPU {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Release|Any CPU.ActiveCfg = Release|Any CPU {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Release|Any CPU.Build.0 = Release|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Release|arm64.ActiveCfg = Release|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Release|arm64.Build.0 = Release|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Release|x64.ActiveCfg = Release|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Release|x64.Build.0 = Release|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Release|x86.ActiveCfg = Release|Any CPU + {6576FFFD-BA73-4123-8E4B-8589E5163C04}.Release|x86.Build.0 = Release|Any CPU {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Debug|arm64.ActiveCfg = Debug|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Debug|arm64.Build.0 = Debug|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Debug|x64.ActiveCfg = Debug|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Debug|x64.Build.0 = Debug|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Debug|x86.ActiveCfg = Debug|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Debug|x86.Build.0 = Debug|Any CPU {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Release|Any CPU.ActiveCfg = Release|Any CPU {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Release|Any CPU.Build.0 = Release|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Release|arm64.ActiveCfg = Release|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Release|arm64.Build.0 = Release|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Release|x64.ActiveCfg = Release|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Release|x64.Build.0 = Release|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Release|x86.ActiveCfg = Release|Any CPU + {C8AE52BB-BFEE-4816-A9FE-8653CEE36C96}.Release|x86.Build.0 = Release|Any CPU {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Debug|arm64.ActiveCfg = Debug|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Debug|arm64.Build.0 = Debug|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Debug|x64.ActiveCfg = Debug|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Debug|x64.Build.0 = Debug|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Debug|x86.ActiveCfg = Debug|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Debug|x86.Build.0 = Debug|Any CPU {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Release|Any CPU.ActiveCfg = Release|Any CPU {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Release|Any CPU.Build.0 = Release|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Release|arm64.ActiveCfg = Release|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Release|arm64.Build.0 = Release|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Release|x64.ActiveCfg = Release|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Release|x64.Build.0 = Release|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Release|x86.ActiveCfg = Release|Any CPU + {FDFA67F7-AEE6-407A-BF94-ACAD3D735CAB}.Release|x86.Build.0 = Release|Any CPU {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Debug|arm64.ActiveCfg = Debug|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Debug|arm64.Build.0 = Debug|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Debug|x64.ActiveCfg = Debug|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Debug|x64.Build.0 = Debug|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Debug|x86.ActiveCfg = Debug|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Debug|x86.Build.0 = Debug|Any CPU {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Release|Any CPU.ActiveCfg = Release|Any CPU {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Release|Any CPU.Build.0 = Release|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Release|arm64.ActiveCfg = Release|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Release|arm64.Build.0 = Release|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Release|x64.ActiveCfg = Release|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Release|x64.Build.0 = Release|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Release|x86.ActiveCfg = Release|Any CPU + {3CD8AB65-BA34-4BB9-862F-D31CE861560F}.Release|x86.Build.0 = Release|Any CPU {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Debug|arm64.ActiveCfg = Debug|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Debug|arm64.Build.0 = Debug|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Debug|x64.ActiveCfg = Debug|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Debug|x64.Build.0 = Debug|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Debug|x86.ActiveCfg = Debug|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Debug|x86.Build.0 = Debug|Any CPU {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Release|Any CPU.ActiveCfg = Release|Any CPU {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Release|Any CPU.Build.0 = Release|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Release|arm64.ActiveCfg = Release|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Release|arm64.Build.0 = Release|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Release|x64.ActiveCfg = Release|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Release|x64.Build.0 = Release|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Release|x86.ActiveCfg = Release|Any CPU + {052E036D-6D60-4FCA-AA8E-4CF56BC2058D}.Release|x86.Build.0 = Release|Any CPU {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Debug|Any CPU.ActiveCfg = Debug|arm64 {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Debug|Any CPU.Build.0 = Debug|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Debug|arm64.ActiveCfg = Debug|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Debug|arm64.Build.0 = Debug|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Debug|x64.ActiveCfg = Debug|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Debug|x64.Build.0 = Debug|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Debug|x86.ActiveCfg = Debug|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Debug|x86.Build.0 = Debug|arm64 {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Release|Any CPU.ActiveCfg = Release|arm64 {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Release|Any CPU.Build.0 = Release|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Release|arm64.ActiveCfg = Release|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Release|arm64.Build.0 = Release|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Release|x64.ActiveCfg = Release|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Release|x64.Build.0 = Release|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Release|x86.ActiveCfg = Release|arm64 + {725B6D7A-ECC7-4A28-AF52-B1CB22C37134}.Release|x86.Build.0 = Release|arm64 {D3391831-65CE-4C1E-A21B-01A283F3E193}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D3391831-65CE-4C1E-A21B-01A283F3E193}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Debug|arm64.ActiveCfg = Debug|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Debug|arm64.Build.0 = Debug|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Debug|x64.ActiveCfg = Debug|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Debug|x64.Build.0 = Debug|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Debug|x86.ActiveCfg = Debug|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Debug|x86.Build.0 = Debug|Any CPU {D3391831-65CE-4C1E-A21B-01A283F3E193}.Release|Any CPU.ActiveCfg = Release|Any CPU {D3391831-65CE-4C1E-A21B-01A283F3E193}.Release|Any CPU.Build.0 = Release|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Release|arm64.ActiveCfg = Release|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Release|arm64.Build.0 = Release|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Release|x64.ActiveCfg = Release|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Release|x64.Build.0 = Release|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Release|x86.ActiveCfg = Release|Any CPU + {D3391831-65CE-4C1E-A21B-01A283F3E193}.Release|x86.Build.0 = Release|Any CPU {CF1FD52F-A933-48D9-92A4-A39565896A42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CF1FD52F-A933-48D9-92A4-A39565896A42}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Debug|arm64.ActiveCfg = Debug|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Debug|arm64.Build.0 = Debug|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Debug|x64.ActiveCfg = Debug|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Debug|x64.Build.0 = Debug|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Debug|x86.ActiveCfg = Debug|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Debug|x86.Build.0 = Debug|Any CPU {CF1FD52F-A933-48D9-92A4-A39565896A42}.Release|Any CPU.ActiveCfg = Release|Any CPU {CF1FD52F-A933-48D9-92A4-A39565896A42}.Release|Any CPU.Build.0 = Release|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Release|arm64.ActiveCfg = Release|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Release|arm64.Build.0 = Release|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Release|x64.ActiveCfg = Release|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Release|x64.Build.0 = Release|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Release|x86.ActiveCfg = Release|Any CPU + {CF1FD52F-A933-48D9-92A4-A39565896A42}.Release|x86.Build.0 = Release|Any CPU {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Debug|arm64.ActiveCfg = Debug|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Debug|arm64.Build.0 = Debug|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Debug|x64.ActiveCfg = Debug|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Debug|x64.Build.0 = Debug|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Debug|x86.ActiveCfg = Debug|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Debug|x86.Build.0 = Debug|Any CPU {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Release|Any CPU.ActiveCfg = Release|Any CPU {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Release|Any CPU.Build.0 = Release|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Release|arm64.ActiveCfg = Release|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Release|arm64.Build.0 = Release|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Release|x64.ActiveCfg = Release|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Release|x64.Build.0 = Release|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Release|x86.ActiveCfg = Release|Any CPU + {B9C99091-E616-4DC2-A711-4DCDAC602E38}.Release|x86.Build.0 = Release|Any CPU {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Debug|arm64.ActiveCfg = Debug|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Debug|arm64.Build.0 = Debug|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Debug|x64.ActiveCfg = Debug|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Debug|x64.Build.0 = Debug|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Debug|x86.ActiveCfg = Debug|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Debug|x86.Build.0 = Debug|Any CPU {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Release|Any CPU.ActiveCfg = Release|Any CPU {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Release|Any CPU.Build.0 = Release|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Release|arm64.ActiveCfg = Release|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Release|arm64.Build.0 = Release|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Release|x64.ActiveCfg = Release|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Release|x64.Build.0 = Release|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Release|x86.ActiveCfg = Release|Any CPU + {5FF9CB8B-BC95-44AB-B254-CEB4ADF4A53A}.Release|x86.Build.0 = Release|Any CPU {D757A0DB-AEBC-4D77-A187-A701B158D588}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D757A0DB-AEBC-4D77-A187-A701B158D588}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Debug|arm64.ActiveCfg = Debug|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Debug|arm64.Build.0 = Debug|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Debug|x64.ActiveCfg = Debug|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Debug|x64.Build.0 = Debug|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Debug|x86.ActiveCfg = Debug|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Debug|x86.Build.0 = Debug|Any CPU {D757A0DB-AEBC-4D77-A187-A701B158D588}.Release|Any CPU.ActiveCfg = Release|Any CPU {D757A0DB-AEBC-4D77-A187-A701B158D588}.Release|Any CPU.Build.0 = Release|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Release|arm64.ActiveCfg = Release|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Release|arm64.Build.0 = Release|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Release|x64.ActiveCfg = Release|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Release|x64.Build.0 = Release|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Release|x86.ActiveCfg = Release|Any CPU + {D757A0DB-AEBC-4D77-A187-A701B158D588}.Release|x86.Build.0 = Release|Any CPU {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Debug|arm64.ActiveCfg = Debug|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Debug|arm64.Build.0 = Debug|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Debug|x64.ActiveCfg = Debug|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Debug|x64.Build.0 = Debug|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Debug|x86.ActiveCfg = Debug|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Debug|x86.Build.0 = Debug|Any CPU {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Release|Any CPU.ActiveCfg = Release|Any CPU {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Release|Any CPU.Build.0 = Release|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Release|arm64.ActiveCfg = Release|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Release|arm64.Build.0 = Release|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Release|x64.ActiveCfg = Release|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Release|x64.Build.0 = Release|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Release|x86.ActiveCfg = Release|Any CPU + {0DEC74E5-FF8A-4B61-B847-875BAD0AE781}.Release|x86.Build.0 = Release|Any CPU {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Debug|arm64.ActiveCfg = Debug|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Debug|arm64.Build.0 = Debug|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Debug|x64.ActiveCfg = Debug|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Debug|x64.Build.0 = Debug|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Debug|x86.ActiveCfg = Debug|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Debug|x86.Build.0 = Debug|Any CPU {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Release|Any CPU.ActiveCfg = Release|Any CPU {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Release|Any CPU.Build.0 = Release|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Release|arm64.ActiveCfg = Release|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Release|arm64.Build.0 = Release|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Release|x64.ActiveCfg = Release|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Release|x64.Build.0 = Release|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Release|x86.ActiveCfg = Release|Any CPU + {6F6B59D0-6538-4D02-91D2-07D24DAFE39A}.Release|x86.Build.0 = Release|Any CPU {BF28C9F2-2935-4FDE-B812-977D601F9208}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BF28C9F2-2935-4FDE-B812-977D601F9208}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Debug|arm64.ActiveCfg = Debug|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Debug|arm64.Build.0 = Debug|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Debug|x64.ActiveCfg = Debug|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Debug|x64.Build.0 = Debug|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Debug|x86.ActiveCfg = Debug|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Debug|x86.Build.0 = Debug|Any CPU {BF28C9F2-2935-4FDE-B812-977D601F9208}.Release|Any CPU.ActiveCfg = Release|Any CPU {BF28C9F2-2935-4FDE-B812-977D601F9208}.Release|Any CPU.Build.0 = Release|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Release|arm64.ActiveCfg = Release|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Release|arm64.Build.0 = Release|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Release|x64.ActiveCfg = Release|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Release|x64.Build.0 = Release|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Release|x86.ActiveCfg = Release|Any CPU + {BF28C9F2-2935-4FDE-B812-977D601F9208}.Release|x86.Build.0 = Release|Any CPU {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Debug|arm64.ActiveCfg = Debug|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Debug|arm64.Build.0 = Debug|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Debug|x64.ActiveCfg = Debug|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Debug|x64.Build.0 = Debug|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Debug|x86.ActiveCfg = Debug|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Debug|x86.Build.0 = Debug|Any CPU {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Release|Any CPU.ActiveCfg = Release|Any CPU {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Release|Any CPU.Build.0 = Release|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Release|arm64.ActiveCfg = Release|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Release|arm64.Build.0 = Release|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Release|x64.ActiveCfg = Release|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Release|x64.Build.0 = Release|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Release|x86.ActiveCfg = Release|Any CPU + {EF6090B9-7349-4868-9C43-D7D3F048C54F}.Release|x86.Build.0 = Release|Any CPU {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Debug|arm64.ActiveCfg = Debug|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Debug|arm64.Build.0 = Debug|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Debug|x64.ActiveCfg = Debug|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Debug|x64.Build.0 = Debug|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Debug|x86.ActiveCfg = Debug|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Debug|x86.Build.0 = Debug|Any CPU {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Release|Any CPU.ActiveCfg = Release|Any CPU {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Release|Any CPU.Build.0 = Release|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Release|arm64.ActiveCfg = Release|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Release|arm64.Build.0 = Release|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Release|x64.ActiveCfg = Release|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Release|x64.Build.0 = Release|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Release|x86.ActiveCfg = Release|Any CPU + {C0E7BCAD-B4B3-4291-A87A-384D5F99C413}.Release|x86.Build.0 = Release|Any CPU {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Debug|arm64.ActiveCfg = Debug|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Debug|arm64.Build.0 = Debug|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Debug|x64.ActiveCfg = Debug|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Debug|x64.Build.0 = Debug|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Debug|x86.ActiveCfg = Debug|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Debug|x86.Build.0 = Debug|Any CPU {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Release|Any CPU.ActiveCfg = Release|Any CPU {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Release|Any CPU.Build.0 = Release|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Release|arm64.ActiveCfg = Release|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Release|arm64.Build.0 = Release|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Release|x64.ActiveCfg = Release|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Release|x64.Build.0 = Release|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Release|x86.ActiveCfg = Release|Any CPU + {47FC5CB5-A6F2-4FEE-99F8-A758D3A7373C}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ClearScript.sln.DotSettings b/ClearScript.sln.DotSettings index 471fe022..69cbbc79 100644 --- a/ClearScript.sln.DotSettings +++ b/ClearScript.sln.DotSettings @@ -1,7 +1,7 @@  - CSharp80 + CSharp90 True - ExplicitlyExcluded + True False SUGGESTION DO_NOT_SHOW @@ -43,6 +43,11 @@ <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static readonly fields (private)"><ElementKinds><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Private" Description="Constant fields (private)"><ElementKinds><Kind Name="CONSTANT_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"><ElementKinds><Kind Name="FIELD" /><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Protected, ProtectedInternal, Internal, Public, PrivateProtected" Description="Constant fields (not private)"><ElementKinds><Kind Name="CONSTANT_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"><ElementKinds><Kind Name="FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> False @@ -50,6 +55,7 @@ True True True + True True True True @@ -128,9 +134,11 @@ True True True + True True True True True True + True True \ No newline at end of file diff --git a/ClearScript/BindSignature.cs b/ClearScript/BindSignature.cs index c1ebe9de..706904d5 100644 --- a/ClearScript/BindSignature.cs +++ b/ClearScript/BindSignature.cs @@ -67,7 +67,7 @@ public override int GetHashCode() public bool Equals(BindSignature that) { - if (that == null) + if (that is null) { return false; } @@ -149,7 +149,7 @@ public TargetInfo(HostTarget target) kind = TargetKind.Static; targetType = target.Type; } - else if (target.InvokeTarget == null) + else if (target.InvokeTarget is null) { kind = TargetKind.Null; targetType = target.Type; @@ -194,7 +194,7 @@ public override int GetHashCode() public bool Equals(TargetInfo that) { - return (that != null) && (kind == that.kind) && (targetType == that.targetType) && (instanceType == that.instanceType); + return (that is not null) && (kind == that.kind) && (targetType == that.targetType) && (instanceType == that.instanceType); } #endregion @@ -224,7 +224,7 @@ private sealed class ArgInfo : IEquatable public ArgInfo(object arg) { - if (arg == null) + if (arg is null) { kind = ArgKind.Null; return; @@ -286,7 +286,7 @@ public ArgInfo(object arg) return; } - Debug.Assert(!(arg is HostTarget)); + Debug.Assert(arg is not HostTarget); kind = arg.IsZero() ? ArgKind.Zero : ArgKind.ByValue; type = arg.GetType(); } @@ -317,7 +317,7 @@ public override int GetHashCode() public bool Equals(ArgInfo that) { - return (that != null) && (kind == that.kind) && (type == that.type); + return (that is not null) && (kind == that.kind) && (type == that.type); } #endregion @@ -327,7 +327,7 @@ public bool Equals(ArgInfo that) #region Nested type: HashAccumulator - private struct HashAccumulator + private ref struct HashAccumulator { public int HashCode { get; private set; } diff --git a/ClearScript/CanonicalRefTable.cs b/ClearScript/CanonicalRefTable.cs index 28776391..bf57754a 100644 --- a/ClearScript/CanonicalRefTable.cs +++ b/ClearScript/CanonicalRefTable.cs @@ -10,14 +10,14 @@ namespace Microsoft.ClearScript { internal static class CanonicalRefTable { - private static readonly Dictionary table = new Dictionary(); + private static readonly Dictionary table = new(); public static object GetCanonicalRef(object obj) { if (obj is ValueType) { var map = GetMap(obj); - if (map != null) + if (map is not null) { obj = map.GetRef(obj); } @@ -44,7 +44,7 @@ private static ICanonicalRefMap GetMap(object obj) #endif type.GetOrLoadCustomAttributes(null, false).Any()) { - map = (ICanonicalRefMap)typeof(CanonicalRefMap<>).MakeGenericType(type).CreateInstance(); + map = (ICanonicalRefMap)Activator.CreateInstance(typeof(CanonicalRefMap<>).MakeGenericType(type)); } table.Add(type, map); @@ -81,9 +81,9 @@ private abstract class CanonicalRefMapBase : ICanonicalRefMap #region Nested type: CanonicalRefMap - private sealed class CanonicalRefMap : CanonicalRefMapBase + private sealed class CanonicalRefMap : CanonicalRefMapBase where T : struct { - private readonly Dictionary map = new Dictionary(); + private readonly Dictionary> map = new(); private DateTime lastCompactionTime = DateTime.MinValue; private object GetRefInternal(object obj) @@ -93,17 +93,16 @@ private object GetRefInternal(object obj) if (map.TryGetValue(value, out var weakRef)) { - result = weakRef.Target; - if (result == null) + if (!weakRef.TryGetTarget(out result)) { result = obj; - weakRef.Target = result; + weakRef.SetTarget(result); } } else { result = obj; - map.Add(value, new WeakReference(result)); + map.Add(value, new WeakReference(result)); } return result; @@ -116,7 +115,7 @@ private void CompactIfNecessary() var now = DateTime.UtcNow; if ((lastCompactionTime + CompactionInterval) <= now) { - map.Where(pair => !pair.Value.IsAlive).ToList().ForEach(pair => map.Remove(pair.Key)); + map.Where(pair => !pair.Value.TryGetTarget(out _)).ToList().ForEach(pair => map.Remove(pair.Key)); lastCompactionTime = now; } } @@ -139,4 +138,4 @@ public override object GetRef(object obj) #endregion } -} \ No newline at end of file +} diff --git a/ClearScript/CustomAttributeCache.cs b/ClearScript/CustomAttributeCache.cs index 22d6eacb..8496be8e 100644 --- a/ClearScript/CustomAttributeCache.cs +++ b/ClearScript/CustomAttributeCache.cs @@ -11,7 +11,7 @@ namespace Microsoft.ClearScript { internal sealed class CustomAttributeCache { - private readonly ConditionalWeakTable table = new ConditionalWeakTable(); + private readonly ConditionalWeakTable table = new(); public T[] GetOrLoad(CustomAttributeLoader loader, ICustomAttributeProvider resource, bool inherit) where T : Attribute { @@ -63,7 +63,7 @@ private bool GetIsBypassInternal(ICustomAttributeProvider resource) } var parent = GetParent(resource); - if (parent != null) + if (parent is not null) { return GetIsBypass(parent); } @@ -102,7 +102,7 @@ private static ICustomAttributeProvider GetParent(ICustomAttributeProvider resou private sealed class Entry { - private readonly Dictionary map = new Dictionary(); + private readonly Dictionary map = new(); public bool? IsBypass { get; set; } diff --git a/ClearScript/CustomAttributeLoader.cs b/ClearScript/CustomAttributeLoader.cs index 0b233022..4ee38937 100644 --- a/ClearScript/CustomAttributeLoader.cs +++ b/ClearScript/CustomAttributeLoader.cs @@ -12,7 +12,7 @@ namespace Microsoft.ClearScript /// public class CustomAttributeLoader { - private readonly CustomAttributeCache cache = new CustomAttributeCache(); + private readonly CustomAttributeCache cache = new(); // ReSharper disable EmptyConstructor @@ -27,7 +27,7 @@ public CustomAttributeLoader() /// /// Gets the default custom attribute loader. /// - public static CustomAttributeLoader Default { get; } = new CustomAttributeLoader(); + public static CustomAttributeLoader Default { get; } = new(); // ReSharper restore EmptyConstructor diff --git a/ClearScript/DefaultDocumentLoader.cs b/ClearScript/DefaultDocumentLoader.cs index fbedfab4..06df2911 100644 --- a/ClearScript/DefaultDocumentLoader.cs +++ b/ClearScript/DefaultDocumentLoader.cs @@ -27,7 +27,7 @@ public class DefaultDocumentLoader : DocumentLoader, DocumentLoader.IStatistics ".." + Path.AltDirectorySeparatorChar, }; - private readonly List cache = new List(); + private readonly List cache = new(); private long fileCheckCount; private long webCheckCount; @@ -65,10 +65,10 @@ public DefaultDocumentLoader() foreach (var testUri in testUris) { var flag = testUri.IsFile ? DocumentAccessFlags.EnableFileLoading : DocumentAccessFlags.EnableWebLoading; - if (settings.AccessFlags.HasFlag(flag)) + if (settings.AccessFlags.HasAllFlags(flag)) { var document = GetCachedDocument(testUri); - if (document != null) + if (document is not null) { return (document, null); } @@ -96,7 +96,7 @@ private static IEnumerable GetRawUris(DocumentSettings settings, DocumentIn if (sourceInfo.HasValue && SpecifierMayBeRelative(settings, specifier)) { baseUri = GetBaseUri(sourceInfo.Value); - if ((baseUri != null) && Uri.TryCreate(baseUri, specifier, out uri)) + if ((baseUri is not null) && Uri.TryCreate(baseUri, specifier, out uri)) { yield return uri; } @@ -114,12 +114,12 @@ private static IEnumerable GetRawUris(DocumentSettings settings, DocumentIn } } - if (MiscHelpers.Try(out var path, () => Path.Combine(Directory.GetCurrentDirectory(), specifier)) && Uri.TryCreate(path, UriKind.Absolute, out uri)) + if (MiscHelpers.Try(out var path, static specifier => Path.Combine(Directory.GetCurrentDirectory(), specifier), specifier) && Uri.TryCreate(path, UriKind.Absolute, out uri)) { yield return uri; } - if (MiscHelpers.Try(out path, () => Path.Combine(AppDomain.CurrentDomain.BaseDirectory, specifier)) && Uri.TryCreate(path, UriKind.Absolute, out uri)) + if (MiscHelpers.Try(out path, static specifier => Path.Combine(AppDomain.CurrentDomain.BaseDirectory, specifier), specifier) && Uri.TryCreate(path, UriKind.Absolute, out uri)) { yield return uri; } @@ -127,7 +127,7 @@ private static IEnumerable GetRawUris(DocumentSettings settings, DocumentIn using (var process = Process.GetCurrentProcess()) { var module = process.MainModule; - if ((module != null) && Uri.TryCreate(module.FileName, UriKind.Absolute, out baseUri) && Uri.TryCreate(baseUri, specifier, out uri)) + if ((module is not null) && Uri.TryCreate(module.FileName, UriKind.Absolute, out baseUri) && Uri.TryCreate(baseUri, specifier, out uri)) { yield return uri; } @@ -163,7 +163,7 @@ private static IEnumerable GetCompatibleExtensions(DocumentInfo? sourceI if (sourceInfo.HasValue) { - sourceExtension = Path.GetExtension((sourceInfo.Value.Uri != null) ? new UriBuilder(sourceInfo.Value.Uri).Path : sourceInfo.Value.Name); + sourceExtension = Path.GetExtension((sourceInfo.Value.Uri is not null) ? new UriBuilder(sourceInfo.Value.Uri).Path : sourceInfo.Value.Name); if (!string.IsNullOrEmpty(sourceExtension)) { yield return sourceExtension; @@ -182,14 +182,14 @@ private static IEnumerable GetCompatibleExtensions(DocumentInfo? sourceI private static bool SpecifierMayBeRelative(DocumentSettings settings, string specifier) { - return !settings.AccessFlags.HasFlag(DocumentAccessFlags.EnforceRelativePrefix) || relativePrefixes.Any(specifier.StartsWith); + return !settings.AccessFlags.HasAllFlags(DocumentAccessFlags.EnforceRelativePrefix) || relativePrefixes.Any(specifier.StartsWith); } private static Uri GetBaseUri(DocumentInfo sourceInfo) { var sourceUri = sourceInfo.Uri; - if ((sourceUri == null) && !Uri.TryCreate(sourceInfo.Name, UriKind.RelativeOrAbsolute, out sourceUri)) + if ((sourceUri is null) && !Uri.TryCreate(sourceInfo.Name, UriKind.RelativeOrAbsolute, out sourceUri)) { return null; } @@ -216,8 +216,8 @@ private static bool TryCombineSearchUri(Uri searchUri, string specifier, out Uri private async Task IsCandidateUriAsync(DocumentSettings settings, Uri uri) { return uri.IsFile ? - settings.AccessFlags.HasFlag(DocumentAccessFlags.EnableFileLoading) && await FileDocumentExistsAsync(uri.LocalPath).ConfigureAwait(false) : - settings.AccessFlags.HasFlag(DocumentAccessFlags.EnableWebLoading) && await WebDocumentExistsAsync(uri).ConfigureAwait(false); + settings.AccessFlags.HasAllFlags(DocumentAccessFlags.EnableFileLoading) && await FileDocumentExistsAsync(uri.LocalPath).ConfigureAwait(false) : + settings.AccessFlags.HasAllFlags(DocumentAccessFlags.EnableWebLoading) && await WebDocumentExistsAsync(uri).ConfigureAwait(false); } private Task FileDocumentExistsAsync(string path) @@ -252,21 +252,21 @@ private async Task LoadDocumentAsync(DocumentSettings settings, Uri ur { if (uri.IsFile) { - if (!settings.AccessFlags.HasFlag(DocumentAccessFlags.EnableFileLoading)) + if (!settings.AccessFlags.HasAllFlags(DocumentAccessFlags.EnableFileLoading)) { throw new UnauthorizedAccessException("The script engine is not configured for loading documents from the file system"); } } else { - if (!settings.AccessFlags.HasFlag(DocumentAccessFlags.EnableWebLoading)) + if (!settings.AccessFlags.HasAllFlags(DocumentAccessFlags.EnableWebLoading)) { throw new UnauthorizedAccessException("The script engine is not configured for downloading documents from the Web"); } } var cachedDocument = GetCachedDocument(uri); - if (cachedDocument != null) + if (cachedDocument is not null) { return cachedDocument; } @@ -290,7 +290,7 @@ private async Task LoadDocumentAsync(DocumentSettings settings, Uri ur var documentInfo = new DocumentInfo(uri) { Category = category, ContextCallback = contextCallback }; - if (!settings.AccessFlags.HasFlag(DocumentAccessFlags.UseAsyncLoadCallback)) + if (!settings.AccessFlags.HasAllFlags(DocumentAccessFlags.UseAsyncLoadCallback)) { var callback = settings.LoadCallback; callback?.Invoke(ref documentInfo); @@ -298,7 +298,7 @@ private async Task LoadDocumentAsync(DocumentSettings settings, Uri ur else { var callback = settings.AsyncLoadCallback; - if (callback != null) + if (callback is not null) { var documentInfoRef = ValueRef.Create(documentInfo); await callback(documentInfoRef, new MemoryStream(Encoding.UTF8.GetBytes(contents), false)).ConfigureAwait(false); @@ -309,7 +309,7 @@ private async Task LoadDocumentAsync(DocumentSettings settings, Uri ur var document = CacheDocument(new StringDocument(documentInfo, contents), false); var expectedCategory = category ?? DocumentCategory.Script; - if (!settings.AccessFlags.HasFlag(DocumentAccessFlags.AllowCategoryMismatch) && (documentInfo.Category != expectedCategory)) + if (!settings.AccessFlags.HasAllFlags(DocumentAccessFlags.AllowCategoryMismatch) && (documentInfo.Category != expectedCategory)) { throw new FileLoadException($"Document category mismatch: '{expectedCategory}' expected, '{documentInfo.Category}' loaded", uri.IsFile ? uri.LocalPath : uri.AbsoluteUri); } @@ -333,7 +333,7 @@ public override async Task LoadDocumentAsync(DocumentSettings settings throw new UnauthorizedAccessException("The script engine is not configured for loading documents"); } - if (category == null) + if (category is null) { category = sourceInfo.HasValue ? sourceInfo.Value.Category : DocumentCategory.Script; } @@ -349,7 +349,7 @@ public override async Task LoadDocumentAsync(DocumentSettings settings result = await GetCachedDocumentOrCandidateUrisAsync(settings, sourceInfo, specifier).ConfigureAwait(false); } - if (result.Document != null) + if (result.Document is not null) { return result.Document; } @@ -375,7 +375,7 @@ public override async Task LoadDocumentAsync(DocumentSettings settings } catch (Exception exception) { - if ((task.Exception != null) && task.Exception.InnerExceptions.Count == 1) + if ((task.Exception is not null) && task.Exception.InnerExceptions.Count == 1) { Debug.Assert(ReferenceEquals(task.Exception.InnerExceptions[0], exception)); exceptions.Add(exception); @@ -426,9 +426,9 @@ public override Document GetCachedDocument(Uri uri) public override Document CacheDocument(Document document, bool replace) { MiscHelpers.VerifyNonNullArgument(document, nameof(document)); - if ((document.Info.Uri == null) || !document.Info.Uri.IsAbsoluteUri) + if ((document.Info.Uri is null) || !document.Info.Uri.IsAbsoluteUri) { - throw new ArgumentException("The document must have an absolute URI"); + throw new ArgumentException("The document must have an absolute URI", nameof(document)); } lock (cache) diff --git a/ClearScript/DelegateFactory.cs b/ClearScript/DelegateFactory.cs index 047429dd..3416e904 100644 --- a/ClearScript/DelegateFactory.cs +++ b/ClearScript/DelegateFactory.cs @@ -43,19 +43,19 @@ public static Delegate CreateDelegate(ScriptEngine engine, object target, Type d MiscHelpers.VerifyNonNullArgument(target, nameof(target)); if (!typeof(Delegate).IsAssignableFrom(delegateType)) { - throw new ArgumentException("Invalid delegate type"); + throw new ArgumentException("Invalid delegate type", nameof(delegateType)); } var method = delegateType.GetMethod("Invoke"); - if (method == null) + if (method is null) { - throw new ArgumentException("Invalid delegate type (invocation method not found)"); + throw new ArgumentException("Invalid delegate type (invocation method not found)", nameof(delegateType)); } var parameters = method.GetParameters(); if (parameters.Length > maxArgCount) { - throw new ArgumentException("Invalid delegate type (parameter count too large)"); + throw new ArgumentException("Invalid delegate type (parameter count too large)", nameof(delegateType)); } var paramTypes = parameters.Select(param => param.ParameterType).ToArray(); @@ -84,7 +84,7 @@ private static Delegate CreateSimpleDelegate(ScriptEngine engine, object target, shimType = funcShimTemplates[paramTypes.Length].MakeSpecificType(typeArgs); } - var shim = (DelegateShim)shimType.CreateInstance(engine, target); + var shim = (DelegateShim)Activator.CreateInstance(shimType, engine, target); return shim.Delegate; } @@ -219,7 +219,7 @@ private abstract class ProcShim : DelegateShim protected ProcShim(ScriptEngine engine) : base(engine) { - if (engine == null) + if (engine is null) { invoker = action => action(); } @@ -242,7 +242,7 @@ private abstract class FuncShim : DelegateShim protected FuncShim(ScriptEngine engine) : base(engine) { - if (engine == null) + if (engine is null) { invoker = func => func(); } diff --git a/ClearScript/DocumentAccessFlags.cs b/ClearScript/DocumentAccessFlags.cs index de97f7ad..d3bac8bd 100644 --- a/ClearScript/DocumentAccessFlags.cs +++ b/ClearScript/DocumentAccessFlags.cs @@ -31,6 +31,8 @@ public enum DocumentAccessFlags /// EnableAllLoading = EnableFileLoading | EnableWebLoading, + // ReSharper disable GrammarMistakeInComment + /// /// Specifies that a document path must begin with a segment of "." or ".." to be /// considered a relative path. By default, any path that is not explicitly a top-level @@ -38,6 +40,8 @@ public enum DocumentAccessFlags /// EnforceRelativePrefix = 0x00000004, + // ReSharper restore GrammarMistakeInComment + /// /// Relaxes the requirement that a loaded document must be of the requested category. /// @@ -48,4 +52,10 @@ public enum DocumentAccessFlags /// UseAsyncLoadCallback = 0x00000010 } + + internal static class DocumentAccessFlagsHelpers + { + public static bool HasAllFlags(this DocumentAccessFlags value, DocumentAccessFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this DocumentAccessFlags value, DocumentAccessFlags flags) => (value & flags) != 0; + } } diff --git a/ClearScript/DocumentCategory.cs b/ClearScript/DocumentCategory.cs index e57313e1..75f3116f 100644 --- a/ClearScript/DocumentCategory.cs +++ b/ClearScript/DocumentCategory.cs @@ -47,7 +47,7 @@ internal DocumentCategory() private sealed class ScriptDocument : DocumentCategory { - public static readonly ScriptDocument Instance = new ScriptDocument(); + public static readonly ScriptDocument Instance = new(); private ScriptDocument() { @@ -77,7 +77,7 @@ public override string ToString() private sealed class JsonDocument : DocumentCategory { - public static readonly JsonDocument Instance = new JsonDocument(); + public static readonly JsonDocument Instance = new(); private JsonDocument() { diff --git a/ClearScript/DocumentFlags.cs b/ClearScript/DocumentFlags.cs index 50db9f80..c4cb33e4 100644 --- a/ClearScript/DocumentFlags.cs +++ b/ClearScript/DocumentFlags.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. using System; @@ -31,4 +31,10 @@ public enum DocumentFlags /// AwaitDebuggerAndPause = 0x00000002 } + + internal static class DocumentFlagsHelpers + { + public static bool HasAllFlags(this DocumentFlags value, DocumentFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this DocumentFlags value, DocumentFlags flags) => (value & flags) != 0; + } } diff --git a/ClearScript/DocumentInfo.cs b/ClearScript/DocumentInfo.cs index 218da5e3..a5ec0aa1 100644 --- a/ClearScript/DocumentInfo.cs +++ b/ClearScript/DocumentInfo.cs @@ -51,7 +51,7 @@ public DocumentInfo(Uri uri) /// This property always returns a non-blank string. If a null or blank document name was /// specified at instantiation time, this property returns a default document name. /// - public string Name => MiscHelpers.EnsureNonBlank(name, Category.DefaultName); + public string Name => name.ToNonBlank(Category.DefaultName); /// /// Gets the document's URI. @@ -129,7 +129,7 @@ internal UniqueDocumentInfo MakeUnique(IUniqueNameManager manager, DocumentFlags } var uniqueName = manager.GetUniqueName(Name, Category.DefaultName); - if (info.Flags.GetValueOrDefault().HasFlag(DocumentFlags.IsTransient)) + if (info.Flags.GetValueOrDefault().HasAllFlags(DocumentFlags.IsTransient)) { uniqueName += " [temp]"; } diff --git a/ClearScript/DocumentLoader.cs b/ClearScript/DocumentLoader.cs index ed24d24f..f7118b12 100644 --- a/ClearScript/DocumentLoader.cs +++ b/ClearScript/DocumentLoader.cs @@ -147,7 +147,7 @@ internal interface IStatistics private sealed class DefaultImpl : DefaultDocumentLoader { - public static readonly DefaultImpl Instance = new DefaultImpl(); + public static readonly DefaultImpl Instance = new(); private DefaultImpl() { diff --git a/ClearScript/DocumentSettings.cs b/ClearScript/DocumentSettings.cs index 8b7c0672..2ad7c72a 100644 --- a/ClearScript/DocumentSettings.cs +++ b/ClearScript/DocumentSettings.cs @@ -19,7 +19,7 @@ namespace Microsoft.ClearScript public class DocumentSettings { private DocumentLoader loader; - private readonly ConcurrentDictionary, Document> systemDocumentMap = new ConcurrentDictionary, Document>(); + private readonly ConcurrentDictionary, Document> systemDocumentMap = new(); // ReSharper disable EmptyConstructor @@ -175,7 +175,7 @@ private Document FindSystemDocument(string identifier, DocumentCategory category return document; } - if (AccessFlags.HasFlag(DocumentAccessFlags.AllowCategoryMismatch)) + if (AccessFlags.HasAllFlags(DocumentAccessFlags.AllowCategoryMismatch)) { foreach (var pair in systemDocumentMap) { diff --git a/ClearScript/Exports/VersionSymbols.h b/ClearScript/Exports/VersionSymbols.h index 8b4c83f3..d17b457b 100644 --- a/ClearScript/Exports/VersionSymbols.h +++ b/ClearScript/Exports/VersionSymbols.h @@ -5,7 +5,7 @@ #pragma once -#define CLEARSCRIPT_VERSION_STRING "7.4.5" -#define CLEARSCRIPT_VERSION_COMMA_SEPARATED 7,4,5 -#define CLEARSCRIPT_VERSION_STRING_INFORMATIONAL "7.4.5" +#define CLEARSCRIPT_VERSION_STRING "7.5.0" +#define CLEARSCRIPT_VERSION_COMMA_SEPARATED 7,5,0 +#define CLEARSCRIPT_VERSION_STRING_INFORMATIONAL "7.5.0" #define CLEARSCRIPT_FILE_FLAGS 0L diff --git a/ClearScript/ExtendedHostFunctions.cs b/ClearScript/ExtendedHostFunctions.cs index 54f190da..efb3bbd0 100644 --- a/ClearScript/ExtendedHostFunctions.cs +++ b/ClearScript/ExtendedHostFunctions.cs @@ -241,6 +241,8 @@ public object comType(string progID, string serverName = null) return HostType.Wrap(MiscHelpers.GetCOMType(progID, serverName)); } + // ReSharper disable GrammarMistakeInComment + /// /// Creates a COM/ActiveX object of the specified type. /// @@ -271,6 +273,8 @@ public object newComObj(string progID, string serverName = null) return MiscHelpers.CreateCOMObject(progID, serverName); } + // ReSharper restore GrammarMistakeInComment + /// /// Imports enumerations defined within or referenced from a COM/ActiveX type library. /// @@ -281,7 +285,7 @@ public object newComObj(string progID, string serverName = null) public HostTypeCollection typeLibEnums(T obj, HostTypeCollection collection = null) where T : class { MiscHelpers.VerifyNonNullArgument(obj, nameof(obj)); - if (collection == null) + if (collection is null) { collection = new HostTypeCollection(); } @@ -292,14 +296,14 @@ public HostTypeCollection typeLibEnums(T obj, HostTypeCollection collection = if (obj is IDispatch dispatch) { var typeInfo = dispatch.GetTypeInfo(); - if (typeInfo != null) + if (typeInfo is not null) { typeInfo.GetContainingTypeLib().GetReferencedEnums().ForEach(collection.AddEnumTypeInfo); return collection; } } } - else if (type.IsImport && (type.Assembly.GetOrLoadCustomAttribute(ScriptEngine.Current, false) != null)) + else if (type.IsImport && (type.Assembly.GetOrLoadCustomAttribute(ScriptEngine.Current, false) is not null)) { type.Assembly.GetReferencedEnums().ForEach(collection.AddType); return collection; diff --git a/ClearScript/ExtensionMethods.cs b/ClearScript/ExtensionMethods.cs index ca4d5f99..c99e1008 100644 --- a/ClearScript/ExtensionMethods.cs +++ b/ClearScript/ExtensionMethods.cs @@ -13,9 +13,9 @@ namespace Microsoft.ClearScript { internal sealed class ExtensionMethodTable { - private readonly Dictionary table = new Dictionary(); + private readonly Dictionary table = new(); - public ExtensionMethodSummary Summary { get; private set; } = new ExtensionMethodSummary(); + public ExtensionMethodSummary Summary { get; private set; } = new(); public bool ProcessType(IHostContext context, Type type) { diff --git a/ClearScript/Extensions.cs b/ClearScript/Extensions.cs index f71fdf01..69008065 100644 --- a/ClearScript/Extensions.cs +++ b/ClearScript/Extensions.cs @@ -65,8 +65,8 @@ public static object ToRestrictedHostObject(this T target, ScriptEngine engin /// /// Converts an object to a host object with a type restriction specified as a - /// instance, for use with script code currently running on the calling - /// thread. + /// instance, for use with script code currently running on the + /// calling thread. /// /// The object to convert to a host object for use with script code. /// The type whose members are to be made accessible from script code. @@ -78,8 +78,8 @@ public static object ToRestrictedHostObject(this object target, Type type) /// /// Converts an object to a host object with a type restriction specified as a - /// instance, for use with script code running in the specified script - /// engine. + /// instance, for use with script code running in the specified + /// script engine. /// /// The object to convert to a host object for use with script code. /// The type whose members are to be made accessible from script code. @@ -91,12 +91,12 @@ public static object ToRestrictedHostObject(this object target, Type type, Scrip MiscHelpers.VerifyNonNullArgument(type, nameof(type)); MiscHelpers.VerifyNonNullArgument(engine, nameof(engine)); - if (!MiscHelpers.Try(out var holder, () => typeof(Holder<>).MakeGenericType(type).CreateInstance())) + if (!MiscHelpers.Try(out var holder, static type => Activator.CreateInstance(typeof(Holder<>).MakeGenericType(type)), type)) { throw new ArgumentException("The specified type is invalid", nameof(type)); } - if (!MiscHelpers.Try(() => ((IHolder)holder).Value = target)) + if (!MiscHelpers.Try(static ctx => ((IHolder)ctx.holder).Value = ctx.target, (holder, target))) { throw new ArgumentException("The target object is incompatible with the specified type", nameof(target)); } diff --git a/ClearScript/HostEvent.cs b/ClearScript/HostEvent.cs index e83c2522..26543505 100644 --- a/ClearScript/HostEvent.cs +++ b/ClearScript/HostEvent.cs @@ -100,7 +100,7 @@ public abstract class EventConnection private readonly object source; private readonly MethodInfo removeMethod; private readonly object[] parameters; - private readonly InterlockedOneWayFlag brokenFlag = new InterlockedOneWayFlag(); + private readonly InterlockedOneWayFlag brokenFlag = new(); internal EventConnection(ScriptEngine engine, object source, EventInfo eventInfo, Delegate handler) { @@ -108,12 +108,12 @@ internal EventConnection(ScriptEngine engine, object source, EventInfo eventInfo MiscHelpers.VerifyNonNullArgument(handler, nameof(handler)); MiscHelpers.VerifyNonNullArgument(eventInfo, nameof(eventInfo)); - if (!MiscHelpers.Try(out var addMethod, () => eventInfo.GetAddMethod(true)) || (addMethod == null)) + if (!MiscHelpers.Try(out var addMethod, static eventInfo => eventInfo.GetAddMethod(true), eventInfo) || (addMethod is null)) { throw new ArgumentException("Invalid event type (no accessible add method)", nameof(eventInfo)); } - if (!MiscHelpers.Try(out removeMethod, () => eventInfo.GetRemoveMethod(true)) || (removeMethod == null)) + if (!MiscHelpers.Try(out removeMethod, static eventInfo => eventInfo.GetRemoveMethod(true), eventInfo) || (removeMethod is null)) { throw new ArgumentException("Invalid event type (no accessible remove method)", nameof(eventInfo)); } diff --git a/ClearScript/HostFunctions.cs b/ClearScript/HostFunctions.cs index 94a5230e..22f11752 100644 --- a/ClearScript/HostFunctions.cs +++ b/ClearScript/HostFunctions.cs @@ -39,6 +39,8 @@ public HostFunctions() // ReSharper disable InconsistentNaming + // ReSharper disable GrammarMistakeInComment + /// /// Creates an empty host object. /// @@ -64,6 +66,8 @@ public PropertyBag newObj() return new PropertyBag(); } + // ReSharper restore GrammarMistakeInComment + /// /// Creates a host object of the specified type. This version is invoked if the specified /// type can be used as a type argument. @@ -194,6 +198,8 @@ public object newArr(params int[] lengths) return newArr(lengths); } + // ReSharper disable GrammarMistakeInComment + /// /// Creates a host variable of the specified type. /// @@ -257,6 +263,8 @@ public object newVar(T initValue = default) return new HostVariable(initValue); } + // ReSharper restore GrammarMistakeInComment + /// /// Creates a delegate that invokes a script function. /// @@ -610,7 +618,7 @@ public bool isTypeObj() /// public bool isNull(object value) { - return value == null; + return value is null; } /// @@ -1317,7 +1325,7 @@ public bool tryCatch(object tryFunc, object catchFunc, object finallyFunc = null } finally { - if (finallyFunc != null) + if (finallyFunc is not null) { ((ScriptObject)finallyFunc).InvokeAsFunction(); } @@ -1331,7 +1339,7 @@ public bool tryCatch(object tryFunc, object catchFunc, object finallyFunc = null internal ScriptEngine GetEngine() { var activeEngine = ScriptEngine.Current ?? engine; - if (activeEngine == null) + if (activeEngine is null) { throw new InvalidOperationException("Operation requires a script engine"); } @@ -1342,7 +1350,7 @@ internal ScriptEngine GetEngine() internal static Type GetUniqueHostType(object type, string paramName) { var hostType = type as HostType; - if (hostType == null) + if (hostType is null) { throw new ArgumentException("Invalid host type", paramName); } diff --git a/ClearScript/HostIndexedProperty.cs b/ClearScript/HostIndexedProperty.cs index 79a0c286..4529465b 100644 --- a/ClearScript/HostIndexedProperty.cs +++ b/ClearScript/HostIndexedProperty.cs @@ -51,7 +51,7 @@ public override string[] GetAuxMethodNames(IHostContext context, BindingFlags bi public override bool TryInvokeAuxMember(IHostContext context, string memberName, BindingFlags invokeFlags, object[] args, object[] bindArgs, out object result) { - if (invokeFlags.HasFlag(BindingFlags.InvokeMethod)) + if (invokeFlags.HasAllFlags(BindingFlags.InvokeMethod)) { if (string.Equals(memberName, "get", invokeFlags.GetMemberNameComparison())) { @@ -72,7 +72,7 @@ public override bool TryInvokeAuxMember(IHostContext context, string memberName, public override bool TryInvoke(IHostContext context, BindingFlags invokeFlags, object[] args, object[] bindArgs, out object result) { - result = target.InvokeMember(name, (invokeFlags.HasFlag(BindingFlags.SetField) ? BindingFlags.SetProperty : BindingFlags.GetProperty) | BindingFlags.SuppressChangeType, args, bindArgs, null, true); + result = target.InvokeMember(name, (invokeFlags.HasAllFlags(BindingFlags.SetField) ? BindingFlags.SetProperty : BindingFlags.GetProperty) | BindingFlags.SuppressChangeType, args, bindArgs, null, true); return true; } diff --git a/ClearScript/HostItem.InvokeMethod.cs b/ClearScript/HostItem.InvokeMethod.cs index 9d8890ca..f6543fb3 100644 --- a/ClearScript/HostItem.InvokeMethod.cs +++ b/ClearScript/HostItem.InvokeMethod.cs @@ -1,502 +1,504 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Diagnostics; -using System.Dynamic; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using System.Threading; -using Microsoft.CSharp.RuntimeBinder; -using Microsoft.ClearScript.Util; -using Binder = Microsoft.CSharp.RuntimeBinder.Binder; - -namespace Microsoft.ClearScript -{ - internal partial class HostItem - { - #region data - - private static readonly ConcurrentDictionary coreBindCache = new ConcurrentDictionary(); - private static long coreBindCount; - - #endregion - - #region internal members - - private object InvokeMethod(string name, object[] args, object[] bindArgs) - { - var typeArgs = GetTypeArgs(args).ToArray(); - if (typeArgs.Length > 0) - { - var mergedArgs = args; - var argOffset = typeArgs.Length; - - args = args.Skip(argOffset).ToArray(); - bindArgs = bindArgs.Skip(argOffset).ToArray(); - - var result = InvokeMethod(name, typeArgs, args, bindArgs); - for (var index = 0; index < args.Length; index++) - { - mergedArgs[argOffset + index] = args[index]; - } - - return result; - } - - return InvokeMethod(name, typeArgs, args, bindArgs); - } - - private object InvokeMethod(string name, Type[] typeArgs, object[] args, object[] bindArgs) - { - var bindResult = BindMethod(name, typeArgs, args, bindArgs); - if (!bindResult.IsSuccess && Target.GetFlags(this).HasFlag(HostTargetFlags.AllowExtensionMethods)) - { - var targetArg = Target.Target.ToEnumerable(); - var extensionArgs = targetArg.Concat(args).ToArray(); - - var targetBindArg = new object[] { Target }; - var extensionBindArgs = targetBindArg.Concat(bindArgs).ToArray(); - - foreach (var type in ExtensionMethodSummary.Types) - { - var extensionHostItem = (HostItem)Wrap(Engine, HostType.Wrap(type)); - var extensionBindResult = extensionHostItem.BindMethod(name, typeArgs, extensionArgs, extensionBindArgs); - if (extensionBindResult.IsSuccess) - { - var result = extensionBindResult.Invoke(extensionHostItem); - for (var index = 1; index < extensionArgs.Length; index++) - { - args[index - 1] = extensionArgs[index]; - } - - return result; - } - } - } - - return bindResult.Invoke(this); - } - - private static IEnumerable GetTypeArgs(object[] args) - { - foreach (var arg in args) - { - var hostType = arg as HostType; - if (hostType == null) - { - yield break; - } - - var typeArg = hostType.GetTypeArgNoThrow(); - if (typeArg == null) - { - yield break; - } - - yield return typeArg; - } - } - - private MethodBindResult BindMethod(string name, Type[] typeArgs, object[] args, object[] bindArgs) - { - var bindFlags = GetMethodBindFlags(); - - // WARNING: BindSignature holds on to the specified typeArgs; subsequent modification - // will result in bugs that are difficult to diagnose. Create a copy if necessary. - - var signature = new BindSignature(AccessContext, bindFlags, Target, name, typeArgs, bindArgs); - MethodBindResult result; - - if (Engine.TryGetCachedMethodBindResult(signature, out var rawResult)) - { - result = MethodBindResult.Create(name, bindFlags, rawResult, Target, args); - } - else - { - var forceReflection = Engine.DisableDynamicBinding; - - if (forceReflection) - { - result = new MethodBindResult(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); - } - else - { - result = BindMethodInternal(signature, AccessContext, bindFlags, Target, name, typeArgs, args, bindArgs); - if (!result.IsPreferredMethod(this, name)) - { - if (result.IsSuccess) - { - result = new MethodBindResult(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); - } - - foreach (var altName in GetAltMethodNames(name, bindFlags)) - { - var altResult = BindMethodInternal(null, AccessContext, bindFlags, Target, altName, typeArgs, args, bindArgs); - if (altResult.IsUnblockedMethod(this)) - { - result = altResult; - break; - } - } - } - } - - if ((!result.IsSuccess) && (forceReflection || Engine.UseReflectionBindFallback)) - { - var reflectionResult = BindMethodUsingReflection(bindFlags, Target, name, typeArgs, args, bindArgs); - if ((reflectionResult.IsSuccess) || forceReflection) - { - result = reflectionResult; - } - } - - Engine.CacheMethodBindResult(signature, result.RawResult); - } - - return result; - } - - private static MethodBindResult BindMethodInternal(BindSignature signature, Type bindContext, BindingFlags bindFlags, HostTarget target, string name, Type[] typeArgs, object[] args, object[] bindArgs) - { - if (signature == null) - { - // WARNING: BindSignature holds on to the specified typeArgs; subsequent modification - // will result in bugs that are difficult to diagnose. Create a copy if necessary. - - signature = new BindSignature(bindContext, bindFlags, target, name, typeArgs, bindArgs); - } - - MethodBindResult result; - - if (coreBindCache.TryGetValue(signature, out var rawResult)) - { - result = MethodBindResult.Create(name, bindFlags, rawResult, target, args); - } - else - { - result = BindMethodCore(bindContext, bindFlags, target, name, typeArgs, args, bindArgs); - coreBindCache.TryAdd(signature, result.RawResult); - } - - return result; - } - - private static MethodBindResult BindMethodCore(Type bindContext, BindingFlags bindFlags, HostTarget target, string name, Type[] typeArgs, object[] args, object[] bindArgs) - { - Interlocked.Increment(ref coreBindCount); - - // create C# member invocation binder - const CSharpBinderFlags binderFlags = CSharpBinderFlags.InvokeSimpleName | CSharpBinderFlags.ResultDiscarded; - var binder = (InvokeMemberBinder)Binder.InvokeMember(binderFlags, name, typeArgs, bindContext, CreateArgInfoEnum(target, bindArgs)); - - // perform default binding - var rawResult = BindMethodRaw(bindFlags, binder, target, bindArgs); - - var result = MethodBindResult.Create(name, bindFlags, rawResult, target, args); - if (!result.IsSuccess && !(target is HostType) && target.Type.IsInterface) - { - // binding through interface failed; try base interfaces - foreach (var interfaceType in target.Type.GetInterfaces()) - { - var baseInterfaceTarget = HostObject.Wrap(target.InvokeTarget, interfaceType); - rawResult = BindMethodRaw(bindFlags, binder, baseInterfaceTarget, bindArgs); - - var baseInterfaceResult = MethodBindResult.Create(name, bindFlags, rawResult, target, args); - if (baseInterfaceResult.IsSuccess) - { - return baseInterfaceResult; - } - } - - // binding through base interfaces failed; try System.Object - var objectTarget = HostObject.Wrap(target.InvokeTarget, typeof(object)); - rawResult = BindMethodRaw(bindFlags, binder, objectTarget, bindArgs); - - var objectResult = MethodBindResult.Create(name, bindFlags, rawResult, target, args); - if (objectResult.IsSuccess) - { - return objectResult; - } - } - - return result; - } - - private static object BindMethodRaw(BindingFlags bindFlags, InvokeMemberBinder binder, HostTarget target, object[] bindArgs) - { - var expr = DynamicHelpers.Bind(binder, target, bindArgs).Expression; - - // ReSharper disable ConditionIsAlwaysTrueOrFalse - // ReSharper disable HeuristicUnreachableCode - - if (expr == null) - { - return new Func(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}'", binder.Name))); - } - - // ReSharper restore HeuristicUnreachableCode - // ReSharper restore ConditionIsAlwaysTrueOrFalse - - if (expr.NodeType == ExpressionType.Dynamic) - { - // The binding result is a dynamic call, which is indicative of COM interop. This - // sort of binding is not very useful here; it can't be resolved to a MethodInfo - // instance, and caching it is problematic because it includes argument bindings. - // Falling back to reflection should work in most cases because COM interfaces - // support neither generic nor overloaded methods. - - try - { - var method = target.Type.GetMethod(binder.Name, bindFlags); - return (object)method ?? new Func(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}'", binder.Name))); - } - catch (AmbiguousMatchException exception) - { - return new Func(() => new AmbiguousMatchException(exception.Message)); - } - } - - return (new MethodBindingVisitor(target.InvokeTarget, binder.Name, expr)).Result; - } - - private IEnumerable GetAltMethodNames(string name, BindingFlags bindFlags) - { - return GetAltMethodNamesInternal(name, bindFlags).Distinct(); - } - - private IEnumerable GetAltMethodNamesInternal(string name, BindingFlags bindFlags) - { - foreach (var method in Target.Type.GetScriptableMethods(this, name, bindFlags)) - { - var methodName = method.GetShortName(); - if (methodName != name) - { - yield return methodName; - } - } - } - - private static IEnumerable CreateArgInfoEnum(HostTarget target, object[] args) - { - if (target is HostType) - { - yield return CreateStaticTypeArgInfo(); - } - else - { - yield return CreateArgInfo(target.DynamicInvokeTarget); - } - - foreach (var arg in args) - { - yield return CreateArgInfo(arg); - } - } - - private static CSharpArgumentInfo CreateArgInfo(object arg) - { - var flags = CSharpArgumentInfoFlags.None; - if (arg != null) - { - flags |= CSharpArgumentInfoFlags.UseCompileTimeType; - if (arg is HostObject hostObject) - { - if ((hostObject.Type == typeof(int)) || (hostObject.Type.IsValueType && hostObject.Target.IsZero())) - { - flags |= CSharpArgumentInfoFlags.Constant; - } - } - else if (arg is HostVariable hostVariable) - { - if ((hostVariable.Type == typeof(int)) || (hostVariable.Type.IsValueType && hostVariable.Target.IsZero())) - { - flags |= CSharpArgumentInfoFlags.Constant; - } - } - else if (arg is int || arg.IsZero()) - { - flags |= CSharpArgumentInfoFlags.Constant; - } - else if (arg is IOutArg) - { - flags |= CSharpArgumentInfoFlags.IsOut; - } - else if (arg is IRefArg) - { - flags |= CSharpArgumentInfoFlags.IsRef; - } - } - - return CSharpArgumentInfo.Create(flags, null); - } - - private static CSharpArgumentInfo CreateStaticTypeArgInfo() - { - return CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.IsStaticType, null); - } - - private MethodBindResult BindMethodUsingReflection(BindingFlags bindFlags, HostTarget hostTarget, string name, Type[] typeArgs, object[] args, object[] bindArgs) - { - var candidates = GetReflectionCandidates(bindFlags, hostTarget, name, typeArgs).Distinct().ToArray(); - if (candidates.Length > 0) - { - try - { - var rawResult = TypeHelpers.BindToMember(this, candidates, bindFlags, args, bindArgs); - if (rawResult != null) - { - return MethodBindResult.Create(name, bindFlags, rawResult, hostTarget, args); - } - } - catch (AmbiguousMatchException) - { - return new MethodBindResult(() => new AmbiguousMatchException(MiscHelpers.FormatInvariant("The object has multiple methods named '{0}' that match the specified arguments", name))); - } - } - - return new MethodBindResult(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); - } - - private IEnumerable GetReflectionCandidates(BindingFlags bindFlags, HostTarget hostTarget, string name, Type[] typeArgs) - { - foreach (var method in GetReflectionCandidates(bindFlags, hostTarget.Type, name, typeArgs)) - { - yield return method; - } - - if (!(hostTarget is HostType) && hostTarget.Type.IsInterface) - { - foreach (var interfaceType in hostTarget.Type.GetInterfaces()) - { - foreach (var method in GetReflectionCandidates(bindFlags, interfaceType, name, typeArgs)) - { - yield return method; - } - } - - foreach (var method in GetReflectionCandidates(bindFlags, typeof(object), name, typeArgs)) - { - yield return method; - } - } - } - - private IEnumerable GetReflectionCandidates(BindingFlags bindFlags, Type type, string name, Type[] typeArgs) - { - foreach (var method in type.GetScriptableMethods(this, name, bindFlags)) - { - MethodInfo tempMethod = null; - - if (method.ContainsGenericParameters) - { - try - { - tempMethod = method.MakeGenericMethod(typeArgs); - } - catch (ArgumentException) - { - continue; - } - catch (NotSupportedException) - { - continue; - } - } - else if (typeArgs.Length < 1) - { - tempMethod = method; - } - - if ((tempMethod != null) && !tempMethod.ContainsGenericParameters) - { - yield return tempMethod; - } - } - } - - #endregion - - #region unit test support - - internal static void ClearCoreBindCache() - { - coreBindCache.Clear(); - Interlocked.Exchange(ref coreBindCount, 0); - } - - internal static long GetCoreBindCount() - { - return Interlocked.Read(ref coreBindCount); - } - - #endregion - - #region Nested type: MethodBindResult - - private readonly ref struct MethodBindResult +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Dynamic; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Threading; +using Microsoft.CSharp.RuntimeBinder; +using Microsoft.ClearScript.Util; +using Binder = Microsoft.CSharp.RuntimeBinder.Binder; + +namespace Microsoft.ClearScript +{ + internal partial class HostItem + { + #region data + + private static readonly ConcurrentDictionary coreBindCache = new(); + private static long coreBindCount; + + #endregion + + #region internal members + + private object InvokeMethod(string name, object[] args, object[] bindArgs) + { + var typeArgs = GetTypeArgs(args).ToArray(); + if (typeArgs.Length > 0) + { + var mergedArgs = args; + var argOffset = typeArgs.Length; + + args = args.Skip(argOffset).ToArray(); + bindArgs = bindArgs.Skip(argOffset).ToArray(); + + var result = InvokeMethod(name, typeArgs, args, bindArgs); + for (var index = 0; index < args.Length; index++) + { + mergedArgs[argOffset + index] = args[index]; + } + + return result; + } + + return InvokeMethod(name, typeArgs, args, bindArgs); + } + + private object InvokeMethod(string name, Type[] typeArgs, object[] args, object[] bindArgs) + { + var bindResult = BindMethod(name, typeArgs, args, bindArgs); + if (!bindResult.IsSuccess && Target.GetFlags(this).HasAllFlags(HostTargetFlags.AllowExtensionMethods)) + { + var targetArg = Target.Target.ToEnumerable(); + var extensionArgs = targetArg.Concat(args).ToArray(); + + var targetBindArg = new object[] { Target }; + var extensionBindArgs = targetBindArg.Concat(bindArgs).ToArray(); + + foreach (var type in ExtensionMethodSummary.Types) + { + var extensionHostItem = (HostItem)Wrap(Engine, HostType.Wrap(type)); + var extensionBindResult = extensionHostItem.BindMethod(name, typeArgs, extensionArgs, extensionBindArgs); + if (extensionBindResult.IsSuccess) + { + var result = extensionBindResult.Invoke(extensionHostItem); + for (var index = 1; index < extensionArgs.Length; index++) + { + args[index - 1] = extensionArgs[index]; + } + + return result; + } + } + } + + return bindResult.Invoke(this); + } + + private static IEnumerable GetTypeArgs(object[] args) + { + foreach (var arg in args) + { + var hostType = arg as HostType; + if (hostType is null) + { + yield break; + } + + var typeArg = hostType.GetTypeArgNoThrow(); + if (typeArg is null) + { + yield break; + } + + yield return typeArg; + } + } + + private MethodBindResult BindMethod(string name, Type[] typeArgs, object[] args, object[] bindArgs) + { + var bindFlags = GetMethodBindFlags(); + + // WARNING: BindSignature holds on to the specified typeArgs; subsequent modification + // will result in bugs that are difficult to diagnose. Create a copy if necessary. + + var signature = new BindSignature(AccessContext, bindFlags, Target, name, typeArgs, bindArgs); + MethodBindResult result; + + if (Engine.TryGetCachedMethodBindResult(signature, out var rawResult)) + { + result = MethodBindResult.Create(name, bindFlags, rawResult, Target, args); + } + else + { + var forceReflection = Engine.DisableDynamicBinding; + + if (forceReflection) + { + result = MethodBindResult.CreateFailure(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); + } + else + { + result = BindMethodInternal(signature, AccessContext, bindFlags, Target, name, typeArgs, args, bindArgs); + if (!result.IsPreferredMethod(this, name)) + { + if (result.IsSuccess) + { + result = MethodBindResult.CreateFailure(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); + } + + foreach (var altName in GetAltMethodNames(name, bindFlags)) + { + var altResult = BindMethodInternal(null, AccessContext, bindFlags, Target, altName, typeArgs, args, bindArgs); + if (altResult.IsUnblockedMethod(this)) + { + result = altResult; + break; + } + } + } + } + + if (!result.IsSuccess && (forceReflection || Engine.UseReflectionBindFallback)) + { + var reflectionResult = BindMethodUsingReflection(bindFlags, Target, name, typeArgs, args, bindArgs); + if (reflectionResult.IsSuccess || forceReflection) + { + result = reflectionResult; + } + } + + Engine.CacheMethodBindResult(signature, result.RawResult); + } + + return result; + } + + private static MethodBindResult BindMethodInternal(BindSignature signature, Type bindContext, BindingFlags bindFlags, HostTarget target, string name, Type[] typeArgs, object[] args, object[] bindArgs) + { + if (signature is null) + { + // WARNING: BindSignature holds on to the specified typeArgs; subsequent modification + // will result in bugs that are difficult to diagnose. Create a copy if necessary. + + signature = new BindSignature(bindContext, bindFlags, target, name, typeArgs, bindArgs); + } + + MethodBindResult result; + + if (coreBindCache.TryGetValue(signature, out var rawResult)) + { + result = MethodBindResult.Create(name, bindFlags, rawResult, target, args); + } + else + { + result = BindMethodCore(bindContext, bindFlags, target, name, typeArgs, args, bindArgs); + coreBindCache.TryAdd(signature, result.RawResult); + } + + return result; + } + + private static MethodBindResult BindMethodCore(Type bindContext, BindingFlags bindFlags, HostTarget target, string name, Type[] typeArgs, object[] args, object[] bindArgs) + { + Interlocked.Increment(ref coreBindCount); + + // create C# member invocation binder + const CSharpBinderFlags binderFlags = CSharpBinderFlags.InvokeSimpleName | CSharpBinderFlags.ResultDiscarded; + var binder = (InvokeMemberBinder)Binder.InvokeMember(binderFlags, name, typeArgs, bindContext, CreateArgInfoEnum(target, bindArgs)); + + // perform default binding + var rawResult = BindMethodRaw(bindFlags, binder, target, bindArgs); + + var result = MethodBindResult.Create(name, bindFlags, rawResult, target, args); + if (!result.IsSuccess && (target is not HostType) && target.Type.IsInterface) + { + // binding through interface failed; try base interfaces + foreach (var interfaceType in target.Type.GetInterfaces()) + { + var baseInterfaceTarget = HostObject.Wrap(target.InvokeTarget, interfaceType); + rawResult = BindMethodRaw(bindFlags, binder, baseInterfaceTarget, bindArgs); + + var baseInterfaceResult = MethodBindResult.Create(name, bindFlags, rawResult, target, args); + if (baseInterfaceResult.IsSuccess) + { + return baseInterfaceResult; + } + } + + // binding through base interfaces failed; try System.Object + var objectTarget = HostObject.Wrap(target.InvokeTarget, typeof(object)); + rawResult = BindMethodRaw(bindFlags, binder, objectTarget, bindArgs); + + var objectResult = MethodBindResult.Create(name, bindFlags, rawResult, target, args); + if (objectResult.IsSuccess) + { + return objectResult; + } + } + + return result; + } + + private static object BindMethodRaw(BindingFlags bindFlags, InvokeMemberBinder binder, HostTarget target, object[] bindArgs) + { + var expr = DynamicHelpers.Bind(binder, target, bindArgs).Expression; + + // ReSharper disable ConditionIsAlwaysTrueOrFalse + // ReSharper disable HeuristicUnreachableCode + + if (expr is null) + { + return new Func(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}'", binder.Name))); + } + + // ReSharper restore HeuristicUnreachableCode + // ReSharper restore ConditionIsAlwaysTrueOrFalse + + if (expr.NodeType == ExpressionType.Dynamic) + { + // The binding result is a dynamic call, which is indicative of COM interop. This + // sort of binding is not very useful here; it can't be resolved to a MethodInfo + // instance, and caching it is problematic because it includes argument bindings. + // Falling back to reflection should work in most cases because COM interfaces + // support neither generic nor overloaded methods. + + try + { + var method = target.Type.GetMethod(binder.Name, bindFlags); + return (object)method ?? new Func(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}'", binder.Name))); + } + catch (AmbiguousMatchException exception) + { + return new Func(() => new AmbiguousMatchException(exception.Message)); + } + } + + return (new MethodBindingVisitor(target.InvokeTarget, binder.Name, expr)).Result; + } + + private IEnumerable GetAltMethodNames(string name, BindingFlags bindFlags) + { + return GetAltMethodNamesInternal(name, bindFlags).Distinct(); + } + + private IEnumerable GetAltMethodNamesInternal(string name, BindingFlags bindFlags) + { + foreach (var method in Target.Type.GetScriptableMethods(this, name, bindFlags)) + { + var methodName = method.GetShortName(); + if (methodName != name) + { + yield return methodName; + } + } + } + + private static IEnumerable CreateArgInfoEnum(HostTarget target, object[] args) + { + if (target is HostType) + { + yield return CreateStaticTypeArgInfo(); + } + else + { + yield return CreateArgInfo(target.DynamicInvokeTarget); + } + + foreach (var arg in args) + { + yield return CreateArgInfo(arg); + } + } + + private static CSharpArgumentInfo CreateArgInfo(object arg) + { + var flags = CSharpArgumentInfoFlags.None; + if (arg is not null) + { + flags |= CSharpArgumentInfoFlags.UseCompileTimeType; + if (arg is HostObject hostObject) + { + if ((hostObject.Type == typeof(int)) || (hostObject.Type.IsValueType && hostObject.Target.IsZero())) + { + flags |= CSharpArgumentInfoFlags.Constant; + } + } + else if (arg is HostVariable hostVariable) + { + if ((hostVariable.Type == typeof(int)) || (hostVariable.Type.IsValueType && hostVariable.Target.IsZero())) + { + flags |= CSharpArgumentInfoFlags.Constant; + } + } + else if (arg is int || arg.IsZero()) + { + flags |= CSharpArgumentInfoFlags.Constant; + } + else if (arg is IOutArg) + { + flags |= CSharpArgumentInfoFlags.IsOut; + } + else if (arg is IRefArg) + { + flags |= CSharpArgumentInfoFlags.IsRef; + } + } + + return CSharpArgumentInfo.Create(flags, null); + } + + private static CSharpArgumentInfo CreateStaticTypeArgInfo() + { + return CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.IsStaticType, null); + } + + private MethodBindResult BindMethodUsingReflection(BindingFlags bindFlags, HostTarget hostTarget, string name, Type[] typeArgs, object[] args, object[] bindArgs) { - private readonly HostTarget hostTarget; - private readonly MethodInfo method; - private readonly object[] args; + var candidates = GetReflectionCandidates(bindFlags, hostTarget, name, typeArgs).Distinct().ToArray(); + if (candidates.Length > 0) + { + try + { + var rawResult = TypeHelpers.BindToMember(this, candidates, bindFlags, args, bindArgs); + if (rawResult is not null) + { + return MethodBindResult.Create(name, bindFlags, rawResult, hostTarget, args); + } + } + catch (AmbiguousMatchException) + { + return MethodBindResult.CreateFailure(() => new AmbiguousMatchException(MiscHelpers.FormatInvariant("The object has multiple methods named '{0}' that match the specified arguments", name))); + } + } + + return MethodBindResult.CreateFailure(() => new MissingMethodException(MiscHelpers.FormatInvariant("The object has no method named '{0}' that matches the specified arguments", name))); + } + + private IEnumerable GetReflectionCandidates(BindingFlags bindFlags, HostTarget hostTarget, string name, Type[] typeArgs) + { + foreach (var method in GetReflectionCandidates(bindFlags, hostTarget.Type, name, typeArgs)) + { + yield return method; + } + + if ((hostTarget is not HostType) && hostTarget.Type.IsInterface) + { + foreach (var interfaceType in hostTarget.Type.GetInterfaces()) + { + foreach (var method in GetReflectionCandidates(bindFlags, interfaceType, name, typeArgs)) + { + yield return method; + } + } + + foreach (var method in GetReflectionCandidates(bindFlags, typeof(object), name, typeArgs)) + { + yield return method; + } + } + } + + private IEnumerable GetReflectionCandidates(BindingFlags bindFlags, Type type, string name, Type[] typeArgs) + { + foreach (var method in type.GetScriptableMethods(this, name, bindFlags)) + { + MethodInfo tempMethod = null; + + if (method.ContainsGenericParameters) + { + try + { + tempMethod = method.MakeGenericMethod(typeArgs); + } + catch (ArgumentException) + { + continue; + } + catch (NotSupportedException) + { + continue; + } + } + else if (typeArgs.Length < 1) + { + tempMethod = method; + } + + if ((tempMethod is not null) && !tempMethod.ContainsGenericParameters) + { + yield return tempMethod; + } + } + } + + #endregion + + #region unit test support + + internal static void ClearCoreBindCache() + { + coreBindCache.Clear(); + Interlocked.Exchange(ref coreBindCount, 0); + } + + internal static long GetCoreBindCount() + { + return Interlocked.Read(ref coreBindCount); + } + + #endregion + + #region Nested type: MethodBindResult + + private readonly ref struct MethodBindResult + { + private readonly HostTarget hostTarget; + private readonly MethodInfo method; + private readonly object[] args; private readonly Func exceptionFactory; private static readonly MethodInfo[] reflectionMethods = - { - typeof(object).GetMethod("GetType"), - typeof(System.Runtime.InteropServices._Exception).GetMethod("GetType"), - typeof(Exception).GetMethod("GetType") + { + typeof(object).GetMethod("GetType"), + typeof(System.Runtime.InteropServices._Exception).GetMethod("GetType"), + typeof(Exception).GetMethod("GetType") }; - public MethodBindResult(HostTarget hostTarget, MethodInfo method, object[] args) - { - this.hostTarget = hostTarget; - this.method = method; - this.args = args; - exceptionFactory = null; - } - - public MethodBindResult(Func exceptionFactory) - { - hostTarget = null; - method = null; - args = null; - this.exceptionFactory = exceptionFactory; - } - - public static MethodBindResult Create(string name, BindingFlags bindFlags, object rawResult, HostTarget hostTarget, object[] args) - { - var method = rawResult as MethodInfo; - if (method != null) - { - if (method.IsStatic && !bindFlags.HasFlag(BindingFlags.Static)) - { - return new MethodBindResult(() => new InvalidOperationException(MiscHelpers.FormatInvariant("Cannot access static method '{0}' in non-static context", method.Name))); - } - - return new MethodBindResult(hostTarget, method, args); - } - - return new MethodBindResult((rawResult as Func) ?? (() => new NotSupportedException(MiscHelpers.FormatInvariant("Invocation of method '{0}' failed (unrecognized binding)", name)))); - } - - public bool IsSuccess => method != null; - - public object RawResult => IsSuccess ? (object)method : exceptionFactory; - + private MethodBindResult(HostTarget hostTarget, MethodInfo method, object[] args) + { + this.hostTarget = hostTarget; + this.method = method; + this.args = args; + exceptionFactory = null; + } + + private MethodBindResult(Func exceptionFactory) + { + hostTarget = null; + method = null; + args = null; + this.exceptionFactory = exceptionFactory; + } + + public static MethodBindResult Create(string name, BindingFlags bindFlags, object rawResult, HostTarget hostTarget, object[] args) + { + var method = rawResult as MethodInfo; + if (method != null) + { + if (method.IsStatic && !bindFlags.HasAllFlags(BindingFlags.Static)) + { + return new MethodBindResult(() => new InvalidOperationException(MiscHelpers.FormatInvariant("Cannot access static method '{0}' in non-static context", method.Name))); + } + + return new MethodBindResult(hostTarget, method, args); + } + + return new MethodBindResult((rawResult as Func) ?? (() => new NotSupportedException(MiscHelpers.FormatInvariant("Invocation of method '{0}' failed (unrecognized binding)", name)))); + } + + public static MethodBindResult CreateFailure(Func exceptionFactory) => new(exceptionFactory); + + public bool IsSuccess => method != null; + + public object RawResult => IsSuccess ? method : exceptionFactory; + public bool IsPreferredMethod(HostItem hostItem, string name) { return IsSuccess && IsUnblockedMethod(hostItem) && (method.GetScriptName(hostItem) == name); - } - + } + public bool IsUnblockedMethod(HostItem hostItem) { return IsSuccess && !method.IsBlockedFromScript(hostItem, hostItem.DefaultAccess); - } - + } + public object Invoke(HostItem hostItem) { if (!IsSuccess) @@ -507,93 +509,93 @@ public object Invoke(HostItem hostItem) if (reflectionMethods.Contains(method, MemberComparer.Instance)) { hostItem.Engine.CheckReflection(); - } - + } + return InvokeHelpers.InvokeMethod(hostItem, method, hostTarget.InvokeTarget, args, method.GetScriptMemberFlags(hostItem)); - } - } - - #endregion - - #region Nested type: MethodBindingVisitor - - private sealed class MethodBindingVisitor : ExpressionVisitor - { - private readonly object target; - private readonly string name; - private readonly List results = new List(); - - public MethodBindingVisitor(object target, string name, Expression expression) - { - this.target = target; - this.name = name; - - Visit(expression); - if (results.Count != 1) - { - results.Clear(); - AddResult(() => new NotSupportedException(MiscHelpers.FormatInvariant("Invocation of method '{0}' failed (unrecognized binding)", name))); - } - else - { - var method = results[0] as MethodInfo; - if (method != null) - { - Debug.Assert(method.Name == name); - } - } - } - - public object Result => results[0]; - - protected override Expression VisitMethodCall(MethodCallExpression node) - { - if (node.Method.Name == name) - { - AddResult(node.Method); - } - - return base.VisitMethodCall(node); - } - - protected override Expression VisitInvocation(InvocationExpression node) - { - if (target is Delegate targetDelegate) - { - var del = DynamicHelpers.Invoke(node.Expression) as Delegate; - if (del == targetDelegate) - { - AddResult(del.GetType().GetMethod("Invoke")); - } - } - - return base.VisitInvocation(node); - } - - protected override Expression VisitUnary(UnaryExpression node) - { - if (node.NodeType == ExpressionType.Throw) - { - if (DynamicHelpers.Invoke(node.Operand) is Exception) - { - AddResult(() => (Exception)DynamicHelpers.Invoke(node.Operand)); - } - } - - return base.VisitUnary(node); - } - - private void AddResult(MethodInfo method) - { - results.Add(method); - } - - private void AddResult(Func exceptionFactory) - { - results.Add(exceptionFactory); - } - } - - #endregion - } -} + } + } + + #endregion + + #region Nested type: MethodBindingVisitor + + private sealed class MethodBindingVisitor : ExpressionVisitor + { + private readonly object target; + private readonly string name; + private readonly List results = new(); + + public MethodBindingVisitor(object target, string name, Expression expression) + { + this.target = target; + this.name = name; + + Visit(expression); + if (results.Count != 1) + { + results.Clear(); + AddResult(() => new NotSupportedException(MiscHelpers.FormatInvariant("Invocation of method '{0}' failed (unrecognized binding)", name))); + } + else + { + var method = results[0] as MethodInfo; + if (method is not null) + { + Debug.Assert(method.Name == name); + } + } + } + + public object Result => results[0]; + + protected override Expression VisitMethodCall(MethodCallExpression node) + { + if (node.Method.Name == name) + { + AddResult(node.Method); + } + + return base.VisitMethodCall(node); + } + + protected override Expression VisitInvocation(InvocationExpression node) + { + if (target is Delegate targetDelegate) + { + var del = DynamicHelpers.Invoke(node.Expression) as Delegate; + if (del == targetDelegate) + { + AddResult(del.GetType().GetMethod("Invoke")); + } + } + + return base.VisitInvocation(node); + } + + protected override Expression VisitUnary(UnaryExpression node) + { + if (node.NodeType == ExpressionType.Throw) + { + if (DynamicHelpers.Invoke(node.Operand) is Exception) + { + AddResult(() => (Exception)DynamicHelpers.Invoke(node.Operand)); + } + } + + return base.VisitUnary(node); + } + + private void AddResult(MethodInfo method) + { + results.Add(method); + } + + private void AddResult(Func exceptionFactory) + { + results.Add(exceptionFactory); + } + } + + #endregion + } +} diff --git a/ClearScript/HostItem.NetFramework.cs b/ClearScript/HostItem.NetFramework.cs index b58081a8..c43e0911 100644 --- a/ClearScript/HostItem.NetFramework.cs +++ b/ClearScript/HostItem.NetFramework.cs @@ -1,12 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; -using Microsoft.ClearScript.Util; - namespace Microsoft.ClearScript { internal partial class HostItem @@ -19,43 +13,5 @@ private static HostItem Create(ScriptEngine engine, HostTarget target, HostItemF } #endregion - - #region internal members - - #region member invocation - - private object CreateAsyncEnumerator(IEnumerable enumerable) - { - return HostObject.Wrap(enumerable.GetEnumerator().ToScriptableAsyncEnumerator(Engine), typeof(IScriptableAsyncEnumerator)); - } - - private object CreateAsyncEnumerator() - { - if ((Target is HostObject) || (Target is IHostVariable) || (Target is IByRefArg)) - { - if ((Target.InvokeTarget != null) && Target.Type.IsAssignableToGenericType(typeof(IEnumerable<>), out var typeArgs)) - { - var helpersHostItem = Wrap(Engine, typeof(ScriptableEnumerableHelpers<>).MakeGenericType(typeArgs).InvokeMember("HostType", BindingFlags.Public | BindingFlags.Static | BindingFlags.GetField, null, null, null), HostItemFlags.PrivateAccess); - if (MiscHelpers.Try(out var enumerator, () => ((IDynamic)helpersHostItem).InvokeMethod("GetScriptableAsyncEnumerator", this, Engine))) - { - return enumerator; - } - } - else if (BindSpecialTarget(out IEnumerable _)) - { - var helpersHostItem = Wrap(Engine, ScriptableEnumerableHelpers.HostType, HostItemFlags.PrivateAccess); - if (MiscHelpers.Try(out var enumerator, () => ((IDynamic)helpersHostItem).InvokeMethod("GetScriptableAsyncEnumerator", this, Engine))) - { - return enumerator; - } - } - } - - throw new NotSupportedException("The object is not async-enumerable"); - } - - #endregion - - #endregion } } diff --git a/ClearScript/HostItem.NetStandard.cs b/ClearScript/HostItem.NetStandard.cs index 8161bd6d..ec759256 100644 --- a/ClearScript/HostItem.NetStandard.cs +++ b/ClearScript/HostItem.NetStandard.cs @@ -1,12 +1,10 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. using System; -using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Reflection; using System.Runtime.InteropServices; using System.Runtime.InteropServices.Expando; using Microsoft.ClearScript.Util; @@ -30,60 +28,14 @@ private static HostItem Create(ScriptEngine engine, HostTarget target, HostItemF #endregion - #region internal members - - #region member invocation - - private object CreateAsyncEnumerator(IEnumerable enumerable) - { - return HostObject.Wrap(enumerable.GetEnumerator().ToScriptableAsyncEnumerator(Engine), typeof(IScriptableAsyncEnumerator)); - } - - private object CreateAsyncEnumerator() - { - if ((Target is HostObject) || (Target is IHostVariable) || (Target is IByRefArg)) - { - if ((Target.InvokeTarget != null) && Target.Type.IsAssignableToGenericType(typeof(IAsyncEnumerable<>), out var typeArgs)) - { - var helpersHostItem = Wrap(Engine, typeof(ScriptableEnumerableHelpers<>).MakeGenericType(typeArgs).InvokeMember("HostType", BindingFlags.Public | BindingFlags.Static | BindingFlags.GetField, null, null, null), HostItemFlags.PrivateAccess); - if (MiscHelpers.Try(out var enumerator, () => ((IDynamic)helpersHostItem).InvokeMethod("GetScriptableAsyncEnumerator", this, Engine))) - { - return enumerator; - } - } - else if ((Target.InvokeTarget != null) && Target.Type.IsAssignableToGenericType(typeof(IEnumerable<>), out typeArgs)) - { - var helpersHostItem = Wrap(Engine, typeof(ScriptableEnumerableHelpers<>).MakeGenericType(typeArgs).InvokeMember("HostType", BindingFlags.Public | BindingFlags.Static | BindingFlags.GetField, null, null, null), HostItemFlags.PrivateAccess); - if (MiscHelpers.Try(out var enumerator, () => ((IDynamic)helpersHostItem).InvokeMethod("GetScriptableAsyncEnumerator", this, Engine))) - { - return enumerator; - } - } - else if (BindSpecialTarget(out IEnumerable _)) - { - var helpersHostItem = Wrap(Engine, ScriptableEnumerableHelpers.HostType, HostItemFlags.PrivateAccess); - if (MiscHelpers.Try(out var enumerator, () => ((IDynamic)helpersHostItem).InvokeMethod("GetScriptableAsyncEnumerator", this, Engine))) - { - return enumerator; - } - } - } - - throw new NotSupportedException("The object is not async-enumerable"); - } - - #endregion - - #endregion - #region Nested type: DispatchExHostItem private sealed class DispatchExHostItem : ExpandoHostItem { #region data - private static readonly Dictionary patchMap = new Dictionary(); - private readonly List expandoMembers = new List(); + private static readonly Dictionary patchMap = new(); + private readonly List expandoMembers = new(); #endregion @@ -187,10 +139,10 @@ private IEnumerable ReflectMembers private void EnsurePatched() { - using (var unknownScope = Scope.Create(() => Marshal.GetIUnknownForObject(this), pUnknown => Marshal.Release(pUnknown))) + using (var unknownScope = ScopeFactory.Create(static item => Marshal.GetIUnknownForObject(item), static pUnknown => Marshal.Release(pUnknown), this)) { var pUnknown = unknownScope.Value; - using (var dispatchExScope = Scope.Create(() => UnknownHelpers.QueryInterface(pUnknown), pDispatchEx => Marshal.Release(pDispatchEx))) + using (var dispatchExScope = ScopeFactory.Create(static pUnknown => UnknownHelpers.QueryInterface(pUnknown), static pDispatchEx => Marshal.Release(pDispatchEx), pUnknown)) { lock (VTablePatcher.PatchLock) { @@ -247,7 +199,7 @@ private void EnsurePatched() try { var item = Marshal.GetObjectForIUnknown(pThis) as DispatchExHostItem; - if (item == null) + if (item is null) { return origGetMemberProperties(pThis, dispid, fetchFlags, out propFlags); } @@ -352,7 +304,7 @@ protected override void RemoveExpandoMemberName(string name) private int GetDispID(string name, DispatchNameFlags nameFlags, out int dispid) { - var nameComparison = nameFlags.HasFlag(DispatchNameFlags.CaseInsensitive) ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; + var nameComparison = nameFlags.HasAllFlags(DispatchNameFlags.CaseInsensitive) ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; var member = ReflectMembers.Concat(expandoMembers).FirstOrDefault(testMember => string.Equals(testMember.Name, name, nameComparison)); if (!member.IsDefault) @@ -361,7 +313,7 @@ private int GetDispID(string name, DispatchNameFlags nameFlags, out int dispid) return HResult.S_OK; } - if (nameFlags.HasFlag(DispatchNameFlags.Ensure)) + if (nameFlags.HasAllFlags(DispatchNameFlags.Ensure)) { ThisExpando.AddProperty(name); return GetDispID(name, nameFlags & ~DispatchNameFlags.Ensure, out dispid); @@ -373,7 +325,7 @@ private int GetDispID(string name, DispatchNameFlags nameFlags, out int dispid) private int DeleteMemberByName(string name, DispatchNameFlags nameFlags) { - var nameComparison = nameFlags.HasFlag(DispatchNameFlags.CaseInsensitive) ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; + var nameComparison = nameFlags.HasAllFlags(DispatchNameFlags.CaseInsensitive) ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; var member = ReflectMembers.Concat(expandoMembers).FirstOrDefault(testMember => string.Equals(testMember.Name, name, nameComparison)); if (!member.IsDefault && RemoveMember(member.Name)) @@ -451,7 +403,7 @@ private int GetNextDispID(int dispidCurrent, out int dispidNext) private sealed class PatchEntry { // ReSharper disable once CollectionNeverQueried.Local - private readonly List delegates = new List(); + private readonly List delegates = new(); public void AddDelegate(Delegate del) { diff --git a/ClearScript/HostItem.cs b/ClearScript/HostItem.cs index 621a59a3..cd58fe78 100644 --- a/ClearScript/HostItem.cs +++ b/ClearScript/HostItem.cs @@ -18,7 +18,7 @@ namespace Microsoft.ClearScript { - internal partial class HostItem : DynamicObject, IReflect, IDynamic, IEnumVARIANT, ICustomQueryInterface, IScriptMarshalWrapper, IHostTargetContext + internal partial class HostItem : DynamicObject, IReflect, IDynamic, IEnumVARIANT, ICustomQueryInterface, IHostItem, IHostTargetContext { #region data @@ -68,7 +68,7 @@ public static object Wrap(ScriptEngine engine, object obj, HostItemFlags flags) private static object Wrap(ScriptEngine engine, object obj, Type type, HostItemFlags flags) { - if (obj == null) + if (obj is null) { return null; } @@ -83,7 +83,7 @@ private static object Wrap(ScriptEngine engine, object obj, Type type, HostItemF return BindOrCreate(engine, hostTarget, flags); } - if (type == null) + if (type is null) { type = obj.GetTypeOrTypeInfo(); } @@ -120,9 +120,9 @@ public Invocability Invocability { get { - if (TargetInvocability == null) + if (TargetInvocability is null) { - TargetInvocability = Target.GetInvocability(this, GetCommonBindFlags(), Flags.HasFlag(HostItemFlags.HideDynamicMembers)); + TargetInvocability = Target.GetInvocability(this, GetCommonBindFlags(), Flags.HasAllFlags(HostItemFlags.HideDynamicMembers)); } return TargetInvocability.GetValueOrDefault(); @@ -152,17 +152,17 @@ public object InvokeMember(string name, BindingFlags invokeFlags, object[] args, return result; } - if (TargetDynamic != null) + if (TargetDynamic is not null) { return InvokeDynamicMember(name, invokeFlags, args); } - if (TargetPropertyBag != null) + if (TargetPropertyBag is not null) { return InvokePropertyBagMember(name, invokeFlags, args, bindArgs); } - if (TargetList != null) + if (TargetList is not null) { if (int.TryParse(name, NumberStyles.Integer, CultureInfo.InvariantCulture, out var index)) { @@ -173,19 +173,19 @@ public object InvokeMember(string name, BindingFlags invokeFlags, object[] args, if (!bypassTunneling) { int testLength; - if (invokeFlags.HasFlag(BindingFlags.InvokeMethod)) + if (invokeFlags.HasAllFlags(BindingFlags.InvokeMethod)) { - testLength = invokeFlags.HasFlag(BindingFlags.GetField) ? 0 : -1; + testLength = invokeFlags.HasAllFlags(BindingFlags.GetField) ? 0 : -1; } else { - testLength = invokeFlags.HasFlag(BindingFlags.SetField) ? 1 : 0; + testLength = invokeFlags.HasAllFlags(BindingFlags.SetField) ? 1 : 0; } if ((args.Length > testLength) && (name != SpecialMemberNames.Default)) { var value = GetHostProperty(name, GetCommonBindFlags(), ArrayHelpers.GetEmptyArray(), ArrayHelpers.GetEmptyArray(), false, out _); - if (!(value is Nonexistent)) + if (value is not Nonexistent) { if (Engine.MarshalToScript(value) is HostItem hostItem) { @@ -364,7 +364,7 @@ private Invocability? TargetInvocability private CustomAttributeLoader CurrentCustomAttributeLoader => Engine.CustomAttributeLoader; - private Type CurrentAccessContext => Flags.HasFlag(HostItemFlags.PrivateAccess) ? Target.Type : Engine.AccessContext; + private Type CurrentAccessContext => Flags.HasAllFlags(HostItemFlags.PrivateAccess) ? Target.Type : Engine.AccessContext; private ScriptAccess CurrentDefaultAccess => Engine.DefaultAccess; @@ -428,7 +428,7 @@ private static bool TargetSupportsExpandoMembers(HostTarget target, HostItemFlag return true; } - if (!flags.HasFlag(HostItemFlags.HideDynamicMembers) && typeof(IDynamicMetaObjectProvider).IsAssignableFrom(target.Type)) + if (!flags.HasAllFlags(HostItemFlags.HideDynamicMembers) && typeof(IDynamicMetaObjectProvider).IsAssignableFrom(target.Type)) { return true; } @@ -438,17 +438,17 @@ private static bool TargetSupportsExpandoMembers(HostTarget target, HostItemFlag private bool CanAddExpandoMembers() { - return (TargetDynamic != null) || ((TargetPropertyBag != null) && !TargetPropertyBag.IsReadOnly) || (TargetDynamicMetaObject != null); + return (TargetDynamic is not null) || ((TargetPropertyBag is not null) && !TargetPropertyBag.IsReadOnly) || (TargetDynamicMetaObject is not null); } private static object BindOrCreate(ScriptEngine engine, object target, Type type, HostItemFlags flags) { - return BindOrCreate(engine, HostObject.Wrap(target, type), flags); + return engine.GetOrCreateHostItem(CanonicalRefTable.GetCanonicalRef(target), type, true, flags, static (engine, target, flags) => Create(engine, target, flags)); } private static object BindOrCreate(ScriptEngine engine, HostTarget target, HostItemFlags flags) { - return engine.GetOrCreateHostItem(target, flags, Create); + return engine.GetOrCreateHostItem(target, flags, static (engine, target, flags) => Create(engine, target, flags)); } private void BindSpecialTarget() @@ -468,7 +468,7 @@ private void BindSpecialTarget() } else { - if (!Flags.HasFlag(HostItemFlags.HideDynamicMembers) && BindSpecialTarget(out IDynamicMetaObjectProvider dynamicMetaObjectProvider)) + if (!Flags.HasAllFlags(HostItemFlags.HideDynamicMembers) && BindSpecialTarget(out IDynamicMetaObjectProvider dynamicMetaObjectProvider)) { var dynamicMetaObject = dynamicMetaObjectProvider.GetMetaObject(Expression.Constant(Target.InvokeTarget)); TargetDynamicMetaObject = new DynamicHostMetaObject(dynamicMetaObjectProvider, dynamicMetaObject); @@ -497,7 +497,7 @@ private bool BindSpecialTarget(CollateralObject property) where private bool BindSpecialTarget(out T specialTarget) where T : class { - if (Target.InvokeTarget == null) + if (Target.InvokeTarget is null) { specialTarget = null; return false; @@ -528,23 +528,23 @@ private bool BindSpecialTarget(out T specialTarget) where T : class if (typeof(IList).IsAssignableFrom(Target.Type)) { specialTarget = new HostList(Engine, (IList)Target.InvokeTarget, typeArgs[0]) as T; - return specialTarget != null; + return specialTarget is not null; } - specialTarget = typeof(HostList<>).MakeGenericType(typeArgs).CreateInstance(Engine, Target.InvokeTarget) as T; - return specialTarget != null; + specialTarget = Activator.CreateInstance(typeof(HostList<>).MakeGenericType(typeArgs), Engine, Target.InvokeTarget) as T; + return specialTarget is not null; } if (typeof(IList).IsAssignableFrom(Target.Type)) { specialTarget = new HostList(Engine, (IList)Target.InvokeTarget, typeof(object)) as T; - return specialTarget != null; + return specialTarget is not null; } if (Target.Type.IsAssignableToGenericType(typeof(IReadOnlyList<>), out typeArgs)) { - specialTarget = typeof(ReadOnlyHostList<>).MakeGenericType(typeArgs).CreateInstance(Engine, Target.InvokeTarget) as T; - return specialTarget != null; + specialTarget = Activator.CreateInstance(typeof(ReadOnlyHostList<>).MakeGenericType(typeArgs), Engine, Target.InvokeTarget) as T; + return specialTarget is not null; } specialTarget = null; @@ -557,7 +557,7 @@ private bool BindSpecialTarget(out T specialTarget) where T : class if (typeof(T).IsAssignableFrom(Target.Type)) { specialTarget = Target.InvokeTarget as T; - return specialTarget != null; + return specialTarget is not null; } specialTarget = null; @@ -566,7 +566,7 @@ private bool BindSpecialTarget(out T specialTarget) where T : class private void BindTargetMemberData() { - if ((targetMemberData == null) || (CustomAttributeLoader != CurrentCustomAttributeLoader) || (AccessContext != CurrentAccessContext) || (DefaultAccess != CurrentDefaultAccess) || (TargetFlags != CurrentTargetFlags)) + if ((targetMemberData is null) || (CustomAttributeLoader != CurrentCustomAttributeLoader) || (AccessContext != CurrentAccessContext) || (DefaultAccess != CurrentDefaultAccess) || (TargetFlags != CurrentTargetFlags)) { if (Target is HostMethod) { @@ -591,7 +591,7 @@ private void BindTargetMemberData() if (Target is HostObject hostObject) { - if ((TargetDynamic == null) && (TargetPropertyBag == null) && (TargetList == null) && (TargetDynamicMetaObject == null)) + if ((TargetDynamic is null) && (TargetPropertyBag is null) && (TargetList is null) && (TargetDynamicMetaObject is null)) { // host objects without dynamic members can share their member data targetMemberData = Engine.GetSharedHostObjectMemberData(hostObject, CurrentCustomAttributeLoader, CurrentAccessContext, CurrentDefaultAccess, CurrentTargetFlags); @@ -615,7 +615,7 @@ private static bool TargetSupportsSpecialTargets(HostTarget target) private string[] GetLocalEventNames() { - if (TypeEventNames == null) + if (TypeEventNames is null) { var localEvents = Target.Type.GetScriptableEvents(this, GetCommonBindFlags()); TypeEventNames = localEvents.Select(eventInfo => eventInfo.GetScriptName(this)).ToArray(); @@ -626,7 +626,7 @@ private string[] GetLocalEventNames() private string[] GetLocalFieldNames() { - if (TypeFieldNames == null) + if (TypeFieldNames is null) { var localFields = Target.Type.GetScriptableFields(this, GetCommonBindFlags()); TypeFieldNames = localFields.Select(field => field.GetScriptName(this)).ToArray(); @@ -637,7 +637,7 @@ private string[] GetLocalFieldNames() private string[] GetLocalMethodNames() { - if (TypeMethodNames == null) + if (TypeMethodNames is null) { var localMethods = Target.Type.GetScriptableMethods(this, GetMethodBindFlags()); TypeMethodNames = localMethods.Select(method => method.GetScriptName(this)).ToArray(); @@ -648,7 +648,7 @@ private string[] GetLocalMethodNames() private string[] GetLocalPropertyNames() { - if (TypePropertyNames == null) + if (TypePropertyNames is null) { var localProperties = Target.Type.GetScriptableProperties(this, GetCommonBindFlags()); TypePropertyNames = localProperties.Select(property => property.GetScriptName(this)).ToArray(); @@ -659,7 +659,7 @@ private string[] GetLocalPropertyNames() private string[] GetAllFieldNames() { - if ((TargetDynamic == null) && (TargetPropertyBag == null)) + if ((TargetDynamic is null) && (TargetPropertyBag is null)) { return GetLocalFieldNames().Concat(GetLocalEventNames()).Distinct().ToArray(); } @@ -672,10 +672,10 @@ private string[] GetAllMethodNames(out string[] ownMethodNames) ownMethodNames = null; var names = Target.GetAuxMethodNames(this, GetMethodBindFlags()).AsEnumerable() ?? Enumerable.Empty(); - if ((TargetDynamic == null) && (TargetPropertyBag == null)) + if ((TargetDynamic is null) && (TargetPropertyBag is null)) { names = names.Concat(GetLocalMethodNames()); - if (TargetFlags.HasFlag(HostTargetFlags.AllowExtensionMethods)) + if (TargetFlags.HasAllFlags(HostTargetFlags.AllowExtensionMethods)) { var extensionMethodSummary = Engine.ExtensionMethodSummary; ExtensionMethodSummary = extensionMethodSummary; @@ -690,7 +690,7 @@ private string[] GetAllMethodNames(out string[] ownMethodNames) } var result = names.Distinct().ToArray(); - if (ownMethodNames == null) + if (ownMethodNames is null) { ownMethodNames = result; } @@ -701,12 +701,12 @@ private string[] GetAllMethodNames(out string[] ownMethodNames) private string[] GetAllPropertyNames() { var names = Target.GetAuxPropertyNames(this, GetCommonBindFlags()).AsEnumerable() ?? Enumerable.Empty(); - if (TargetDynamic != null) + if (TargetDynamic is not null) { names = names.Concat(TargetDynamic.GetPropertyNames()); names = names.Concat(TargetDynamic.GetPropertyIndices().Select(index => index.ToString(CultureInfo.InvariantCulture))); } - else if (TargetPropertyBag != null) + else if (TargetPropertyBag is not null) { names = names.Concat(TargetPropertyBag.Keys); } @@ -714,7 +714,7 @@ private string[] GetAllPropertyNames() { names = names.Concat(GetLocalPropertyNames()); - if (TargetList != null) + if (TargetList is not null) { CachedListCount = TargetList.Count; if (CachedListCount > 0) @@ -723,13 +723,13 @@ private string[] GetAllPropertyNames() } } - if (TargetDynamicMetaObject != null) + if (TargetDynamicMetaObject is not null) { names = names.Concat(TargetDynamicMetaObject.GetDynamicMemberNames()); } } - if (ExpandoMemberNames != null) + if (ExpandoMemberNames is not null) { names = names.Except(ExpandoMemberNames); } @@ -739,7 +739,7 @@ private string[] GetAllPropertyNames() private void UpdateFieldNames(out bool updated) { - if (AllFieldNames == null) + if (AllFieldNames is null) { AllFieldNames = GetAllFieldNames(); updated = true; @@ -752,8 +752,8 @@ private void UpdateFieldNames(out bool updated) private void UpdateMethodNames(out bool updated) { - if ((AllMethodNames == null) || - (TargetFlags.HasFlag(HostTargetFlags.AllowExtensionMethods) && (ExtensionMethodSummary != Engine.ExtensionMethodSummary))) + if ((AllMethodNames is null) || + (TargetFlags.HasAllFlags(HostTargetFlags.AllowExtensionMethods) && (ExtensionMethodSummary != Engine.ExtensionMethodSummary))) { AllMethodNames = GetAllMethodNames(out var ownMethodNames); OwnMethodNames = ownMethodNames; @@ -767,11 +767,11 @@ private void UpdateMethodNames(out bool updated) private void UpdatePropertyNames(out bool updated) { - if ((AllPropertyNames == null) || - (TargetDynamic != null) || - (TargetPropertyBag != null) || - (TargetDynamicMetaObject != null) || - ((TargetList != null) && (CachedListCount != TargetList.Count))) + if ((AllPropertyNames is null) || + (TargetDynamic is not null) || + (TargetPropertyBag is not null) || + (TargetDynamicMetaObject is not null) || + ((TargetList is not null) && (CachedListCount != TargetList.Count))) { AllPropertyNames = GetAllPropertyNames(); updated = true; @@ -798,7 +798,7 @@ private void UpdateEnumerationSettingsToken(out bool updated) protected virtual void AddExpandoMemberName(string name) { - if (ExpandoMemberNames == null) + if (ExpandoMemberNames is null) { ExpandoMemberNames = new HashSet(); } @@ -821,22 +821,22 @@ protected virtual void RemoveExpandoMemberName(string name) private StringComparer MemberNameComparer => UseCaseInsensitiveMemberBinding ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal; - private T HostInvoke(Func func) + private TResult HostInvoke(Func func, in TArg arg) { BindTargetMemberData(); - return Engine.HostInvoke(func); + return Engine.HostInvoke(func, arg); } private BindingFlags GetCommonBindFlags() { var bindFlags = BindingFlags.Public | BindingFlags.NonPublic; - if (TargetFlags.HasFlag(HostTargetFlags.AllowStaticMembers)) + if (TargetFlags.HasAllFlags(HostTargetFlags.AllowStaticMembers)) { bindFlags |= BindingFlags.Static | BindingFlags.FlattenHierarchy; } - if (TargetFlags.HasFlag(HostTargetFlags.AllowInstanceMembers)) + if (TargetFlags.HasAllFlags(HostTargetFlags.AllowInstanceMembers)) { bindFlags |= BindingFlags.Instance; } @@ -878,7 +878,7 @@ private void AdjustInvokeFlags(ref BindingFlags invokeFlags) invokeFlags |= onFlags; invokeFlags &= ~offFlags; - if (TargetFlags.HasFlag(HostTargetFlags.AllowStaticMembers)) + if (TargetFlags.HasAllFlags(HostTargetFlags.AllowStaticMembers)) { invokeFlags |= BindingFlags.Static | BindingFlags.FlattenHierarchy; } @@ -887,7 +887,7 @@ private void AdjustInvokeFlags(ref BindingFlags invokeFlags) invokeFlags &= ~BindingFlags.Static; } - if (TargetFlags.HasFlag(HostTargetFlags.AllowInstanceMembers)) + if (TargetFlags.HasAllFlags(HostTargetFlags.AllowInstanceMembers)) { invokeFlags |= BindingFlags.Instance; } @@ -905,7 +905,7 @@ private void AdjustInvokeFlags(ref BindingFlags invokeFlags) invokeFlags &= ~BindingFlags.IgnoreCase; } - if (invokeFlags.HasFlag(BindingFlags.GetProperty)) + if (invokeFlags.HasAllFlags(BindingFlags.GetProperty)) { invokeFlags |= BindingFlags.GetField; } @@ -923,52 +923,57 @@ private object InvokeReflectMember(string name, BindingFlags invokeFlags, object private object InvokeReflectMember(string name, BindingFlags invokeFlags, object[] wrappedArgs, CultureInfo culture, string[] namedParams, out bool isCacheable) { - var resultIsCacheable = false; - var result = Engine.MarshalToScript(HostInvoke(() => - { - var args = Engine.MarshalToHost(wrappedArgs, false); + var ctx = (self: this, name, invokeFlags, wrappedArgs, culture, namedParams, isCacheable: false); - var argOffset = 0; - if ((namedParams != null) && (namedParams.Length > 0) && (namedParams[0] == SpecialParamNames.This)) + var result = Engine.MarshalToScript(HostInvoke( + static pCtx => { - args = args.Skip(1).ToArray(); - argOffset = 1; - } + ref var ctx = ref pCtx.AsRef(); + var args = ctx.self.Engine.MarshalToHost(ctx.wrappedArgs, false); - var bindArgs = args; - if ((args.Length > 0) && (invokeFlags.HasFlag(BindingFlags.InvokeMethod) || invokeFlags.HasFlag(BindingFlags.CreateInstance))) - { - bindArgs = Engine.MarshalToHost(wrappedArgs, true); - if (argOffset > 0) + var argOffset = 0; + if ((ctx.namedParams is not null) && (ctx.namedParams.Length > 0) && (ctx.namedParams[0] == SpecialParamNames.This)) { - bindArgs = bindArgs.Skip(argOffset).ToArray(); + args = args.Skip(1).ToArray(); + argOffset = 1; } - var savedArgs = (object[])args.Clone(); - var tempResult = InvokeMember(name, invokeFlags, args, bindArgs, culture, false, out resultIsCacheable); - - for (var index = 0; index < args.Length; index++) + var bindArgs = args; + if ((args.Length > 0) && (ctx.invokeFlags.HasAllFlags(BindingFlags.InvokeMethod) || ctx.invokeFlags.HasAllFlags(BindingFlags.CreateInstance))) { - var arg = args[index]; - if (!ReferenceEquals(arg, savedArgs[index])) + bindArgs = ctx.self.Engine.MarshalToHost(ctx.wrappedArgs, true); + if (argOffset > 0) { - wrappedArgs[argOffset + index] = Engine.MarshalToScript(arg); + bindArgs = bindArgs.Skip(argOffset).ToArray(); } - } - return tempResult; - } + var savedArgs = (object[])args.Clone(); + var tempResult = ctx.self.InvokeMember(ctx.name, ctx.invokeFlags, args, bindArgs, ctx.culture, false, out ctx.isCacheable); - return InvokeMember(name, invokeFlags, args, bindArgs, culture, false, out resultIsCacheable); - })); + for (var index = 0; index < args.Length; index++) + { + var arg = args[index]; + if (!ReferenceEquals(arg, savedArgs[index])) + { + ctx.wrappedArgs[argOffset + index] = ctx.self.Engine.MarshalToScript(arg); + } + } - isCacheable = resultIsCacheable; + return tempResult; + } + + return ctx.self.InvokeMember(ctx.name, ctx.invokeFlags, args, bindArgs, ctx.culture, false, out ctx.isCacheable); + }, + StructPtr.FromRef(ref ctx) + )); + + isCacheable = ctx.isCacheable; return result; } private object InvokeDynamicMember(string name, BindingFlags invokeFlags, object[] args) { - if (invokeFlags.HasFlag(BindingFlags.CreateInstance)) + if (invokeFlags.HasAllFlags(BindingFlags.CreateInstance)) { if (name == SpecialMemberNames.Default) { @@ -978,7 +983,7 @@ private object InvokeDynamicMember(string name, BindingFlags invokeFlags, object throw new InvalidOperationException("Invalid constructor invocation"); } - if (invokeFlags.HasFlag(BindingFlags.InvokeMethod)) + if (invokeFlags.HasAllFlags(BindingFlags.InvokeMethod)) { if (name == SpecialMemberNames.Default) { @@ -988,7 +993,7 @@ private object InvokeDynamicMember(string name, BindingFlags invokeFlags, object } catch { - if (invokeFlags.HasFlag(BindingFlags.GetField) && (args.Length < 1)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField) && (args.Length < 1)) { return Target; } @@ -1003,7 +1008,7 @@ private object InvokeDynamicMember(string name, BindingFlags invokeFlags, object } catch { - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { return TargetDynamic.GetProperty(name, args); } @@ -1012,12 +1017,12 @@ private object InvokeDynamicMember(string name, BindingFlags invokeFlags, object } } - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { return TargetDynamic.GetProperty(name, args); } - if (invokeFlags.HasFlag(BindingFlags.SetField)) + if (invokeFlags.HasAllFlags(BindingFlags.SetField)) { if (args.Length > 0) { @@ -1033,13 +1038,13 @@ private object InvokeDynamicMember(string name, BindingFlags invokeFlags, object private object InvokePropertyBagMember(string name, BindingFlags invokeFlags, object[] args, object[] bindArgs) { - if (invokeFlags.HasFlag(BindingFlags.InvokeMethod)) + if (invokeFlags.HasAllFlags(BindingFlags.InvokeMethod)) { object value; if (name == SpecialMemberNames.Default) { - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { if (args.Length < 1) { @@ -1075,7 +1080,7 @@ private object InvokePropertyBagMember(string name, BindingFlags invokeFlags, ob return result; } - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { if (args.Length < 1) { @@ -1084,7 +1089,7 @@ private object InvokePropertyBagMember(string name, BindingFlags invokeFlags, ob if (args.Length == 1) { - if (value == null) + if (value is null) { throw new InvalidOperationException("Cannot invoke a null property value"); } @@ -1096,7 +1101,7 @@ private object InvokePropertyBagMember(string name, BindingFlags invokeFlags, ob throw new NotSupportedException("The object does not support the requested invocation operation"); } - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { if (name == SpecialMemberNames.Default) { @@ -1126,7 +1131,7 @@ private object InvokePropertyBagMember(string name, BindingFlags invokeFlags, ob throw new InvalidOperationException("Invalid argument count"); } - if (invokeFlags.HasFlag(BindingFlags.SetField)) + if (invokeFlags.HasAllFlags(BindingFlags.SetField)) { if (name == SpecialMemberNames.Default) { @@ -1147,7 +1152,7 @@ private object InvokePropertyBagMember(string name, BindingFlags invokeFlags, ob { if (TargetPropertyBag.TryGetValue(name, out var value)) { - if (value == null) + if (value is null) { throw new InvalidOperationException("Cannot invoke a null property value"); } @@ -1166,14 +1171,14 @@ private object InvokePropertyBagMember(string name, BindingFlags invokeFlags, ob private object InvokeListElement(int index, BindingFlags invokeFlags, object[] args, object[] bindArgs) { - if (invokeFlags.HasFlag(BindingFlags.InvokeMethod)) + if (invokeFlags.HasAllFlags(BindingFlags.InvokeMethod)) { if (InvokeHelpers.TryInvokeObject(this, TargetList[index], invokeFlags, args, bindArgs, true, out var result)) { return result; } - if (invokeFlags.HasFlag(BindingFlags.GetField) && (args.Length < 1)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField) && (args.Length < 1)) { return TargetList[index]; } @@ -1181,7 +1186,7 @@ private object InvokeListElement(int index, BindingFlags invokeFlags, object[] a throw new NotSupportedException("The object does not support the requested invocation operation"); } - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { if (args.Length < 1) { @@ -1191,7 +1196,7 @@ private object InvokeListElement(int index, BindingFlags invokeFlags, object[] a throw new InvalidOperationException("Invalid argument count"); } - if (invokeFlags.HasFlag(BindingFlags.SetField)) + if (invokeFlags.HasAllFlags(BindingFlags.SetField)) { if (args.Length == 1) { @@ -1209,7 +1214,7 @@ private object InvokeHostMember(string name, BindingFlags invokeFlags, object[] isCacheable = false; object result; - if (invokeFlags.HasFlag(BindingFlags.CreateInstance)) + if (invokeFlags.HasAllFlags(BindingFlags.CreateInstance)) { if (name == SpecialMemberNames.Default) { @@ -1223,7 +1228,7 @@ private object InvokeHostMember(string name, BindingFlags invokeFlags, object[] if (hostType.TryInvoke(this, BindingFlags.InvokeMethod, typeArgs, typeArgs, out result)) { hostType = result as HostType; - if (hostType != null) + if (hostType is not null) { args = args.Skip(typeArgs.Length).ToArray(); bindArgs = bindArgs.Skip(typeArgs.Length).ToArray(); @@ -1262,7 +1267,7 @@ private object InvokeHostMember(string name, BindingFlags invokeFlags, object[] return type.CreateInstance(this, Target, args, bindArgs); } - if (TargetDynamicMetaObject != null) + if (TargetDynamicMetaObject is not null) { if (TargetDynamicMetaObject.TryCreateInstance(args, out result)) { @@ -1274,19 +1279,19 @@ private object InvokeHostMember(string name, BindingFlags invokeFlags, object[] throw new InvalidOperationException("Invalid constructor invocation"); } - if (invokeFlags.HasFlag(BindingFlags.InvokeMethod)) + if (invokeFlags.HasAllFlags(BindingFlags.InvokeMethod)) { if (name == SpecialMemberNames.Default) { - if (InvokeHelpers.TryInvokeObject(this, Target, invokeFlags, args, bindArgs, TargetDynamicMetaObject != null, out result)) + if (InvokeHelpers.TryInvokeObject(this, Target, invokeFlags, args, bindArgs, TargetDynamicMetaObject is not null, out result)) { return result; } - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { result = GetHostProperty(name, invokeFlags, args, bindArgs, true, out isCacheable); - if (!(result is Nonexistent)) + if (result is not Nonexistent) { return result; } @@ -1296,7 +1301,7 @@ private object InvokeHostMember(string name, BindingFlags invokeFlags, object[] return Target; } - if (TargetDynamicMetaObject != null) + if (TargetDynamicMetaObject is not null) { // dynamic target; don't throw for default indexed property retrieval failure @@ -1317,7 +1322,7 @@ private object InvokeHostMember(string name, BindingFlags invokeFlags, object[] return CreateAsyncEnumerator(); } - if ((TargetDynamicMetaObject != null) && TargetDynamicMetaObject.HasMember(name, invokeFlags.HasFlag(BindingFlags.IgnoreCase))) + if ((TargetDynamicMetaObject is not null) && TargetDynamicMetaObject.HasMember(name, invokeFlags.HasAllFlags(BindingFlags.IgnoreCase))) { if (TargetDynamicMetaObject.TryInvokeMember(this, name, invokeFlags, args, out result)) { @@ -1345,7 +1350,7 @@ private object InvokeHostMember(string name, BindingFlags invokeFlags, object[] try { - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { return GetHostProperty(name, invokeFlags, args, bindArgs, true, out isCacheable); } @@ -1365,7 +1370,7 @@ private object InvokeHostMember(string name, BindingFlags invokeFlags, object[] } } - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { return GetHostProperty(name, invokeFlags, args, bindArgs, true, out isCacheable); } @@ -1373,12 +1378,12 @@ private object InvokeHostMember(string name, BindingFlags invokeFlags, object[] throw new MissingMethodException(MiscHelpers.FormatInvariant("The object has no suitable method named '{0}'", name)); } - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { return GetHostProperty(name, invokeFlags, args, bindArgs, true, out isCacheable); } - if (invokeFlags.HasFlag(BindingFlags.SetField)) + if (invokeFlags.HasAllFlags(BindingFlags.SetField)) { return SetHostProperty(name, invokeFlags, args, bindArgs); } @@ -1407,7 +1412,7 @@ private object GetHostProperty(string name, BindingFlags invokeFlags, object[] a if (name == SpecialMemberNames.Default) { var defaultProperty = Target.Type.GetScriptableDefaultProperty(this, invokeFlags, args, bindArgs); - if (defaultProperty != null) + if (defaultProperty is not null) { return GetHostProperty(signature, defaultProperty, invokeFlags, args); } @@ -1436,7 +1441,7 @@ private object GetHostProperty(string name, BindingFlags invokeFlags, object[] a } } - if (TargetDynamicMetaObject != null) + if (TargetDynamicMetaObject is not null) { if (TargetDynamicMetaObject.TryGetIndex(args, out var result)) { @@ -1457,12 +1462,12 @@ private object GetHostProperty(string name, BindingFlags invokeFlags, object[] a return CreateAsyncEnumerator(); } - if ((TargetDynamicMetaObject != null) && (args.Length < 1)) + if ((TargetDynamicMetaObject is not null) && (args.Length < 1)) { int index; object result; - if (TargetDynamicMetaObject.HasMember(name, invokeFlags.HasFlag(BindingFlags.IgnoreCase))) + if (TargetDynamicMetaObject.HasMember(name, invokeFlags.HasAllFlags(BindingFlags.IgnoreCase))) { if (TargetDynamicMetaObject.TryGetMember(name, out result)) { @@ -1484,7 +1489,7 @@ private object GetHostProperty(string name, BindingFlags invokeFlags, object[] a if (includeBoundMembers) { - if (HostMethodMap == null) + if (HostMethodMap is null) { HostMethodMap = new Dictionary(MemberNameComparer); } @@ -1516,7 +1521,7 @@ private object GetHostProperty(string name, BindingFlags invokeFlags, object[] a } var property = Target.Type.GetScriptableProperty(this, name, invokeFlags, args, bindArgs); - if (property != null) + if (property is not null) { return GetHostProperty(signature, property, invokeFlags, args); } @@ -1527,14 +1532,14 @@ private object GetHostProperty(string name, BindingFlags invokeFlags, object[] a } var eventInfo = Target.Type.GetScriptableEvent(this, name, invokeFlags); - if (eventInfo != null) + if (eventInfo is not null) { - isCacheable = (TargetDynamicMetaObject == null); + isCacheable = (TargetDynamicMetaObject is null); return typeof(EventSource<>).MakeSpecificType(eventInfo.EventHandlerType).CreateInstance(BindingFlags.NonPublic, Engine, Target.InvokeTarget, eventInfo); } var field = Target.Type.GetScriptableField(this, name, invokeFlags); - if (field != null) + if (field is not null) { return GetHostField(signature, field, out isCacheable); } @@ -1543,7 +1548,7 @@ private object GetHostProperty(string name, BindingFlags invokeFlags, object[] a { if (Target.Type.GetScriptableProperties(this, name, invokeFlags).Any()) { - if (HostIndexedPropertyMap == null) + if (HostIndexedPropertyMap is null) { HostIndexedPropertyMap = new Dictionary(); } @@ -1558,9 +1563,9 @@ private object GetHostProperty(string name, BindingFlags invokeFlags, object[] a } var method = ThisReflect.GetMethods(GetMethodBindFlags()).FirstOrDefault(testMethod => string.Equals(testMethod.Name, name, MemberNameComparison)); - if (method != null) + if (method is not null) { - if (HostMethodMap == null) + if (HostMethodMap is null) { HostMethodMap = new Dictionary(MemberNameComparer); } @@ -1571,7 +1576,7 @@ private object GetHostProperty(string name, BindingFlags invokeFlags, object[] a HostMethodMap.Add(name, hostMethod); } - isCacheable = (TargetDynamicMetaObject == null); + isCacheable = (TargetDynamicMetaObject is null); return hostMethod; } } @@ -1586,9 +1591,9 @@ private object GetHostProperty(BindSignature signature, PropertyInfo property, B Engine.CheckReflection(); } - if ((property.GetIndexParameters().Length > 0) && (args.Length < 1) && !invokeFlags.HasFlag(BindingFlags.SuppressChangeType)) + if ((property.GetIndexParameters().Length > 0) && (args.Length < 1) && !invokeFlags.HasAllFlags(BindingFlags.SuppressChangeType)) { - if (HostIndexedPropertyMap == null) + if (HostIndexedPropertyMap is null) { HostIndexedPropertyMap = new Dictionary(); } @@ -1604,7 +1609,7 @@ private object GetHostProperty(BindSignature signature, PropertyInfo property, B } var getMethod = property.GetMethod; - if ((getMethod == null) || !getMethod.IsAccessible(this) || getMethod.IsBlockedFromScript(this, property.GetScriptAccess(this, DefaultAccess), false)) + if ((getMethod is null) || !getMethod.IsAccessible(this) || getMethod.IsBlockedFromScript(this, property.GetScriptAccess(this, DefaultAccess), false)) { throw new UnauthorizedAccessException("The property get method is unavailable or inaccessible"); } @@ -1627,7 +1632,7 @@ private object GetHostField(BindSignature signature, FieldInfo field, out bool i private object GetHostFieldWorker(FieldInfo field, out bool isCacheable) { var result = field.GetValue(Target.InvokeTarget); - isCacheable = (TargetDynamicMetaObject == null) && (field.IsLiteral || field.IsInitOnly); + isCacheable = (TargetDynamicMetaObject is null) && (field.IsLiteral || field.IsInitOnly); return Engine.PrepareResult(result, field.FieldType, field.GetScriptMemberFlags(this), false); } @@ -1657,7 +1662,7 @@ private object SetHostProperty(string name, BindingFlags invokeFlags, object[] a object result; var defaultProperty = Target.Type.GetScriptableDefaultProperty(this, invokeFlags, args.Take(args.Length - 1).ToArray(), bindArgs.Take(bindArgs.Length - 1).ToArray()); - if (defaultProperty != null) + if (defaultProperty is not null) { return SetHostProperty(signature, defaultProperty, args, bindArgs); } @@ -1693,7 +1698,7 @@ private object SetHostProperty(string name, BindingFlags invokeFlags, object[] a } } - if (TargetDynamicMetaObject != null) + if (TargetDynamicMetaObject is not null) { if (TargetDynamicMetaObject.TrySetIndex(args.Take(args.Length - 1).ToArray(), args[args.Length - 1], out result)) { @@ -1711,7 +1716,7 @@ private object SetHostProperty(string name, BindingFlags invokeFlags, object[] a throw new InvalidOperationException("Invalid property assignment"); } - if ((TargetDynamicMetaObject != null) && (args.Length == 1)) + if ((TargetDynamicMetaObject is not null) && (args.Length == 1)) { if (TargetDynamicMetaObject.TrySetMember(name, args[0], out var result)) { @@ -1738,13 +1743,13 @@ private object SetHostProperty(string name, BindingFlags invokeFlags, object[] a } var property = Target.Type.GetScriptableProperty(this, name, invokeFlags, args.Take(args.Length - 1).ToArray(), bindArgs.Take(bindArgs.Length - 1).ToArray()); - if (property != null) + if (property is not null) { return SetHostProperty(signature, property, args, bindArgs); } var field = Target.Type.GetScriptableField(this, name, invokeFlags); - if (field != null) + if (field is not null) { return SetHostField(signature, field, args); } @@ -1761,7 +1766,7 @@ private object SetHostProperty(BindSignature signature, PropertyInfo property, o } var setMethod = property.SetMethod; - if ((setMethod == null) || !setMethod.IsAccessible(this) || setMethod.IsBlockedFromScript(this, scriptAccess, false)) + if ((setMethod is null) || !setMethod.IsAccessible(this) || setMethod.IsBlockedFromScript(this, scriptAccess, false)) { throw new UnauthorizedAccessException("The property set method is unavailable or inaccessible"); } @@ -1784,14 +1789,14 @@ private object SetHostPropertyWorker(PropertyInfo property, MethodInfo setMethod } // ReSharper disable once SuspiciousTypeConversion.Global - if ((value != null) && (Engine is IVBScriptEngineTag)) + if ((value is not null) && (Engine is IVBScriptEngineTag)) { // special case to emulate VBScript's default property handling if (value is IWindowsScriptItemTag) { var defaultValue = ((IDynamic)value).GetProperty(SpecialMemberNames.Default); - if (!(defaultValue is Undefined)) + if (defaultValue is not Undefined) { value = defaultValue; } @@ -1800,7 +1805,7 @@ private object SetHostPropertyWorker(PropertyInfo property, MethodInfo setMethod { if (Wrap(Engine, bindArgs[bindArgs.Length - 1]) is HostItem hostItem) { - if (MiscHelpers.Try(out var defaultValue, () => ((IDynamic)hostItem).GetProperty(SpecialMemberNames.Default)) && (defaultValue != null)) + if (MiscHelpers.Try(out var defaultValue, static hostItem => ((IDynamic)hostItem).GetProperty(SpecialMemberNames.Default), hostItem) && (defaultValue is not null)) { value = defaultValue; } @@ -1826,7 +1831,7 @@ private object SetHostPropertyWorker(PropertyInfo property, MethodInfo setMethod return value; } - throw new ArgumentException("Invalid property assignment"); + throw new ArgumentException("Invalid property assignment", nameof(args)); } private object SetHostField(BindSignature signature, FieldInfo field, object[] args) @@ -1854,7 +1859,7 @@ private object SetHostFieldWorker(FieldInfo field, object[] args) return value; } - throw new ArgumentException("Invalid field assignment"); + throw new ArgumentException("Invalid field assignment", nameof(args)); } private static object CreateScriptableEnumerator(IEnumerable enumerable) @@ -1866,10 +1871,10 @@ private object CreateScriptableEnumerator() { if ((Target is HostObject) || (Target is IHostVariable) || (Target is IByRefArg)) { - if ((Target.InvokeTarget != null) && Target.Type.IsAssignableToGenericType(typeof(IEnumerable<>), out var typeArgs)) + if ((Target.InvokeTarget is not null) && Target.Type.IsAssignableToGenericType(typeof(IEnumerable<>), out var typeArgs)) { var helpersHostItem = Wrap(Engine, typeof(ScriptableEnumerableHelpers<>).MakeGenericType(typeArgs).InvokeMember("HostType", BindingFlags.Public | BindingFlags.Static | BindingFlags.GetField, null, null, null), HostItemFlags.PrivateAccess); - if (MiscHelpers.Try(out var enumerator, () => ((IDynamic)helpersHostItem).InvokeMethod("GetScriptableEnumerator", this))) + if (MiscHelpers.Try(out var enumerator, static ctx => ((IDynamic)ctx.helpersHostItem).InvokeMethod("GetScriptableEnumerator", ctx.self), (self: this, helpersHostItem))) { return enumerator; } @@ -1877,7 +1882,7 @@ private object CreateScriptableEnumerator() else if (BindSpecialTarget(out IEnumerable _)) { var helpersHostItem = Wrap(Engine, ScriptableEnumerableHelpers.HostType, HostItemFlags.PrivateAccess); - if (MiscHelpers.Try(out var enumerator, () => ((IDynamic)helpersHostItem).InvokeMethod("GetScriptableEnumerator", this))) + if (MiscHelpers.Try(out var enumerator, static ctx => ((IDynamic)ctx.helpersHostItem).InvokeMethod("GetScriptableEnumerator", ctx.self), (self: this, helpersHostItem))) { return enumerator; } @@ -1887,6 +1892,45 @@ private object CreateScriptableEnumerator() throw new NotSupportedException("The object is not enumerable"); } + private object CreateAsyncEnumerator(IEnumerable enumerable) + { + // ReSharper disable once NotDisposedResource + return HostObject.Wrap(new ScriptableAsyncEnumeratorOnEnumerator(Engine, enumerable.GetEnumerator()), typeof(IScriptableAsyncEnumerator)); + } + + private object CreateAsyncEnumerator() + { + if ((Target is HostObject) || (Target is IHostVariable) || (Target is IByRefArg)) + { + if ((Target.InvokeTarget is not null) && Target.Type.IsAssignableToGenericType(typeof(IAsyncEnumerable<>), out var typeArgs)) + { + var helpersHostItem = Wrap(Engine, typeof(ScriptableEnumerableHelpers<>).MakeGenericType(typeArgs).InvokeMember("HostType", BindingFlags.Public | BindingFlags.Static | BindingFlags.GetField, null, null, null), HostItemFlags.PrivateAccess); + if (MiscHelpers.Try(out var enumerator, static ctx => ((IDynamic)ctx.helpersHostItem).InvokeMethod("GetScriptableAsyncEnumerator", ctx.self, ctx.self.Engine), (self: this, helpersHostItem))) + { + return enumerator; + } + } + else if ((Target.InvokeTarget is not null) && Target.Type.IsAssignableToGenericType(typeof(IEnumerable<>), out typeArgs)) + { + var helpersHostItem = Wrap(Engine, typeof(ScriptableEnumerableHelpers<>).MakeGenericType(typeArgs).InvokeMember("HostType", BindingFlags.Public | BindingFlags.Static | BindingFlags.GetField, null, null, null), HostItemFlags.PrivateAccess); + if (MiscHelpers.Try(out var enumerator, static ctx => ((IDynamic)ctx.helpersHostItem).InvokeMethod("GetScriptableAsyncEnumerator", ctx.self, ctx.self.Engine), (self: this, helpersHostItem))) + { + return enumerator; + } + } + else if (BindSpecialTarget(out IEnumerable _)) + { + var helpersHostItem = Wrap(Engine, ScriptableEnumerableHelpers.HostType, HostItemFlags.PrivateAccess); + if (MiscHelpers.Try(out var enumerator, static ctx => ((IDynamic)ctx.helpersHostItem).InvokeMethod("GetScriptableAsyncEnumerator", ctx.self, ctx.self.Engine), (self: this, helpersHostItem))) + { + return enumerator; + } + } + } + + throw new NotSupportedException("The object is not async-enumerable"); + } + #endregion #endregion @@ -2014,16 +2058,19 @@ FieldInfo IReflect.GetField(string name, BindingFlags bindFlags) FieldInfo[] IReflect.GetFields(BindingFlags bindFlags) { - return HostInvoke(() => - { - UpdateFieldNames(out var updated); - if (updated || (AllFields == null)) + return HostInvoke( + static self => { - AllFields = MemberMap.GetFields(AllFieldNames); - } + self.UpdateFieldNames(out var updated); + if (updated || (self.AllFields is null)) + { + self.AllFields = MemberMap.GetFields(self.AllFieldNames); + } - return AllFields; - }); + return self.AllFields; + }, + this + ); } MemberInfo[] IReflect.GetMember(string name, BindingFlags bindFlags) @@ -2059,30 +2106,36 @@ MethodInfo IReflect.GetMethod(string name, BindingFlags bindFlags, Binder binder MethodInfo[] IReflect.GetMethods(BindingFlags bindFlags) { - return HostInvoke(() => - { - UpdateMethodNames(out var updated); - if (updated || (AllMethods == null)) + return HostInvoke( + static self => { - AllMethods = MemberMap.GetMethods(AllMethodNames); - } + self.UpdateMethodNames(out var updated); + if (updated || (self.AllMethods is null)) + { + self.AllMethods = MemberMap.GetMethods(self.AllMethodNames); + } - return AllMethods; - }); + return self.AllMethods; + }, + this + ); } PropertyInfo[] IReflect.GetProperties(BindingFlags bindFlags) { - return HostInvoke(() => - { - UpdatePropertyNames(out var updated); - if (updated || (AllProperties == null)) + return HostInvoke( + static self => { - AllProperties = MemberMap.GetProperties(AllPropertyNames); - } + self.UpdatePropertyNames(out var updated); + if (updated || (self.AllProperties is null)) + { + self.AllProperties = MemberMap.GetProperties(self.AllPropertyNames); + } - return AllProperties; - }); + return self.AllProperties; + }, + this + ); } PropertyInfo IReflect.GetProperty(string name, BindingFlags bindFlags, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers) @@ -2134,53 +2187,59 @@ void IDynamic.SetProperty(string name, object[] args) bool IDynamic.DeleteProperty(string name) { - return HostInvoke(() => - { - if (TargetDynamic != null) - { - return TargetDynamic.DeleteProperty(name); - } - - if (TargetPropertyBag != null) + return HostInvoke( + static ctx => { - return TargetPropertyBag.Remove(name); - } - - if (TargetDynamicMetaObject != null) - { - if (TargetDynamicMetaObject.TryDeleteMember(name, out var result) && result) + if (ctx.self.TargetDynamic is not null) { - return true; + return ctx.self.TargetDynamic.DeleteProperty(ctx.name); } - if (TargetDynamicMetaObject.TryDeleteIndex(new object[] { name }, out result)) + if (ctx.self.TargetPropertyBag is not null) { - return result; + return ctx.self.TargetPropertyBag.Remove(ctx.name); } - throw new InvalidOperationException("Invalid dynamic member deletion"); - } + if (ctx.self.TargetDynamicMetaObject is not null) + { + if (ctx.self.TargetDynamicMetaObject.TryDeleteMember(ctx.name, out var result) && result) + { + return true; + } + + if (ctx.self.TargetDynamicMetaObject.TryDeleteIndex(new object[] { ctx.name }, out result)) + { + return result; + } + + throw new InvalidOperationException("Invalid dynamic member deletion"); + } - throw new NotSupportedException("The object does not support dynamic members"); - }); + throw new NotSupportedException("The object does not support dynamic members"); + }, + (self: this, name) + ); } string[] IDynamic.GetPropertyNames() { - return HostInvoke(() => - { - UpdateFieldNames(out var updatedFieldNames); - UpdateMethodNames(out var updatedMethodNames); - UpdatePropertyNames(out var updatedPropertyNames); - UpdateEnumerationSettingsToken(out var updatedEnumerationSettingsToken); - - if (updatedFieldNames || updatedMethodNames || updatedPropertyNames || updatedEnumerationSettingsToken || (AllMemberNames == null)) + return HostInvoke( + static self => { - AllMemberNames = AllFieldNames.Concat(EnumeratedMethodNames).Concat(AllPropertyNames).ExcludeIndices().Distinct().ToArray(); - } + self.UpdateFieldNames(out var updatedFieldNames); + self.UpdateMethodNames(out var updatedMethodNames); + self.UpdatePropertyNames(out var updatedPropertyNames); + self.UpdateEnumerationSettingsToken(out var updatedEnumerationSettingsToken); + + if (updatedFieldNames || updatedMethodNames || updatedPropertyNames || updatedEnumerationSettingsToken || (self.AllMemberNames is null)) + { + self.AllMemberNames = self.AllFieldNames.Concat(self.EnumeratedMethodNames).Concat(self.AllPropertyNames).ExcludeIndices().Distinct().ToArray(); + } - return AllMemberNames; - }); + return self.AllMemberNames; + }, + this + ); } object IDynamic.GetProperty(int index) @@ -2195,49 +2254,55 @@ void IDynamic.SetProperty(int index, object value) bool IDynamic.DeleteProperty(int index) { - return HostInvoke(() => - { - if (TargetDynamic != null) - { - return TargetDynamic.DeleteProperty(index); - } - - if (TargetPropertyBag != null) + return HostInvoke( + static ctx => { - return TargetPropertyBag.Remove(index.ToString(CultureInfo.InvariantCulture)); - } - - if (TargetDynamicMetaObject != null) - { - if (TargetDynamicMetaObject.TryDeleteMember(index.ToString(CultureInfo.InvariantCulture), out var result) && result) + if (ctx.self.TargetDynamic is not null) { - return true; + return ctx.self.TargetDynamic.DeleteProperty(ctx.index); } - if (TargetDynamicMetaObject.TryDeleteIndex(new object[] { index }, out result)) + if (ctx.self.TargetPropertyBag is not null) { - return result; + return ctx.self.TargetPropertyBag.Remove(ctx.index.ToString(CultureInfo.InvariantCulture)); } - throw new InvalidOperationException("Invalid dynamic member deletion"); - } + if (ctx.self.TargetDynamicMetaObject is not null) + { + if (ctx.self.TargetDynamicMetaObject.TryDeleteMember(ctx.index.ToString(CultureInfo.InvariantCulture), out var result) && result) + { + return true; + } - return false; - }); + if (ctx.self.TargetDynamicMetaObject.TryDeleteIndex(new object[] { ctx.index }, out result)) + { + return result; + } + + throw new InvalidOperationException("Invalid dynamic member deletion"); + } + + return false; + }, + (self: this, index) + ); } int[] IDynamic.GetPropertyIndices() { - return HostInvoke(() => - { - UpdatePropertyNames(out var updated); - if (updated || (PropertyIndices == null)) + return HostInvoke( + static self => { - PropertyIndices = AllPropertyNames.GetIndices().Distinct().ToArray(); - } + self.UpdatePropertyNames(out var updated); + if (updated || (self.PropertyIndices is null)) + { + self.PropertyIndices = self.AllPropertyNames.GetIndices().Distinct().ToArray(); + } - return PropertyIndices; - }); + return self.PropertyIndices; + }, + this + ); } object IDynamic.Invoke(bool asConstructor, params object[] args) @@ -2256,54 +2321,63 @@ object IDynamic.InvokeMethod(string name, params object[] args) int IEnumVARIANT.Next(int count, object[] elements, IntPtr pCountFetched) { - return HostInvoke(() => - { - var index = 0; - - // ReSharper disable once ConditionIsAlwaysTrueOrFalse - if (elements != null) + return HostInvoke( + static ctx => { - var maxCount = Math.Min(count, elements.Length); - if (index < maxCount) + var index = 0; + + // ReSharper disable once ConditionIsAlwaysTrueOrFalse + if (ctx.elements is not null) { - var currentName = (TargetEnumerator is IScriptableEnumerator) ? "ScriptableCurrent" : "Current"; - while ((index < maxCount) && TargetEnumerator.MoveNext()) + var maxCount = Math.Min(ctx.count, ctx.elements.Length); + if (index < maxCount) { - elements[index++] = ThisDynamic.GetProperty(currentName); + var currentName = (ctx.self.TargetEnumerator is IScriptableEnumerator) ? "ScriptableCurrent" : "Current"; + while ((index < maxCount) && ctx.self.TargetEnumerator.MoveNext()) + { + ctx.elements[index++] = ctx.self.ThisDynamic.GetProperty(currentName); + } } } - } - if (pCountFetched != IntPtr.Zero) - { - Marshal.WriteInt32(pCountFetched, index); - } + if (ctx.pCountFetched != IntPtr.Zero) + { + Marshal.WriteInt32(ctx.pCountFetched, index); + } - return (index == count) ? HResult.S_OK : HResult.S_FALSE; - }); + return (index == ctx.count) ? HResult.S_OK : HResult.S_FALSE; + }, + (self: this, count, elements, pCountFetched) + ); } int IEnumVARIANT.Skip(int count) { - return HostInvoke(() => - { - var index = 0; - while ((index < count) && TargetEnumerator.MoveNext()) + return HostInvoke( + static ctx => { - index++; - } + var index = 0; + while ((index < ctx.count) && ctx.self.TargetEnumerator.MoveNext()) + { + index++; + } - return (index == count) ? HResult.S_OK : HResult.S_FALSE; - }); + return (index == ctx.count) ? HResult.S_OK : HResult.S_FALSE; + }, + (self: this, count) + ); } int IEnumVARIANT.Reset() { - return HostInvoke(() => - { - TargetEnumerator.Reset(); - return HResult.S_OK; - }); + return HostInvoke( + static self => + { + self.TargetEnumerator.Reset(); + return HResult.S_OK; + }, + this + ); } IEnumVARIANT IEnumVARIANT.Clone() @@ -2401,30 +2475,36 @@ public ExpandoHostItem(ScriptEngine engine, HostTarget target, HostItemFlags fla FieldInfo IExpando.AddField(string name) { - return HostInvoke(() => - { - if (CanAddExpandoMembers()) + return HostInvoke( + static ctx => { - AddExpandoMemberName(name); - return MemberMap.GetField(name); - } + if (ctx.self.CanAddExpandoMembers()) + { + ctx.self.AddExpandoMemberName(ctx.name); + return MemberMap.GetField(ctx.name); + } - throw new NotSupportedException("The object does not support dynamic fields"); - }); + throw new NotSupportedException("The object does not support dynamic fields"); + }, + (self: this, name) + ); } PropertyInfo IExpando.AddProperty(string name) { - return HostInvoke(() => - { - if (CanAddExpandoMembers()) + return HostInvoke( + static ctx => { - AddExpandoMemberName(name); - return MemberMap.GetProperty(name); - } + if (ctx.self.CanAddExpandoMembers()) + { + ctx.self.AddExpandoMemberName(ctx.name); + return MemberMap.GetProperty(ctx.name); + } - throw new NotSupportedException("The object does not support dynamic properties"); - }); + throw new NotSupportedException("The object does not support dynamic properties"); + }, + (self: this, name) + ); } MethodInfo IExpando.AddMethod(string name, Delegate method) @@ -2439,59 +2519,62 @@ void IExpando.RemoveMember(MemberInfo member) protected virtual bool RemoveMember(string name) { - return HostInvoke(() => - { - if (TargetDynamic != null) + return HostInvoke( + static ctx => { - if (int.TryParse(name, NumberStyles.Integer, CultureInfo.InvariantCulture, out var index)) + if (ctx.self.TargetDynamic is not null) { - if (TargetDynamic.DeleteProperty(index)) + if (int.TryParse(ctx.name, NumberStyles.Integer, CultureInfo.InvariantCulture, out var index)) { - RemoveExpandoMemberName(index.ToString(CultureInfo.InvariantCulture)); + if (ctx.self.TargetDynamic.DeleteProperty(index)) + { + ctx.self.RemoveExpandoMemberName(index.ToString(CultureInfo.InvariantCulture)); + return true; + } + } + else if (ctx.self.TargetDynamic.DeleteProperty(ctx.name)) + { + ctx.self.RemoveExpandoMemberName(ctx.name); return true; } } - else if (TargetDynamic.DeleteProperty(name)) + else if (ctx.self.TargetPropertyBag is not null) { - RemoveExpandoMemberName(name); - return true; - } - } - else if (TargetPropertyBag != null) - { - if (TargetPropertyBag.Remove(name)) - { - RemoveExpandoMemberName(name); - return true; + if (ctx.self.TargetPropertyBag.Remove(ctx.name)) + { + ctx.self.RemoveExpandoMemberName(ctx.name); + return true; + } } - } - else if (TargetDynamicMetaObject != null) - { - if (TargetDynamicMetaObject.TryDeleteMember(name, out var result) && result) + else if (ctx.self.TargetDynamicMetaObject is not null) { - RemoveExpandoMemberName(name); - return true; - } + if (ctx.self.TargetDynamicMetaObject.TryDeleteMember(ctx.name, out var result) && result) + { + ctx.self.RemoveExpandoMemberName(ctx.name); + return true; + } - if (int.TryParse(name, NumberStyles.Integer, CultureInfo.InvariantCulture, out var index) && TargetDynamicMetaObject.TryDeleteIndex(new object[] { index }, out result)) - { - RemoveExpandoMemberName(index.ToString(CultureInfo.InvariantCulture)); - return true; - } + if (int.TryParse(ctx.name, NumberStyles.Integer, CultureInfo.InvariantCulture, out var index) && ctx.self.TargetDynamicMetaObject.TryDeleteIndex(new object[] { index }, out result)) + { + ctx.self.RemoveExpandoMemberName(index.ToString(CultureInfo.InvariantCulture)); + return true; + } - if (TargetDynamicMetaObject.TryDeleteIndex(new object[] { name }, out result)) + if (ctx.self.TargetDynamicMetaObject.TryDeleteIndex(new object[] { ctx.name }, out result)) + { + ctx.self.RemoveExpandoMemberName(ctx.name); + return true; + } + } + else { - RemoveExpandoMemberName(name); - return true; + throw new NotSupportedException("The object does not support dynamic members"); } - } - else - { - throw new NotSupportedException("The object does not support dynamic members"); - } - return false; - }); + return false; + }, + (self: this, name) + ); } #endregion diff --git a/ClearScript/HostItemCollateral.cs b/ClearScript/HostItemCollateral.cs index a97d8cbf..3b385f6b 100644 --- a/ClearScript/HostItemCollateral.cs +++ b/ClearScript/HostItemCollateral.cs @@ -11,25 +11,25 @@ internal sealed class HostItemCollateral { #region special targets - public readonly CollateralObject TargetDynamic = new CollateralObject(); - public readonly CollateralObject TargetPropertyBag = new CollateralObject(); - public readonly CollateralObject TargetList = new CollateralObject(); - public readonly CollateralObject TargetDynamicMetaObject = new CollateralObject(); - public readonly CollateralObject TargetEnumerator = new CollateralObject(); + public readonly CollateralObject TargetDynamic = new(); + public readonly CollateralObject TargetPropertyBag = new(); + public readonly CollateralObject TargetList = new(); + public readonly CollateralObject TargetDynamicMetaObject = new(); + public readonly CollateralObject TargetEnumerator = new(); #endregion #region dynamic collateral - public readonly CollateralObject> ExpandoMemberNames = new CollateralObject>(); - public readonly CollateralObject ListData = new CollateralObject(); + public readonly CollateralObject> ExpandoMemberNames = new(); + public readonly CollateralObject ListData = new(); #endregion #region tear-off member cache - public readonly CollateralObject> HostMethodMap = new CollateralObject>(); - public readonly CollateralObject> HostIndexedPropertyMap = new CollateralObject>(); + public readonly CollateralObject> HostMethodMap = new(); + public readonly CollateralObject> HostIndexedPropertyMap = new(); #endregion diff --git a/ClearScript/HostItemFlags.cs b/ClearScript/HostItemFlags.cs index b6e0fcc8..e338e525 100644 --- a/ClearScript/HostItemFlags.cs +++ b/ClearScript/HostItemFlags.cs @@ -43,4 +43,10 @@ public enum HostItemFlags /// DirectAccess = 0x00000008 } + + internal static class HostItemFlagsHelpers + { + public static bool HasAllFlags(this HostItemFlags value, HostItemFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this HostItemFlags value, HostItemFlags flags) => (value & flags) != 0; + } } diff --git a/ClearScript/HostObject.cs b/ClearScript/HostObject.cs index fea3d6ce..8c9d5187 100644 --- a/ClearScript/HostObject.cs +++ b/ClearScript/HostObject.cs @@ -20,10 +20,14 @@ internal sealed class HostObject : HostTarget #region constructors - private HostObject(object target, Type type) + private HostObject(object target, Type type, bool isCanonicalRef) { - target = CanonicalRefTable.GetCanonicalRef(target); - if (type == null) + if (!isCanonicalRef) + { + target = CanonicalRefTable.GetCanonicalRef(target); + } + + if (type is null) { type = target.GetType(); } @@ -52,17 +56,22 @@ public static HostObject Wrap(object target) public static HostObject Wrap(object target, Type type) { - return (target != null) ? new HostObject(target, type) : null; + return Wrap(target, type, false); + } + + public static HostObject Wrap(object target, Type type, bool isCanonicalRef) + { + return (target is not null) ? new HostObject(target, type, isCanonicalRef) : null; } public static object WrapResult(object result, Type type, bool wrapNull) { - if ((result is HostItem) || (result is HostTarget)) + if ((result is IScriptMarshalWrapper) || (result is HostTarget)) { return result; } - if (result == null) + if (result is null) { return wrapNull ? GetNullWrapper(type) : null; } @@ -149,7 +158,7 @@ public override Invocability GetInvocability(IHostContext context, BindingFlags private static class NullWrapper { - public static readonly HostObject Value = new HostObject(null, typeof(T)); + public static readonly HostObject Value = new(null, typeof(T), true); } // ReSharper restore UnusedMember.Local diff --git a/ClearScript/HostTargetFlags.cs b/ClearScript/HostTargetFlags.cs index baa32112..2b168d97 100644 --- a/ClearScript/HostTargetFlags.cs +++ b/ClearScript/HostTargetFlags.cs @@ -13,4 +13,10 @@ internal enum HostTargetFlags AllowInstanceMembers = 0x00000002, AllowExtensionMethods = 0x00000004 } + + internal static class HostTargetFlagsHelpers + { + public static bool HasAllFlags(this HostTargetFlags value, HostTargetFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this HostTargetFlags value, HostTargetFlags flags) => (value & flags) != 0; + } } diff --git a/ClearScript/HostType.cs b/ClearScript/HostType.cs index 7de99ebd..812a95db 100644 --- a/ClearScript/HostType.cs +++ b/ClearScript/HostType.cs @@ -18,7 +18,7 @@ private HostType(Type type) private HostType(Type[] types) { - Debug.Assert((types != null) && (types.Length > 0)); + Debug.Assert((types is not null) && (types.Length > 0)); var nestingGroups = types.GroupBy(type => type.IsNested).ToIList(); if (nestingGroups.Count != 1) @@ -53,12 +53,12 @@ private HostType(Type[] types) public static HostType Wrap(Type type) { - return (type != null) ? new HostType(type) : null; + return (type is not null) ? new HostType(type) : null; } public static HostType Wrap(Type[] types) { - return ((types != null) && (types.Length > 0)) ? new HostType(types) : null; + return ((types is not null) && (types.Length > 0)) ? new HostType(types) : null; } public Type[] Types { get; } @@ -66,7 +66,7 @@ public static HostType Wrap(Type[] types) public Type GetSpecificType() { var type = GetSpecificTypeNoThrow(); - if (type == null) + if (type is null) { throw new InvalidOperationException(MiscHelpers.FormatInvariant("'{0}' requires type arguments", Types[0].GetRootName())); } @@ -94,7 +94,7 @@ public Type GetTypeArg() public Type GetTypeArgNoThrow() { var type = GetSpecificTypeNoThrow(); - return ((type == null) || type.IsStatic() || type.IsUnknownCOMObject()) ? null : type; + return ((type is null) || type.IsStatic() || type.IsUnknownCOMObject()) ? null : type; } private Type GetSpecificTypeNoThrow() @@ -107,7 +107,7 @@ private Type GetSpecificTypeNoThrow() public override string ToString() { var type = GetSpecificTypeNoThrow(); - if (type != null) + if (type is not null) { return MiscHelpers.FormatInvariant("HostType:{0}", type.GetFriendlyName()); } @@ -145,13 +145,13 @@ public override object InvokeTarget public override HostTargetFlags GetFlags(IHostContext context) { var type = GetSpecificTypeNoThrow(); - return (type != null) ? HostTargetFlags.AllowStaticMembers : HostTargetFlags.None; + return (type is not null) ? HostTargetFlags.AllowStaticMembers : HostTargetFlags.None; } public override string[] GetAuxPropertyNames(IHostContext context, BindingFlags bindFlags) { var type = GetSpecificTypeNoThrow(); - if (type != null) + if (type is not null) { return type.GetScriptableNestedTypes(context, bindFlags).Select(testType => testType.GetRootName()).Distinct().ToArray(); } @@ -162,20 +162,20 @@ public override string[] GetAuxPropertyNames(IHostContext context, BindingFlags public override bool TryInvokeAuxMember(IHostContext context, string name, BindingFlags invokeFlags, object[] args, object[] bindArgs, out object result) { var type = GetSpecificTypeNoThrow(); - if (type != null) + if (type is not null) { var nestedTypes = type.GetScriptableNestedTypes(context, invokeFlags).Where(testType => string.Equals(testType.GetRootName(), name, invokeFlags.GetMemberNameComparison())).ToIList(); if (nestedTypes.Count > 0) { var tempResult = Wrap(nestedTypes.Select(testType => testType.ApplyTypeArguments(type.GetGenericArguments())).ToArray()); - if (invokeFlags.HasFlag(BindingFlags.InvokeMethod)) + if (invokeFlags.HasAllFlags(BindingFlags.InvokeMethod)) { if (tempResult.TryInvoke(context, invokeFlags, args, bindArgs, out result)) { return true; } - if (!invokeFlags.HasFlag(BindingFlags.GetField) && !invokeFlags.HasFlag(BindingFlags.GetProperty)) + if (!invokeFlags.HasAllFlags(BindingFlags.GetField) && !invokeFlags.HasAllFlags(BindingFlags.GetProperty)) { return false; } @@ -192,7 +192,7 @@ public override bool TryInvokeAuxMember(IHostContext context, string name, Bindi public override bool TryInvoke(IHostContext context, BindingFlags invokeFlags, object[] args, object[] bindArgs, out object result) { - if (!invokeFlags.HasFlag(BindingFlags.InvokeMethod) || (args.Length < 1)) + if (!invokeFlags.HasAllFlags(BindingFlags.InvokeMethod) || (args.Length < 1)) { result = null; return false; @@ -200,14 +200,14 @@ public override bool TryInvoke(IHostContext context, BindingFlags invokeFlags, o if (!args.All(arg => arg is HostType)) { - throw new ArgumentException("Invalid generic type argument"); + throw new ArgumentException("Invalid generic type argument", nameof(args)); } var templates = Types.Where(type => !type.IsSpecific()).ToArray(); var typeArgs = args.Cast().Select(hostType => hostType.GetTypeArg()).ToArray(); var template = templates.FirstOrDefault(testTemplate => testTemplate.GetGenericParamCount() == typeArgs.Length); - if (template == null) + if (template is null) { throw new TypeLoadException(MiscHelpers.FormatInvariant("Could not find a matching generic type definition for '{0}'", templates[0].GetRootName())); } @@ -227,10 +227,10 @@ public override Invocability GetInvocability(IHostContext context, BindingFlags void IScriptableObject.OnExposedToScriptCode(ScriptEngine engine) { - if (engine != null) + if (engine is not null) { var specificType = GetSpecificTypeNoThrow(); - if (specificType != null) + if (specificType is not null) { engine.ProcessExtensionMethodType(specificType); } diff --git a/ClearScript/HostTypeCollection.cs b/ClearScript/HostTypeCollection.cs index 68f03566..3afa8ddb 100644 --- a/ClearScript/HostTypeCollection.cs +++ b/ClearScript/HostTypeCollection.cs @@ -8,7 +8,6 @@ using System.Runtime.InteropServices.ComTypes; using Microsoft.ClearScript.Util; using Microsoft.ClearScript.Util.COM; -using TYPEKIND = System.Runtime.InteropServices.ComTypes.TYPEKIND; namespace Microsoft.ClearScript { @@ -27,8 +26,8 @@ namespace Microsoft.ClearScript /// public class HostTypeCollection : PropertyBag { - private static readonly Predicate defaultFilter = type => true; - private static readonly TypeComparer typeComparer = new TypeComparer(); + private static readonly Predicate defaultFilter = _ => true; + private static readonly TypeComparer typeComparer = new(); /// /// Initializes a new host type collection. @@ -179,7 +178,7 @@ public PropertyBag GetNamespaceNode(string name) } namespaceNode = node as PropertyBag; - if (namespaceNode == null) + if (namespaceNode is null) { return null; } @@ -202,7 +201,7 @@ private PropertyBag AddEnumTypeInfoInternal(ITypeInfo typeInfo) typeInfo.GetRefTypeInfo(unchecked((int)attrScope.Value.tdescAlias.lpValue.ToInt64()), out var refTypeInfo); var node = AddEnumTypeInfoInternal(refTypeInfo); - if (node != null) + if (node is not null) { var locator = typeInfo.GetManagedName(); @@ -210,7 +209,7 @@ private PropertyBag AddEnumTypeInfoInternal(ITypeInfo typeInfo) if (segments.Length > 0) { var namespaceNode = GetOrCreateNamespaceNode(locator); - if (namespaceNode != null) + if (namespaceNode is not null) { namespaceNode.SetPropertyNoCheck(segments.Last(), node); return node; @@ -221,7 +220,7 @@ private PropertyBag AddEnumTypeInfoInternal(ITypeInfo typeInfo) else if (attrScope.Value.typekind == TYPEKIND.TKIND_ENUM) { var node = GetOrCreateEnumTypeInfoNode(typeInfo); - if (node != null) + if (node is not null) { var count = attrScope.Value.cVars; for (var index = 0; index < count; index++) @@ -267,7 +266,7 @@ private PropertyBag GetOrCreateEnumTypeInfoNode(ITypeInfo typeInfo) else { innerNode = node as PropertyBag; - if (innerNode == null) + if (innerNode is null) { throw new OperationCanceledException(MiscHelpers.FormatInvariant("Enumeration conflicts with '{0}' at '{1}'", node.GetFriendlyName(), locator)); } @@ -285,7 +284,7 @@ private void AddType(HostType hostType) foreach (var type in hostType.Types) { var namespaceNode = GetOrCreateNamespaceNode(type); - if (namespaceNode != null) + if (namespaceNode is not null) { AddTypeToNamespaceNode(namespaceNode, type); } @@ -318,7 +317,7 @@ private PropertyBag GetOrCreateNamespaceNode(string locator) else { innerNode = node as PropertyBag; - if (innerNode == null) + if (innerNode is null) { throw new OperationCanceledException(MiscHelpers.FormatInvariant("Namespace conflicts with '{0}' at '{1}'", node.GetFriendlyName(), locator)); } diff --git a/ClearScript/HostVariable.cs b/ClearScript/HostVariable.cs index 8e8250bb..bd118b26 100644 --- a/ClearScript/HostVariable.cs +++ b/ClearScript/HostVariable.cs @@ -33,12 +33,12 @@ public HostVariable(T initValue) throw new NotSupportedException("Unsupported variable type"); } - if (typeof(HostItem).IsAssignableFrom(typeof(T)) || typeof(HostTarget).IsAssignableFrom(typeof(T))) + if (typeof(IHostItem).IsAssignableFrom(typeof(T)) || typeof(HostTarget).IsAssignableFrom(typeof(T))) { throw new NotSupportedException("Unsupported variable type"); } - if ((initValue is HostItem) || (initValue is HostTarget)) + if ((initValue is IHostItem) || (initValue is HostTarget)) { throw new NotSupportedException("Unsupported value type"); } @@ -110,14 +110,14 @@ public override bool TryInvokeAuxMember(IHostContext context, string name, Bindi } else if (string.Equals(name, "value", invokeFlags.GetMemberNameComparison())) { - if (invokeFlags.HasFlag(BindingFlags.InvokeMethod)) + if (invokeFlags.HasAllFlags(BindingFlags.InvokeMethod)) { if (InvokeHelpers.TryInvokeObject(context, Value, invokeFlags, args, bindArgs, typeof(IDynamicMetaObjectProvider).IsAssignableFrom(typeof(T)), out result)) { return true; } - if (invokeFlags.HasFlag(BindingFlags.GetField) && (args.Length < 1)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField) && (args.Length < 1)) { result = context.Engine.PrepareResult(Value, ScriptMemberFlags.None, false); return true; @@ -167,7 +167,7 @@ object IHostVariable.Value throw new InvalidOperationException("Assignment invalid due to type mismatch"); } - if ((value is HostItem) || (value is HostTarget)) + if ((value is IHostItem) || (value is HostTarget)) { throw new NotSupportedException("Unsupported value type"); } diff --git a/ClearScript/IScriptEngine.cs b/ClearScript/IScriptEngine.cs index 4712b278..5616c26d 100644 --- a/ClearScript/IScriptEngine.cs +++ b/ClearScript/IScriptEngine.cs @@ -171,7 +171,7 @@ public interface IScriptEngine : IDisposable /// on the specific behavior of reflection-based method binding. /// /// - /// This property has no effect when is set to + /// This property has no effect when is set to /// true. /// /// @@ -199,6 +199,17 @@ public interface IScriptEngine : IDisposable /// object UndefinedImportValue { get; set; } + /// + /// Gets or sets the script engine's null import value. + /// + /// + /// Some script languages support one or more special null values that represent + /// empty or unassigned object references. When such a value is marshaled to the host, the + /// script engine maps it to the value of this property. The default value is simply + /// null. + /// + object NullImportValue { get; set; } + /// /// Gets or sets the script engine's null export value. /// @@ -212,9 +223,9 @@ public interface IScriptEngine : IDisposable /// Nothing.Value. /// /// - /// Note that , - /// , and - /// MarshalNullAsDispatch + /// Note that , + /// , and + /// MarshalNullAsDispatch /// all take precedence over this property. /// /// diff --git a/ClearScript/IScriptObject.cs b/ClearScript/IScriptObject.cs index d28ac13e..641df451 100644 --- a/ClearScript/IScriptObject.cs +++ b/ClearScript/IScriptObject.cs @@ -39,7 +39,7 @@ public interface IScriptObject : IDisposable /// Removes a named script object property. /// /// The name of the property to remove. - /// True if the property was removed successfully, false otherwise. + /// True if the property was removed, false otherwise. bool DeleteProperty(string name); /// @@ -73,7 +73,7 @@ public interface IScriptObject : IDisposable /// Removes an indexed script object property. /// /// The index of the property to remove. - /// True if the property was removed successfully, false otherwise. + /// True if the property was removed, false otherwise. bool DeleteProperty(int index); /// diff --git a/ClearScript/Invocability.cs b/ClearScript/Invocability.cs index beaf07c8..043d1c37 100644 --- a/ClearScript/Invocability.cs +++ b/ClearScript/Invocability.cs @@ -5,7 +5,7 @@ namespace Microsoft.ClearScript { internal enum Invocability { - // IMPORTANT: maintain bitwise equivalence with native enum IHostObjectUtil::Invocability + // IMPORTANT: maintain bitwise equivalence with native enum HostObjectUtil::Invocability None, Delegate, Dynamic, diff --git a/ClearScript/JavaScript/CommonJSManager.cs b/ClearScript/JavaScript/CommonJSManager.cs index 27c6eafa..d5725969 100644 --- a/ClearScript/JavaScript/CommonJSManager.cs +++ b/ClearScript/JavaScript/CommonJSManager.cs @@ -13,8 +13,8 @@ internal sealed class CommonJSManager { private readonly ScriptEngine engine; private readonly ScriptObject createModule; - private readonly List moduleCache = new List(); - private static readonly DocumentInfo createModuleInfo = new DocumentInfo("CommonJS-createModule [internal]"); + private readonly List moduleCache = new(); + private static readonly DocumentInfo createModuleInfo = new("CommonJS-createModule [internal]"); public CommonJSManager(ScriptEngine engine) { @@ -62,7 +62,7 @@ public Module GetOrCreateModule(UniqueDocumentInfo documentInfo, string code) var codeDigest = code.GetDigest(); var cachedModule = GetCachedModule(documentInfo, codeDigest); - if (cachedModule != null) + if (cachedModule is not null) { return cachedModule; } @@ -73,7 +73,7 @@ public Module GetOrCreateModule(UniqueDocumentInfo documentInfo, string code) public Module GetOrCreateModule(UniqueDocumentInfo documentInfo, UIntPtr codeDigest, Func evaluator) { var cachedModule = GetCachedModule(documentInfo, codeDigest); - if (cachedModule != null) + if (cachedModule is not null) { return cachedModule; } @@ -100,7 +100,7 @@ private Module GetCachedModule(UniqueDocumentInfo documentInfo, UIntPtr codeDige private Module CacheModule(Module module) { var cachedModule = moduleCache.FirstOrDefault(testModule => (testModule.DocumentInfo.UniqueId == module.DocumentInfo.UniqueId) && (testModule.CodeDigest == module.CodeDigest)); - if (cachedModule != null) + if (cachedModule is not null) { return cachedModule; } @@ -162,19 +162,19 @@ public static string GetAugmentedCode(string code) public object Process(out object marshaledExports) { - if (module == null) + if (module is null) { - var id = (DocumentInfo.Uri != null) ? DocumentInfo.Uri.AbsoluteUri : DocumentInfo.UniqueName; - var uri = (DocumentInfo.Uri != null) ? id : null; + var id = (DocumentInfo.Uri is not null) ? DocumentInfo.Uri.AbsoluteUri : DocumentInfo.UniqueName; + var uri = (DocumentInfo.Uri is not null) ? id : null; Action hostInitialize = Initialize; Func hostRequire = Require; Func initializeContext = InitializeContext; module = manager.createModule.Invoke(false, id, uri, hostInitialize, hostRequire, initializeContext, typeof(CommonJSLegacyModule).ToHostType(engine)); } - if (function == null) + if (function is null) { - function = (ScriptObject)engine.MarshalToHost(engine.ScriptInvoke(() => Evaluator()), false); + function = (ScriptObject)engine.MarshalToHost(engine.ScriptInvoke(static self => self.Evaluator(), this), false); } object result; @@ -223,7 +223,7 @@ private object Require(string specifier) } var uri = document.Info.Uri; - var name = (uri != null) ? (uri.IsFile ? uri.LocalPath : uri.AbsoluteUri) : document.Info.Name; + var name = (uri is not null) ? (uri.IsFile ? uri.LocalPath : uri.AbsoluteUri) : document.Info.Name; throw new FileLoadException($"Unsupported document category '{document.Info.Category}'", name); } @@ -231,7 +231,7 @@ private ScriptObject InitializeContext(ScriptObject context) { var callback = DocumentInfo.ContextCallback ?? engine.DocumentSettings.ContextCallback; var properties = callback?.Invoke(DocumentInfo.Info); - if (properties != null) + if (properties is not null) { foreach (var pair in properties) { diff --git a/ClearScript/JavaScript/IArrayBuffer.cs b/ClearScript/JavaScript/IArrayBuffer.cs index a4ec13f0..d89568bd 100644 --- a/ClearScript/JavaScript/IArrayBuffer.cs +++ b/ClearScript/JavaScript/IArrayBuffer.cs @@ -32,6 +32,16 @@ public interface IArrayBuffer : IJavaScriptObject /// The number of bytes copied. ulong ReadBytes(ulong offset, ulong count, byte[] destination, ulong destinationIndex); + /// + /// Copies bytes from the ArrayBuffer into the specified byte span. + /// + /// The offset within the ArrayBuffer of the first byte to copy. + /// The maximum number of bytes to copy. + /// The byte span into which to copy the bytes. + /// The index within at which to store the first copied byte. + /// The number of bytes copied. + ulong ReadBytes(ulong offset, ulong count, Span destination, ulong destinationIndex); + /// /// Copies bytes from the specified byte array into the ArrayBuffer. /// @@ -42,6 +52,16 @@ public interface IArrayBuffer : IJavaScriptObject /// The number of bytes copied. ulong WriteBytes(byte[] source, ulong sourceIndex, ulong count, ulong offset); + /// + /// Copies bytes from the specified byte span into the ArrayBuffer. + /// + /// The byte span from which to copy the bytes. + /// The index within of the first byte to copy. + /// The maximum number of bytes to copy. + /// The offset within the ArrayBuffer at which to store the first copied byte. + /// The number of bytes copied. + ulong WriteBytes(ReadOnlySpan source, ulong sourceIndex, ulong count, ulong offset); + /// /// Invokes a delegate that returns no value, giving it direct access to the ArrayBuffer's contents. /// @@ -56,14 +76,42 @@ public interface IArrayBuffer : IJavaScriptObject /// /// Invokes a delegate that returns a value, giving it direct access to the ArrayBuffer's contents. /// - /// The delegate's return type. + /// The delegate's return type. + /// The delegate to invoke. + /// The delegate's return value. + /// + /// This method invokes the specified delegate, passing in the memory address of the + /// ArrayBuffer's contents. This memory address is valid only while the delegate is + /// executing. The delegate must not access memory outside the ArrayBuffer's range. + /// + TResult InvokeWithDirectAccess(Func func); + + /// + /// Invokes a delegate that takes an argument and returns no value, giving it direct access to the ArrayBuffer's contents. + /// + /// The delegate's argument type. + /// The delegate to invoke. + /// The argument to pass to the delegate. + /// + /// This method invokes the specified delegate, passing in the memory address of the + /// ArrayBuffer's contents. This memory address is valid only while the delegate is + /// executing. The delegate must not access memory outside the ArrayBuffer's range. + /// + void InvokeWithDirectAccess(Action action, in TArg arg); + + /// + /// Invokes a delegate that takes an argument and returns a value, giving it direct access to the ArrayBuffer's contents. + /// + /// The delegate's argument type. + /// The delegate's return type. /// The delegate to invoke. + /// The argument to pass to the delegate. /// The delegate's return value. /// /// This method invokes the specified delegate, passing in the memory address of the /// ArrayBuffer's contents. This memory address is valid only while the delegate is /// executing. The delegate must not access memory outside the ArrayBuffer's range. /// - T InvokeWithDirectAccess(Func func); + TResult InvokeWithDirectAccess(Func func, in TArg arg); } } diff --git a/ClearScript/JavaScript/IArrayBufferView.cs b/ClearScript/JavaScript/IArrayBufferView.cs index 311b016e..6d386bb7 100644 --- a/ClearScript/JavaScript/IArrayBufferView.cs +++ b/ClearScript/JavaScript/IArrayBufferView.cs @@ -43,6 +43,16 @@ public interface IArrayBufferView : IJavaScriptObject /// The number of bytes copied. ulong ReadBytes(ulong offset, ulong count, byte[] destination, ulong destinationIndex); + /// + /// Copies bytes from the view into the specified byte span. + /// + /// The offset within the view of the first byte to copy. + /// The maximum number of bytes to copy. + /// The byte span into which to copy the bytes. + /// The index within at which to store the first copied byte. + /// The number of bytes copied. + ulong ReadBytes(ulong offset, ulong count, Span destination, ulong destinationIndex); + /// /// Copies bytes from the specified byte array into the view. /// @@ -53,6 +63,16 @@ public interface IArrayBufferView : IJavaScriptObject /// The number of bytes copied. ulong WriteBytes(byte[] source, ulong sourceIndex, ulong count, ulong offset); + /// + /// Copies bytes from the specified byte span into the view. + /// + /// The byte span from which to copy the bytes. + /// The index within of the first byte to copy. + /// The maximum number of bytes to copy. + /// The offset within the view at which to store the first copied byte. + /// The number of bytes copied. + ulong WriteBytes(ReadOnlySpan source, ulong sourceIndex, ulong count, ulong offset); + /// /// Invokes a delegate that returns no value, giving it direct access to the view's contents. /// @@ -67,14 +87,42 @@ public interface IArrayBufferView : IJavaScriptObject /// /// Invokes a delegate that returns a value, giving it direct access to the view's contents. /// - /// The delegate's return type. + /// The delegate's return type. + /// The delegate to invoke. + /// The delegate's return value. + /// + /// This method invokes the specified delegate, passing in the memory address of the view's + /// contents. This memory address is valid only while the delegate is executing. The + /// delegate must not access memory outside the view's range. + /// + TResult InvokeWithDirectAccess(Func func); + + /// + /// Invokes a delegate that takes an argument and returns no value, giving it direct access to the view's contents. + /// + /// The delegate's argument type. + /// The delegate to invoke. + /// The argument to pass to the delegate. + /// + /// This method invokes the specified delegate, passing in the memory address of the view's + /// contents. This memory address is valid only while the delegate is executing. The + /// delegate must not access memory outside the view's range. + /// + void InvokeWithDirectAccess(Action action, in TArg arg); + + /// + /// Invokes a delegate that takes an argument and returns a value, giving it direct access to the view's contents. + /// + /// The delegate's argument type. + /// The delegate's return type. /// The delegate to invoke. + /// The argument to pass to the delegate. /// The delegate's return value. /// /// This method invokes the specified delegate, passing in the memory address of the view's /// contents. This memory address is valid only while the delegate is executing. The /// delegate must not access memory outside the view's range. /// - T InvokeWithDirectAccess(Func func); + TResult InvokeWithDirectAccess(Func func, in TArg arg); } } diff --git a/ClearScript/JavaScript/IJavaScriptEngine.NetStandard.cs b/ClearScript/JavaScript/IJavaScriptEngine.NetStandard.cs deleted file mode 100644 index 227fcc55..00000000 --- a/ClearScript/JavaScript/IJavaScriptEngine.NetStandard.cs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System.Threading.Tasks; - -namespace Microsoft.ClearScript.JavaScript -{ - internal partial interface IJavaScriptEngine - { - object CreatePromiseForValueTask(ValueTask valueTask); - object CreatePromiseForValueTask(ValueTask valueTask); - } -} diff --git a/ClearScript/JavaScript/IJavaScriptEngine.cs b/ClearScript/JavaScript/IJavaScriptEngine.cs index c7d2f9ab..fad6f720 100644 --- a/ClearScript/JavaScript/IJavaScriptEngine.cs +++ b/ClearScript/JavaScript/IJavaScriptEngine.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. using System.Threading.Tasks; @@ -16,6 +16,9 @@ internal partial interface IJavaScriptEngine : IScriptEngine object CreatePromiseForTask(Task task); object CreatePromiseForTask(Task task); + object CreatePromiseForValueTask(ValueTask valueTask); + object CreatePromiseForValueTask(ValueTask valueTask); + Task CreateTaskForPromise(ScriptObject promise); } } diff --git a/ClearScript/JavaScript/ITypedArray.cs b/ClearScript/JavaScript/ITypedArray.cs index 3153fbc9..92161879 100644 --- a/ClearScript/JavaScript/ITypedArray.cs +++ b/ClearScript/JavaScript/ITypedArray.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. +using System; + namespace Microsoft.ClearScript.JavaScript { /// @@ -15,6 +17,8 @@ public interface ITypedArray : IArrayBufferView ulong Length { get; } } + // ReSharper disable GrammarMistakeInComment + /// /// Represents a JavaScript typed array. /// @@ -76,7 +80,7 @@ public interface ITypedArray : IArrayBufferView /// /// /// - public interface ITypedArray : ITypedArray + public interface ITypedArray : ITypedArray where T : unmanaged { /// /// Creates an array containing a copy of the typed array's contents. @@ -94,6 +98,16 @@ public interface ITypedArray : ITypedArray /// The number of elements copied. ulong Read(ulong index, ulong length, T[] destination, ulong destinationIndex); + /// + /// Copies elements from the typed array into the specified span. + /// + /// The index within the typed array of the first element to copy. + /// The maximum number of elements to copy. + /// The span into which to copy the elements. + /// The index within at which to store the first copied element. + /// The number of elements copied. + ulong Read(ulong index, ulong length, Span destination, ulong destinationIndex); + /// /// Copies elements from the specified array into the typed array. /// @@ -103,5 +117,17 @@ public interface ITypedArray : ITypedArray /// The index within the typed array at which to store the first copied element. /// The number of elements copied. ulong Write(T[] source, ulong sourceIndex, ulong length, ulong index); + + /// + /// Copies elements from the specified span into the typed array. + /// + /// The span from which to copy the elements. + /// The index within of the first element to copy. + /// The maximum number of elements to copy. + /// The index within the typed array at which to store the first copied element. + /// The number of elements copied. + ulong Write(ReadOnlySpan source, ulong sourceIndex, ulong length, ulong index); } + + // ReSharper restore GrammarMistakeInComment } diff --git a/ClearScript/JavaScript/JavaScriptExtensions.NetStandard.cs b/ClearScript/JavaScript/JavaScriptExtensions.NetStandard.cs deleted file mode 100644 index 0aaa4412..00000000 --- a/ClearScript/JavaScript/JavaScriptExtensions.NetStandard.cs +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.ClearScript.Util; - -namespace Microsoft.ClearScript.JavaScript -{ - public static partial class JavaScriptExtensions - { - /// - /// Converts a instance to a - /// promise - /// for use with script code currently running on the calling thread. - /// - /// The task's result type. - /// The task to convert to a promise. - /// A promise that represents the task's asynchronous operation. - /// - /// This method is not available on .NET Framework or Universal Windows Platform (UWP). - /// - public static object ToPromise(this ValueTask valueTask) - { - return valueTask.ToPromise(ScriptEngine.Current); - } - - /// - /// Converts a instance to a - /// promise - /// for use with script code running in the specified script engine. - /// - /// The task's result type. - /// The task to convert to a promise. - /// The script engine in which the promise will be used. - /// A promise that represents the task's asynchronous operation. - /// - /// This method is not available on .NET Framework or Universal Windows Platform (UWP). - /// - public static object ToPromise(this ValueTask valueTask, ScriptEngine engine) - { - MiscHelpers.VerifyNonNullArgument(valueTask, nameof(valueTask)); - MiscHelpers.VerifyNonNullArgument(engine, nameof(engine)); - - var javaScriptEngine = engine as IJavaScriptEngine; - if ((javaScriptEngine == null) || (javaScriptEngine.BaseLanguageVersion < 6)) - { - throw new NotSupportedException("The script engine does not support promises"); - } - - return javaScriptEngine.CreatePromiseForValueTask(valueTask); - } - - /// - /// Converts a instance to a - /// promise - /// for use with script code currently running on the calling thread. - /// - /// The task to convert to a promise. - /// A promise that represents the task's asynchronous operation. - /// - /// This method is not available on .NET Framework or Universal Windows Platform (UWP). - /// - public static object ToPromise(this ValueTask valueTask) - { - return valueTask.ToPromise(ScriptEngine.Current); - } - - /// - /// Converts a instance to a - /// promise - /// for use with script code running in the specified script engine. - /// - /// The task to convert to a promise. - /// The script engine in which the promise will be used. - /// A promise that represents the task's asynchronous operation. - /// - /// This method is not available on .NET Framework or Universal Windows Platform (UWP). - /// - public static object ToPromise(this ValueTask valueTask, ScriptEngine engine) - { - MiscHelpers.VerifyNonNullArgument(valueTask, nameof(valueTask)); - MiscHelpers.VerifyNonNullArgument(engine, nameof(engine)); - - var javaScriptEngine = engine as IJavaScriptEngine; - if ((javaScriptEngine == null) || (javaScriptEngine.BaseLanguageVersion < 6)) - { - throw new NotSupportedException("The script engine does not support promises"); - } - - return javaScriptEngine.CreatePromiseForValueTask(valueTask); - } - - /// - /// Supports managed asynchronous iteration over an - /// async-iterable - /// script object. - /// - /// An async-iterable script object (see remarks). - /// An IAsyncEnumerator<Object> implementation that supports managed asynchronous iteration over . - /// - /// If the argument implements IAsyncEnumerator<Object>, this method returns it as is. - /// - public static IAsyncEnumerable ToAsyncEnumerable(this object asyncIterable) - { - MiscHelpers.VerifyNonNullArgument(asyncIterable, nameof(asyncIterable)); - return asyncIterable as IAsyncEnumerable ?? asyncIterable.ToAsyncEnumerableInternal(); - } - - private static async IAsyncEnumerable ToAsyncEnumerableInternal(this object asyncIterable) - { - if (asyncIterable is IEnumerable objectEnumerable) - { - foreach (var item in objectEnumerable) - { - yield return item; - } - } - else if (asyncIterable is ScriptObject scriptObject) - { - if (scriptObject.Engine is IJavaScriptEngine javaScriptEngine && (javaScriptEngine.BaseLanguageVersion >= 6)) - { - var engineInternal = (ScriptObject)javaScriptEngine.Global["EngineInternal"]; - if (engineInternal.InvokeMethod("getAsyncIterator", scriptObject) is ScriptObject asyncIterator) - { - while (await asyncIterator.InvokeMethod("next").ToTask().ConfigureAwait(false) is ScriptObject result && !Equals(result["done"], true)) - { - yield return result["value"]; - } - } - else if (engineInternal.InvokeMethod("getIterator", scriptObject) is ScriptObject iterator) - { - while (iterator.InvokeMethod("next") is ScriptObject result && !Equals(result["done"], true)) - { - yield return result["value"]; - } - } - else - { - throw new ArgumentException("The object is not async-iterable", nameof(asyncIterable)); - } - } - else - { - throw new NotSupportedException("The script engine does not support async iteration"); - } - } - else if (asyncIterable is IEnumerable enumerable) - { - foreach (var item in enumerable) - { - yield return item; - } - } - else - { - throw new ArgumentException("The object is not async-iterable", nameof(asyncIterable)); - } - } - } -} diff --git a/ClearScript/JavaScript/JavaScriptExtensions.cs b/ClearScript/JavaScript/JavaScriptExtensions.cs index 862d079e..9cc76076 100644 --- a/ClearScript/JavaScript/JavaScriptExtensions.cs +++ b/ClearScript/JavaScript/JavaScriptExtensions.cs @@ -44,7 +44,7 @@ public static object ToPromise(this Task task, ScriptEngine engine) MiscHelpers.VerifyNonNullArgument(engine, nameof(engine)); var javaScriptEngine = engine as IJavaScriptEngine; - if ((javaScriptEngine == null) || (javaScriptEngine.BaseLanguageVersion < 6)) + if ((javaScriptEngine is null) || (javaScriptEngine.BaseLanguageVersion < 6)) { throw new NotSupportedException("The script engine does not support promises"); } @@ -78,7 +78,7 @@ public static object ToPromise(this Task task, ScriptEngine engine) MiscHelpers.VerifyNonNullArgument(engine, nameof(engine)); var javaScriptEngine = engine as IJavaScriptEngine; - if ((javaScriptEngine == null) || (javaScriptEngine.BaseLanguageVersion < 6)) + if ((javaScriptEngine is null) || (javaScriptEngine.BaseLanguageVersion < 6)) { throw new NotSupportedException("The script engine does not support promises"); } @@ -86,6 +86,76 @@ public static object ToPromise(this Task task, ScriptEngine engine) return javaScriptEngine.CreatePromiseForTask(task); } + /// + /// Converts a instance to a + /// promise + /// for use with script code currently running on the calling thread. + /// + /// The task's result type. + /// The task to convert to a promise. + /// A promise that represents the task's asynchronous operation. + public static object ToPromise(this ValueTask valueTask) + { + return valueTask.ToPromise(ScriptEngine.Current); + } + + /// + /// Converts a instance to a + /// promise + /// for use with script code running in the specified script engine. + /// + /// The task's result type. + /// The task to convert to a promise. + /// The script engine in which the promise will be used. + /// A promise that represents the task's asynchronous operation. + public static object ToPromise(this ValueTask valueTask, ScriptEngine engine) + { + MiscHelpers.VerifyNonNullArgument(valueTask, nameof(valueTask)); + MiscHelpers.VerifyNonNullArgument(engine, nameof(engine)); + + var javaScriptEngine = engine as IJavaScriptEngine; + if ((javaScriptEngine is null) || (javaScriptEngine.BaseLanguageVersion < 6)) + { + throw new NotSupportedException("The script engine does not support promises"); + } + + return javaScriptEngine.CreatePromiseForValueTask(valueTask); + } + + /// + /// Converts a instance to a + /// promise + /// for use with script code currently running on the calling thread. + /// + /// The task to convert to a promise. + /// A promise that represents the task's asynchronous operation. + public static object ToPromise(this ValueTask valueTask) + { + return valueTask.ToPromise(ScriptEngine.Current); + } + + /// + /// Converts a instance to a + /// promise + /// for use with script code running in the specified script engine. + /// + /// The task to convert to a promise. + /// The script engine in which the promise will be used. + /// A promise that represents the task's asynchronous operation. + public static object ToPromise(this ValueTask valueTask, ScriptEngine engine) + { + MiscHelpers.VerifyNonNullArgument(valueTask, nameof(valueTask)); + MiscHelpers.VerifyNonNullArgument(engine, nameof(engine)); + + var javaScriptEngine = engine as IJavaScriptEngine; + if ((javaScriptEngine is null) || (javaScriptEngine.BaseLanguageVersion < 6)) + { + throw new NotSupportedException("The script engine does not support promises"); + } + + return javaScriptEngine.CreatePromiseForValueTask(valueTask); + } + /// /// Converts a /// promise @@ -127,16 +197,32 @@ public static IEnumerable ToEnumerable(this object iterable) return iterable as IEnumerable ?? iterable.ToEnumerableInternal(); } + /// + /// Supports managed asynchronous iteration over an + /// async-iterable + /// script object. + /// + /// An async-iterable script object (see remarks). + /// An IAsyncEnumerator<Object> implementation that supports managed asynchronous iteration over . + /// + /// If the argument implements IAsyncEnumerator<Object>, this method returns it as is. + /// + public static IAsyncEnumerable ToAsyncEnumerable(this object asyncIterable) + { + MiscHelpers.VerifyNonNullArgument(asyncIterable, nameof(asyncIterable)); + return asyncIterable as IAsyncEnumerable ?? asyncIterable.ToAsyncEnumerableInternal(); + } + private static Task ToTaskInternal(this object promise) { var scriptObject = promise as ScriptObject; - if (scriptObject == null) + if (scriptObject is null) { throw new ArgumentException("The object is not a promise", nameof(promise)); } var javaScriptEngine = scriptObject.Engine as IJavaScriptEngine; - if ((javaScriptEngine == null) || (javaScriptEngine.BaseLanguageVersion < 6)) + if ((javaScriptEngine is null) || (javaScriptEngine.BaseLanguageVersion < 6)) { throw new NotSupportedException("The script engine does not support promises"); } @@ -180,5 +266,56 @@ private static IEnumerable ToEnumerableInternal(this object iterable) throw new ArgumentException("The object is not iterable", nameof(iterable)); } } + + private static async IAsyncEnumerable ToAsyncEnumerableInternal(this object asyncIterable) + { + if (asyncIterable is IEnumerable objectEnumerable) + { + foreach (var item in objectEnumerable) + { + yield return item; + } + } + else if (asyncIterable is ScriptObject scriptObject) + { + if (scriptObject.Engine is IJavaScriptEngine javaScriptEngine && (javaScriptEngine.BaseLanguageVersion >= 6)) + { + var engineInternal = (ScriptObject)javaScriptEngine.Global["EngineInternal"]; + if (engineInternal.InvokeMethod("getAsyncIterator", scriptObject) is ScriptObject asyncIterator) + { + while (await asyncIterator.InvokeMethod("next").ToTask().ConfigureAwait(false) is ScriptObject result && !Equals(result["done"], true)) + { + yield return result["value"]; + } + } + else if (engineInternal.InvokeMethod("getIterator", scriptObject) is ScriptObject iterator) + { + while (iterator.InvokeMethod("next") is ScriptObject result && !Equals(result["done"], true)) + { + yield return result["value"]; + } + } + else + { + throw new ArgumentException("The object is not async-iterable", nameof(asyncIterable)); + } + } + else + { + throw new NotSupportedException("The script engine does not support async iteration"); + } + } + else if (asyncIterable is IEnumerable enumerable) + { + foreach (var item in enumerable) + { + yield return item; + } + } + else + { + throw new ArgumentException("The object is not async-iterable", nameof(asyncIterable)); + } + } } } diff --git a/ClearScript/JavaScript/JavaScriptObjectFlags.cs b/ClearScript/JavaScript/JavaScriptObjectFlags.cs index d5363fbf..06925383 100644 --- a/ClearScript/JavaScript/JavaScriptObjectFlags.cs +++ b/ClearScript/JavaScript/JavaScriptObjectFlags.cs @@ -39,6 +39,27 @@ public enum JavaScriptObjectFlags /// or /// async generator function. /// - Generator = 0x00000004 + Generator = 0x00000004, + + /// + /// Indicates that the object is a + /// promise + /// that is not yet settled. If the object is a promise and this attribute is not present, + /// then the promise is fulfilled unless is present. + /// + Pending = 0x00000008, + + /// + /// Indicates that the object is a rejected + /// promise. + /// This attribute has no meaning if is present. + /// + Rejected = 0x00000010 + } + + internal static class JavaScriptObjectFlagsHelpers + { + public static bool HasAllFlags(this JavaScriptObjectFlags value, JavaScriptObjectFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this JavaScriptObjectFlags value, JavaScriptObjectFlags flags) => (value & flags) != 0; } } diff --git a/ClearScript/JavaScript/JsonModuleManager.cs b/ClearScript/JavaScript/JsonModuleManager.cs index 1c113839..01bde056 100644 --- a/ClearScript/JavaScript/JsonModuleManager.cs +++ b/ClearScript/JavaScript/JsonModuleManager.cs @@ -11,7 +11,7 @@ namespace Microsoft.ClearScript.JavaScript internal sealed class JsonModuleManager { private readonly ScriptEngine engine; - private readonly List moduleCache = new List(); + private readonly List moduleCache = new(); public JsonModuleManager(ScriptEngine engine) { @@ -25,7 +25,7 @@ public Module GetOrCreateModule(UniqueDocumentInfo documentInfo, string json) var jsonDigest = json.GetDigest(); var cachedModule = GetCachedModule(documentInfo, jsonDigest); - if (cachedModule != null) + if (cachedModule is not null) { return cachedModule; } @@ -52,7 +52,7 @@ private Module GetCachedModule(UniqueDocumentInfo documentInfo, UIntPtr jsonDige private Module CacheModule(Module module) { var cachedModule = moduleCache.FirstOrDefault(testModule => (testModule.DocumentInfo.UniqueId == module.DocumentInfo.UniqueId) && (testModule.JsonDigest == module.JsonDigest)); - if (cachedModule != null) + if (cachedModule is not null) { return cachedModule; } diff --git a/ClearScript/JavaScript/ModuleCategory.cs b/ClearScript/JavaScript/ModuleCategory.cs index e632ad88..ef70e672 100644 --- a/ClearScript/JavaScript/ModuleCategory.cs +++ b/ClearScript/JavaScript/ModuleCategory.cs @@ -22,7 +22,7 @@ public static class ModuleCategory private sealed class StandardModule : DocumentCategory { - public static readonly StandardModule Instance = new StandardModule(); + public static readonly StandardModule Instance = new(); private StandardModule() { @@ -52,7 +52,7 @@ public override string ToString() private sealed class CommonJSModule : DocumentCategory { - public static readonly CommonJSModule Instance = new CommonJSModule(); + public static readonly CommonJSModule Instance = new(); private CommonJSModule() { diff --git a/ClearScript/Properties/AssemblyInfo.Core.cs b/ClearScript/Properties/AssemblyInfo.Core.cs index d8a69089..a19649c4 100644 --- a/ClearScript/Properties/AssemblyInfo.Core.cs +++ b/ClearScript/Properties/AssemblyInfo.Core.cs @@ -18,15 +18,15 @@ [assembly: InternalsVisibleTo("ClearScriptTest")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("7.4.5")] -[assembly: AssemblyFileVersion("7.4.5")] -[assembly: AssemblyInformationalVersion("7.4.5")] +[assembly: AssemblyVersion("7.5.0")] +[assembly: AssemblyFileVersion("7.5.0")] +[assembly: AssemblyInformationalVersion("7.5.0")] namespace Microsoft.ClearScript.Properties { internal static class ClearScriptVersion { - public const string Triad = "7.4.5"; - public const string Informational = "7.4.5"; + public const string Triad = "7.5.0"; + public const string Informational = "7.5.0"; } } diff --git a/ClearScript/Properties/AssemblyInfo.V8.ICUData.cs b/ClearScript/Properties/AssemblyInfo.V8.ICUData.cs index 10c1e3a0..99b3cb15 100644 --- a/ClearScript/Properties/AssemblyInfo.V8.ICUData.cs +++ b/ClearScript/Properties/AssemblyInfo.V8.ICUData.cs @@ -15,6 +15,6 @@ [assembly: InternalsVisibleTo("ClearScript.V8")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("7.4.5")] -[assembly: AssemblyFileVersion("7.4.5")] -[assembly: AssemblyInformationalVersion("7.4.5")] +[assembly: AssemblyVersion("7.5.0")] +[assembly: AssemblyFileVersion("7.5.0")] +[assembly: AssemblyInformationalVersion("7.5.0")] diff --git a/ClearScript/Properties/AssemblyInfo.V8.cs b/ClearScript/Properties/AssemblyInfo.V8.cs index 1dd534ae..8e7c5426 100644 --- a/ClearScript/Properties/AssemblyInfo.V8.cs +++ b/ClearScript/Properties/AssemblyInfo.V8.cs @@ -15,6 +15,6 @@ [assembly: InternalsVisibleTo("ClearScriptTest")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("7.4.5")] -[assembly: AssemblyFileVersion("7.4.5")] -[assembly: AssemblyInformationalVersion("7.4.5")] +[assembly: AssemblyVersion("7.5.0")] +[assembly: AssemblyFileVersion("7.5.0")] +[assembly: AssemblyInformationalVersion("7.5.0")] diff --git a/ClearScript/Properties/AssemblyInfo.Windows.Core.cs b/ClearScript/Properties/AssemblyInfo.Windows.Core.cs index 2c7ce94d..2e01f30f 100644 --- a/ClearScript/Properties/AssemblyInfo.Windows.Core.cs +++ b/ClearScript/Properties/AssemblyInfo.Windows.Core.cs @@ -16,6 +16,6 @@ [assembly: InternalsVisibleTo("ClearScriptTest")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("7.4.5")] -[assembly: AssemblyFileVersion("7.4.5")] -[assembly: AssemblyInformationalVersion("7.4.5")] +[assembly: AssemblyVersion("7.5.0")] +[assembly: AssemblyFileVersion("7.5.0")] +[assembly: AssemblyInformationalVersion("7.5.0")] diff --git a/ClearScript/Properties/AssemblyInfo.Windows.cs b/ClearScript/Properties/AssemblyInfo.Windows.cs index a4e269be..6784b89b 100644 --- a/ClearScript/Properties/AssemblyInfo.Windows.cs +++ b/ClearScript/Properties/AssemblyInfo.Windows.cs @@ -15,6 +15,6 @@ [assembly: InternalsVisibleTo("ClearScriptTest")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("7.4.5")] -[assembly: AssemblyFileVersion("7.4.5")] -[assembly: AssemblyInformationalVersion("7.4.5")] +[assembly: AssemblyVersion("7.5.0")] +[assembly: AssemblyFileVersion("7.5.0")] +[assembly: AssemblyInformationalVersion("7.5.0")] diff --git a/ClearScript/PropertyBag.cs b/ClearScript/PropertyBag.cs index bd8068bd..941dbe9f 100644 --- a/ClearScript/PropertyBag.cs +++ b/ClearScript/PropertyBag.cs @@ -36,7 +36,7 @@ public class PropertyBag : IPropertyBag, INotifyPropertyChanged, IScriptableObje private readonly IDictionary dictionary; private readonly bool isReadOnly; - private readonly ConcurrentWeakSet engineSet = new ConcurrentWeakSet(); + private readonly ConcurrentWeakSet engineSet = new(); #endregion @@ -188,6 +188,7 @@ private void NotifyExposedToScriptCode(object value) [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes", Justification = "This member requires explicit implementation to resolve ambiguity.")] IEnumerator IEnumerable.GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return dictionary.GetEnumerator(); } @@ -198,6 +199,7 @@ IEnumerator IEnumerable.GetEnumerator() [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes", Justification = "This member requires explicit implementation to resolve ambiguity.")] IEnumerator> IEnumerable>.GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return dictionary.GetEnumerator(); } @@ -279,7 +281,7 @@ public void Add(string key, object value) /// Removes a property from the . /// /// The name of the property to remove. - /// True if the property was successfully found and removed, false otherwise. + /// True if the property was found and removed, false otherwise. public bool Remove(string key) { CheckReadOnly(); @@ -339,7 +341,7 @@ public object this[string key] [SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes", Justification = "This member is not expected to be re-implemented in derived classes.")] void IScriptableObject.OnExposedToScriptCode(ScriptEngine engine) { - if ((engine != null) && engineSet.TryAdd(engine)) + if ((engine is not null) && engineSet.TryAdd(engine)) { foreach (var scriptableObject in Values.OfType()) { diff --git a/ClearScript/ScriptEngine.cs b/ClearScript/ScriptEngine.cs index b4a75e37..55bb5240 100644 --- a/ClearScript/ScriptEngine.cs +++ b/ClearScript/ScriptEngine.cs @@ -24,10 +24,10 @@ public abstract class ScriptEngine : IScriptEngine, IHostContext private CustomAttributeLoader customAttributeLoader; private DocumentSettings documentSettings; - private readonly DocumentSettings defaultDocumentSettings = new DocumentSettings(); + private readonly DocumentSettings defaultDocumentSettings = new(); private static readonly IUniqueNameManager nameManager = new UniqueNameManager(); - private static readonly object nullHostObjectProxy = new object(); + private static readonly object nullHostObjectProxy = new(); [ThreadStatic] private static ScriptEngine currentEngine; #endregion @@ -139,15 +139,18 @@ public bool DisableExtensionMethods var newExtensionMethodTable = value ? emptyExtensionMethodTable : realExtensionMethodTable; if (newExtensionMethodTable != extensionMethodTable) { - ScriptInvoke(() => - { - if (newExtensionMethodTable != extensionMethodTable) + ScriptInvoke( + static ctx => { - extensionMethodTable = newExtensionMethodTable; - ClearMethodBindCache(); - OnAccessSettingsChanged(); - } - }); + if (ctx.newExtensionMethodTable != ctx.self.extensionMethodTable) + { + ctx.self.extensionMethodTable = ctx.newExtensionMethodTable; + ctx.self.ClearMethodBindCache(); + ctx.self.OnAccessSettingsChanged(); + } + }, + (self: this, newExtensionMethodTable) + ); } } } @@ -182,6 +185,9 @@ public bool DisableExtensionMethods /// public object UndefinedImportValue { get; set; } = Undefined.Value; + /// + public object NullImportValue { get; set; } + /// public object NullExportValue { get; set; } @@ -344,11 +350,11 @@ public void AddHostType(string itemName, HostItemFlags flags, string typeName, s /// public void AddHostTypes(params Type[] types) { - if (types != null) + if (types is not null) { foreach (var type in types) { - if (type != null) + if (type is not null) { AddHostType(type); } @@ -536,13 +542,13 @@ internal object PrepareResult(T result, ScriptMemberFlags flags, bool isListI internal virtual object PrepareResult(object result, Type type, ScriptMemberFlags flags, bool isListIndexResult) { - var wrapNull = flags.HasFlag(ScriptMemberFlags.WrapNullResult) || EnableNullResultWrapping; - if (wrapNull && (result == null)) + var wrapNull = flags.HasAllFlags(ScriptMemberFlags.WrapNullResult) || EnableNullResultWrapping; + if (wrapNull && (result is null)) { return HostObject.WrapResult(null, type, true); } - if (!flags.HasFlag(ScriptMemberFlags.ExposeRuntimeType) && !DisableTypeRestriction && (!isListIndexResult || !DisableListIndexTypeRestriction)) + if (!flags.HasAllFlags(ScriptMemberFlags.ExposeRuntimeType) && !DisableTypeRestriction && (!isListIndexResult || !DisableListIndexTypeRestriction)) { return HostObject.WrapResult(result, type, wrapNull); } @@ -602,7 +608,7 @@ internal string GetCommandResultString(object result) return null; } - if (marshaledResult == null) + if (marshaledResult is null) { return "[null]"; } @@ -626,7 +632,7 @@ internal void RequestInterrupt() // method provides an alternate mechanism based on IActiveScriptSiteInterruptPoll. var tempScriptFrame = CurrentScriptFrame; - if (tempScriptFrame != null) + if (tempScriptFrame is not null) { tempScriptFrame.InterruptRequested = true; } @@ -655,20 +661,30 @@ internal virtual void HostInvoke(Action action) action(); } - internal virtual T HostInvoke(Func func) + internal virtual void HostInvoke(Action action, in TArg arg) + { + action(arg); + } + + internal virtual TResult HostInvoke(Func func) { return func(); } + internal virtual TResult HostInvoke(Func func, in TArg arg) + { + return func(arg); + } + #endregion #region script-side invocation internal ScriptFrame CurrentScriptFrame { get; private set; } - internal IDisposable CreateEngineScope() + internal ValueScope CreateEngineScope() { - return Scope.Create(() => MiscHelpers.Exchange(ref currentEngine, this), previousEngine => currentEngine = previousEngine); + return ScopeFactory.Create(static engine => MiscHelpers.Exchange(ref currentEngine, engine), static previousEngine => currentEngine = previousEngine, this); } internal virtual void ScriptInvoke(Action action) @@ -679,7 +695,15 @@ internal virtual void ScriptInvoke(Action action) } } - internal virtual T ScriptInvoke(Func func) + internal virtual void ScriptInvoke(Action action, in TArg arg) + { + using (CreateEngineScope()) + { + ScriptInvokeInternal(action, arg); + } + } + + internal virtual TResult ScriptInvoke(Func func) { using (CreateEngineScope()) { @@ -687,6 +711,14 @@ internal virtual T ScriptInvoke(Func func) } } + internal virtual TResult ScriptInvoke(Func func, in TArg arg) + { + using (CreateEngineScope()) + { + return ScriptInvokeInternal(func, arg); + } + } + internal void ScriptInvokeInternal(Action action) { var previousScriptFrame = CurrentScriptFrame; @@ -702,7 +734,22 @@ internal void ScriptInvokeInternal(Action action) } } - internal T ScriptInvokeInternal(Func func) + internal void ScriptInvokeInternal(Action action, in TArg arg) + { + var previousScriptFrame = CurrentScriptFrame; + CurrentScriptFrame = new ScriptFrame(); + + try + { + action(arg); + } + finally + { + CurrentScriptFrame = previousScriptFrame; + } + } + + internal TResult ScriptInvokeInternal(Func func) { var previousScriptFrame = CurrentScriptFrame; CurrentScriptFrame = new ScriptFrame(); @@ -717,9 +764,24 @@ internal T ScriptInvokeInternal(Func func) } } + internal TResult ScriptInvokeInternal(Func func, in TArg arg) + { + var previousScriptFrame = CurrentScriptFrame; + CurrentScriptFrame = new ScriptFrame(); + + try + { + return func(arg); + } + finally + { + CurrentScriptFrame = previousScriptFrame; + } + } + internal void ThrowScriptError() { - if (CurrentScriptFrame != null) + if (CurrentScriptFrame is not null) { ThrowScriptError(CurrentScriptFrame.ScriptError); } @@ -727,7 +789,7 @@ internal void ThrowScriptError() internal static void ThrowScriptError(IScriptEngineException scriptError) { - if (scriptError != null) + if (scriptError is not null) { if (scriptError is ScriptInterruptedException) { @@ -756,7 +818,7 @@ internal virtual T SyncInvoke(Func func) #region enumeration settings - internal object EnumerationSettingsToken { get; private set; } = new object(); + internal object EnumerationSettingsToken { get; private set; } = new(); internal void OnEnumerationSettingsChanged() { @@ -767,7 +829,7 @@ internal void OnEnumerationSettingsChanged() #region extension method table - private static readonly ExtensionMethodTable emptyExtensionMethodTable = new ExtensionMethodTable(); + private static readonly ExtensionMethodTable emptyExtensionMethodTable = new(); private readonly ExtensionMethodTable realExtensionMethodTable; private ExtensionMethodTable extensionMethodTable; @@ -797,7 +859,7 @@ internal void RebuildExtensionMethodSummary() #region constructor bind cache - private readonly Dictionary constructorBindCache = new Dictionary(); + private readonly Dictionary constructorBindCache = new(); internal void CacheConstructorBindResult(BindSignature signature, ConstructorInfo result) { @@ -818,7 +880,7 @@ private void ClearConstructorBindCache() #region method bind cache - private readonly Dictionary methodBindCache = new Dictionary(); + private readonly Dictionary methodBindCache = new(); internal void CacheMethodBindResult(BindSignature signature, object result) { @@ -839,8 +901,8 @@ private void ClearMethodBindCache() #region property bind cache - private readonly Dictionary propertyGetBindCache = new Dictionary(); - private readonly Dictionary propertySetBindCache = new Dictionary(); + private readonly Dictionary propertyGetBindCache = new(); + private readonly Dictionary propertySetBindCache = new(); internal void CachePropertyGetBindResult(BindSignature signature, MemberInfo property) { @@ -872,14 +934,19 @@ private void ClearPropertyBindCache() #region host item cache - private readonly ConditionalWeakTable> hostObjectHostItemCache = new ConditionalWeakTable>(); - private readonly ConditionalWeakTable> hostTypeHostItemCache = new ConditionalWeakTable>(); + private readonly ConditionalWeakTable>> hostObjectHostItemCache = new(); + private readonly ConditionalWeakTable>> hostTypeHostItemCache = new(); + + internal HostItem GetOrCreateHostItem(object target, Type type, bool isCanonicalRef, HostItemFlags flags, HostItem.CreateFunc createHostItem) + { + return GetOrCreateHostItemForHostObject(null, target, type, isCanonicalRef, flags, createHostItem); + } internal HostItem GetOrCreateHostItem(HostTarget target, HostItemFlags flags, HostItem.CreateFunc createHostItem) { if (target is HostObject hostObject) { - return GetOrCreateHostItemForHostObject(hostObject, hostObject.Target, flags, createHostItem); + return GetOrCreateHostItemForHostObject(hostObject, hostObject.Target, hostObject.Type, true, flags, createHostItem); } if (target is HostType hostType) @@ -889,46 +956,45 @@ internal HostItem GetOrCreateHostItem(HostTarget target, HostItemFlags flags, Ho if (target is HostMethod hostMethod) { - return GetOrCreateHostItemForHostObject(hostMethod, hostMethod, flags, createHostItem); + return GetOrCreateHostItemForHostObject(hostMethod, hostMethod, hostMethod.Type, true, flags, createHostItem); } if (target is HostVariable hostVariable) { - return GetOrCreateHostItemForHostObject(hostVariable, hostVariable, flags, createHostItem); + return GetOrCreateHostItemForHostObject(hostVariable, hostVariable, hostVariable.Type, true, flags, createHostItem); } if (target is HostIndexedProperty hostIndexedProperty) { - return GetOrCreateHostItemForHostObject(hostIndexedProperty, hostIndexedProperty, flags, createHostItem); + return GetOrCreateHostItemForHostObject(hostIndexedProperty, hostIndexedProperty, hostIndexedProperty.Type, true, flags, createHostItem); } return CreateHostItem(target, flags, createHostItem, null); } - private HostItem GetOrCreateHostItemForHostObject(HostTarget hostTarget, object target, HostItemFlags flags, HostItem.CreateFunc createHostItem) + private HostItem GetOrCreateHostItemForHostObject(HostTarget hostTarget, object target, Type type, bool isCanonicalRef, HostItemFlags flags, HostItem.CreateFunc createHostItem) { var cacheEntry = hostObjectHostItemCache.GetOrCreateValue(target ?? nullHostObjectProxy); - List activeWeakRefs = null; + List> activeWeakRefs = null; var staleWeakRefCount = 0; foreach (var weakRef in cacheEntry) { - var hostItem = weakRef.Target as HostItem; - if (hostItem == null) + if (!weakRef.TryGetTarget(out var hostItem)) { staleWeakRefCount++; } else { - if ((hostItem.Target.Type == hostTarget.Type) && (hostItem.Flags == flags)) + if ((hostItem.Target.Type == type) && (hostItem.Flags == flags)) { return hostItem; } - if (activeWeakRefs == null) + if (activeWeakRefs is null) { - activeWeakRefs = new List(cacheEntry.Count); + activeWeakRefs = new List>(cacheEntry.Count); } activeWeakRefs.Add(weakRef); @@ -938,14 +1004,14 @@ private HostItem GetOrCreateHostItemForHostObject(HostTarget hostTarget, object if (staleWeakRefCount > 4) { cacheEntry.Clear(); - if (activeWeakRefs != null) + if (activeWeakRefs is not null) { cacheEntry.Capacity = activeWeakRefs.Count + 1; cacheEntry.AddRange(activeWeakRefs); } } - return CreateHostItem(hostTarget, flags, createHostItem, cacheEntry); + return CreateHostItem(hostTarget ?? HostObject.Wrap(target, type, isCanonicalRef), flags, createHostItem, cacheEntry); } private HostItem GetOrCreateHostItemForHostType(HostType hostType, HostItemFlags flags, HostItem.CreateFunc createHostItem) @@ -957,13 +1023,12 @@ private HostItem GetOrCreateHostItemForHostType(HostType hostType, HostItemFlags var cacheEntry = hostTypeHostItemCache.GetOrCreateValue(hostType.Types[0]); - List activeWeakRefs = null; + List> activeWeakRefs = null; var staleWeakRefCount = 0; foreach (var weakRef in cacheEntry) { - var hostItem = weakRef.Target as HostItem; - if (hostItem == null) + if (!weakRef.TryGetTarget(out var hostItem)) { staleWeakRefCount++; } @@ -974,9 +1039,9 @@ private HostItem GetOrCreateHostItemForHostType(HostType hostType, HostItemFlags return hostItem; } - if (activeWeakRefs == null) + if (activeWeakRefs is null) { - activeWeakRefs = new List(cacheEntry.Count); + activeWeakRefs = new List>(cacheEntry.Count); } activeWeakRefs.Add(weakRef); @@ -986,7 +1051,7 @@ private HostItem GetOrCreateHostItemForHostType(HostType hostType, HostItemFlags if (staleWeakRefCount > 4) { cacheEntry.Clear(); - if (activeWeakRefs != null) + if (activeWeakRefs is not null) { cacheEntry.Capacity = activeWeakRefs.Count + 1; cacheEntry.AddRange(activeWeakRefs); @@ -996,13 +1061,13 @@ private HostItem GetOrCreateHostItemForHostType(HostType hostType, HostItemFlags return CreateHostItem(hostType, flags, createHostItem, cacheEntry); } - private HostItem CreateHostItem(HostTarget hostTarget, HostItemFlags flags, HostItem.CreateFunc createHostItem, List cacheEntry) + private HostItem CreateHostItem(HostTarget hostTarget, HostItemFlags flags, HostItem.CreateFunc createHostItem, List> cacheEntry) { var newHostItem = createHostItem(this, hostTarget, flags); - if (cacheEntry != null) + if (cacheEntry is not null) { - cacheEntry.Add(new WeakReference(newHostItem)); + cacheEntry.Add(new WeakReference(newHostItem)); } if (hostTarget.Target is IScriptableObject scriptableObject) @@ -1023,23 +1088,22 @@ private HostItem CreateHostItem(HostTarget hostTarget, HostItemFlags flags, Host #region shared host target member data - internal readonly HostTargetMemberData SharedHostMethodMemberData = new HostTargetMemberData(); - internal readonly HostTargetMemberData SharedHostIndexedPropertyMemberData = new HostTargetMemberData(); - internal readonly HostTargetMemberData SharedScriptMethodMemberData = new HostTargetMemberData(); + internal readonly HostTargetMemberData SharedHostMethodMemberData = new(); + internal readonly HostTargetMemberData SharedHostIndexedPropertyMemberData = new(); + internal readonly HostTargetMemberData SharedScriptMethodMemberData = new(); - private readonly ConditionalWeakTable> sharedHostObjectMemberDataCache = new ConditionalWeakTable>(); + private readonly ConditionalWeakTable>> sharedHostObjectMemberDataCache = new(); internal HostTargetMemberData GetSharedHostObjectMemberData(HostObject target, CustomAttributeLoader targetCustomAttributeLoader, Type targetAccessContext, ScriptAccess targetDefaultAccess, HostTargetFlags targetFlags) { var cacheEntry = sharedHostObjectMemberDataCache.GetOrCreateValue(target.Type); - List activeWeakRefs = null; + List> activeWeakRefs = null; var staleWeakRefCount = 0; foreach (var weakRef in cacheEntry) { - var memberData = weakRef.Target as HostTargetMemberDataWithContext; - if (memberData == null) + if (!weakRef.TryGetTarget(out var memberData)) { staleWeakRefCount++; } @@ -1050,9 +1114,9 @@ internal HostTargetMemberData GetSharedHostObjectMemberData(HostObject target, C return memberData; } - if (activeWeakRefs == null) + if (activeWeakRefs is null) { - activeWeakRefs = new List(cacheEntry.Count); + activeWeakRefs = new List>(cacheEntry.Count); } activeWeakRefs.Add(weakRef); @@ -1062,7 +1126,7 @@ internal HostTargetMemberData GetSharedHostObjectMemberData(HostObject target, C if (staleWeakRefCount > 4) { cacheEntry.Clear(); - if (activeWeakRefs != null) + if (activeWeakRefs is not null) { cacheEntry.Capacity = activeWeakRefs.Count + 1; cacheEntry.AddRange(activeWeakRefs); @@ -1070,7 +1134,7 @@ internal HostTargetMemberData GetSharedHostObjectMemberData(HostObject target, C } var newMemberData = new HostTargetMemberDataWithContext(targetCustomAttributeLoader, targetAccessContext, targetDefaultAccess, targetFlags); - cacheEntry.Add(new WeakReference(newMemberData)); + cacheEntry.Add(new WeakReference(newMemberData)); return newMemberData; } @@ -1078,7 +1142,7 @@ internal HostTargetMemberData GetSharedHostObjectMemberData(HostObject target, C #region event connections - private readonly EventConnectionMap eventConnectionMap = new EventConnectionMap(); + private readonly EventConnectionMap eventConnectionMap = new(); internal EventConnection CreateEventConnection(Type handlerType, object source, EventInfo eventInfo, Delegate handler) { @@ -1171,8 +1235,8 @@ internal sealed class ScriptFrame private sealed class EventConnectionMap : IDisposable { - private readonly HashSet map = new HashSet(); - private readonly InterlockedOneWayFlag disposedFlag = new InterlockedOneWayFlag(); + private readonly HashSet map = new(); + private readonly InterlockedOneWayFlag disposedFlag = new(); internal EventConnection Create(ScriptEngine engine, Type handlerType, object source, EventInfo eventInfo, Delegate handler) { diff --git a/ClearScript/ScriptEngineException.cs b/ClearScript/ScriptEngineException.cs index 81d1a1da..dcc3c592 100644 --- a/ClearScript/ScriptEngineException.cs +++ b/ClearScript/ScriptEngineException.cs @@ -44,7 +44,7 @@ public ScriptEngineException() /// /// The error message. public ScriptEngineException(string message) - : base(MiscHelpers.EnsureNonBlank(message, defaultMessage)) + : base(message.ToNonBlank(defaultMessage)) { errorDetails = base.Message; } @@ -55,7 +55,7 @@ public ScriptEngineException(string message) /// The error message. /// The exception that caused the current exception to be thrown. public ScriptEngineException(string message, Exception innerException) - : base(MiscHelpers.EnsureNonBlank(message, defaultMessage), innerException) + : base(message.ToNonBlank(defaultMessage), innerException) { errorDetails = base.Message; } @@ -75,10 +75,10 @@ protected ScriptEngineException(SerializationInfo info, StreamingContext context } internal ScriptEngineException(string engineName, string message, string errorDetails, int errorCode, bool isFatal, bool executionStarted, object scriptException, Exception innerException) - : base(MiscHelpers.EnsureNonBlank(message, defaultMessage), innerException) + : base(message.ToNonBlank(defaultMessage), innerException) { this.engineName = engineName; - this.errorDetails = MiscHelpers.EnsureNonBlank(errorDetails, base.Message); + this.errorDetails = errorDetails.ToNonBlank(base.Message); this.isFatal = isFatal; this.executionStarted = executionStarted; this.scriptException = scriptException; diff --git a/ClearScript/ScriptInterruptedException.cs b/ClearScript/ScriptInterruptedException.cs index 554c37f0..efb634b8 100644 --- a/ClearScript/ScriptInterruptedException.cs +++ b/ClearScript/ScriptInterruptedException.cs @@ -44,7 +44,7 @@ public ScriptInterruptedException() /// /// The error message. public ScriptInterruptedException(string message) - : base(MiscHelpers.EnsureNonBlank(message, defaultMessage)) + : base(message.ToNonBlank(defaultMessage)) { errorDetails = base.Message; } @@ -55,7 +55,7 @@ public ScriptInterruptedException(string message) /// The error message. /// The exception that caused the current exception to be thrown. public ScriptInterruptedException(string message, Exception innerException) - : base(MiscHelpers.EnsureNonBlank(message, defaultMessage), innerException) + : base(message.ToNonBlank(defaultMessage), innerException) { errorDetails = base.Message; } @@ -75,10 +75,10 @@ protected ScriptInterruptedException(SerializationInfo info, StreamingContext co } internal ScriptInterruptedException(string engineName, string message, string errorDetails, int errorCode, bool isFatal, bool executionStarted, object scriptException, Exception innerException) - : base(MiscHelpers.EnsureNonBlank(message, defaultMessage), innerException) + : base(message.ToNonBlank(defaultMessage), innerException) { this.engineName = engineName; - this.errorDetails = MiscHelpers.EnsureNonBlank(errorDetails, base.Message); + this.errorDetails = errorDetails.ToNonBlank(base.Message); this.isFatal = isFatal; this.executionStarted = executionStarted; this.scriptException = scriptException; diff --git a/ClearScript/ScriptItem.cs b/ClearScript/ScriptItem.cs index a2f9f5fe..e6bb67f2 100644 --- a/ClearScript/ScriptItem.cs +++ b/ClearScript/ScriptItem.cs @@ -23,7 +23,7 @@ internal abstract class ScriptItem : ScriptObject, IExpando, IDynamic, IScriptMa public static void ThrowLastScriptError() { var scriptError = lastScriptError; - if (scriptError != null) + if (scriptError is not null) { if (scriptError is ScriptInterruptedException) { @@ -48,40 +48,43 @@ protected virtual object[] AdjustInvokeArgs(object[] args) private bool TryWrappedBindAndInvoke(DynamicMetaObjectBinder binder, object[] wrappedArgs, out object result) { - object[] args = null; - object[] savedArgs = null; + var ctx = (self: this, binder, wrappedArgs, args: (object[])null, savedArgs: (object[])null, result: (object)null); - object tempResult = null; - var succeeded = Engine.ScriptInvoke(() => - { - args = Engine.MarshalToScript(wrappedArgs); - savedArgs = (object[])args.Clone(); - - if (!TryBindAndInvoke(binder, args, out tempResult)) + var succeeded = Engine.ScriptInvoke( + static pCtx => { - if ((Engine.CurrentScriptFrame != null) && (lastScriptError == null)) + ref var ctx = ref pCtx.AsRef(); + + ctx.args = ctx.self.Engine.MarshalToScript(ctx.wrappedArgs); + ctx.savedArgs = (object[])ctx.args.Clone(); + + if (!ctx.self.TryBindAndInvoke(ctx.binder, ctx.args, out ctx.result)) { - lastScriptError = Engine.CurrentScriptFrame.ScriptError; - } + if ((ctx.self.Engine.CurrentScriptFrame is not null) && (lastScriptError is null)) + { + lastScriptError = ctx.self.Engine.CurrentScriptFrame.ScriptError; + } - return false; - } + return false; + } - return true; - }); + return true; + }, + StructPtr.FromRef(ref ctx) + ); if (succeeded) { - for (var index = 0; index < args.Length; index++) + for (var index = 0; index < ctx.args.Length; index++) { - var arg = args[index]; - if (!ReferenceEquals(arg, savedArgs[index])) + var arg = ctx.args[index]; + if (!ReferenceEquals(arg, ctx.savedArgs[index])) { - wrappedArgs[index] = Engine.MarshalToHost(args[index], false); + wrappedArgs[index] = Engine.MarshalToHost(ctx.args[index], false); } } - result = Engine.MarshalToHost(tempResult, false).ToDynamicResult(Engine); + result = Engine.MarshalToHost(ctx.result, false).ToDynamicResult(Engine); return true; } @@ -92,12 +95,12 @@ private bool TryWrappedBindAndInvoke(DynamicMetaObjectBinder binder, object[] wr private bool TryWrappedInvokeOrInvokeMember(DynamicMetaObjectBinder binder, ParameterInfo[] parameters, object[] args, out object result) { Type[] paramTypes = null; - if ((parameters != null) && (parameters.Length >= args.Length)) + if ((parameters is not null) && (parameters.Length >= args.Length)) { paramTypes = parameters.Skip(parameters.Length - args.Length).Select(param => param.ParameterType).ToArray(); } - if (paramTypes != null) + if (paramTypes is not null) { for (var index = 0; index < paramTypes.Length; index++) { @@ -111,7 +114,7 @@ private bool TryWrappedInvokeOrInvokeMember(DynamicMetaObjectBinder binder, Para if (TryWrappedBindAndInvoke(binder, AdjustInvokeArgs(args), out result)) { - if (paramTypes != null) + if (paramTypes is not null) { for (var index = 0; index < paramTypes.Length; index++) { @@ -274,7 +277,7 @@ public MemberInfo[] GetMembers(BindingFlags bindFlags) public object InvokeMember(string name, BindingFlags invokeFlags, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters) { - if (invokeFlags.HasFlag(BindingFlags.InvokeMethod)) + if (invokeFlags.HasAllFlags(BindingFlags.InvokeMethod)) { if (name == SpecialMemberNames.Default) { @@ -284,7 +287,7 @@ public object InvokeMember(string name, BindingFlags invokeFlags, Binder binder, return InvokeMethod(name, args); } - if (invokeFlags.HasFlag(BindingFlags.GetField)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField)) { if (int.TryParse(name, NumberStyles.Integer, CultureInfo.InvariantCulture, out var index)) { @@ -294,7 +297,7 @@ public object InvokeMember(string name, BindingFlags invokeFlags, Binder binder, return GetProperty(name, args); } - if (invokeFlags.HasFlag(BindingFlags.SetField)) + if (invokeFlags.HasAllFlags(BindingFlags.SetField)) { if (args.Length != 1) { @@ -352,11 +355,8 @@ public object GetProperty(string name, out bool isCacheable, params object[] arg return GetProperty(name, args); } - #endregion - - #region IDynamic implementation - public abstract string[] GetPropertyNames(); + public abstract int[] GetPropertyIndices(); #endregion diff --git a/ClearScript/ScriptMemberFlags.cs b/ClearScript/ScriptMemberFlags.cs index cc1a3fc7..3b6b24be 100644 --- a/ClearScript/ScriptMemberFlags.cs +++ b/ClearScript/ScriptMemberFlags.cs @@ -34,4 +34,10 @@ public enum ScriptMemberFlags /// WrapNullResult = 0x00000002 } + + internal static class ScriptMemberFlagsHelpers + { + public static bool HasAllFlags(this ScriptMemberFlags value, ScriptMemberFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this ScriptMemberFlags value, ScriptMemberFlags flags) => (value & flags) != 0; + } } diff --git a/ClearScript/ScriptMethod.cs b/ClearScript/ScriptMethod.cs index 8f43cf87..56d0bf52 100644 --- a/ClearScript/ScriptMethod.cs +++ b/ClearScript/ScriptMethod.cs @@ -110,7 +110,7 @@ MemberInfo[] IReflect.GetMember(string memberName, BindingFlags bindFlags) // script item properties as fields. Apparently VB's dynamic invocation support not // only recognizes IReflect/IExpando but actually favors it over DynamicObject. - return typeof(ScriptMethod).GetMember(MiscHelpers.EnsureNonBlank(memberName, "Invoke"), bindFlags); + return typeof(ScriptMethod).GetMember(memberName.ToNonBlank("Invoke"), bindFlags); } MemberInfo[] IReflect.GetMembers(BindingFlags bindFlags) diff --git a/ClearScript/Undefined.cs b/ClearScript/Undefined.cs index 59799c33..f7262590 100644 --- a/ClearScript/Undefined.cs +++ b/ClearScript/Undefined.cs @@ -17,7 +17,7 @@ public class Undefined /// /// The sole instance of the class. /// - public static readonly Undefined Value = new Undefined(); + public static readonly Undefined Value = new(); private Undefined() { diff --git a/ClearScript/Util/ArrayHelpers.cs b/ClearScript/Util/ArrayHelpers.cs index a4672793..f9e75c49 100644 --- a/ClearScript/Util/ArrayHelpers.cs +++ b/ClearScript/Util/ArrayHelpers.cs @@ -2,7 +2,9 @@ // Licensed under the MIT license. using System; +using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; namespace Microsoft.ClearScript.Util { @@ -43,6 +45,15 @@ public static T[] GetEmptyArray() return EmptyArray.Value; } + public static async IAsyncEnumerable AsAsyncEnumerable(this T[] array) + { + foreach (var item in array) + { + await Task.CompletedTask; + yield return item; + } + } + #region Nested type: EmptyArray private static class EmptyArray diff --git a/ClearScript/Util/AssemblyHelpers.cs b/ClearScript/Util/AssemblyHelpers.cs index 72657d11..ca15e00d 100644 --- a/ClearScript/Util/AssemblyHelpers.cs +++ b/ClearScript/Util/AssemblyHelpers.cs @@ -19,7 +19,7 @@ public static string GetFullAssemblyName(string name) return name; } - if (MiscHelpers.Try(out var assembly, () => Assembly.Load(name))) + if (MiscHelpers.Try(out var assembly, static name => Assembly.Load(name), name)) { return assembly.FullName; } @@ -30,7 +30,7 @@ public static string GetFullAssemblyName(string name) fileName = Path.ChangeExtension(fileName + '.', "dll"); } - if (MiscHelpers.Try(out var assemblyName, () => AssemblyName.GetAssemblyName(fileName))) + if (MiscHelpers.Try(out var assemblyName, static fileName => AssemblyName.GetAssemblyName(fileName), fileName)) { return assemblyName.FullName; } @@ -41,17 +41,17 @@ public static string GetFullAssemblyName(string name) // ReSharper disable AccessToModifiedClosure var path = Path.Combine(dirPath, fileName); - if (File.Exists(path) && MiscHelpers.Try(out assemblyName, () => AssemblyName.GetAssemblyName(path))) + if (File.Exists(path) && MiscHelpers.Try(out assemblyName, static path => AssemblyName.GetAssemblyName(path), path)) { return assemblyName.FullName; } - if (MiscHelpers.Try(out var subDirPaths, () => Directory.EnumerateDirectories(dirPath, "*", SearchOption.AllDirectories))) + if (MiscHelpers.Try(out var subDirPaths, static dirPath => Directory.EnumerateDirectories(dirPath, "*", SearchOption.AllDirectories), dirPath)) { foreach (var subDirPath in subDirPaths) { path = Path.Combine(subDirPath, fileName); - if (File.Exists(path) && MiscHelpers.Try(out assemblyName, () => AssemblyName.GetAssemblyName(path))) + if (File.Exists(path) && MiscHelpers.Try(out assemblyName, static path => AssemblyName.GetAssemblyName(path), path)) { return assemblyName.FullName; } @@ -66,7 +66,7 @@ public static string GetFullAssemblyName(string name) public static Assembly TryLoad(AssemblyName name) { - if (MiscHelpers.Try(out var assembly, () => Assembly.Load(name))) + if (MiscHelpers.Try(out var assembly, static name => Assembly.Load(name), name)) { return assembly; } @@ -117,13 +117,11 @@ public static IEnumerable GetReferencedEnums(this Assembly assembly) private static IEnumerable GetReferencedEnums(Assembly assembly, Type type, HashSet processedTypes) { - if ((type == null) || !type.IsVisible || type.ContainsGenericParameters || processedTypes.Contains(type)) + if ((type is null) || !type.IsVisible || type.ContainsGenericParameters || !processedTypes.Add(type)) { yield break; } - processedTypes.Add(type); - if (type.IsEnum) { yield return type; @@ -161,7 +159,7 @@ private static IEnumerable GetReferencedEnums(Assembly assembly, Type type private static IEnumerable GetReferencedEnums(Assembly assembly, MemberInfo member, HashSet processedTypes) { - if (member == null) + if (member is null) { return Enumerable.Empty(); } @@ -191,7 +189,7 @@ private static IEnumerable GetReferencedEnums(Assembly assembly, MemberInf private static IEnumerable GetReferencedEnums(Assembly assembly, FieldInfo field, HashSet processedTypes) { - if (field == null) + if (field is null) { return Enumerable.Empty(); } @@ -201,7 +199,7 @@ private static IEnumerable GetReferencedEnums(Assembly assembly, FieldInfo private static IEnumerable GetReferencedEnums(Assembly assembly, PropertyInfo property, HashSet processedTypes) { - if (property == null) + if (property is null) { yield break; } @@ -224,7 +222,7 @@ private static IEnumerable GetReferencedEnums(Assembly assembly, PropertyI private static IEnumerable GetReferencedEnums(Assembly assembly, MethodInfo method, HashSet processedTypes) { - if (method == null) + if (method is null) { yield break; } @@ -242,7 +240,7 @@ private static IEnumerable GetReferencedEnums(Assembly assembly, MethodInf private static IEnumerable GetReferencedEnums(Assembly assembly, ParameterInfo param, HashSet processedTypes) { - if (param == null) + if (param is null) { return Enumerable.Empty(); } diff --git a/ClearScript/Util/AssemblyTable.NetFramework.cs b/ClearScript/Util/AssemblyTable.NetFramework.cs index 2365aff9..c7c0cd4e 100644 --- a/ClearScript/Util/AssemblyTable.NetFramework.cs +++ b/ClearScript/Util/AssemblyTable.NetFramework.cs @@ -31,9 +31,9 @@ static AssemblyTableImpl() // ReSharper disable HeuristicUnreachableCode LoadAssemblyTable(); - if (table != null) + if (table is not null) { - AppDomain.CurrentDomain.AssemblyLoad += (sender, args) => table.TryAdd(args.LoadedAssembly.GetName().Name, args.LoadedAssembly.FullName); + AppDomain.CurrentDomain.AssemblyLoad += (_, args) => table.TryAdd(args.LoadedAssembly.GetName().Name, args.LoadedAssembly.FullName); AppDomain.CurrentDomain.GetAssemblies().ForEach(assembly => table.TryAdd(assembly.GetName().Name, assembly.FullName)); } @@ -43,7 +43,7 @@ static AssemblyTableImpl() public static string GetFullAssemblyNameImpl(string name) { - return ((table != null) && table.TryGetValue(name, out var fullName)) ? fullName : AssemblyHelpers.GetFullAssemblyName(name); + return ((table is not null) && table.TryGetValue(name, out var fullName)) ? fullName : AssemblyHelpers.GetFullAssemblyName(name); } private static void LoadAssemblyTable() @@ -66,45 +66,53 @@ private static bool ReadAssemblyTable() private static bool ReadAssemblyTable(string rootPath) { - var succeeded = MiscHelpers.Try(() => - { - var filePath = GetFilePath(rootPath); - if (File.Exists(filePath)) + var succeeded = MiscHelpers.Try( + static rootPath => { - using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) + var filePath = GetFilePath(rootPath); + if (File.Exists(filePath)) { - var serializer = new XmlSerializer(typeof(AssemblyTableData)); - table = ((AssemblyTableData)serializer.Deserialize(stream)).CreateTable(); + using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) + { + var serializer = new XmlSerializer(typeof(AssemblyTableData)); + table = ((AssemblyTableData)serializer.Deserialize(stream)).CreateTable(); + } } - } - }); + }, + rootPath + ); - return succeeded && (table != null); + return succeeded && (table is not null); } private static bool BuildAssemblyTable() { - var succeeded = MiscHelpers.Try(() => - { - var key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\.NETFramework"); - if (key != null) + var succeeded = MiscHelpers.Try( + static () => { - var dirPath = Path.Combine((string)key.GetValue("InstallRoot"), GetRuntimeVersionDirectoryName()); - - table = new ConcurrentDictionary(); - foreach (var filePath in Directory.EnumerateFiles(dirPath, "*.dll", SearchOption.AllDirectories)) + var key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\.NETFramework"); + if (key is not null) { - var path = filePath; - MiscHelpers.Try(() => + var dirPath = Path.Combine((string)key.GetValue("InstallRoot"), GetRuntimeVersionDirectoryName()); + + table = new ConcurrentDictionary(); + foreach (var filePath in Directory.EnumerateFiles(dirPath, "*.dll", SearchOption.AllDirectories)) { - var assemblyName = Assembly.ReflectionOnlyLoadFrom(path).GetName(); - table.TryAdd(assemblyName.Name, assemblyName.FullName); - }); + var path = filePath; + MiscHelpers.Try( + static path => + { + var assemblyName = Assembly.ReflectionOnlyLoadFrom(path).GetName(); + table.TryAdd(assemblyName.Name, assemblyName.FullName); + }, + path + ); + } } } - }); + ); - return succeeded && (table != null); + return succeeded && (table is not null); } private static void WriteAssemblyTable() @@ -117,15 +125,18 @@ private static void WriteAssemblyTable() private static bool WriteAssemblyTable(string rootPath) { - return MiscHelpers.Try(() => - { - var filePath = GetFilePath(rootPath); - using (var stream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)) + return MiscHelpers.Try( + static rootPath => { - var serializer = new XmlSerializer(typeof(AssemblyTableData)); - serializer.Serialize(stream, new AssemblyTableData(table)); - } - }); + var filePath = GetFilePath(rootPath); + using (var stream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)) + { + var serializer = new XmlSerializer(typeof(AssemblyTableData)); + serializer.Serialize(stream, new AssemblyTableData(table)); + } + }, + rootPath + ); } private static string GetFilePath(string rootPath) diff --git a/ClearScript/Util/COM/Dispatch.cs b/ClearScript/Util/COM/Dispatch.cs index dc33f411..a9529bea 100644 --- a/ClearScript/Util/COM/Dispatch.cs +++ b/ClearScript/Util/COM/Dispatch.cs @@ -21,6 +21,12 @@ internal enum DispatchFlags : ushort Construct = 0x4000 } + internal static class DispatchFlagsHelpers + { + public static bool HasAllFlags(this DispatchFlags value, DispatchFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this DispatchFlags value, DispatchFlags flags) => (value & flags) != 0; + } + [Flags] internal enum DispatchNameFlags : uint { @@ -32,6 +38,12 @@ internal enum DispatchNameFlags : uint NoDynamicProperties = 0x00000020 } + internal static class DispatchNameFlagsHelpers + { + public static bool HasAllFlags(this DispatchNameFlags value, DispatchNameFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this DispatchNameFlags value, DispatchNameFlags flags) => (value & flags) != 0; + } + [Flags] internal enum DispatchPropFlags : uint { @@ -55,6 +67,12 @@ internal enum DispatchPropFlags : uint All = CanAll | CannotAll | ExtraAll } + internal static class DispatchPropFlagsHelpers + { + public static bool HasAllFlags(this DispatchPropFlags value, DispatchPropFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this DispatchPropFlags value, DispatchPropFlags flags) => (value & flags) != 0; + } + [Flags] internal enum DispatchEnumFlags : uint { diff --git a/ClearScript/Util/COM/DispatchHelpers.cs b/ClearScript/Util/COM/DispatchHelpers.cs index e1f2a2f2..f9159814 100644 --- a/ClearScript/Util/COM/DispatchHelpers.cs +++ b/ClearScript/Util/COM/DispatchHelpers.cs @@ -31,7 +31,7 @@ public static ITypeInfo GetTypeInfo(this IDispatch dispatch) public static object GetProperty(this IDispatch dispatch, string name, params object[] args) { - if (!MiscHelpers.Try(out int dispid, () => dispatch.GetDispIDForName(name))) + if (!MiscHelpers.Try(out int dispid, static ctx => ctx.dispatch.GetDispIDForName(ctx.name), (dispatch, name))) { return Nonexistent.Value; } @@ -137,7 +137,7 @@ private static int GetDispIDForName(this IDispatch dispatch, string name) } var member = dispatch.GetMembers().FirstOrDefault(testMember => testMember.Name == name); - if (member == null) + if (member is null) { throw new MissingMemberException(MiscHelpers.FormatInvariant("The object has no property named '{0}'", name)); } @@ -148,7 +148,7 @@ private static int GetDispIDForName(this IDispatch dispatch, string name) private static IEnumerable GetMembersRaw(this IDispatch dispatch) { var typeInfo = dispatch.GetTypeInfo(); - if (typeInfo == null) + if (typeInfo is null) { throw new NotSupportedException("The object does not support late binding"); } @@ -174,7 +174,7 @@ public static ITypeInfo GetTypeInfo(this IDispatchEx dispatchEx) public static object GetProperty(this IDispatchEx dispatchEx, string name, bool ignoreCase, params object[] args) { - if (!MiscHelpers.Try(out int dispid, () => dispatchEx.GetDispIDForName(name, false, ignoreCase))) + if (!MiscHelpers.Try(out int dispid, static ctx => ctx.dispatchEx.GetDispIDForName(ctx.name, false, ctx.ignoreCase), (dispatchEx, name, ignoreCase))) { return Nonexistent.Value; } @@ -295,7 +295,7 @@ private static int GetDispIDForName(this IDispatchEx dispatchEx, string name, bo } var member = dispatchEx.GetMembers().FirstOrDefault(testMember => testMember.Name.Equals(name, ignoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal)); - if (member != null) + if (member is not null) { return member.DispID; } diff --git a/ClearScript/Util/COM/DispatchMember.cs b/ClearScript/Util/COM/DispatchMember.cs index 8263b203..05cd9b78 100644 --- a/ClearScript/Util/COM/DispatchMember.cs +++ b/ClearScript/Util/COM/DispatchMember.cs @@ -25,22 +25,22 @@ private DispatchMember(string name, int dispid) public DispatchMember(string name, int dispid, INVOKEKIND invokeKind) : this(name, dispid) { - if (invokeKind.HasFlag(INVOKEKIND.INVOKE_FUNC)) + if (invokeKind.HasAllFlags(INVOKEKIND.INVOKE_FUNC)) { DispatchFlags |= DispatchFlags.Method; } - if (invokeKind.HasFlag(INVOKEKIND.INVOKE_PROPERTYGET)) + if (invokeKind.HasAllFlags(INVOKEKIND.INVOKE_PROPERTYGET)) { DispatchFlags |= DispatchFlags.PropertyGet; } - if (invokeKind.HasFlag(INVOKEKIND.INVOKE_PROPERTYPUT)) + if (invokeKind.HasAllFlags(INVOKEKIND.INVOKE_PROPERTYPUT)) { DispatchFlags |= DispatchFlags.PropertyPut; } - if (invokeKind.HasFlag(INVOKEKIND.INVOKE_PROPERTYPUTREF)) + if (invokeKind.HasAllFlags(INVOKEKIND.INVOKE_PROPERTYPUTREF)) { DispatchFlags |= DispatchFlags.PropertyPutRef; } @@ -49,22 +49,22 @@ public DispatchMember(string name, int dispid, INVOKEKIND invokeKind) public DispatchMember(string name, int dispid, DispatchPropFlags flags) : this(name, dispid) { - if (flags.HasFlag(DispatchPropFlags.CanCall)) + if (flags.HasAllFlags(DispatchPropFlags.CanCall)) { DispatchFlags |= DispatchFlags.Method; } - if (flags.HasFlag(DispatchPropFlags.CanGet)) + if (flags.HasAllFlags(DispatchPropFlags.CanGet)) { DispatchFlags |= DispatchFlags.PropertyGet; } - if (flags.HasFlag(DispatchPropFlags.CanPut)) + if (flags.HasAllFlags(DispatchPropFlags.CanPut)) { DispatchFlags |= DispatchFlags.PropertyPut; } - if (flags.HasFlag(DispatchPropFlags.CanPutRef)) + if (flags.HasAllFlags(DispatchPropFlags.CanPutRef)) { DispatchFlags |= DispatchFlags.PropertyPutRef; } diff --git a/ClearScript/Util/COM/DispatchWrappers.cs b/ClearScript/Util/COM/DispatchWrappers.cs index 8e592406..97a070b4 100644 --- a/ClearScript/Util/COM/DispatchWrappers.cs +++ b/ClearScript/Util/COM/DispatchWrappers.cs @@ -40,7 +40,7 @@ public object GetProperty(string name, out bool isCacheable, params object[] arg // some objects crash on attempt to retrieve a method as a property member = GetMembers().FirstOrDefault(testMember => testMember.Name == name); - if ((member != null) && member.DispatchFlags == DispatchFlags.Method) + if ((member is not null) && member.DispatchFlags == DispatchFlags.Method) { return new HostMethod(hostItem, name); } @@ -55,12 +55,12 @@ public object GetProperty(string name, out bool isCacheable, params object[] arg { if (args.Length < 1) { - if (member == null) + if (member is null) { member = GetMembers().FirstOrDefault(testMember => testMember.Name == name); } - if ((member != null) && !member.DispatchFlags.HasFlag(DispatchFlags.Method)) + if ((member is not null) && !member.DispatchFlags.HasAllFlags(DispatchFlags.Method)) { return new HostIndexedProperty(hostItem, name); } @@ -149,7 +149,7 @@ public object GetProperty(string name, out bool isCacheable, params object[] arg // some objects crash on attempt to retrieve a method as a property member = dispatchEx.GetMembers().FirstOrDefault(testMember => testMember.Name == name); - if ((member != null) && member.DispatchFlags == DispatchFlags.Method) + if ((member is not null) && member.DispatchFlags == DispatchFlags.Method) { return new HostMethod(hostItem, name); } @@ -164,12 +164,12 @@ public object GetProperty(string name, out bool isCacheable, params object[] arg { if (args.Length < 1) { - if (member == null) + if (member is null) { member = dispatchEx.GetMembers().FirstOrDefault(testMember => testMember.Name == name); } - if ((member != null) && !member.DispatchFlags.HasFlag(DispatchFlags.Method)) + if ((member is not null) && !member.DispatchFlags.HasAllFlags(DispatchFlags.Method)) { return new HostIndexedProperty(hostItem, name); } diff --git a/ClearScript/Util/COM/HResult.cs b/ClearScript/Util/COM/HResult.cs index 75b6ccd3..7cf02f36 100644 --- a/ClearScript/Util/COM/HResult.cs +++ b/ClearScript/Util/COM/HResult.cs @@ -55,7 +55,7 @@ public static void Check(uint result) public static void Check(int result) { - if (Succeeded(result) || !MiscHelpers.Try(out var exception, () => Marshal.GetExceptionForHR(result))) + if (Succeeded(result) || !MiscHelpers.Try(out var exception, static result => Marshal.GetExceptionForHR(result), result)) { return; } diff --git a/ClearScript/Util/COM/StructHelpers.cs b/ClearScript/Util/COM/StructHelpers.cs index 8b7279f1..5b1654a8 100644 --- a/ClearScript/Util/COM/StructHelpers.cs +++ b/ClearScript/Util/COM/StructHelpers.cs @@ -16,7 +16,7 @@ internal static class StructHelpers public static IScope CreateScope(GetStruct get, ReleaseStruct release) { get(out var pStruct); - return Scope.Create(() => (T)Marshal.PtrToStructure(pStruct, typeof(T)), value => release(pStruct)); + return Scope.Create(() => (T)Marshal.PtrToStructure(pStruct, typeof(T)), _ => release(pStruct)); } public static IEnumerable GetStructsFromArray(IntPtr pStructs, int count) diff --git a/ClearScript/Util/COM/TypeInfoHelpers.NetFramework.cs b/ClearScript/Util/COM/TypeInfoHelpers.NetFramework.cs index db4c69c7..30cf136f 100644 --- a/ClearScript/Util/COM/TypeInfoHelpers.NetFramework.cs +++ b/ClearScript/Util/COM/TypeInfoHelpers.NetFramework.cs @@ -10,7 +10,7 @@ namespace Microsoft.ClearScript.Util.COM { internal static partial class TypeInfoHelpers { - private static readonly ConcurrentDictionary managedTypeMap = new ConcurrentDictionary(); + private static readonly ConcurrentDictionary managedTypeMap = new(); public static Type GetManagedType(this ITypeInfo typeInfo) { diff --git a/ClearScript/Util/COM/TypeInfoHelpers.cs b/ClearScript/Util/COM/TypeInfoHelpers.cs index ff765436..f8118477 100644 --- a/ClearScript/Util/COM/TypeInfoHelpers.cs +++ b/ClearScript/Util/COM/TypeInfoHelpers.cs @@ -18,7 +18,7 @@ namespace Microsoft.ClearScript.Util.COM internal static partial class TypeInfoHelpers { // GUID_ManagedName (um\cor.h) - private static readonly Guid managedNameGuid = new Guid("{0f21f359-ab84-41e8-9a78-36d110e6d2f9}"); + private static readonly Guid managedNameGuid = new("{0f21f359-ab84-41e8-9a78-36d110e6d2f9}"); public static ITypeLib GetContainingTypeLib(this ITypeInfo typeInfo) { diff --git a/ClearScript/Util/COM/TypeLibHelpers.cs b/ClearScript/Util/COM/TypeLibHelpers.cs index 81a81da5..690cd8aa 100644 --- a/ClearScript/Util/COM/TypeLibHelpers.cs +++ b/ClearScript/Util/COM/TypeLibHelpers.cs @@ -17,7 +17,7 @@ namespace Microsoft.ClearScript.Util.COM internal static class TypeLibHelpers { // GUID_ManagedName (um\cor.h) - private static readonly Guid managedNameGuid = new Guid("{0f21f359-ab84-41e8-9a78-36d110e6d2f9}"); + private static readonly Guid managedNameGuid = new("{0f21f359-ab84-41e8-9a78-36d110e6d2f9}"); public static string GetName(this ITypeLib typeLib) { @@ -92,13 +92,14 @@ public static IEnumerable GetReferencedEnums(this ITypeLib typeLib) private static IEnumerable GetReferencedEnums(ITypeLib typeLib, ITypeInfo typeInfo, Dictionary processedTypeInfo) { - if (typeInfo == null) + if (typeInfo is null) { yield break; } var guid = typeInfo.GetOrCreateGuid(); + // ReSharper disable once CanSimplifyDictionaryLookupWithTryAdd if (processedTypeInfo.ContainsKey(guid)) { yield break; diff --git a/ClearScript/Util/Collateral.cs b/ClearScript/Util/Collateral.cs index 08afae9e..a2064ae1 100644 --- a/ClearScript/Util/Collateral.cs +++ b/ClearScript/Util/Collateral.cs @@ -9,7 +9,7 @@ internal class CollateralObject where THolder : class where TValue : class { - private readonly ConditionalWeakTable table = new ConditionalWeakTable(); + private readonly ConditionalWeakTable table = new(); public TValue Get(THolder holder) { @@ -24,7 +24,7 @@ public TValue GetOrCreate(THolder holder) public virtual void Set(THolder holder, TValue value) { Clear(holder); - if (value != null) + if (value is not null) { table.Add(holder, value); } @@ -40,7 +40,7 @@ internal sealed class CollateralArray : CollateralObject where T : class { - private readonly object dataLock = new object(); - private List weakRefs = new List(); + private readonly object dataLock = new(); + private List> weakRefs = new(); public int Count => GetItems().Count; @@ -26,7 +26,7 @@ public bool TryAdd(T item) { if (!GetItemsInternal().Contains(item)) { - weakRefs.Add(new WeakReference(item)); + weakRefs.Add(new WeakReference(item)); return true; } @@ -51,10 +51,10 @@ private List GetItems() private List GetItemsInternal() { var items = new List(); - var tempWeakRefs = new List(); + var tempWeakRefs = new List>(); foreach (var weakRef in weakRefs) { - if (weakRef.Target is T item) + if (weakRef.TryGetTarget(out var item)) { items.Add(item); tempWeakRefs.Add(weakRef); diff --git a/ClearScript/Util/DateTimeHelpers.cs b/ClearScript/Util/DateTimeHelpers.cs new file mode 100644 index 00000000..17a4b3b6 --- /dev/null +++ b/ClearScript/Util/DateTimeHelpers.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; + +namespace Microsoft.ClearScript.Util +{ + internal static class DateTimeHelpers + { + private static readonly DateTime unixEpoch = new(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + + public static double ToUnixMilliseconds(this DateTime dateTime) + { + return (dateTime.ToUniversalTime() - unixEpoch).TotalMilliseconds; + } + + public static DateTime FromUnixMilliseconds(double value) + { + return unixEpoch + TimeSpan.FromMilliseconds(value); + } + + } +} diff --git a/ClearScript/Util/DynamicHelpers.cs b/ClearScript/Util/DynamicHelpers.cs index 33c5e1bc..80f2fae1 100644 --- a/ClearScript/Util/DynamicHelpers.cs +++ b/ClearScript/Util/DynamicHelpers.cs @@ -26,13 +26,13 @@ public static DynamicMetaObject Bind(DynamicMetaObjectBinder binder, object targ public static object Invoke(Expression expr) { - Debug.Assert(expr != null); + Debug.Assert(expr is not null); return Expression.Lambda(expr).Compile().DynamicInvoke(); } public static object Invoke(Expression expr, IEnumerable parameters, object[] args) { - Debug.Assert(expr != null); + Debug.Assert(expr is not null); return Expression.Lambda(expr, parameters).Compile().DynamicInvoke(args); } @@ -88,7 +88,7 @@ public static bool TryBindAndInvoke(DynamicMetaObjectBinder binder, object targe return true; } } - else if ((args != null) && (args.Length > 0)) + else if ((args is not null) && (args.Length > 0)) { if (binder is GetIndexBinder) { @@ -204,7 +204,7 @@ private static bool TryGetProperty(IReflect target, string name, bool ignoreCase } var property = target.GetProperty(name, flags); - if (property != null) + if (property is not null) { result = property.GetValue(target, args); return true; @@ -216,7 +216,7 @@ private static bool TryGetProperty(IReflect target, string name, bool ignoreCase private static bool TrySetProperty(IReflect target, string name, bool ignoreCase, object[] args, out object result) { - if ((args != null) && (args.Length > 0)) + if ((args is not null) && (args.Length > 0)) { // ReSharper disable once SuspiciousTypeConversion.Global if (target is IDispatchEx dispatchEx) @@ -237,7 +237,7 @@ private static bool TrySetProperty(IReflect target, string name, bool ignoreCase } var property = target.GetProperty(name, flags); - if (property == null) + if (property is null) { if (target is IExpando expando) { @@ -245,7 +245,7 @@ private static bool TrySetProperty(IReflect target, string name, bool ignoreCase } } - if (property != null) + if (property is not null) { property.SetValue(target, args[args.Length - 1], args.Take(args.Length - 1).ToArray()); result = args[args.Length - 1]; @@ -335,7 +335,7 @@ private static bool TryInvokeMethod(IReflect target, string name, bool ignoreCas } var method = target.GetMethod(name, flags); - if (method != null) + if (method is not null) { result = method.Invoke(target, BindingFlags.InvokeMethod | flags, null, args, CultureInfo.InvariantCulture); return true; @@ -488,7 +488,7 @@ private static DynamicMetaObject CreateDynamicTarget(object target) } var hostTarget = target as HostTarget; - if (hostTarget == null) + if (hostTarget is null) { return CreateDynamicMetaObject(target, Expression.Constant(target)); } @@ -523,7 +523,7 @@ private static DynamicMetaObject CreateDynamicArg(object arg) } var hostTarget = arg as HostTarget; - if (hostTarget == null) + if (hostTarget is null) { return CreateDynamicMetaObject(arg, Expression.Constant(arg)); } @@ -563,7 +563,7 @@ private static Expression CreateThrowExpr(string message) where T : Exception var constructor = typeof(T).GetConstructor(new[] { typeof(string) }); Expression exceptionExpr; - if (constructor != null) + if (constructor is not null) { exceptionExpr = Expression.New(constructor, Expression.Constant(message)); } @@ -577,7 +577,7 @@ private static Expression CreateThrowExpr(string message) where T : Exception private static Type GetParamTypeForArg(object arg) { - return (arg != null) ? arg.GetType() : typeof(object); + return (arg is not null) ? arg.GetType() : typeof(object); } #endregion @@ -593,7 +593,7 @@ public DynamicCreateInstanceBinder(string[] paramNames) public override DynamicMetaObject FallbackCreateInstance(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { // errorSuggestion is the dynamic instantiation algorithm return errorSuggestion; @@ -618,7 +618,7 @@ public DynamicInvokeBinder(string[] paramNames) public override DynamicMetaObject FallbackInvoke(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { // errorSuggestion is the dynamic invocation algorithm return errorSuggestion; @@ -643,7 +643,7 @@ public DynamicGetMemberBinder(string name) public override DynamicMetaObject FallbackGetMember(DynamicMetaObject target, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { // errorSuggestion is the dynamic member retrieval algorithm return errorSuggestion; @@ -668,7 +668,7 @@ public DynamicSetMemberBinder(string name) public override DynamicMetaObject FallbackSetMember(DynamicMetaObject target, DynamicMetaObject value, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { // errorSuggestion is the dynamic member assignment algorithm return errorSuggestion; @@ -699,7 +699,7 @@ public DynamicInvokeMemberBinder(IHostContext context, string name, BindingFlags public override DynamicMetaObject FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { // errorSuggestion is the dynamic member invocation algorithm return errorSuggestion; @@ -712,7 +712,7 @@ public override DynamicMetaObject FallbackInvokeMember(DynamicMetaObject target, public override DynamicMetaObject FallbackInvoke(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { // behave as in other scenarios, but the observed value is always null return errorSuggestion; @@ -738,7 +738,7 @@ private static object InvokeMemberValue(IHostContext context, object target, Bin return result; } - if (invokeFlags.HasFlag(BindingFlags.GetField) && (args.Length < 1)) + if (invokeFlags.HasAllFlags(BindingFlags.GetField) && (args.Length < 1)) { return target; } @@ -762,7 +762,7 @@ public DynamicDeleteMemberBinder(string name) public override DynamicMetaObject FallbackDeleteMember(DynamicMetaObject target, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { // errorSuggestion is the dynamic member deletion algorithm return errorSuggestion; @@ -786,7 +786,7 @@ public DynamicGetIndexBinder(string[] paramNames) public override DynamicMetaObject FallbackGetIndex(DynamicMetaObject target, DynamicMetaObject[] indexes, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { // errorSuggestion is the dynamic index retrieval algorithm return errorSuggestion; @@ -811,7 +811,7 @@ public DynamicSetIndexBinder(string[] paramNames) public override DynamicMetaObject FallbackSetIndex(DynamicMetaObject target, DynamicMetaObject[] indexes, DynamicMetaObject value, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { // errorSuggestion is the dynamic index assignment algorithm return errorSuggestion; @@ -836,7 +836,7 @@ public DynamicDeleteIndexBinder(string[] paramNames) public override DynamicMetaObject FallbackDeleteIndex(DynamicMetaObject target, DynamicMetaObject[] indices, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { // errorSuggestion is the dynamic index deletion algorithm return errorSuggestion; @@ -860,7 +860,7 @@ public DynamicConvertBinder(Type type, bool @explicit) public override DynamicMetaObject FallbackConvert(DynamicMetaObject target, DynamicMetaObject errorSuggestion) { - if (errorSuggestion != null) + if (errorSuggestion is not null) { return errorSuggestion; } diff --git a/ClearScript/Util/EnumerableHelpers.NetFramework.cs b/ClearScript/Util/EnumerableHelpers.NetFramework.cs deleted file mode 100644 index 486be82c..00000000 --- a/ClearScript/Util/EnumerableHelpers.NetFramework.cs +++ /dev/null @@ -1,148 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.ClearScript.JavaScript; - -namespace Microsoft.ClearScript.Util -{ - /// - [BypassCustomAttributeLoader] - [DefaultScriptUsage(ScriptAccess.Full)] - public interface IScriptableAsyncEnumerator - { - /// - T ScriptableCurrent { get; } - - /// - object ScriptableMoveNextAsync(); - - /// - object ScriptableDisposeAsync(); - } - - internal static partial class EnumerableHelpers - { - public static IScriptableAsyncEnumerator ToScriptableAsyncEnumerator(this IEnumerator enumerator, ScriptEngine engine) - { - return new ScriptableAsyncEnumeratorOnEnumerator(engine, enumerator); - } - - public static IScriptableAsyncEnumerator ToScriptableAsyncEnumerator(this IEnumerator enumerator, ScriptEngine engine) - { - return new ScriptableAsyncEnumeratorOnEnumerator(engine, enumerator); - } - } - - internal static partial class ScriptableEnumerableHelpers - { - public static object GetScriptableAsyncEnumerator(IEnumerable source, ScriptEngine engine) - { - return HostItem.Wrap(engine, source.GetEnumerator().ToScriptableAsyncEnumerator(engine), typeof(IScriptableAsyncEnumerator)); - } - } - - internal static partial class ScriptableEnumerableHelpers - { - public static object GetScriptableAsyncEnumerator(IEnumerable source, ScriptEngine engine) - { - return HostItem.Wrap(engine, source.GetEnumerator().ToScriptableAsyncEnumerator(engine), typeof(IScriptableAsyncEnumerator)); - } - } - - internal abstract class ScriptableAsyncEnumeratorBase - { - protected static readonly Task CompletedTask = Task.FromResult(0); - } - - internal abstract class ScriptableAsyncEnumerator : ScriptableAsyncEnumeratorBase, IScriptableAsyncEnumerator - { - private readonly ScriptEngine engine; - - protected ScriptableAsyncEnumerator(ScriptEngine engine) - { - this.engine = engine; - } - - public abstract T Current { get; } - - public abstract Task MoveNextAsync(); - - public abstract Task DisposeAsync(); - - #region IScriptableAsyncEnumerator implementation - - public T ScriptableCurrent => Current; - - public object ScriptableMoveNextAsync() - { - return MoveNextAsync().ToPromise(engine); - } - - public object ScriptableDisposeAsync() - { - return DisposeAsync().ToPromise(engine); - } - - #endregion - } - - internal sealed class ScriptableAsyncEnumeratorOnEnumerator : ScriptableAsyncEnumerator - { - private readonly IEnumerator enumerator; - - public ScriptableAsyncEnumeratorOnEnumerator(ScriptEngine engine, IEnumerator enumerator) - : base(engine) - { - this.enumerator = enumerator; - } - - #region ScriptableAsyncEnumerator overrides - - public override object Current => enumerator.Current; - - public override Task MoveNextAsync() - { - return Task.FromResult(enumerator.MoveNext()); - } - - public override Task DisposeAsync() - { - (enumerator as IDisposable)?.Dispose(); - return CompletedTask; - } - - #endregion - } - - internal sealed class ScriptableAsyncEnumeratorOnEnumerator : ScriptableAsyncEnumerator - { - private readonly IEnumerator enumerator; - - public ScriptableAsyncEnumeratorOnEnumerator(ScriptEngine engine, IEnumerator enumerator) - : base(engine) - { - this.enumerator = enumerator; - } - - #region ScriptableAsyncEnumerator overrides - - public override T Current => enumerator.Current; - - public override Task MoveNextAsync() - { - return Task.FromResult(enumerator.MoveNext()); - } - - public override Task DisposeAsync() - { - enumerator.Dispose(); - return CompletedTask; - } - - #endregion - } -} diff --git a/ClearScript/Util/EnumerableHelpers.NetStandard.cs b/ClearScript/Util/EnumerableHelpers.NetStandard.cs deleted file mode 100644 index 7299b1db..00000000 --- a/ClearScript/Util/EnumerableHelpers.NetStandard.cs +++ /dev/null @@ -1,188 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.ClearScript.JavaScript; - -namespace Microsoft.ClearScript.Util -{ - /// - [BypassCustomAttributeLoader] - [DefaultScriptUsage(ScriptAccess.Full)] - public interface IScriptableAsyncEnumerator : IAsyncEnumerator - { - /// - T ScriptableCurrent { get; } - - /// - object ScriptableMoveNextAsync(); - - /// - object ScriptableDisposeAsync(); - } - - internal static partial class EnumerableHelpers - { - public static IScriptableAsyncEnumerator ToScriptableAsyncEnumerator(this IEnumerator enumerator, ScriptEngine engine) - { - return new ScriptableAsyncEnumeratorOnEnumerator(engine, enumerator); - } - - public static IScriptableAsyncEnumerator ToScriptableAsyncEnumerator(this IEnumerator enumerator, ScriptEngine engine) - { - return new ScriptableAsyncEnumeratorOnEnumerator(engine, enumerator); - } - - public static IScriptableAsyncEnumerator ToScriptableAsyncEnumerator(this IAsyncEnumerator enumerator, ScriptEngine engine) - { - return new ScriptableAsyncEnumeratorOnAsyncEnumerator(engine, enumerator); - } - } - - internal static partial class ScriptableEnumerableHelpers - { - public static object GetScriptableAsyncEnumerator(IEnumerable source, ScriptEngine engine) - { - return HostItem.Wrap(engine, source.GetEnumerator().ToScriptableAsyncEnumerator(engine), typeof(IScriptableAsyncEnumerator)); - } - } - - internal static partial class ScriptableEnumerableHelpers - { - public static object GetScriptableAsyncEnumerator(IEnumerable source, ScriptEngine engine) - { - return HostItem.Wrap(engine, source.GetEnumerator().ToScriptableAsyncEnumerator(engine), typeof(IScriptableAsyncEnumerator)); - } - - public static object GetScriptableAsyncEnumerator(IAsyncEnumerable source, ScriptEngine engine) - { - return HostItem.Wrap(engine, source.GetAsyncEnumerator().ToScriptableAsyncEnumerator(engine), typeof(IScriptableAsyncEnumerator)); - } - } - - internal abstract class ScriptableAsyncEnumerator : IScriptableAsyncEnumerator - { - private readonly ScriptEngine engine; - - protected ScriptableAsyncEnumerator(ScriptEngine engine) - { - this.engine = engine; - } - - #region IScriptableAsyncEnumerator implementation - - public T ScriptableCurrent => Current; - - public object ScriptableMoveNextAsync() - { - return MoveNextAsync().ToPromise(engine); - } - - public object ScriptableDisposeAsync() - { - return DisposeAsync().ToPromise(engine); - } - - #endregion - - #region IAsyncEnumerable implementation - - public abstract T Current { get; } - - public abstract ValueTask MoveNextAsync(); - - #endregion - - #region IAsyncDisposable implementation - - public abstract ValueTask DisposeAsync(); - - #endregion - } - - internal sealed class ScriptableAsyncEnumeratorOnEnumerator : ScriptableAsyncEnumerator - { - private readonly IEnumerator enumerator; - - public ScriptableAsyncEnumeratorOnEnumerator(ScriptEngine engine, IEnumerator enumerator) - : base(engine) - { - this.enumerator = enumerator; - } - - #region ScriptableAsyncEnumerator overrides - - public override object Current => enumerator.Current; - - public override ValueTask MoveNextAsync() - { - return new ValueTask(enumerator.MoveNext()); - } - - public override ValueTask DisposeAsync() - { - (enumerator as IDisposable)?.Dispose(); - return default; - } - - #endregion - } - - internal sealed class ScriptableAsyncEnumeratorOnEnumerator : ScriptableAsyncEnumerator - { - private readonly IEnumerator enumerator; - - public ScriptableAsyncEnumeratorOnEnumerator(ScriptEngine engine, IEnumerator enumerator) - : base(engine) - { - this.enumerator = enumerator; - } - - #region ScriptableAsyncEnumerator overrides - - public override T Current => enumerator.Current; - - public override ValueTask MoveNextAsync() - { - return new ValueTask(enumerator.MoveNext()); - } - - public override ValueTask DisposeAsync() - { - enumerator.Dispose(); - return default; - } - - #endregion - } - - internal sealed class ScriptableAsyncEnumeratorOnAsyncEnumerator : ScriptableAsyncEnumerator - { - private readonly IAsyncEnumerator enumerator; - - public ScriptableAsyncEnumeratorOnAsyncEnumerator(ScriptEngine engine, IAsyncEnumerator enumerator) - : base(engine) - { - this.enumerator = enumerator; - } - - #region ScriptableAsyncEnumerator overrides - - public override T Current => enumerator.Current; - - public override ValueTask MoveNextAsync() - { - return enumerator.MoveNextAsync(); - } - - public override ValueTask DisposeAsync() - { - return enumerator.DisposeAsync(); - } - - #endregion - } -} diff --git a/ClearScript/Util/EnumerableHelpers.cs b/ClearScript/Util/EnumerableHelpers.cs index 3d50ae12..803341b2 100644 --- a/ClearScript/Util/EnumerableHelpers.cs +++ b/ClearScript/Util/EnumerableHelpers.cs @@ -7,6 +7,8 @@ using System.Globalization; using System.Linq; using System.Runtime.InteropServices.ComTypes; +using System.Threading.Tasks; +using Microsoft.ClearScript.JavaScript; using Microsoft.ClearScript.Util.COM; namespace Microsoft.ClearScript.Util @@ -35,7 +37,22 @@ public interface IScriptableEnumerator : IScriptableEnumerator, IEnumerat new T ScriptableCurrent { get; } } - internal static partial class EnumerableHelpers + /// + [BypassCustomAttributeLoader] + [DefaultScriptUsage(ScriptAccess.Full)] + public interface IScriptableAsyncEnumerator : IAsyncEnumerator + { + /// + T ScriptableCurrent { get; } + + /// + object ScriptableMoveNextAsync(); + + /// + object ScriptableDisposeAsync(); + } + + internal static class EnumerableHelpers { public static IList ToIList(this IEnumerable source) { @@ -102,19 +119,25 @@ public static IEnumerable GetIndices(this IEnumerable names) [BypassCustomAttributeLoader] [DefaultScriptUsage(ScriptAccess.Full)] - internal static partial class ScriptableEnumerableHelpers + internal static class ScriptableEnumerableHelpers { public static readonly HostType HostType = HostType.Wrap(typeof(ScriptableEnumerableHelpers)); public static object GetScriptableEnumerator(IEnumerable source) { + // ReSharper disable once NotDisposedResource return HostObject.Wrap(new ScriptableEnumeratorOnEnumerator(source.GetEnumerator()), typeof(IScriptableEnumerator)); } + public static object GetScriptableAsyncEnumerator(IEnumerable source, ScriptEngine engine) + { + // ReSharper disable once NotDisposedResource + return HostItem.Wrap(engine, new ScriptableAsyncEnumeratorOnEnumerator(engine, source.GetEnumerator()), typeof(IScriptableAsyncEnumerator)); + } } [BypassCustomAttributeLoader] [DefaultScriptUsage(ScriptAccess.Full)] - internal static partial class ScriptableEnumerableHelpers + internal static class ScriptableEnumerableHelpers { public static readonly HostType HostType = HostType.Wrap(typeof(ScriptableEnumerableHelpers)); @@ -122,6 +145,18 @@ public static object GetScriptableEnumerator(IEnumerable source) { return HostObject.Wrap(new ScriptableEnumeratorOnEnumerator(source.GetEnumerator()), typeof(IScriptableEnumerator)); } + + public static object GetScriptableAsyncEnumerator(IEnumerable source, ScriptEngine engine) + { + // ReSharper disable once NotDisposedResource + return HostItem.Wrap(engine, new ScriptableAsyncEnumeratorOnEnumerator(engine, source.GetEnumerator()), typeof(IScriptableAsyncEnumerator)); + } + + public static object GetScriptableAsyncEnumerator(IAsyncEnumerable source, ScriptEngine engine) + { + // ReSharper disable once NotDisposedResource + return HostItem.Wrap(engine, new ScriptableAsyncEnumeratorOnAsyncEnumerator(engine, source.GetAsyncEnumerator()), typeof(IScriptableAsyncEnumerator)); + } } internal sealed class ScriptableEnumeratorOnEnumerator : IScriptableEnumerator @@ -294,4 +329,127 @@ public void Dispose() #endregion } + + internal abstract class ScriptableAsyncEnumerator : IScriptableAsyncEnumerator + { + private readonly ScriptEngine engine; + + protected ScriptableAsyncEnumerator(ScriptEngine engine) + { + this.engine = engine; + } + + #region IScriptableAsyncEnumerator implementation + + public T ScriptableCurrent => Current; + + public object ScriptableMoveNextAsync() + { + return MoveNextAsync().ToPromise(engine); + } + + public object ScriptableDisposeAsync() + { + return DisposeAsync().ToPromise(engine); + } + + #endregion + + #region IAsyncEnumerable implementation + + public abstract T Current { get; } + + public abstract ValueTask MoveNextAsync(); + + #endregion + + #region IAsyncDisposable implementation + + public abstract ValueTask DisposeAsync(); + + #endregion + } + + internal sealed class ScriptableAsyncEnumeratorOnEnumerator : ScriptableAsyncEnumerator + { + private readonly IEnumerator enumerator; + + public ScriptableAsyncEnumeratorOnEnumerator(ScriptEngine engine, IEnumerator enumerator) + : base(engine) + { + this.enumerator = enumerator; + } + + #region ScriptableAsyncEnumerator overrides + + public override object Current => enumerator.Current; + + public override ValueTask MoveNextAsync() + { + return new ValueTask(enumerator.MoveNext()); + } + + public override ValueTask DisposeAsync() + { + (enumerator as IDisposable)?.Dispose(); + return default; + } + + #endregion + } + + internal sealed class ScriptableAsyncEnumeratorOnEnumerator : ScriptableAsyncEnumerator + { + private readonly IEnumerator enumerator; + + public ScriptableAsyncEnumeratorOnEnumerator(ScriptEngine engine, IEnumerator enumerator) + : base(engine) + { + this.enumerator = enumerator; + } + + #region ScriptableAsyncEnumerator overrides + + public override T Current => enumerator.Current; + + public override ValueTask MoveNextAsync() + { + return new ValueTask(enumerator.MoveNext()); + } + + public override ValueTask DisposeAsync() + { + enumerator.Dispose(); + return default; + } + + #endregion + } + + internal sealed class ScriptableAsyncEnumeratorOnAsyncEnumerator : ScriptableAsyncEnumerator + { + private readonly IAsyncEnumerator enumerator; + + public ScriptableAsyncEnumeratorOnAsyncEnumerator(ScriptEngine engine, IAsyncEnumerator enumerator) + : base(engine) + { + this.enumerator = enumerator; + } + + #region ScriptableAsyncEnumerator overrides + + public override T Current => enumerator.Current; + + public override ValueTask MoveNextAsync() + { + return enumerator.MoveNextAsync(); + } + + public override ValueTask DisposeAsync() + { + return enumerator.DisposeAsync(); + } + + #endregion + } } diff --git a/ClearScript/Util/IHostItem.cs b/ClearScript/Util/IHostItem.cs new file mode 100644 index 00000000..692f17ac --- /dev/null +++ b/ClearScript/Util/IHostItem.cs @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.Util +{ + internal interface IHostItem : IScriptMarshalWrapper + { + } +} diff --git a/ClearScript/Util/InvokeHelpers.cs b/ClearScript/Util/InvokeHelpers.cs index 1fc1bacf..37a6f974 100644 --- a/ClearScript/Util/InvokeHelpers.cs +++ b/ClearScript/Util/InvokeHelpers.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Dynamic; using System.Linq.Expressions; @@ -13,12 +14,12 @@ internal static class InvokeHelpers { public static object InvokeMethod(IHostContext context, MethodInfo method, object target, object[] args, ScriptMemberFlags flags) { - return InvokeMethodInternal(context, method, target, args, (invokeMethod, invokeTarget, invokeArgs) => invokeMethod.Invoke(invokeTarget, invokeArgs), method.ReturnType, flags); + return InvokeMethodInternal(context, method, target, args, static (method, target, args) => method.Invoke(target, args), method.ReturnType, flags); } public static object InvokeConstructor(IHostContext context, ConstructorInfo constructor, object[] args) { - return InvokeMethodInternal(context, constructor, null, args, (invokeConstructor, invokeTarget, invokeArgs) => invokeConstructor.Invoke(invokeArgs), constructor.DeclaringType, ScriptMemberFlags.None); + return InvokeMethodInternal(context, constructor, null, args, static (constructor, _, args) => constructor.Invoke(args), constructor.DeclaringType, ScriptMemberFlags.None); } public static object InvokeDelegate(IHostContext context, Delegate del, object[] args) @@ -44,7 +45,7 @@ public static bool TryInvokeObject(IHostContext context, object target, BindingF tryDynamic = tryDynamic && typeof(IDynamicMetaObjectProvider).IsAssignableFrom(hostTarget.Type); } - if ((target != null) && invokeFlags.HasFlag(BindingFlags.InvokeMethod)) + if ((target is not null) && invokeFlags.HasAllFlags(BindingFlags.InvokeMethod)) { if (target is ScriptItem scriptItem) { @@ -92,13 +93,13 @@ private static object InvokeMethodInternal(IHostContext context, T method, ob for (var innerIndex = index; innerIndex < args.Length; innerIndex++) { var byRefArg = args[innerIndex] as IByRefArg; - if (byRefArg == null) + if (byRefArg is null) { - tailArgs.SetValue(GetCompatibleArg(param.Name, tailArgType, args[innerIndex]), innerIndex - index); + tailArgs.SetValue(CompatibleArg.Get(param.Name, tailArgType, args[innerIndex]), innerIndex - index); } else { - tailArgs.SetValue(GetCompatibleArg(param.Name, tailArgType, byRefArg.Value), innerIndex - index); + tailArgs.SetValue(CompatibleArg.Get(param.Name, tailArgType, byRefArg.Value), innerIndex - index); byRefArgInfo.Add(new ByRefArgItem(byRefArg, tailArgs, innerIndex - index)); } } @@ -109,22 +110,22 @@ private static object InvokeMethodInternal(IHostContext context, T method, ob } } - if ((index < args.Length) && !(args[index] is Missing)) + if ((index < args.Length) && (args[index] is not Missing)) { var byRefArg = args[index] as IByRefArg; - if (byRefArg == null) + if (byRefArg is null) { - argList.Add(GetCompatibleArg(param, args[index])); + argList.Add(CompatibleArg.Get(param, args[index])); } else { - argList.Add(GetCompatibleArg(param, byRefArg.Value)); + argList.Add(CompatibleArg.Get(param, byRefArg.Value)); byRefArgInfo.Add(new ByRefArgItem(byRefArg, null, index)); } } else if (param.IsOptional) { - if (param.Attributes.HasFlag(ParameterAttributes.HasDefault)) + if (param.Attributes.HasAllFlags(ParameterAttributes.HasDefault)) { try { @@ -180,21 +181,6 @@ private static object InvokeMethodInternal(IHostContext context, T method, ob return context.Engine.PrepareResult(result, returnType, flags, false); } - private static object GetCompatibleArg(ParameterInfo param, object value) - { - return GetCompatibleArg(param.Name, param.ParameterType, value); - } - - private static object GetCompatibleArg(string paramName, Type type, object value) - { - if (!type.IsAssignableFromValue(ref value)) - { - throw new ArgumentException(MiscHelpers.FormatInvariant("Invalid argument specified for parameter '{0}'", paramName)); - } - - return value; - } - #region Nested type: ByRefArgItem private sealed class ByRefArgItem @@ -214,5 +200,47 @@ public ByRefArgItem(IByRefArg arg, Array array, int index) } #endregion + + #region Nested type: CompatibleArg + + private abstract class CompatibleArg + { + private static readonly ConcurrentDictionary map = new(); + + public static object Get(ParameterInfo param, object value) + { + return Get(param.Name, param.ParameterType, value); + } + + public static object Get(string paramName, Type type, object value) + { + return type.IsAssignableFromValue(ref value) ? value : GetImpl(type).Get(paramName, value); + } + public abstract object Get(string paramName, object value); + + private static CompatibleArg GetImpl(Type type) + { + return map.GetOrAdd(type, static type => (CompatibleArg)Activator.CreateInstance(typeof(Impl<>).MakeGenericType(type))); + } + + #region Nested type: Impl + + private sealed class Impl : CompatibleArg + { + public override object Get(string paramName, object value) + { + if (value is T result) + { + return result; + } + + throw new ArgumentException(MiscHelpers.FormatInvariant("Invalid argument specified for parameter '{0}'", paramName)); + } + } + + #endregion + } + + #endregion } } diff --git a/ClearScript/Util/MemberComparer.cs b/ClearScript/Util/MemberComparer.cs index 46bd0c9e..02657870 100644 --- a/ClearScript/Util/MemberComparer.cs +++ b/ClearScript/Util/MemberComparer.cs @@ -8,7 +8,7 @@ namespace Microsoft.ClearScript.Util { internal sealed class MemberComparer : EqualityComparer where T : MemberInfo { - public static readonly MemberComparer Instance = new MemberComparer(); + public static readonly MemberComparer Instance = new(); private MemberComparer() { @@ -26,7 +26,7 @@ public override bool Equals(T x, T y) return false; } - return MiscHelpers.Try(out var result, () => UnsafeEquals(x, y)) && result; + return MiscHelpers.Try(out var result, static ctx => UnsafeEquals(ctx.x, ctx.y), (x, y)) && result; } public override int GetHashCode(T obj) diff --git a/ClearScript/Util/MemberHelpers.cs b/ClearScript/Util/MemberHelpers.cs index 15b18f8c..1edb6b00 100644 --- a/ClearScript/Util/MemberHelpers.cs +++ b/ClearScript/Util/MemberHelpers.cs @@ -59,7 +59,7 @@ public static bool IsAccessible(this FieldInfo field, IHostContext context) var accessContext = context.AccessContext; - if (accessContext == null) + if (accessContext is null) { return false; } @@ -110,7 +110,7 @@ public static bool IsAccessible(this MethodBase method, IHostContext context) var accessContext = context.AccessContext; - if (accessContext == null) + if (accessContext is null) { return false; } @@ -151,13 +151,13 @@ public static bool IsAccessible(this MethodInfo method, IHostContext context) public static bool IsAccessible(this PropertyInfo property, IHostContext context) { var getMethod = property.GetMethod; - if ((getMethod != null) && getMethod.IsAccessible(context)) + if ((getMethod is not null) && getMethod.IsAccessible(context)) { return true; } var setMethod = property.SetMethod; - if ((setMethod != null) && setMethod.IsAccessible(context)) + if ((setMethod is not null) && setMethod.IsAccessible(context)) { return true; } @@ -176,7 +176,7 @@ public static bool IsAccessible(this Type type, IHostContext context) var accessContext = context.AccessContext; - if (accessContext == null) + if (accessContext is null) { return (visibility == TypeAttributes.NestedPublic) && type.DeclaringType.IsAccessible(context); } @@ -245,7 +245,7 @@ public static bool IsReadOnlyForScript(this MemberInfo member, IHostContext cont public static ScriptAccess GetScriptAccess(this MemberInfo member, IHostContext context, ScriptAccess defaultValue, bool chain = true) { var attribute = member.GetOrLoadCustomAttribute(context); - if (attribute != null) + if (attribute is not null) { return attribute.Access; } @@ -253,7 +253,7 @@ public static ScriptAccess GetScriptAccess(this MemberInfo member, IHostContext if (chain) { var declaringType = member.DeclaringType; - if (declaringType != null) + if (declaringType is not null) { var testType = declaringType; do @@ -261,24 +261,24 @@ public static ScriptAccess GetScriptAccess(this MemberInfo member, IHostContext if (testType.IsNested) { var nestedTypeAttribute = testType.GetOrLoadCustomAttribute(context); - if (nestedTypeAttribute != null) + if (nestedTypeAttribute is not null) { return nestedTypeAttribute.Access; } } var typeAttribute = testType.GetOrLoadCustomAttribute(context); - if (typeAttribute != null) + if (typeAttribute is not null) { return typeAttribute.Access; } testType = testType.DeclaringType; - } while (testType != null); + } while (testType is not null); var assemblyAttribute = declaringType.Assembly.GetOrLoadCustomAttribute(context); - if (assemblyAttribute != null) + if (assemblyAttribute is not null) { return assemblyAttribute.Access; } @@ -290,13 +290,13 @@ public static ScriptAccess GetScriptAccess(this MemberInfo member, IHostContext public static bool IsRestrictedForScript(this MemberInfo member, IHostContext context) { - return !member.GetScriptMemberFlags(context).HasFlag(ScriptMemberFlags.ExposeRuntimeType); + return !member.GetScriptMemberFlags(context).HasAllFlags(ScriptMemberFlags.ExposeRuntimeType); } public static bool IsDispID(this MemberInfo member, IHostContext context, int dispid) { var attribute = member.GetOrLoadCustomAttribute(context); - return (attribute != null) && (attribute.Value == dispid); + return (attribute is not null) && (attribute.Value == dispid); } public static ScriptMemberFlags GetScriptMemberFlags(this MemberInfo member, IHostContext context) diff --git a/ClearScript/Util/MemberMap.cs b/ClearScript/Util/MemberMap.cs index 6cc88353..698a453e 100644 --- a/ClearScript/Util/MemberMap.cs +++ b/ClearScript/Util/MemberMap.cs @@ -11,9 +11,9 @@ namespace Microsoft.ClearScript.Util { internal static class MemberMap { - private static readonly MemberMapImpl fieldMap = new MemberMapImpl(); - private static readonly MemberMapImpl methodMap = new MemberMapImpl(); - private static readonly MemberMapImpl propertyMap = new MemberMapImpl(); + private static readonly MemberMapImpl fieldMap = new(); + private static readonly MemberMapImpl methodMap = new(); + private static readonly MemberMapImpl propertyMap = new(); public static FieldInfo GetField(string name) { @@ -293,7 +293,7 @@ private class MemberMapBase private sealed class MemberMapImpl : MemberMapBase where T : MemberInfo { - private readonly Dictionary map = new Dictionary(); + private readonly Dictionary> map = new(); private DateTime lastCompactionTime = DateTime.MinValue; public T GetMember(string name) @@ -322,17 +322,16 @@ private T GetMemberInternal(string name) if (map.TryGetValue(name, out var weakRef)) { - member = weakRef.Target as T; - if (member == null) + if (!weakRef.TryGetTarget(out member)) { member = (T)typeof(T).CreateInstance(name); - weakRef.Target = member; + weakRef.SetTarget(member); } } else { member = (T)typeof(T).CreateInstance(name); - map.Add(name, new WeakReference(member)); + map.Add(name, new WeakReference(member)); } return member; @@ -345,7 +344,7 @@ private void CompactIfNecessary() var now = DateTime.UtcNow; if ((lastCompactionTime + CompactionInterval) <= now) { - map.Where(pair => !pair.Value.IsAlive).ToList().ForEach(pair => map.Remove(pair.Key)); + map.Where(pair => !pair.Value.TryGetTarget(out _)).ToList().ForEach(pair => map.Remove(pair.Key)); lastCompactionTime = now; } } diff --git a/ClearScript/Util/MiscHelpers.cs b/ClearScript/Util/MiscHelpers.cs index 45ce5656..12612682 100644 --- a/ClearScript/Util/MiscHelpers.cs +++ b/ClearScript/Util/MiscHelpers.cs @@ -7,6 +7,7 @@ using System.Globalization; using System.IO; using System.Linq; +using System.Numerics; using System.Reflection; using System.Runtime.InteropServices; using System.Text; @@ -14,6 +15,8 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.ClearScript.Properties; +using INVOKEKIND = System.Runtime.InteropServices.ComTypes.INVOKEKIND; +using TYPEFLAGS = System.Runtime.InteropServices.ComTypes.TYPEFLAGS; namespace Microsoft.ClearScript.Util { @@ -21,7 +24,7 @@ internal static class MiscHelpers { #region COM helpers - private static readonly Regex dispIDNameRegex = new Regex(@"^\[DISPID=(-?[0-9]+)\]$"); + private static readonly Regex dispIDNameRegex = new(@"^\[DISPID=(-?[0-9]+)\]$"); public static object CreateCOMObject(string progID, string serverName) { @@ -41,7 +44,7 @@ public static bool TryCreateCOMObject(string progID, string serverName, out T return false; } - return Try(out obj, () => Activator.CreateInstance(type) as T) && (obj != null); + return Try(out obj, () => Activator.CreateInstance(type) as T) && (obj is not null); } public static bool TryCreateCOMObject(Guid clsid, string serverName, out T obj) where T : class @@ -52,7 +55,7 @@ public static bool TryCreateCOMObject(Guid clsid, string serverName, out T ob return false; } - return Try(out obj, () => Activator.CreateInstance(type) as T) && (obj != null); + return Try(out obj, () => Activator.CreateInstance(type) as T) && (obj is not null); } public static Type GetCOMType(string progID, string serverName) @@ -80,13 +83,13 @@ public static Type GetCOMType(Guid clsid, string serverName) public static bool TryGetCOMType(string progID, string serverName, out Type type) { type = Guid.TryParseExact(progID, "B", out var clsid) ? Type.GetTypeFromCLSID(clsid, serverName) : Type.GetTypeFromProgID(progID, serverName); - return type != null; + return type is not null; } public static bool TryGetCOMType(Guid clsid, string serverName, out Type type) { type = Type.GetTypeFromCLSID(clsid, serverName); - return type != null; + return type is not null; } public static string GetDispIDName(int dispid) @@ -112,7 +115,7 @@ public static bool IsDispIDName(this string name, out int dispid) public static void VerifyNonNullArgument(object value, string name) { - if (value == null) + if (value is null) { throw new ArgumentNullException(name); } @@ -132,7 +135,19 @@ public static void VerifyNonBlankArgument(string value, string name, string mess private static readonly char[] searchPathSeparators = { ';' }; - public static string EnsureNonBlank(string input, string alternate) + public static string ToNonNull(this string input, string alternate = "[null]") + { + Debug.Assert(alternate is not null); + return input ?? alternate; + } + + public static string ToNonEmpty(this string input, string alternate) + { + Debug.Assert(!string.IsNullOrEmpty(alternate)); + return string.IsNullOrEmpty(input) ? alternate : input; + } + + public static string ToNonBlank(this string input, string alternate) { Debug.Assert(!string.IsNullOrWhiteSpace(alternate)); return string.IsNullOrWhiteSpace(input) ? alternate : input; @@ -172,9 +187,9 @@ public static string FormatCode(string code) public static string GetUrlOrPath(Uri uri, string alternate) { - Debug.Assert(alternate != null); + Debug.Assert(alternate is not null); - if (uri == null) + if (uri is null) { return alternate; } @@ -264,21 +279,37 @@ public static IEnumerable SplitSearchPath(this string searchPath) public static StringComparison GetMemberNameComparison(this BindingFlags bindFlags) { - return bindFlags.HasFlag(BindingFlags.IgnoreCase) ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; + return bindFlags.HasAllFlags(BindingFlags.IgnoreCase) ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; } public static StringComparer GetMemberNameComparer(this BindingFlags bindFlags) { - return bindFlags.HasFlag(BindingFlags.IgnoreCase) ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal; + return bindFlags.HasAllFlags(BindingFlags.IgnoreCase) ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal; } #endregion + #region enum helpers + + public static bool HasAllFlags(this BindingFlags value, BindingFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this BindingFlags value, BindingFlags flags) => (value & flags) != 0; + + public static bool HasAllFlags(this ParameterAttributes value, ParameterAttributes flags) => (value & flags) == flags; + public static bool HasAnyFlag(this ParameterAttributes value, ParameterAttributes flags) => (value & flags) != 0; + + public static bool HasAllFlags(this TYPEFLAGS value, TYPEFLAGS flags) => (value & flags) == flags; + public static bool HasAnyFlag(this TYPEFLAGS value, TYPEFLAGS flags) => (value & flags) != 0; + + public static bool HasAllFlags(this INVOKEKIND value, INVOKEKIND flags) => (value & flags) == flags; + public static bool HasAnyFlag(this INVOKEKIND value, INVOKEKIND flags) => (value & flags) != 0; + + #endregion + #region numeric index helpers public static bool TryGetNumericIndex(object arg, out int index) { - if (arg != null) + if (arg is not null) { switch (Type.GetTypeCode(arg.GetType())) { @@ -298,7 +329,7 @@ public static bool TryGetNumericIndex(object arg, out int index) public static bool TryGetNumericIndex(object arg, out long index) { - if (arg != null) + if (arg is not null) { switch (Type.GetTypeCode(arg.GetType())) { @@ -335,7 +366,20 @@ public static bool Try(Action action) } } - public static bool Try(out T result, Func func) + public static bool Try(Action action, in TArg arg) + { + try + { + action(arg); + return true; + } + catch + { + return false; + } + } + + public static bool Try(out TResult result, Func func) { try { @@ -349,6 +393,20 @@ public static bool Try(out T result, Func func) } } + public static bool Try(out TResult result, Func func, in TArg arg) + { + try + { + result = func(arg); + return true; + } + catch + { + result = default; + return false; + } + } + public static async Task TryAsync(Task task) { try @@ -379,6 +437,18 @@ public static async Task TryAsync(Holder holder, Task task) #region primitive marshaling + public const float MaxInt32InSingleAsSingle = 16777215.0F; + public const double MaxInt32InSingleAsDouble = 16777215.0D; + public const decimal MaxInt32InSingleAsDecimal = 16777215.0M; + public const int MaxInt32InSingle = (1 << 24) - 1; + + public const double MaxInt64InDoubleAsDouble = 9007199254740991.0D; + public const decimal MaxInt64InDoubleAsDecimal = 9007199254740991.0M; + public const long MaxInt64InDouble = (1L << 53) - 1; + + public static readonly decimal MaxBigIntegerInDecimalAsDecimal = 79228162514264337593543950335.0M; + public static readonly BigInteger MaxBigIntegerInDecimal = (new BigInteger(1) << 96) - 1; + public static bool TryMarshalPrimitiveToHost(object obj, bool disableFloatNarrowing, out object result) { if (obj is IConvertible convertible) @@ -391,7 +461,6 @@ public static bool TryMarshalPrimitiveToHost(object obj, bool disableFloatNarrow return true; case TypeCode.Double: - case TypeCode.Single: result = MarshalDoubleToHost(convertible.ToDouble(CultureInfo.InvariantCulture), disableFloatNarrowing); return true; @@ -404,6 +473,7 @@ public static bool TryMarshalPrimitiveToHost(object obj, bool disableFloatNarrow case TypeCode.UInt32: case TypeCode.Int64: case TypeCode.UInt64: + case TypeCode.Single: case TypeCode.Decimal: result = obj; return true; @@ -418,12 +488,12 @@ public static object MarshalDoubleToHost(double value, bool disableFloatNarrowin { // ReSharper disable CompareOfFloatsByEqualityOperator - if (Math.Round(value) == value) + var truncatedValue = Math.Truncate(value); + if (truncatedValue == value) { - const double maxIntInDouble = (1L << 53) - 1; - if (Math.Abs(value) <= maxIntInDouble) + if (Math.Abs(value) <= MaxInt64InDoubleAsDouble) { - var longValue = Convert.ToInt64(value); + var longValue = (long)truncatedValue; if ((longValue >= int.MinValue) && (longValue <= int.MaxValue)) { return (int)longValue; @@ -434,7 +504,7 @@ public static object MarshalDoubleToHost(double value, bool disableFloatNarrowin } else if (!disableFloatNarrowing) { - var floatValue = Convert.ToSingle(value); + var floatValue = (float)value; if (value == floatValue) { return floatValue; @@ -595,7 +665,7 @@ public static object GetObjectForVariant(IntPtr pVariant) { var result = Marshal.GetObjectForNativeVariant(pVariant); - if ((result == null) && (Marshal.ReadInt16(pVariant) == (short)VarEnum.VT_BSTR)) + if ((result is null) && (Marshal.ReadInt16(pVariant) == (short)VarEnum.VT_BSTR)) { return string.Empty; } diff --git a/ClearScript/Util/NativeCallbackTimer.cs b/ClearScript/Util/NativeCallbackTimer.cs index 66085cb5..79c78ea4 100644 --- a/ClearScript/Util/NativeCallbackTimer.cs +++ b/ClearScript/Util/NativeCallbackTimer.cs @@ -10,7 +10,7 @@ internal sealed class NativeCallbackTimer : IDisposable { private readonly Timer timer; private readonly INativeCallback callback; - private readonly InterlockedOneWayFlag disposedFlag = new InterlockedOneWayFlag(); + private readonly InterlockedOneWayFlag disposedFlag = new(); public NativeCallbackTimer(int dueTime, int period, INativeCallback callback) { @@ -27,7 +27,7 @@ public bool Change(int dueTime, int period) { if (!disposedFlag.IsSet) { - if (MiscHelpers.Try(out var result, () => timer.Change(dueTime, period))) + if (MiscHelpers.Try(out var result, static ctx => ctx.timer.Change(ctx.dueTime, ctx.period), (timer, dueTime, period))) { return result; } @@ -40,7 +40,7 @@ private void OnTimer(object _) { if (!disposedFlag.IsSet) { - MiscHelpers.Try(callback.Invoke); + MiscHelpers.Try(static callback => callback.Invoke(), callback); } } diff --git a/ClearScript/Util/Nonexistent.cs b/ClearScript/Util/Nonexistent.cs index f6576e6f..29d87465 100644 --- a/ClearScript/Util/Nonexistent.cs +++ b/ClearScript/Util/Nonexistent.cs @@ -5,7 +5,7 @@ namespace Microsoft.ClearScript.Util { internal sealed class Nonexistent { - public static readonly Nonexistent Value = new Nonexistent(); + public static readonly Nonexistent Value = new(); private Nonexistent() { diff --git a/ClearScript/Util/ObjectHelpers.Common.cs b/ClearScript/Util/ObjectHelpers.Common.cs index bd53aeaf..de2d6cfc 100644 --- a/ClearScript/Util/ObjectHelpers.Common.cs +++ b/ClearScript/Util/ObjectHelpers.Common.cs @@ -16,17 +16,17 @@ private static bool GetPrimaryInteropAssembly(Guid libid, int major, int minor, using (var containerKey = Registry.ClassesRoot.OpenSubKey("TypeLib", false)) { - if (containerKey != null) + if (containerKey is not null) { var typeLibName = "{" + libid.ToString().ToUpper(CultureInfo.InvariantCulture) + "}"; using (var typeLibKey = containerKey.OpenSubKey(typeLibName)) { - if (typeLibKey != null) + if (typeLibKey is not null) { var versionName = major.ToString("x", CultureInfo.InvariantCulture) + "." + minor.ToString("x", CultureInfo.InvariantCulture); using (var versionKey = typeLibKey.OpenSubKey(versionName, false)) { - if (versionKey != null) + if (versionKey is not null) { name = (string)versionKey.GetValue("PrimaryInteropAssemblyName"); codeBase = (string)versionKey.GetValue("PrimaryInteropAssemblyCodeBase"); @@ -37,7 +37,7 @@ private static bool GetPrimaryInteropAssembly(Guid libid, int major, int minor, } } - return name != null; + return name is not null; } } } diff --git a/ClearScript/Util/ObjectHelpers.cs b/ClearScript/Util/ObjectHelpers.cs index 6ef28333..e3dd7b11 100644 --- a/ClearScript/Util/ObjectHelpers.cs +++ b/ClearScript/Util/ObjectHelpers.cs @@ -37,7 +37,7 @@ public static bool IsWholeNumber(this object value) { // ReSharper disable CompareOfFloatsByEqualityOperator - if (value == null) + if (value is null) { return false; } @@ -49,17 +49,17 @@ public static bool IsWholeNumber(this object value) if (value is float floatValue) { - return Math.Round(floatValue) == floatValue; + return Math.Truncate(floatValue) == floatValue; } if (value is double doubleValue) { - return Math.Round(doubleValue) == doubleValue; + return Math.Truncate(doubleValue) == doubleValue; } if (value is decimal decimalValue) { - return Math.Round(decimalValue) == decimalValue; + return Math.Truncate(decimalValue) == decimalValue; } return false; @@ -87,10 +87,10 @@ public static Type GetTypeOrTypeInfo(this object value) // Attempt to acquire COM type information via IDispatch or IProvideClassInfo. dispatch = value as IDispatch; - if (dispatch != null) + if (dispatch is not null) { var tempTypeInfo = dispatch.GetTypeInfo(); - if (tempTypeInfo != null) + if (tempTypeInfo is not null) { typeInfo = GetTypeForTypeInfo(tempTypeInfo); typeInfoKind = tempTypeInfo.GetKind(); @@ -98,7 +98,7 @@ public static Type GetTypeOrTypeInfo(this object value) } } - if (typeInfo == null) + if (typeInfo is null) { if (value is IProvideClassInfo provideClassInfo) { @@ -112,12 +112,12 @@ public static Type GetTypeOrTypeInfo(this object value) } } - if (typeInfo != null) + if (typeInfo is not null) { // If the COM type is a dispatch-only interface, use it. Such interfaces typically // aren't exposed via QueryInterface(), so there's no way to validate them anyway. - if ((dispatch != null) && (typeInfoKind == TYPEKIND.TKIND_DISPATCH) && typeInfoFlags.HasFlag(TYPEFLAGS.TYPEFLAG_FDISPATCHABLE) && !typeInfoFlags.HasFlag(TYPEFLAGS.TYPEFLAG_FDUAL)) + if ((dispatch is not null) && (typeInfoKind == TYPEKIND.TKIND_DISPATCH) && typeInfoFlags.HasAllFlags(TYPEFLAGS.TYPEFLAG_FDISPATCHABLE) && !typeInfoFlags.HasAllFlags(TYPEFLAGS.TYPEFLAG_FDUAL)) { return typeInfo; } @@ -151,13 +151,13 @@ private static Type GetTypeForTypeInfo(ITypeInfo typeInfo) var typeLib = typeInfo.GetContainingTypeLib(out var index); var assembly = LoadPrimaryInteropAssembly(typeLib); - if (assembly != null) + if (assembly is not null) { var name = typeInfo.GetManagedName(); var guid = typeInfo.GetGuid(); var type = assembly.GetType(name, false, true); - if ((type != null) && (type.GUID == guid)) + if ((type is not null) && (type.GUID == guid)) { return type; } @@ -173,7 +173,7 @@ private static Type GetTypeForTypeInfo(ITypeInfo typeInfo) } type = types.FirstOrDefault(testType => (testType.GUID == guid) && (testType.FullName.Equals(name, StringComparison.OrdinalIgnoreCase))); - if (type != null) + if (type is not null) { return type; } @@ -192,7 +192,7 @@ private static Type GetTypeForTypeInfo(ITypeInfo typeInfo) private static Assembly LoadPrimaryInteropAssembly(ITypeLib typeLib) { - if (typeLib == null) + if (typeLib is null) { return null; } @@ -225,9 +225,9 @@ public static string GetFriendlyName(this object value) public static string GetFriendlyName(this object value, Type type) { - if (type == null) + if (type is null) { - if (value == null) + if (value is null) { return "[null]"; } @@ -235,7 +235,7 @@ public static string GetFriendlyName(this object value, Type type) type = value.GetType(); } - if (type.IsArray && (value != null)) + if (type.IsArray && (value is not null)) { var array = (Array)value; var dimensions = Enumerable.Range(0, type.GetArrayRank()); @@ -248,7 +248,7 @@ public static string GetFriendlyName(this object value, Type type) if (value is IDispatch dispatch) { var typeInfo = dispatch.GetTypeInfo(); - if (typeInfo != null) + if (typeInfo is not null) { return typeInfo.GetName(); } @@ -342,7 +342,7 @@ public static T Cast(object value) private static object CastToNullable(object value) { - if (value != null) + if (value is not null) { var valueCastType = typeof(DynamicCaster<>).MakeGenericType(Nullable.GetUnderlyingType(typeof(T))); value = valueCastType.InvokeMember("Cast", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, new[] { value }); diff --git a/ClearScript/Util/Scope.cs b/ClearScript/Util/Scope.cs index bd9f168d..613182da 100644 --- a/ClearScript/Util/Scope.cs +++ b/ClearScript/Util/Scope.cs @@ -5,21 +5,35 @@ namespace Microsoft.ClearScript.Util { - internal interface IScope: IDisposable + internal interface IScope: IDisposable { - T Value { get; } + TValue Value { get; } } internal static class Scope { public static IDisposable Create(Action enterAction, Action exitAction) { - return new ScopeImpl(enterAction, exitAction); + enterAction?.Invoke(); + return new ScopeImpl(exitAction); } - public static IScope Create(Func enterFunc, Action exitAction) + public static IDisposable Create(Action enterAction, Action exitAction, in TArg arg) { - return new ScopeImpl(enterFunc, exitAction); + enterAction?.Invoke(arg); + return new ScopeImpl(exitAction); + } + + public static IScope Create(Func enterFunc, Action exitAction) + { + var value = (enterFunc is not null) ? enterFunc() : default; + return new ScopeImpl(value, exitAction); + } + + public static IScope Create(Func enterFunc, Action exitAction, in TArg arg) + { + var value = (enterFunc is not null) ? enterFunc(arg) : default; + return new ScopeImpl(value, exitAction); } #region Nested type: ScopeImpl @@ -27,12 +41,11 @@ public static IScope Create(Func enterFunc, Action exitAction) private sealed class ScopeImpl : IDisposable { private readonly Action exitAction; - private readonly OneWayFlag disposedFlag = new OneWayFlag(); + private readonly OneWayFlag disposedFlag = new(); - public ScopeImpl(Action enterAction, Action exitAction) + public ScopeImpl(Action exitAction) { this.exitAction = exitAction; - enterAction?.Invoke(); } #region IDisposable implementation @@ -50,25 +63,22 @@ public void Dispose() #endregion - #region Nested type: ScopeImpl + #region Nested type: ScopeImpl - private sealed class ScopeImpl : IScope + private sealed class ScopeImpl : IScope { - private readonly Action exitAction; - private readonly OneWayFlag disposedFlag = new OneWayFlag(); + private readonly Action exitAction; + private readonly OneWayFlag disposedFlag = new(); - public ScopeImpl(Func enterFunc, Action exitAction) + public ScopeImpl(TValue value, Action exitAction) { this.exitAction = exitAction; - if (enterFunc != null) - { - Value = enterFunc(); - } + Value = value; } - #region IScope implementation + #region IScope implementation - public T Value { get; } + public TValue Value { get; } public void Dispose() { diff --git a/ClearScript/Util/StructPtr.cs b/ClearScript/Util/StructPtr.cs new file mode 100644 index 00000000..fa26e9f4 --- /dev/null +++ b/ClearScript/Util/StructPtr.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System.Runtime.CompilerServices; +using System; + +namespace Microsoft.ClearScript.Util +{ + internal static class StructPtr + { + public static StructPtr FromRef(ref T value) where T : struct => new(ref value); + } + + internal readonly struct StructPtr where T : struct + { + private readonly IntPtr ptr; + + public unsafe StructPtr(ref T value) => ptr = (IntPtr)Unsafe.AsPointer(ref value); + + public unsafe ref T AsRef() => ref Unsafe.AsRef(ptr.ToPointer()); + } +} diff --git a/ClearScript/Util/TypeHelpers.NetStandard.cs b/ClearScript/Util/TypeHelpers.NetStandard.cs index 633048d5..cce3e279 100644 --- a/ClearScript/Util/TypeHelpers.NetStandard.cs +++ b/ClearScript/Util/TypeHelpers.NetStandard.cs @@ -19,10 +19,10 @@ private static string GetFullTypeName(string name, string assemblyName, bool use if (useAssemblyName) { - if (MiscHelpers.Try(out var assembly, () => Assembly.Load(AssemblyTable.GetFullAssemblyName(assemblyName)))) + if (MiscHelpers.Try(out var assembly, static assemblyName => Assembly.Load(AssemblyTable.GetFullAssemblyName(assemblyName)), assemblyName)) { // ReSharper disable once AccessToModifiedClosure - if (MiscHelpers.Try(out var result, () => assembly.GetType(fullTypeName).AssemblyQualifiedName)) + if (MiscHelpers.Try(out var result, static ctx => ctx.assembly.GetType(ctx.fullTypeName).AssemblyQualifiedName, (assembly, fullTypeName))) { return result; } diff --git a/ClearScript/Util/TypeHelpers.cs b/ClearScript/Util/TypeHelpers.cs index 835c5d1f..32113b49 100644 --- a/ClearScript/Util/TypeHelpers.cs +++ b/ClearScript/Util/TypeHelpers.cs @@ -32,7 +32,7 @@ internal static partial class TypeHelpers // ReSharper restore StringLiteralTypo }; - private static readonly ConcurrentDictionary, Invocability> invocabilityMap = new ConcurrentDictionary, Invocability>(); + private static readonly ConcurrentDictionary, Invocability> invocabilityMap = new(); private static readonly NumericTypes[] numericConversions = { @@ -192,7 +192,7 @@ public static bool IsAssignableToGenericType(this Type type, Type genericTypeDef { Debug.Assert(genericTypeDefinition.IsGenericTypeDefinition); - for (var testType = type; testType != null; testType = testType.BaseType) + for (var testType = type; testType is not null; testType = testType.BaseType) { if (testType.IsGenericType && (testType.GetGenericTypeDefinition() == genericTypeDefinition)) { @@ -219,7 +219,7 @@ public static bool IsImplicitlyConvertibleFromValue(this Type type, Type sourceT public static bool IsNumericallyConvertibleFrom(this Type type, Type valueType) { - return numericConversions[(int)valueType.GetNumericType()].HasFlag(GetNumericTypes(type.GetNumericType())); + return numericConversions[(int)valueType.GetNumericType()].HasAllFlags(GetNumericTypes(type.GetNumericType())); } public static bool HasExtensionMethods(this Type type, IHostContext context) @@ -229,7 +229,7 @@ public static bool HasExtensionMethods(this Type type, IHostContext context) public static bool EqualsOrDeclares(this Type type, Type thatType) { - for (; thatType != null; thatType = thatType.DeclaringType) + for (; thatType is not null; thatType = thatType.DeclaringType) { if (thatType == type) { @@ -242,7 +242,7 @@ public static bool EqualsOrDeclares(this Type type, Type thatType) public static bool IsFamilyOf(this Type type, Type thatType) { - for (; type != null; type = type.DeclaringType) + for (; type is not null; type = type.DeclaringType) { if ((type == thatType) || type.IsSubclassOf(thatType)) { @@ -261,13 +261,13 @@ public static bool IsFriendOf(this Type type, IHostContext context, Type thatTyp public static bool IsCOMVisible(this Type type, IHostContext context) { var attribute = type.GetOrLoadCustomAttribute(context, false); - if (attribute != null) + if (attribute is not null) { return attribute.Value; } attribute = type.Assembly.GetOrLoadCustomAttribute(context, false); - if (attribute != null) + if (attribute is not null) { return attribute.Value; } @@ -340,7 +340,7 @@ public static EventInfo GetScriptableEvent(this Type type, IHostContext context, try { var eventInfo = type.GetScriptableEventInternal(context, name, bindFlags); - if (eventInfo != null) + if (eventInfo is not null) { return eventInfo; } @@ -360,7 +360,7 @@ public static IEnumerable GetScriptableFields(this Type type, IHostCo public static FieldInfo GetScriptableField(this Type type, IHostContext context, string name, BindingFlags bindFlags) { var candidate = type.GetField(name, bindFlags); - if ((candidate != null) && candidate.IsScriptable(context) && string.Equals(candidate.GetScriptName(context), name, bindFlags.GetMemberNameComparison())) + if ((candidate is not null) && candidate.IsScriptable(context) && string.Equals(candidate.GetScriptName(context), name, bindFlags.GetMemberNameComparison())) { return candidate; } @@ -401,7 +401,7 @@ public static IEnumerable GetScriptableDefaultProperties(this Type if (type.IsArray) { var property = typeof(IList<>).MakeSpecificType(type.GetElementType()).GetProperty("Item"); - return (property != null) ? property.ToEnumerable() : ArrayHelpers.GetEmptyArray(); + return (property is not null) ? property.ToEnumerable() : ArrayHelpers.GetEmptyArray(); } var properties = type.GetProperties(bindFlags).AsEnumerable(); @@ -445,7 +445,7 @@ public static PropertyInfo GetScriptableProperty(this Type type, IHostContext co try { var property = type.GetScriptableProperty(context, name, bindFlags); - if (property != null) + if (property is not null) { return property; } @@ -513,7 +513,7 @@ public static object CreateInstance(this Type type, IHostContext context, HostTa } var constructor = BindToMember(context, candidates, flags, args, bindArgs); - if (constructor == null) + if (constructor is null) { throw new MissingMethodException(MiscHelpers.FormatInvariant("Type '{0}' has no constructor that matches the specified arguments", type.GetFullFriendlyName())); } @@ -575,7 +575,7 @@ public static PropertyInfo BindToMember(IHostContext context, PropertyInfo[] can var bindCandidates = GetBindCandidates(context, candidates, args, bindArgs.Select(GetBindArgType).ToArray()).ToArray(); result = SelectBindCandidate(bindCandidates); - if (result == null) + if (result is null) { // the default binder fails to bind to some COM properties because of by-ref parameter types if (candidates.Length == 1) @@ -606,7 +606,7 @@ public static HostType ImportType(string typeName, string assemblyName, bool use if (!hostTypeArgs.All(arg => arg is HostType)) { - throw new ArgumentException("Invalid generic type argument"); + throw new ArgumentException("Invalid generic type argument", nameof(hostTypeArgs)); } var typeArgs = hostTypeArgs.Cast().Select(hostType => hostType.GetTypeArg()).ToArray(); @@ -617,10 +617,10 @@ public static HostType ImportType(string typeName, string assemblyName, bool use { const int maxTypeArgCount = 16; - if ((typeArgs != null) && (typeArgs.Length > 0)) + if ((typeArgs is not null) && (typeArgs.Length > 0)) { var template = ImportType(typeName, assemblyName, useAssemblyName, typeArgs.Length); - if (template == null) + if (template is null) { throw new TypeLoadException(MiscHelpers.FormatInvariant("Could not find a matching generic type definition for '{0}'", typeName)); } @@ -640,7 +640,7 @@ public static HostType ImportType(string typeName, string assemblyName, bool use if (templates.Length < 1) { - if (type == null) + if (type is null) { throw new TypeLoadException(MiscHelpers.FormatInvariant("Could not find a specific type or generic type definition for '{0}'", typeName)); } @@ -648,7 +648,7 @@ public static HostType ImportType(string typeName, string assemblyName, bool use return HostType.Wrap(type); } - if (type == null) + if (type is null) { return HostType.Wrap(templates); } @@ -675,7 +675,7 @@ private static Type ImportType(string typeName, string assemblyName, bool useAss { } - return ((type != null) && useAssemblyName && (type.AssemblyQualifiedName != assemblyQualifiedName)) ? null : type; + return ((type is not null) && useAssemblyName && (type.AssemblyQualifiedName != assemblyQualifiedName)) ? null : type; } private static string GetFriendlyName(this Type type, Func getBaseName) @@ -777,22 +777,22 @@ private static bool IsAssignableFromValueInternal(this Type type, ref object val type = type.GetElementType(); } - var valueIsByRef = (valueType != null) && valueType.IsByRef; + var valueIsByRef = (valueType is not null) && valueType.IsByRef; if (valueIsByRef) { valueType = valueType.GetElementType(); } - if ((cost != null) && (typeIsByRef != valueIsByRef)) + if ((cost is not null) && (typeIsByRef != valueIsByRef)) { cost.Flags |= BindArgFlags.ByRefMismatch; } - if ((value == null) && (valueType == null)) + if ((value is null) && (valueType is null)) { if (type.IsNullable()) { - if (cost != null) + if (cost is not null) { cost.NumericType = Nullable.GetUnderlyingType(type).GetNumericType(); } @@ -803,7 +803,7 @@ private static bool IsAssignableFromValueInternal(this Type type, ref object val return !type.IsValueType; } - if (valueType == null) + if (valueType is null) { valueType = value.GetType(); } @@ -815,7 +815,7 @@ private static bool IsAssignableFromValueInternal(this Type type, ref object val if (type.IsAssignableFrom(valueType)) { - if (cost != null) + if (cost is not null) { if (type.IsNullable()) { @@ -833,7 +833,7 @@ private static bool IsAssignableFromValueInternal(this Type type, ref object val if (type.IsImplicitlyConvertibleFromValue(valueType, ref value)) { - if (cost != null) + if (cost is not null) { cost.Flags |= BindArgFlags.ImplicitConversion; } @@ -841,7 +841,7 @@ private static bool IsAssignableFromValueInternal(this Type type, ref object val return true; } - if (value == null) + if (value is null) { return false; } @@ -851,7 +851,7 @@ private static bool IsAssignableFromValueInternal(this Type type, ref object val var underlyingType = Nullable.GetUnderlyingType(type); if (underlyingType.IsAssignableFromValueInternal(ref value, valueType, cost)) { - if (cost != null) + if (cost is not null) { cost.Flags |= BindArgFlags.NullableTransition; cost.NumericType = underlyingType.GetNumericType(); @@ -920,16 +920,16 @@ private static bool IsAssignableFromValueInternal(this Type type, ref object val // special case for method binding only - if ((cost != null) && !valueTypeIsIntegral && !type.IsNumericallyConvertibleFrom(valueType)) + if ((cost is not null) && !valueTypeIsIntegral && !type.IsNumericallyConvertibleFrom(valueType)) { return false; } } var tempValue = value; - if (MiscHelpers.Try(out var tempResult, () => Convert.ChangeType(tempValue, type))) + if (MiscHelpers.Try(out var tempResult, static ctx => Convert.ChangeType(ctx.tempValue, ctx.type), (tempValue, type))) { - if (cost != null) + if (cost is not null) { cost.Flags |= BindArgFlags.NumericConversion; cost.NumericType = type.GetNumericType(); @@ -951,7 +951,7 @@ private static bool IsImplicitlyConvertibleFromValueInternal(Type definingType, if ((parameters.Length == 1) && parameters[0].ParameterType.IsAssignableFrom(sourceType) && targetType.IsAssignableFrom(converter.ReturnType)) { var args = new[] { value }; - if (MiscHelpers.Try(out var result, () => converter.Invoke(null, args))) + if (MiscHelpers.Try(out var result, static ctx => ctx.converter.Invoke(null, ctx.args), (converter, args))) { value = result; return true; @@ -993,7 +993,7 @@ private static Type GetBindArgType(object bindArg) return hostTarget.Type; } - if (bindArg != null) + if (bindArg is not null) { return bindArg.GetType(); } @@ -1015,7 +1015,7 @@ private static IEnumerable> GetBindCandidates(IHostContext c { foreach (var candidate in candidates) { - if (MiscHelpers.Try(out var bindCandidate, () => BindCandidate.TryCreateInstance(context, candidate, getParameters(candidate), args, argTypes)) && (bindCandidate != null)) + if (MiscHelpers.Try(out var bindCandidate, static ctx => BindCandidate.TryCreateInstance(ctx.context, ctx.candidate, ctx.getParameters(ctx.candidate), ctx.args, ctx.argTypes), (context, candidate, getParameters, args, argTypes)) && (bindCandidate is not null)) { yield return bindCandidate; } @@ -1072,7 +1072,7 @@ private enum NumericType #region Nested type: NumericTypes [Flags] - private enum NumericTypes + public enum NumericTypes { // ReSharper disable UnusedMember.Local @@ -1095,13 +1095,16 @@ private enum NumericTypes // ReSharper restore UnusedMember.Local } + public static bool HasAllFlags(this NumericTypes value, NumericTypes flags) => (value & flags) == flags; + public static bool HasAnyFlag(this NumericTypes value, NumericTypes flags) => (value & flags) != 0; + #endregion #region Nested type: TypeNode private sealed class TypeNode { - private static readonly ConcurrentDictionary typeNodeMap = new ConcurrentDictionary(); + private static readonly ConcurrentDictionary typeNodeMap = new(); private readonly Type type; @@ -1137,7 +1140,7 @@ private static TypeNode Create(Type type) var redundantInterfaces = new List(); var baseType = type.BaseType; - if (baseType != null) + if (baseType is not null) { redundantInterfaces.AddRange(baseType.GetInterfaces()); baseNode = GetOrCreate(baseType); @@ -1182,7 +1185,7 @@ private void GetUpcastCountInternal(Type targetType, uint count, ref uint lowest private sealed class PropertySignatureComparer : EqualityComparer { - public static readonly PropertySignatureComparer Instance = new PropertySignatureComparer(); + public static readonly PropertySignatureComparer Instance = new(); public override bool Equals(PropertyInfo first, PropertyInfo second) { @@ -1352,7 +1355,14 @@ public static BindCandidate TryCreateInstance(IHostContext context, T candida return null; } - defaultArgCount += 1; + ++defaultArgCount; + continue; + } + + if ((args[argIndex] is Missing) && (param.IsOptional || param.HasDefaultValue)) + { + ++defaultArgCount; + ++argIndex; continue; } diff --git a/ClearScript/Util/TypeTags.cs b/ClearScript/Util/TypeTags.cs index d4e5b281..87e84897 100644 --- a/ClearScript/Util/TypeTags.cs +++ b/ClearScript/Util/TypeTags.cs @@ -1,4 +1,7 @@ -namespace Microsoft.ClearScript.Util +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.Util { internal interface INothingTag { diff --git a/ClearScript/Util/UniqueNameManager.cs b/ClearScript/Util/UniqueNameManager.cs index b95bdbcb..c1805587 100644 --- a/ClearScript/Util/UniqueNameManager.cs +++ b/ClearScript/Util/UniqueNameManager.cs @@ -13,7 +13,7 @@ internal interface IUniqueNameManager internal sealed class UniqueNameManager : IUniqueNameManager { - private readonly Dictionary map = new Dictionary(); + private readonly Dictionary map = new(); #region IUniqueNameManager implementation @@ -21,7 +21,7 @@ public string GetUniqueName(string inputName, string alternate) { lock (map) { - var nonBlankName = MiscHelpers.EnsureNonBlank(inputName, alternate); + var nonBlankName = inputName.ToNonBlank(alternate); map.TryGetValue(nonBlankName, out var count); @@ -35,7 +35,7 @@ public string GetUniqueName(string inputName, string alternate) internal sealed class UniqueFileNameManager : IUniqueNameManager { - private readonly Dictionary map = new Dictionary(); + private readonly Dictionary map = new(); #region IUniqueNameManager implementation @@ -43,7 +43,7 @@ public string GetUniqueName(string inputName, string alternate) { lock (map) { - var nonBlankName = MiscHelpers.EnsureNonBlank(Path.GetFileNameWithoutExtension(inputName), alternate); + var nonBlankName = Path.GetFileNameWithoutExtension(inputName).ToNonBlank(alternate); var extension = Path.GetExtension(inputName); map.TryGetValue(nonBlankName, out var count); diff --git a/ClearScript/Util/UnmanagedMemoryHelpers.cs b/ClearScript/Util/UnmanagedMemoryHelpers.cs index 50c86e1e..dd54ca69 100644 --- a/ClearScript/Util/UnmanagedMemoryHelpers.cs +++ b/ClearScript/Util/UnmanagedMemoryHelpers.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Microsoft.ClearScript.Util @@ -12,7 +13,7 @@ internal static class UnmanagedMemoryHelpers private delegate ulong ReadArrayFromUnmanagedMemoryHandler(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex); private delegate ulong WriteArrayToUnmanagedMemoryHandler(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination); - private static readonly Dictionary readArrayFromUnmanagedMemoryHandlerMap = new Dictionary + private static readonly Dictionary readArrayFromUnmanagedMemoryHandlerMap = new() { { typeof(byte), ReadByteArrayFromUnmanagedMemory }, { typeof(sbyte), ReadSByteArrayFromUnmanagedMemory }, @@ -29,7 +30,7 @@ internal static class UnmanagedMemoryHelpers { typeof(double), ReadDoubleArrayFromUnmanagedMemory } }; - private static readonly Dictionary writeArrayToUnmanagedMemoryHandlerMap = new Dictionary + private static readonly Dictionary writeArrayToUnmanagedMemoryHandlerMap = new() { { typeof(byte), WriteByteArrayToUnmanagedMemory }, { typeof(sbyte), WriteSByteArrayToUnmanagedMemory }, @@ -51,11 +52,87 @@ public static ulong Copy(IntPtr pSource, ulong length, T[] destination, ulong return Copy(typeof(T), pSource, length, destination, destinationIndex); } + public static unsafe ulong Copy(IntPtr pSource, ulong length, in Span destination, ulong destinationIndex) where T : unmanaged + { + var destinationLength = (ulong)destination.Length; + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length < 1) + { + return 0UL; + } + + length = Math.Min(length, destinationLength - destinationIndex); + var elementSize = (ulong)Unsafe.SizeOf(); + + fixed (void* pDestinationSpan = destination) + { + var pDestination = ((IntPtr)pDestinationSpan + Convert.ToInt32(destinationIndex * elementSize)).ToPointer(); + var bytesToCopy = Convert.ToInt64(length * elementSize); + Buffer.MemoryCopy(pSource.ToPointer(), pDestination, bytesToCopy, bytesToCopy); + } + + return length; + } + public static ulong Copy(T[] source, ulong sourceIndex, ulong length, IntPtr pDestination) { return Copy(typeof(T), source, sourceIndex, length, pDestination); } + public static unsafe ulong Copy(in ReadOnlySpan source, ulong sourceIndex, ulong length, IntPtr pDestination) where T : unmanaged + { + var sourceLength = (ulong)source.Length; + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length < 1) + { + return 0UL; + } + + length = Math.Min(length, sourceLength - sourceIndex); + var elementSize = (ulong)Unsafe.SizeOf(); + + fixed (void* pSourceSpan = source) + { + var pSource = ((IntPtr)pSourceSpan + Convert.ToInt32(sourceIndex * elementSize)).ToPointer(); + var bytesToCopy = Convert.ToInt64(length * elementSize); + Buffer.MemoryCopy(pSource, pDestination.ToPointer(), bytesToCopy, bytesToCopy); + } + + return length; + } + private static ulong Copy(Type type, IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { if (readArrayFromUnmanagedMemoryHandlerMap.TryGetValue(type, out var handler)) @@ -79,11 +156,28 @@ private static ulong Copy(Type type, Array sourceArray, ulong sourceIndex, ulong private static unsafe ulong ReadByteArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (byte[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -110,11 +204,28 @@ private static unsafe ulong ReadByteArrayFromUnmanagedMemory(IntPtr pSource, ulo private static unsafe ulong ReadSByteArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (sbyte[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -133,11 +244,28 @@ private static unsafe ulong ReadSByteArrayFromUnmanagedMemory(IntPtr pSource, ul private static unsafe ulong ReadUInt16ArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (ushort[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -156,11 +284,28 @@ private static unsafe ulong ReadUInt16ArrayFromUnmanagedMemory(IntPtr pSource, u private static unsafe ulong ReadCharArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (char[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -187,11 +332,28 @@ private static unsafe ulong ReadCharArrayFromUnmanagedMemory(IntPtr pSource, ulo private static unsafe ulong ReadInt16ArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (short[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -218,11 +380,28 @@ private static unsafe ulong ReadInt16ArrayFromUnmanagedMemory(IntPtr pSource, ul private static unsafe ulong ReadUInt32ArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (uint[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -241,11 +420,28 @@ private static unsafe ulong ReadUInt32ArrayFromUnmanagedMemory(IntPtr pSource, u private static unsafe ulong ReadInt32ArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (int[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -272,11 +468,28 @@ private static unsafe ulong ReadInt32ArrayFromUnmanagedMemory(IntPtr pSource, ul private static unsafe ulong ReadUInt64ArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (ulong[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -295,11 +508,28 @@ private static unsafe ulong ReadUInt64ArrayFromUnmanagedMemory(IntPtr pSource, u private static unsafe ulong ReadInt64ArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (long[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -326,11 +556,28 @@ private static unsafe ulong ReadInt64ArrayFromUnmanagedMemory(IntPtr pSource, ul private static unsafe ulong ReadUIntPtrArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (UIntPtr[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -349,11 +596,28 @@ private static unsafe ulong ReadUIntPtrArrayFromUnmanagedMemory(IntPtr pSource, private static unsafe ulong ReadIntPtrArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (IntPtr[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -380,11 +644,28 @@ private static unsafe ulong ReadIntPtrArrayFromUnmanagedMemory(IntPtr pSource, u private static unsafe ulong ReadSingleArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (float[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -411,11 +692,28 @@ private static unsafe ulong ReadSingleArrayFromUnmanagedMemory(IntPtr pSource, u private static unsafe ulong ReadDoubleArrayFromUnmanagedMemory(IntPtr pSource, ulong length, Array destinationArray, ulong destinationIndex) { var destinationLength = (ulong)destinationArray.LongLength; - if (destinationIndex >= destinationLength) + if (destinationLength < 1) + { + if (destinationIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(destinationIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (destinationIndex >= destinationLength) { throw new ArgumentOutOfRangeException(nameof(destinationIndex)); } + if (length < 1) + { + return 0UL; + } + var destination = (double[])destinationArray; length = Math.Min(length, destinationLength - destinationIndex); @@ -442,11 +740,28 @@ private static unsafe ulong ReadDoubleArrayFromUnmanagedMemory(IntPtr pSource, u private static unsafe ulong WriteByteArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (byte[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -473,11 +788,28 @@ private static unsafe ulong WriteByteArrayToUnmanagedMemory(Array sourceArray, u private static unsafe ulong WriteSByteArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (sbyte[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -496,11 +828,28 @@ private static unsafe ulong WriteSByteArrayToUnmanagedMemory(Array sourceArray, private static unsafe ulong WriteUInt16ArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (ushort[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -519,11 +868,28 @@ private static unsafe ulong WriteUInt16ArrayToUnmanagedMemory(Array sourceArray, private static unsafe ulong WriteCharArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (char[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -550,11 +916,28 @@ private static unsafe ulong WriteCharArrayToUnmanagedMemory(Array sourceArray, u private static unsafe ulong WriteInt16ArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (short[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -581,11 +964,28 @@ private static unsafe ulong WriteInt16ArrayToUnmanagedMemory(Array sourceArray, private static unsafe ulong WriteUInt32ArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (uint[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -604,11 +1004,28 @@ private static unsafe ulong WriteUInt32ArrayToUnmanagedMemory(Array sourceArray, private static unsafe ulong WriteInt32ArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (int[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -635,11 +1052,28 @@ private static unsafe ulong WriteInt32ArrayToUnmanagedMemory(Array sourceArray, private static unsafe ulong WriteUInt64ArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (ulong[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -658,11 +1092,28 @@ private static unsafe ulong WriteUInt64ArrayToUnmanagedMemory(Array sourceArray, private static unsafe ulong WriteInt64ArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (long[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -689,11 +1140,28 @@ private static unsafe ulong WriteInt64ArrayToUnmanagedMemory(Array sourceArray, private static unsafe ulong WriteUIntPtrArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (UIntPtr[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -712,11 +1180,28 @@ private static unsafe ulong WriteUIntPtrArrayToUnmanagedMemory(Array sourceArray private static unsafe ulong WriteIntPtrArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (IntPtr[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -743,11 +1228,28 @@ private static unsafe ulong WriteIntPtrArrayToUnmanagedMemory(Array sourceArray, private static unsafe ulong WriteSingleArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (float[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); @@ -774,11 +1276,28 @@ private static unsafe ulong WriteSingleArrayToUnmanagedMemory(Array sourceArray, private static unsafe ulong WriteDoubleArrayToUnmanagedMemory(Array sourceArray, ulong sourceIndex, ulong length, IntPtr pDestination) { var sourceLength = (ulong)sourceArray.LongLength; - if (sourceIndex >= sourceLength) + if (sourceLength < 1) + { + if (sourceIndex > 0) + { + throw new ArgumentOutOfRangeException(nameof(sourceIndex)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (sourceIndex >= sourceLength) { throw new ArgumentOutOfRangeException(nameof(sourceIndex)); } + if (length < 1) + { + return 0UL; + } + var source = (double[])sourceArray; length = Math.Min(length, sourceLength - sourceIndex); diff --git a/ClearScript/Util/VTablePatcher.cs b/ClearScript/Util/VTablePatcher.cs index 06f2554c..00970c60 100644 --- a/ClearScript/Util/VTablePatcher.cs +++ b/ClearScript/Util/VTablePatcher.cs @@ -12,7 +12,7 @@ namespace Microsoft.ClearScript.Util [SuppressMessage("ReSharper", "CommentTypo", Justification = "This class uses comments to show machine code disassembly.")] internal abstract class VTablePatcher { - private static readonly HashSet patchedVTables = new HashSet(); + private static readonly HashSet patchedVTables = new(); private static IntPtr hHeap; public static VTablePatcher GetInstance() @@ -29,9 +29,8 @@ private static void ApplyVTablePatches(IntPtr pInterface, params VTablePatch[] p lock (PatchLock) { var pVTable = Marshal.ReadIntPtr(pInterface); - if (!patchedVTables.Contains(pVTable)) + if (patchedVTables.Add(pVTable)) { - patchedVTables.Add(pVTable); EnsureHeap(); foreach (var patch in patches) diff --git a/ClearScript/Util/ValueScope.cs b/ClearScript/Util/ValueScope.cs new file mode 100644 index 00000000..34772840 --- /dev/null +++ b/ClearScript/Util/ValueScope.cs @@ -0,0 +1,79 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; + +namespace Microsoft.ClearScript.Util +{ + internal ref struct ValueScope + { + private readonly Action exitAction; + private bool disposed; + + public ValueScope(Action exitAction) + { + this.exitAction = exitAction; + disposed = false; + } + + public void Dispose() + { + if (!disposed) + { + disposed = true; + exitAction?.Invoke(); + } + } + } + + internal ref struct ValueScope + { + private readonly Action exitAction; + private bool disposed; + + public TValue Value { get; } + + public ValueScope(TValue value, Action exitAction) + { + this.exitAction = exitAction; + disposed = false; + Value = value; + } + + public void Dispose() + { + if (!disposed) + { + disposed = true; + exitAction?.Invoke(Value); + } + } + } + + internal static class ScopeFactory + { + public static ValueScope Create(Action enterAction, Action exitAction) + { + enterAction?.Invoke(); + return new ValueScope(exitAction); + } + + public static ValueScope Create(Action enterAction, Action exitAction, in TArg arg) + { + enterAction?.Invoke(arg); + return new ValueScope(exitAction); + } + + public static ValueScope Create(Func enterFunc, Action exitAction) + { + var value = (enterFunc is not null) ? enterFunc() : default; + return new ValueScope(value, exitAction); + } + + public static ValueScope Create(Func enterFunc, Action exitAction, in TArg arg) + { + var value = (enterFunc is not null) ? enterFunc(arg) : default; + return new ValueScope(value, exitAction); + } + } +} diff --git a/ClearScript/Util/Web/WebResponse.cs b/ClearScript/Util/Web/WebResponse.cs index 69b776b7..0545a7b5 100644 --- a/ClearScript/Util/Web/WebResponse.cs +++ b/ClearScript/Util/Web/WebResponse.cs @@ -51,7 +51,7 @@ public void Close(int? overrideStatusCode = null) { if (Interlocked.CompareExchange(ref state, State.Closed, State.Open) == State.Open) { - CloseAsync(overrideStatusCode).ContinueWith(task => MiscHelpers.Try(task.Wait)); + CloseAsync(overrideStatusCode).ContinueWith(task => MiscHelpers.Try(static task => task.Wait(), task)); } } diff --git a/ClearScript/Util/Web/WebSocket.cs b/ClearScript/Util/Web/WebSocket.cs index 44fde565..f9da04e7 100644 --- a/ClearScript/Util/Web/WebSocket.cs +++ b/ClearScript/Util/Web/WebSocket.cs @@ -22,10 +22,10 @@ internal sealed class WebSocket private readonly bool isServerSocket; private readonly Random random = MiscHelpers.CreateSeededRandom(); - private readonly SemaphoreSlim receiveSemaphore = new SemaphoreSlim(1); - private readonly SemaphoreSlim sendSemaphore = new SemaphoreSlim(1); + private readonly SemaphoreSlim receiveSemaphore = new(1); + private readonly SemaphoreSlim sendSemaphore = new(1); - private readonly InterlockedOneWayFlag closedFlag = new InterlockedOneWayFlag(); + private readonly InterlockedOneWayFlag closedFlag = new(); #endregion @@ -284,7 +284,7 @@ private async Task SendFrameAsync(Frame frame) } await socket.SendBytesAsync(header).ConfigureAwait(false); - if (lengthBytes != null) + if (lengthBytes is not null) { await socket.SendBytesAsync(lengthBytes).ConfigureAwait(false); } @@ -342,7 +342,7 @@ private async Task SendFrameAsync(Frame frame) private void SendFrameAsync(Frame frame, Action callback) { - SendFrameAsync(frame).ContinueWith(task => callback(MiscHelpers.Try(task.Wait))); + SendFrameAsync(frame).ContinueWith(task => callback(MiscHelpers.Try(static task => task.Wait(), task))); } #endregion @@ -360,7 +360,7 @@ public void Close(ErrorCode errorCode, string message) } var frame = new Frame { Final = true, OpCode = OpCodes.Close, Payload = payload }; - SendFrameAsync(frame, succeeded => + SendFrameAsync(frame, _ => { socket.Close(); receiveSemaphore.Dispose(); diff --git a/ClearScript/V8/FastProxy/IV8FastAsyncEnumerator.cs b/ClearScript/V8/FastProxy/IV8FastAsyncEnumerator.cs new file mode 100644 index 00000000..5509df4b --- /dev/null +++ b/ClearScript/V8/FastProxy/IV8FastAsyncEnumerator.cs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Threading.Tasks; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents a fast asynchronous enumerator. + /// + public interface IV8FastAsyncEnumerator : IAsyncDisposable + { + /// + /// Gets the item at the current position in the collection. + /// + /// On return, contains the item at the current position in the collection. + void GetCurrent(in V8FastResult item); + + /// + /// Advances the enumerator asynchronously to the next position in the collection. + /// + /// A task structure whose result is true if the enumerator was advanced to the next position, false if it was already at the end of the collection. + ValueTask MoveNextAsync(); + } +} diff --git a/ClearScript/V8/FastProxy/IV8FastEnumerator.cs b/ClearScript/V8/FastProxy/IV8FastEnumerator.cs new file mode 100644 index 00000000..2110089f --- /dev/null +++ b/ClearScript/V8/FastProxy/IV8FastEnumerator.cs @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents a fast enumerator. + /// + public interface IV8FastEnumerator : IDisposable + { + /// + /// Gets the item at the current position in the collection. + /// + /// On return, contains the item at the current position in the collection. + void GetCurrent(in V8FastResult item); + + /// + /// Advances the enumerator to the next position in the collection. + /// + /// True if the enumerator was advanced to the next position, false if it is already at the end of the collection. + bool MoveNext(); + } +} diff --git a/ClearScript/V8/FastProxy/IV8FastHostDynamicProperties.cs b/ClearScript/V8/FastProxy/IV8FastHostDynamicProperties.cs new file mode 100644 index 00000000..e1439388 --- /dev/null +++ b/ClearScript/V8/FastProxy/IV8FastHostDynamicProperties.cs @@ -0,0 +1,77 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System.Collections.Generic; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents a set of dynamic properties keyed by name or index. + /// + public interface IV8FastHostDynamicProperties + { + /// + /// Enumerates the names of all existing named dynamic properties. + /// + IEnumerable DynamicPropertyNames { get; } + + /// + /// Enumerates the indices of all existing indexed dynamic properties. + /// + IEnumerable DynamicPropertyIndices { get; } + + /// + /// Gets the value of a named dynamic property. + /// + /// The name of the dynamic property to get. + /// On return, the value of the dynamic property if it was found. + void GetDynamicProperty(string name, in V8FastResult value); + + /// + /// Sets the value of a named dynamic property. + /// + /// The name of the dynamic property to set. + /// The property value. + void SetDynamicProperty(string name, in V8FastArg value); + + /// + /// Gets the value of an indexed dynamic property. + /// + /// The index of the dynamic property to get. + /// On return, the value of the dynamic property if it was found. + void GetDynamicProperty(int index, in V8FastResult value); + + /// + /// Sets the value of an indexed dynamic property. + /// + /// The index of the dynamic property to set. + /// The property value. + void SetDynamicProperty(int index, in V8FastArg value); + + /// + /// Determines whether a dynamic property with the specified name exists. + /// + /// The name of the dynamic property for which to search. + /// True if the dynamic property exists, false otherwise. + bool HasDynamicProperty(string name); + + /// + /// Determines whether a dynamic property exists at the specified index. + /// + /// The index of the dynamic property for which to search. + /// True if the dynamic property exists, false otherwise. + bool HasDynamicProperty(int index); + + /// + /// Deletes a named dynamic property. + /// + /// The name of the dynamic property to delete. + void DeleteDynamicProperty(string name); + + /// + /// Deletes an indexed dynamic property. + /// + /// The index of the dynamic property to delete. + void DeleteDynamicProperty(int index); + } +} diff --git a/ClearScript/V8/FastProxy/IV8FastHostFunction.cs b/ClearScript/V8/FastProxy/IV8FastHostFunction.cs new file mode 100644 index 00000000..f3e7e08e --- /dev/null +++ b/ClearScript/V8/FastProxy/IV8FastHostFunction.cs @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents a fast host function. + /// + public interface IV8FastHostFunction : IV8FastHostObject + { + /// + /// Gets the function's operations interface. + /// + new IV8FastHostFunctionOperations Operations { get; } + } +} diff --git a/ClearScript/V8/FastProxy/IV8FastHostFunctionOperations.cs b/ClearScript/V8/FastProxy/IV8FastHostFunctionOperations.cs new file mode 100644 index 00000000..055de60f --- /dev/null +++ b/ClearScript/V8/FastProxy/IV8FastHostFunctionOperations.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents the operations supported by a fast host function. + /// + public interface IV8FastHostFunctionOperations : IV8FastHostObjectOperations + { + /// + /// Invokes the function. + /// + /// True to invoke the function as a constructor, false otherwise. + /// The arguments to pass to the function. + /// On return, the function's return value. + void Invoke(bool asConstructor, in V8FastArgs args, in V8FastResult result); + } +} diff --git a/ClearScript/V8/FastProxy/IV8FastHostMethod.cs b/ClearScript/V8/FastProxy/IV8FastHostMethod.cs new file mode 100644 index 00000000..868364ae --- /dev/null +++ b/ClearScript/V8/FastProxy/IV8FastHostMethod.cs @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents a fast host method. + /// + public interface IV8FastHostMethod : IV8FastHostObject + { + /// + /// Gets the method's operations interface. + /// + new IV8FastHostMethodOperations Operations { get; } + } +} diff --git a/ClearScript/V8/FastProxy/IV8FastHostMethodOperations.cs b/ClearScript/V8/FastProxy/IV8FastHostMethodOperations.cs new file mode 100644 index 00000000..005b3bb4 --- /dev/null +++ b/ClearScript/V8/FastProxy/IV8FastHostMethodOperations.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents the operations supported by a fast host method. + /// + public interface IV8FastHostMethodOperations : IV8FastHostObjectOperations + { + /// + /// Invokes the method. + /// + /// The arguments to pass to the method. + /// On return, the method's return value. + void Invoke(in V8FastArgs args, in V8FastResult result); + } +} diff --git a/ClearScript/V8/FastProxy/IV8FastHostObject.cs b/ClearScript/V8/FastProxy/IV8FastHostObject.cs new file mode 100644 index 00000000..e833ce20 --- /dev/null +++ b/ClearScript/V8/FastProxy/IV8FastHostObject.cs @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents a fast host object. + /// + public interface IV8FastHostObject + { + /// + /// Gets the object's operations interface. + /// + IV8FastHostObjectOperations Operations { get; } + } +} diff --git a/ClearScript/V8/FastProxy/IV8FastHostObjectOperations.cs b/ClearScript/V8/FastProxy/IV8FastHostObjectOperations.cs new file mode 100644 index 00000000..28beca02 --- /dev/null +++ b/ClearScript/V8/FastProxy/IV8FastHostObjectOperations.cs @@ -0,0 +1,113 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System.Collections.Generic; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents the operations supported by a fast host object. + /// + public interface IV8FastHostObjectOperations + { + /// + /// Gets a human-readable name for the specified object. + /// + /// The object for which to get a human-readable name. + /// A human-readable name for the specified object. + string GetFriendlyName(IV8FastHostObject instance); + + /// + /// Gets the value of a named property. + /// + /// The object to search for the property. + /// The name of the property to get. + /// On return, the value of the property if it was found. + /// On return, true if the property value is a cacheable constant, false otherwise. + void GetProperty(IV8FastHostObject instance, string name, in V8FastResult value, out bool isCacheable); + + /// + /// Sets the value of a named property. + /// + /// The object whose property to set. + /// The name of the property to set. + /// The property value. + void SetProperty(IV8FastHostObject instance, string name, in V8FastArg value); + + /// + /// Gets the attributes of a named property. + /// + /// The object to search for the property. + /// The name of the property to query. + /// A set of property attributes. + V8FastHostPropertyFlags QueryProperty(IV8FastHostObject instance, string name); + + /// + /// Deletes a named property. + /// + /// The object whose property to delete. + /// The name of the property to delete. + /// True if the property was deleted or does not exist; false if the property exists but is not deletable. + bool DeleteProperty(IV8FastHostObject instance, string name); + + /// + /// Enumerates the names of all existing named properties. + /// + /// The object to search for named properties. + /// A collection containing the names of all existing named properties. + IEnumerable GetPropertyNames(IV8FastHostObject instance); + + /// + /// Gets the value of an indexed property. + /// + /// The object to search for the property. + /// The index of the property to get. + /// On return, the value of the property if it was found. + void GetProperty(IV8FastHostObject instance, int index, in V8FastResult value); + + /// + /// Sets the value of an indexed property. + /// + /// The object whose property to set. + /// The index of the property to set. + /// The property value. + void SetProperty(IV8FastHostObject instance, int index, in V8FastArg value); + + /// + /// Gets the attributes of an indexed property. + /// + /// The object to search for the property. + /// The index of the property to query. + /// A set of property attributes. + V8FastHostPropertyFlags QueryProperty(IV8FastHostObject instance, int index); + + /// + /// Deletes an indexed property. + /// + /// The object whose property to delete. + /// The index of the property to delete. + /// True if the property was deleted or does not exist; false if the property exists but is not deletable. + bool DeleteProperty(IV8FastHostObject instance, int index); + + /// + /// Enumerates the indices of all existing indexed properties. + /// + /// The object to search for indexed properties. + /// A collection containing the indices of all existing indexed properties. + IEnumerable GetPropertyIndices(IV8FastHostObject instance); + + /// + /// Creates a fast enumerator that iterates through the object's contents. + /// + /// The object for which to create a fast enumerator. + /// A fast enumerator for the specified object's contents. + IV8FastEnumerator CreateEnumerator(IV8FastHostObject instance); + + /// + /// Creates a fast asynchronous enumerator that iterates through the object's contents. + /// + /// The object for which to create a fast asynchronous enumerator. + /// A fast asynchronous enumerator for the specified object's contents. + IV8FastAsyncEnumerator CreateAsyncEnumerator(IV8FastHostObject instance); + } +} diff --git a/ClearScript/V8/FastProxy/V8FastArg.cs b/ClearScript/V8/FastProxy/V8FastArg.cs new file mode 100644 index 00000000..985e087a --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastArg.cs @@ -0,0 +1,373 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Numerics; +using Microsoft.ClearScript.V8.SplitProxy; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents an argument passed to a fast host object from script code. + /// + public readonly ref struct V8FastArg + { + private readonly V8Value.FastArg.Ptr pArg; + private readonly V8FastArgKind kind; + private readonly object obj; + + internal V8FastArg(V8ScriptEngine engine, V8Value.FastArg.Ptr pArg, V8FastArgKind kind) + { + this.pArg = pArg; + this.kind = kind; + obj = V8FastArgImpl.InitializeObject(engine, pArg.AsRef()); + } + + /// + /// Determines whether the argument is falsy. + /// + public bool IsFalsy => V8FastArgImpl.IsFalsy(pArg.AsRef(), obj); + + /// + /// Determines whether the argument is truthy. + /// + public bool IsTruthy => V8FastArgImpl.IsTruthy(pArg.AsRef(), obj); + + /// + /// Determines whether the argument is undefined. + /// + public bool IsUndefined => V8FastArgImpl.IsUndefined(pArg.AsRef(), obj); + + /// + /// Determines whether the argument is null. + /// + public bool IsNull => V8FastArgImpl.IsNull(pArg.AsRef(), obj); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out bool value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out char value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out sbyte value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out byte value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out short value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out ushort value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out int value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out uint value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out long value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out ulong value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out float value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out double value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out decimal value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the string value of the argument if possible. + /// + /// On return, the string value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out string value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the string value of the argument as a ReadOnlySpan<char> if possible. + /// + /// On return, the string value of the argument as a ReadOnlySpan<char> if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out ReadOnlySpan value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out DateTime value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument if possible. + /// + /// On return, the value of the argument if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out BigInteger value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets a nullable value of the given underlying type from the argument if possible. + /// + /// The underlying type of the nullable value to get. + /// On return, a nullable value of underlying type if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out T? value) where T : struct => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets a value of the given type from the argument if possible. + /// + /// The type of value to get. + /// On return, a value of type if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(out T value) => V8FastArgImpl.TryGet(pArg.AsRef(), obj, out value); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public bool GetBoolean(string name = null) => V8FastArgImpl.GetBoolean(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public char GetChar(string name = null) => V8FastArgImpl.GetChar(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public sbyte GetSByte(string name = null) => V8FastArgImpl.GetSByte(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public byte GetByte(string name = null) => V8FastArgImpl.GetByte(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public short GetInt16(string name = null) => V8FastArgImpl.GetInt16(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public ushort GetUInt16(string name = null) => V8FastArgImpl.GetUInt16(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public int GetInt32(string name = null) => V8FastArgImpl.GetInt32(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public uint GetUInt32(string name = null) => V8FastArgImpl.GetUInt32(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public long GetInt64(string name = null) => V8FastArgImpl.GetInt64(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public ulong GetUInt64(string name = null) => V8FastArgImpl.GetUInt64(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public float GetSingle(string name = null) => V8FastArgImpl.GetSingle(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public double GetDouble(string name = null) => V8FastArgImpl.GetDouble(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public decimal GetDecimal(string name = null) => V8FastArgImpl.GetDecimal(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the string value of the argument. + /// + /// An optional argument or property name. + /// The string value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public string GetString(string name = null) => V8FastArgImpl.GetString(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the string value of the argument as a ReadOnlySpan<char>. + /// + /// An optional argument or property name. + /// The string value of the argument as a ReadOnlySpan<char>. + /// + /// This method throws an exception if the operation fails. + /// + public ReadOnlySpan GetCharSpan(string name = null) => V8FastArgImpl.GetCharSpan(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public DateTime GetDateTime(string name = null) => V8FastArgImpl.GetDateTime(pArg.AsRef(), obj, kind, name); + + /// + /// Gets the value of the argument. + /// + /// An optional argument or property name. + /// The value of the argument. + /// + /// This method throws an exception if the operation fails. + /// + public BigInteger GetBigInteger(string name = null) => V8FastArgImpl.GetBigInteger(pArg.AsRef(), obj, kind, name); + + /// + /// Gets a nullable value of the given underlying type from the argument. + /// + /// The underlying type of the nullable value to get. + /// An optional argument or property name. + /// A nullable value of underlying type . + /// + /// This method throws an exception if the operation fails. + /// + public T? GetNullable(string name = null) where T : struct => V8FastArgImpl.GetNullable(pArg.AsRef(), obj, kind, name); + + /// + /// Gets a value of the given type from the argument. + /// + /// The type of value to get. + /// An optional argument or property name. + /// A value of type . + /// + /// This method throws an exception if the operation fails. + /// + public T Get(string name = null) => V8FastArgImpl.Get(pArg.AsRef(), obj, kind, name); + } +} diff --git a/ClearScript/V8/FastProxy/V8FastArgImpl.cs b/ClearScript/V8/FastProxy/V8FastArgImpl.cs new file mode 100644 index 00000000..4588904a --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastArgImpl.cs @@ -0,0 +1,808 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.V8.SplitProxy; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + internal static class V8FastArgImpl + { + public static object InitializeObject(V8ScriptEngine engine, in V8Value.FastArg arg) + { + if (arg.IsUndefined()) + { + var importValue = engine.UndefinedImportValue; + return (importValue is not Undefined) ? importValue : Nonexistent.Value; + } + + if (arg.IsNull()) + { + return engine.NullImportValue ?? Nonexistent.Value; + } + + if (arg.TryGetV8Object(out var v8Object)) + { + return engine.MarshalToHost(v8Object, false); + } + + if (arg.TryGetHostObject(out var hostObject)) + { + return engine.MarshalToHost(hostObject, false); + } + + return Nonexistent.Value; + } + + public static bool IsFalsy(in V8Value.FastArg arg, object obj) + { + if (IsNull(arg, obj) || IsUndefined(arg, obj)) + { + return true; + } + + if (TryGet(arg, obj, out bool boolValue)) + { + return !boolValue; + } + + if (TryGet(arg, obj, out double doubleValue)) + { + return (doubleValue == 0) || double.IsNaN(doubleValue); + } + + if (TryGet(arg, obj, out BigInteger bigIntegerValue)) + { + return bigIntegerValue.IsZero; + } + + if (TryGet(arg, obj, out ReadOnlySpan charSpanValue)) + { + return charSpanValue.IsEmpty; + } + + return false; + } + + public static bool IsTruthy(in V8Value.FastArg arg, object obj) => !IsFalsy(arg, obj); + + public static bool IsUndefined(in V8Value.FastArg arg, object obj) => (arg.IsUndefined() && (obj is Nonexistent)) || (obj is Undefined); + + public static bool IsNull(in V8Value.FastArg arg, object obj) => (arg.IsNull() && (obj is Nonexistent)) || (obj is null); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out bool value) => arg.TryGetBoolean(out value) || TryGetFromObject(obj, out value, out _); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out char value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out sbyte value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out byte value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out short value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out ushort value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out int value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out uint value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out long value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out ulong value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out float value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out double value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out decimal value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out string value) => arg.TryGetString(out value) || TryGetFromObject(obj, out value, out _); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out ReadOnlySpan value) + { + if (arg.TryGetCharSpan(out value)) + { + return true; + } + + if (TryGetFromObject(obj, out string stringValue, out _)) + { + value = stringValue.AsSpan(); + return true; + } + + return false; + } + + public static bool TryGet(in V8Value.FastArg arg, object obj, out DateTime value) => arg.TryGetDateTime(out value) || TryGetFromObject(obj, out value, out _); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out BigInteger value) => TryGetNumber(arg, obj, out value); + + public static bool TryGet(in V8Value.FastArg arg, object obj, out T? value) where T : struct + { + if (IsNull(arg, obj) || IsUndefined(arg, obj)) + { + value = null; + return true; + } + + if (TryGet(arg, obj, out T structValue)) + { + value = structValue; + return true; + } + + value = null; + return false; + } + + public static bool TryGet(in V8Value.FastArg arg, object obj, out T value) + { + value = default; + var type = typeof(T); + + if (type == typeof(bool)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(char)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(sbyte)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(byte)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(short)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(ushort)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(int)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(uint)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(long)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(ulong)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(float)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(double)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(decimal)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(string)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(DateTime)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (type == typeof(BigInteger)) + { + return TryGet(arg, obj, out Unsafe.As(ref value)); + } + + if (Nullable.GetUnderlyingType(type) is {} underlyingType) + { + return NullableHelpers.TryGet(underlyingType, arg, obj, out value); + } + + if (TryGetFromObject(obj, out value, out var isObject)) + { + return true; + } + + if (isObject) + { + return false; + } + + { + if (arg.IsUndefined()) + { + if (Undefined.Value is T checkedValue) + { + value = checkedValue; + return true; + } + + return false; + } + } + + { + if (arg.TryGetBoolean(out var boolValue)) + { + if (boolValue is T checkedValue) + { + value = checkedValue; + return true; + } + + return false; + } + } + + { + if (arg.TryGetNumber(out var doubleValue)) + { + if (doubleValue is T checkedValue) + { + value = checkedValue; + return true; + } + + return false; + } + } + + { + if (arg.TryGetString(out var stringValue)) + { + if (stringValue is T checkedValue) + { + value = checkedValue; + return true; + } + + return false; + } + } + + { + if (arg.TryGetDateTime(out var dateTimeValue)) + { + if (dateTimeValue is T checkedValue) + { + value = checkedValue; + return true; + } + + return false; + } + } + + { + if (arg.TryGetBigInteger(out var bigIntegerValue)) + { + if (bigIntegerValue is T checkedValue) + { + value = checkedValue; + return true; + } + + return false; + } + } + + return false; + } + + public static bool GetBoolean(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out bool result), result, kind, name); + + public static char GetChar(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out char result), result, kind, name); + + public static sbyte GetSByte(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out sbyte result), result, kind, name); + + public static byte GetByte(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out byte result), result, kind, name); + + public static short GetInt16(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out short result), result, kind, name); + + public static ushort GetUInt16(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out ushort result), result, kind, name); + + public static int GetInt32(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out int result), result, kind, name); + + public static uint GetUInt32(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out uint result), result, kind, name); + + public static long GetInt64(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out long result), result, kind, name); + + public static ulong GetUInt64(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out ulong result), result, kind, name); + + public static float GetSingle(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out float result), result, kind, name); + + public static double GetDouble(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out double result), result, kind, name); + + public static decimal GetDecimal(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out decimal result), result, kind, name); + + public static string GetString(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => IsNull(arg, obj) ? null : ReturnOrThrow(TryGet(arg, obj, out string result), result, kind, name); + + public static ReadOnlySpan GetCharSpan(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out ReadOnlySpan result), result, kind, name); + + public static DateTime GetDateTime(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out DateTime result), result, kind, name); + + public static BigInteger GetBigInteger(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => ReturnOrThrow(TryGet(arg, obj, out BigInteger result), result, kind, name); + + public static T? GetNullable(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) where T : struct => ReturnOrThrow(TryGet(arg, obj, out T? result), result, kind, name); + + public static T Get(in V8Value.FastArg arg, object obj, V8FastArgKind kind, string name) => (IsNull(arg, obj) && (default(T) is null)) ? default : ReturnOrThrow(TryGet(arg, obj, out T result), result, kind, name); + + private static bool TryGetFromObject(object obj, out T value, out bool isObject) + { + isObject = obj is not Nonexistent; + if (isObject) + { + if (obj is T checkedValue) + { + value = checkedValue; + return true; + } + } + + value = default; + return false; + } + + private static bool TryGetNumber(in V8Value.FastArg arg, object obj, out T value) where T : struct + { + if (arg.TryGetNumber(out var doubleValue)) + { + return TryGetNumberFromDouble(doubleValue, out value); + } + + if (arg.TryGetBigInteger(out var bigIntegerValue)) + { + return TryGetNumberFromBigInteger(bigIntegerValue, out value); + } + + if (obj is not Nonexistent) + { + return TryGetNumberFromObject(obj, out value); + } + + value = default; + return false; + } + + private static bool TryGetNumberFromObject(object obj, out T value) where T : struct + { + if (obj is char charValue) + { + return TryGetNumberFromInt64(charValue, out value); + } + + if (obj is sbyte sbyteValue) + { + return TryGetNumberFromInt64(sbyteValue, out value); + } + + if (obj is byte byteValue) + { + return TryGetNumberFromInt64(byteValue, out value); + } + + if (obj is short shortValue) + { + return TryGetNumberFromInt64(shortValue, out value); + } + + if (obj is ushort ushortValue) + { + return TryGetNumberFromInt64(ushortValue, out value); + } + + if (obj is int intValue) + { + return TryGetNumberFromInt64(intValue, out value); + } + + if (obj is uint uintValue) + { + return TryGetNumberFromInt64(uintValue, out value); + } + + if (obj is long longValue) + { + return TryGetNumberFromInt64(longValue, out value); + } + + if (obj is ulong ulongValue) + { + return TryGetNumberFromUInt64(ulongValue, out value); + } + + if (obj is float floatValue) + { + return TryGetNumberFromDouble(floatValue, out value); + } + + if (obj is double doubleValue) + { + return TryGetNumberFromDouble(doubleValue, out value); + } + + if (obj is decimal decimalValue) + { + return TryGetNumberFromDecimal(decimalValue, out value); + } + + if (obj is BigInteger bigIntegerValue) + { + return TryGetNumberFromBigInteger(bigIntegerValue, out value); + } + + value = default; + return false; + } + + private static bool TryGetNumberFromInt64(long longValue, out T value) where T : struct + { + if (TryGetIntegerFromInt64(longValue, out value)) + { + return true; + } + + var type = typeof(T); + if (type == typeof(float)) + { + if ((longValue >= -MiscHelpers.MaxInt32InSingle) && (longValue <= MiscHelpers.MaxInt32InSingle)) + { + Unsafe.As(ref value) = longValue; + return true; + } + } + else if (type == typeof(double)) + { + if ((longValue >= -MiscHelpers.MaxInt64InDouble) && (longValue <= MiscHelpers.MaxInt64InDouble)) + { + Unsafe.As(ref value) = longValue; + return true; + } + } + else if (type == typeof(decimal)) + { + Unsafe.As(ref value) = longValue; + return true; + } + + return false; + } + + private static bool TryGetNumberFromUInt64(ulong ulongValue, out T value) where T : struct + { + if (TryGetIntegerFromUInt64(ulongValue, out value)) + { + return true; + } + + var type = typeof(T); + + if (type == typeof(float)) + { + if (ulongValue <= MiscHelpers.MaxInt32InSingle) + { + Unsafe.As(ref value) = ulongValue; + return true; + } + } + else if (type == typeof(double)) + { + if (ulongValue <= MiscHelpers.MaxInt64InDouble) + { + Unsafe.As(ref value) = ulongValue; + return true; + } + } + else if (type == typeof(decimal)) + { + Unsafe.As(ref value) = ulongValue; + return true; + } + + return false; + } + + private static bool TryGetNumberFromDouble(double doubleValue, out T value) where T : struct + { + if (Math.Abs(doubleValue) <= MiscHelpers.MaxInt64InDoubleAsDouble) + { + // ReSharper disable CompareOfFloatsByEqualityOperator + + var truncatedValue = Math.Truncate(doubleValue); + if ((truncatedValue == doubleValue) && TryGetIntegerFromInt64((long)truncatedValue, out value)) + { + return true; + } + + // ReSharper restore CompareOfFloatsByEqualityOperator + } + + return TryGetFloatingPointFromDouble(doubleValue, out value); + } + + private static bool TryGetNumberFromDecimal(decimal decimalValue, out T value) where T : struct + { + if (Math.Abs(decimalValue) <= MiscHelpers.MaxBigIntegerInDecimalAsDecimal) + { + // ReSharper disable CompareOfFloatsByEqualityOperator + + var truncatedValue = Math.Truncate(decimalValue); + if ((truncatedValue == decimalValue) && TryGetIntegerFromBigInteger((BigInteger)truncatedValue, out value)) + { + return true; + } + + // ReSharper restore CompareOfFloatsByEqualityOperator + } + + return TryGetFloatingPointFromDecimal(decimalValue, out value); + } + + private static bool TryGetNumberFromBigInteger(BigInteger bigIntegerValue, out T value) where T : struct + { + if (TryGetIntegerFromBigInteger(bigIntegerValue, out value)) + { + return true; + } + + var type = typeof(T); + if (type == typeof(float)) + { + if (BigInteger.Abs(bigIntegerValue) <= MiscHelpers.MaxInt32InSingle) + { + Unsafe.As(ref value) = (float)bigIntegerValue; + return true; + } + } + else if (type == typeof(double)) + { + if (BigInteger.Abs(bigIntegerValue) <= MiscHelpers.MaxInt64InDouble) + { + Unsafe.As(ref value) = (double)bigIntegerValue; + return true; + } + } + else if (type == typeof(decimal)) + { + if (BigInteger.Abs(bigIntegerValue) <= MiscHelpers.MaxBigIntegerInDecimal) + { + Unsafe.As(ref value) = (decimal)bigIntegerValue; + return true; + } + } + + return false; + } + + private static bool TryGetIntegerFromInt64(long longValue, out T value) where T : struct + { + value = default; + + var type = typeof(T); + if (type == typeof(char)) + { + if ((longValue >= char.MinValue) && (longValue <= char.MaxValue)) + { + Unsafe.As(ref value) = (char)longValue; + return true; + } + } + else if (type == typeof(sbyte)) + { + if ((longValue >= sbyte.MinValue) && (longValue <= sbyte.MaxValue)) + { + Unsafe.As(ref value) = (sbyte)longValue; + return true; + } + } + else if (type == typeof(byte)) + { + if ((longValue >= 0) && (longValue <= byte.MaxValue)) + { + Unsafe.As(ref value) = (byte)longValue; + return true; + } + } + else if (type == typeof(short)) + { + if ((longValue >= short.MinValue) && (longValue <= short.MaxValue)) + { + Unsafe.As(ref value) = (short)longValue; + return true; + } + } + else if (type == typeof(ushort)) + { + if ((longValue >= 0) && (longValue <= ushort.MaxValue)) + { + Unsafe.As(ref value) = (ushort)longValue; + return true; + } + } + else if (type == typeof(int)) + { + if ((longValue >= int.MinValue) && (longValue <= int.MaxValue)) + { + Unsafe.As(ref value) = (int)longValue; + return true; + } + } + else if (type == typeof(uint)) + { + if ((longValue >= 0) && (longValue <= uint.MaxValue)) + { + Unsafe.As(ref value) = (uint)longValue; + return true; + } + } + else if (type == typeof(long)) + { + Unsafe.As(ref value) = longValue; + return true; + } + else if (type == typeof(ulong)) + { + if (longValue >= 0) + { + Unsafe.As(ref value) = (ulong)longValue; + return true; + } + } + else if (type == typeof(BigInteger)) + { + Unsafe.As(ref value) = longValue; + return true; + } + + return false; + } + + private static bool TryGetIntegerFromUInt64(ulong ulongValue, out T value) where T : struct + { + if (ulongValue <= long.MaxValue) + { + return TryGetIntegerFromInt64((long)ulongValue, out value); + } + + value = default; + + if (typeof(T) == typeof(ulong)) + { + Unsafe.As(ref value) = ulongValue; + return true; + } + + if (typeof(T) == typeof(BigInteger)) + { + Unsafe.As(ref value) = ulongValue; + return true; + } + + return false; + } + + private static bool TryGetIntegerFromBigInteger(BigInteger bigIntegerValue, out T value) where T : struct + { + if ((bigIntegerValue >= long.MinValue) && (bigIntegerValue <= long.MaxValue)) + { + return TryGetIntegerFromInt64((long)bigIntegerValue, out value); + } + + if ((bigIntegerValue >= 0) && (bigIntegerValue <= ulong.MaxValue)) + { + return TryGetIntegerFromUInt64((ulong)bigIntegerValue, out value); + } + + value = default; + + if (typeof(T) == typeof(BigInteger)) + { + Unsafe.As(ref value) = bigIntegerValue; + return true; + } + + return false; + } + + private static bool TryGetFloatingPointFromDouble(double doubleValue, out T value) where T : struct + { + value = default; + var type = typeof(T); + + if (type == typeof(float)) + { + if ((doubleValue >= float.MinValue) && (doubleValue <= float.MaxValue)) + { + Unsafe.As(ref value) = (float)doubleValue; + return true; + } + + return false; + } + + if (type == typeof(double)) + { + Unsafe.As(ref value) = doubleValue; + return true; + } + + if (type == typeof(decimal)) + { + return MiscHelpers.Try(out Unsafe.As(ref value), static doubleValue => (decimal)doubleValue, doubleValue); + } + + return false; + } + + private static bool TryGetFloatingPointFromDecimal(decimal decimalValue, out T value) where T : struct + { + value = default; + var type = typeof(T); + + if (type == typeof(float)) + { + Unsafe.As(ref value) = (float)decimalValue; + return true; + } + + if (type == typeof(double)) + { + Unsafe.As(ref value) = (double)decimalValue; + return true; + } + + if (type == typeof(decimal)) + { + Unsafe.As(ref value) = decimalValue; + return true; + } + + return false; + } + + private static T ReturnOrThrow(bool succeeded, T result, V8FastArgKind kind, string name) => succeeded ? result : throw CreateArgumentException(kind, name); + + private static ReadOnlySpan ReturnOrThrow(bool succeeded, in ReadOnlySpan result, V8FastArgKind kind, string name) => succeeded ? result : throw CreateArgumentException(kind, name); + + private static ArgumentException CreateArgumentException(V8FastArgKind kind, string name) + { + return kind switch + { + V8FastArgKind.PropertyValue => new ArgumentException($"Invalid value specified for property '{name.ToNonNull("[unknown]")}'"), + V8FastArgKind.MethodArg => new ArgumentException($"Invalid argument specified for method parameter '{name.ToNonNull("[unnamed]")}'"), + _ => new ArgumentException($"Invalid argument specified for function parameter '{name.ToNonNull("[unnamed]")}'") + }; + } + } +} diff --git a/ClearScript/V8/FastProxy/V8FastArgKind.cs b/ClearScript/V8/FastProxy/V8FastArgKind.cs new file mode 100644 index 00000000..688e9d1d --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastArgKind.cs @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.V8.FastProxy +{ + internal enum V8FastArgKind + { + PropertyValue, + MethodArg, + FunctionArg + } +} diff --git a/ClearScript/V8/FastProxy/V8FastArgs.cs b/ClearScript/V8/FastProxy/V8FastArgs.cs new file mode 100644 index 00000000..0f500439 --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastArgs.cs @@ -0,0 +1,449 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Numerics; +using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.V8.SplitProxy; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents a list of arguments passed to a fast host object from script code. + /// + public readonly ref struct V8FastArgs + { + private readonly ReadOnlySpan args; + private readonly V8FastArgKind argKind; + private readonly object[] objects; + + internal V8FastArgs(V8ScriptEngine engine, in ReadOnlySpan args, V8FastArgKind argKind) + { + this.args = args; + this.argKind = argKind; + objects = null; + + for (var index = 0; index < args.Length; index++) + { + var tempObject = V8FastArgImpl.InitializeObject(engine, args[index]); + if (tempObject is not Nonexistent) + { + EnsureObjects(ref objects, args.Length); + objects[index] = tempObject; + } + } + } + + /// + /// Gets the number of arguments in the list. + /// + public int Count => args.Length; + + /// + /// Determines whether the argument at the specified index is falsy. + /// + /// The argument index. + /// True if the argument at the specified index is falsy, false otherwise. + public bool IsFalsy(int index) => V8FastArgImpl.IsFalsy(args[index], GetObject(index)); + + /// + /// Determines whether the argument at the specified index is truthy. + /// + /// The argument index. + /// True if the argument at the specified index is truthy, false otherwise. + public bool IsTruthy(int index) => V8FastArgImpl.IsTruthy(args[index], GetObject(index)); + + /// + /// Determines whether the argument at the specified index is undefined. + /// + /// The argument index. + /// True if the argument at the specified index is undefined, false otherwise. + public bool IsUndefined(int index) => V8FastArgImpl.IsUndefined(args[index], GetObject(index)); + + /// + /// Determines whether the argument at the specified index is null. + /// + /// The argument index. + /// True if the argument at the specified index is undefined, false otherwise. + public bool IsNull(int index) => V8FastArgImpl.IsNull(args[index], GetObject(index)); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out bool value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out char value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out sbyte value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out byte value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out short value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out ushort value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out int value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out uint value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out long value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out ulong value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out float value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out double value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out decimal value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the string value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the string value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out string value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the string value of the argument at the specified index as a ReadOnlySpan<char> if possible. + /// + /// The argument index. + /// On return, the string value of the argument at the specified index as a ReadOnlySpan<char> if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out ReadOnlySpan value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out DateTime value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index if possible. + /// + /// The argument index. + /// On return, the value of the argument at the specified index if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out BigInteger value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets a nullable value of the given underlying type from the argument at the specified index if possible. + /// + /// The underlying type of the nullable value to get. + /// The argument index. + /// On return, a nullable value of underlying type if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out T? value) where T : struct => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets a value of the given type from the argument at the specified index if possible. + /// + /// The type of value to get. + /// The argument index. + /// On return, a value of type if the operation succeeded. + /// True if the operation succeeded, false otherwise. + public bool TryGet(int index, out T value) => V8FastArgImpl.TryGet(args[index], GetObject(index), out value); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public bool GetBoolean(int index, string name = null) => V8FastArgImpl.GetBoolean(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public char GetChar(int index, string name = null) => V8FastArgImpl.GetChar(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public sbyte GetSByte(int index, string name = null) => V8FastArgImpl.GetSByte(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public byte GetByte(int index, string name = null) => V8FastArgImpl.GetByte(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public short GetInt16(int index, string name = null) => V8FastArgImpl.GetInt16(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public ushort GetUInt16(int index, string name = null) => V8FastArgImpl.GetUInt16(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public int GetInt32(int index, string name = null) => V8FastArgImpl.GetInt32(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public uint GetUInt32(int index, string name = null) => V8FastArgImpl.GetUInt32(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public long GetInt64(int index, string name = null) => V8FastArgImpl.GetInt64(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public ulong GetUInt64(int index, string name = null) => V8FastArgImpl.GetUInt64(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public float GetSingle(int index, string name = null) => V8FastArgImpl.GetSingle(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public double GetDouble(int index, string name = null) => V8FastArgImpl.GetDouble(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public decimal GetDecimal(int index, string name = null) => V8FastArgImpl.GetDecimal(args[index], GetObject(index), argKind, name); + + /// + /// Gets the string value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The string value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public string GetString(int index, string name = null) => V8FastArgImpl.GetString(args[index], GetObject(index), argKind, name); + + /// + /// Gets the string value of the argument at the specified index as a ReadOnlySpan<char>. + /// + /// The argument index. + /// An optional argument or property name. + /// The string value of the argument at the specified index as a ReadOnlySpan<char>. + /// + /// This method throws an exception if the operation fails. + /// + public ReadOnlySpan GetCharSpan(int index, string name = null) => V8FastArgImpl.GetCharSpan(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public DateTime GetDateTime(int index, string name = null) => V8FastArgImpl.GetDateTime(args[index], GetObject(index), argKind, name); + + /// + /// Gets the value of the argument at the specified index. + /// + /// The argument index. + /// An optional argument or property name. + /// The value of the argument at the specified index. + /// + /// This method throws an exception if the operation fails. + /// + public BigInteger GetBigInteger(int index, string name = null) => V8FastArgImpl.GetBigInteger(args[index], GetObject(index), argKind, name); + + /// + /// Gets a nullable value of the given underlying type from the argument at the specified index. + /// + /// The underlying type of the nullable value to get. + /// The argument index. + /// An optional argument or property name. + /// A nullable value of underlying type . + /// + /// This method throws an exception if the operation fails. + /// + public T? GetNullable(int index, string name = null) where T : struct => V8FastArgImpl.GetNullable(args[index], GetObject(index), argKind, name); + + /// + /// Gets a value of the given type from the argument at the specified index. + /// + /// The type of value to get. + /// The argument index. + /// An optional argument or property name. + /// A value of type . + /// + /// This method throws an exception if the operation fails. + /// + public T Get(int index, string name = null) => V8FastArgImpl.Get(args[index], GetObject(index), argKind, name); + + private static void EnsureObjects(ref object[] objects, int count) + { + if (objects is null) + { + objects = new object[count]; + for (var index = 0; index < count; index++) + { + objects[index] = Nonexistent.Value; + } + } + } + + private object GetObject(int index) => (objects is not null) ? objects[index] : Nonexistent.Value; + } +} diff --git a/ClearScript/V8/FastProxy/V8FastHostDelegates.cs b/ClearScript/V8/FastProxy/V8FastHostDelegates.cs new file mode 100644 index 00000000..b186e54d --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostDelegates.cs @@ -0,0 +1,54 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents a method that prepares a fast host object configuration. + /// + /// The fast host object type. + /// The configuration associated with . + public delegate void V8FastHostObjectConfigurator(V8FastHostObjectConfiguration configuration) where TObject : IV8FastHostObject; + + /// + /// Represents a method that provides access to a field within a fast host object. + /// + /// The fast host object type. + /// The field type. + /// The object whose field to access. + /// A reference to the field. + public delegate ref TField V8FastHostFieldAccessor(TObject instance) where TObject : IV8FastHostObject; + + /// + /// Represents a method that gets the value of a fast host property. + /// + /// The fast host object type. + /// The object to search for the property. + /// On return, the property value if it was found. + public delegate void V8FastHostPropertyGetter(TObject instance, in V8FastResult value) where TObject : IV8FastHostObject; + + /// + /// Represents a method that sets the value of a fast host property. + /// + /// The fast host object type. + /// The object whose property to set. + /// The property value. + public delegate void V8FastHostPropertySetter(TObject instance, in V8FastArg value) where TObject : IV8FastHostObject; + + /// + /// Represents a method that invokes a fast host method. + /// + /// The fast host object type. + /// The object whose method to invoke. + /// The arguments to pass to the method. + /// On return, the method's return value. + public delegate void V8FastHostMethodInvoker(TObject instance, in V8FastArgs args, in V8FastResult result) where TObject : IV8FastHostObject; + + /// + /// Represents a method that invokes a fast host function. + /// + /// True to invoke the function as a constructor, false otherwise. + /// The arguments to pass to the function. + /// On return, the function's return value. + public delegate void V8FastHostFunctionInvoker(bool asConstructor, in V8FastArgs args, in V8FastResult result); +} diff --git a/ClearScript/V8/FastProxy/V8FastHostDynamicObject.cs b/ClearScript/V8/FastProxy/V8FastHostDynamicObject.cs new file mode 100644 index 00000000..9847df01 --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostDynamicObject.cs @@ -0,0 +1,165 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Provides an implementation of with a shared configuration and support for dynamic properties. + /// + /// The fast host object type. + /// + /// This class is a generic base for fast host object classes derived from it via the + /// Curiously Recurring Template Pattern (CRTP). + /// It uses a shared instance of + /// for each unique type argument. Derived classes are therefore advised to use a static + /// constructor to invoke the method. + /// + public abstract class V8FastHostDynamicObject : V8FastHostObject, IV8FastHostDynamicProperties where TObject : V8FastHostDynamicObject + { + private Dictionary namedProperties; + private Dictionary indexedProperties; + + private Dictionary NamedProperties => namedProperties ?? (namedProperties = new Dictionary()); + + private Dictionary IndexedProperties => indexedProperties ?? (indexedProperties = new Dictionary()); + + /// + /// Initializes a new instance. + /// + protected V8FastHostDynamicObject() + { + // the help file builder (SHFB) insists on an empty constructor here + } + + /// + /// Prepares the shared configuration associated with . + /// + /// The configuration callback. + /// + /// Derived classes are advised to invoke this method from a static constructor. Once + /// prepared, a fast host object configuration cannot be modified. + /// + protected new static void Configure(V8FastHostObjectConfigurator configurator) + { + V8FastHostObject.Configure(configuration => + { + configuration.SetDynamicPropertiesGetter(static instance => instance); + configurator(configuration); + }); + } + + #region IV8FastHostDynamicProperties implementation + + /// + public IEnumerable DynamicPropertyNames => (IEnumerable)namedProperties?.Keys ?? Enumerable.Empty(); + + /// + public IEnumerable DynamicPropertyIndices => (IEnumerable)indexedProperties?.Keys ?? Enumerable.Empty(); + + /// + /// Gets the value of a named dynamic property. + /// + /// The name of the dynamic property to get. + /// On return, the value of the dynamic property if it was found. + public void GetDynamicProperty(string name, in V8FastResult value) + { + // the help file builder (SHFB) fails to inherit the documentation for this method + + if (namedProperties?.TryGetValue(name, out var tempValue) == true) + { + value.Set(tempValue); + } + } + + /// + /// Sets the value of a named dynamic property. + /// + /// The name of the dynamic property to set. + /// The property value. + public void SetDynamicProperty(string name, in V8FastArg value) + { + // the help file builder (SHFB) fails to inherit the documentation for this method + + if (value.IsNull) + { + NamedProperties[name] = null; + } + else if (value.TryGet(out object tempValue)) + { + NamedProperties[name] = tempValue; + } + else + { + throw new ArgumentException("Invalid property value", nameof(value)); + } + } + + /// + /// Gets the value of an indexed dynamic property. + /// + /// The index of the dynamic property to get. + /// On return, the value of the dynamic property if it was found. + public void GetDynamicProperty(int index, in V8FastResult value) + { + // the help file builder (SHFB) fails to inherit the documentation for this method + + if (indexedProperties?.TryGetValue(index, out var tempValue) == true) + { + value.Set(tempValue); + } + } + + /// + /// Sets the value of an indexed dynamic property. + /// + /// The index of the dynamic property to set. + /// The property value. + public void SetDynamicProperty(int index, in V8FastArg value) + { + // the help file builder (SHFB) fails to inherit the documentation for this method + + if (value.IsNull) + { + IndexedProperties[index] = null; + } + else if (value.TryGet(out object tempValue)) + { + IndexedProperties[index] = tempValue; + } + else + { + throw new ArgumentException("Invalid property value", nameof(value)); + } + } + + /// + public bool HasDynamicProperty(string name) + { + return namedProperties?.ContainsKey(name) == true; + } + + /// + public bool HasDynamicProperty(int index) + { + return indexedProperties?.ContainsKey(index) == true; + } + + /// + public void DeleteDynamicProperty(string name) + { + namedProperties?.Remove(name); + } + + /// + public void DeleteDynamicProperty(int index) + { + indexedProperties?.Remove(index); + } + + #endregion + } +} diff --git a/ClearScript/V8/FastProxy/V8FastHostFunction.cs b/ClearScript/V8/FastProxy/V8FastHostFunction.cs new file mode 100644 index 00000000..741b8244 --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostFunction.cs @@ -0,0 +1,143 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Provides an implementation of with a private configuration. + /// + public sealed class V8FastHostFunction : V8FastHostFunctionOperations, IV8FastHostFunction + { + /// + /// Initializes a new instance. + /// + /// The function invocation callback. + public V8FastHostFunction(V8FastHostFunctionInvoker invoker) + : this(0, invoker) + { + } + + /// + /// Initializes a new instance with the specified name. + /// + /// The function name. + /// The function invocation callback. + public V8FastHostFunction(string name, V8FastHostFunctionInvoker invoker) + : this(name, 0, invoker) + { + } + + /// + /// Initializes a new instance with the specified required argument count. + /// + /// The required argument count for the function. + /// The function invocation callback. + public V8FastHostFunction(int requiredArgCount, V8FastHostFunctionInvoker invoker) + : this(requiredArgCount, null, invoker) + { + } + + /// + /// Initializes a new instance with the specified configuration callback. + /// + /// A callback for preparing the configuration associated with the instance. + /// The function invocation callback. + public V8FastHostFunction(V8FastHostObjectConfigurator configurator, V8FastHostFunctionInvoker invoker) + : this(0, configurator, invoker) + { + } + + /// + /// Initializes a new instance with the specified name and required argument count. + /// + /// The function name. + /// The required argument count for the function. + /// The function invocation callback. + public V8FastHostFunction(string name, int requiredArgCount, V8FastHostFunctionInvoker invoker) + : this(name, requiredArgCount, null, invoker) + { + } + + /// + /// Initializes a new instance with the specified name and configuration callback. + /// + /// The function name. + /// A callback for preparing the configuration associated with the instance. + /// The function invocation callback. + public V8FastHostFunction(string name, V8FastHostObjectConfigurator configurator, V8FastHostFunctionInvoker invoker) + : this(name, 0, configurator, invoker) + { + } + + /// + /// Initializes a new instance with the specified required argument count and configuration callback. + /// + /// The required argument count for the function. + /// A callback for preparing the configuration associated with the instance. + /// The function invocation callback. + public V8FastHostFunction(int requiredArgCount, V8FastHostObjectConfigurator configurator, V8FastHostFunctionInvoker invoker) + : this(null, requiredArgCount, configurator, invoker) + { + } + + /// + /// Initializes a new instance with the specified name, required argument count, and configuration callback. + /// + /// The function name. + /// The required argument count for the function. + /// A callback for preparing the configuration associated with the instance. + /// The function invocation callback. + public V8FastHostFunction(string name, int requiredArgCount, V8FastHostObjectConfigurator configurator, V8FastHostFunctionInvoker invoker) + : base(name, requiredArgCount, configurator, invoker) + { + } + + /// + /// Verifies that a fast host function was invoked as a function and not as a constructor. + /// + /// True if the function was invoked as a constructor, false otherwise. + /// + /// This is a simple utility method that checks and throws + /// an exception if it is true. It is intended for use within fast host function + /// invocation callbacks. + /// + public static void VerifyFunctionCall(bool asConstructor) + { + if (asConstructor) + { + throw new NotSupportedException("The function does not support constructor invocation"); + } + } + + /// + /// Verifies that a fast host function was invoked as a constructor and not as a function. + /// + /// True if the function was invoked as a constructor, false otherwise. + /// + /// This is a simple utility method that checks and throws + /// an exception if it is false. It is intended for use within fast host function + /// invocation callbacks. + /// + public static void VerifyConstructorCall(bool asConstructor) + { + if (!asConstructor) + { + throw new NotSupportedException("The function requires constructor invocation"); + } + } + + #region IV8FastHostFunction implementation + + IV8FastHostFunctionOperations IV8FastHostFunction.Operations => this; + + #endregion + + #region IV8FastHostObject implementation + + IV8FastHostObjectOperations IV8FastHostObject.Operations => this; + + #endregion + } +} diff --git a/ClearScript/V8/FastProxy/V8FastHostFunctionOperations.cs b/ClearScript/V8/FastProxy/V8FastHostFunctionOperations.cs new file mode 100644 index 00000000..ecc65f13 --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostFunctionOperations.cs @@ -0,0 +1,128 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using Microsoft.ClearScript.Util; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Provides an implementation of based on a private configuration. + /// + /// The fast host function type. + public class V8FastHostFunctionOperations : V8FastHostObjectOperations, IV8FastHostFunctionOperations where TFunction : IV8FastHostFunction + { + private readonly string name; + private readonly int requiredArgCount; + private readonly V8FastHostFunctionInvoker invoker; + + /// + /// Initializes a new instance. + /// + /// The function invocation callback. + public V8FastHostFunctionOperations(V8FastHostFunctionInvoker invoker) + : this(0, invoker) + { + } + + /// + /// Initializes a new instance with the specified name. + /// + /// The function name. + /// The function invocation callback. + public V8FastHostFunctionOperations(string name, V8FastHostFunctionInvoker invoker) + : this(name, 0, invoker) + { + } + + /// + /// Initializes a new instance with the specified required argument count. + /// + /// The required argument count for the function. + /// The function invocation callback. + public V8FastHostFunctionOperations(int requiredArgCount, V8FastHostFunctionInvoker invoker) + : this(requiredArgCount, null, invoker) + { + } + + /// + /// Initializes a new instance with the specified configuration callback. + /// + /// A callback for preparing the configuration associated with the instance. + /// The function invocation callback. + public V8FastHostFunctionOperations(V8FastHostObjectConfigurator configurator, V8FastHostFunctionInvoker invoker) + : this(0, configurator, invoker) + { + } + + /// + /// Initializes a new instance with the specified name and required argument count. + /// + /// The function name. + /// The required argument count for the function. + /// The function invocation callback. + public V8FastHostFunctionOperations(string name, int requiredArgCount, V8FastHostFunctionInvoker invoker) + : this(name, requiredArgCount, null, invoker) + { + } + + /// + /// Initializes a new instance with the specified name and configuration callback. + /// + /// The function name. + /// A callback for preparing the configuration associated with the instance. + /// The function invocation callback. + public V8FastHostFunctionOperations(string name, V8FastHostObjectConfigurator configurator, V8FastHostFunctionInvoker invoker) + : this(name, 0, configurator, invoker) + { + } + + /// + /// Initializes a new instance with the specified required argument count and configuration callback. + /// + /// The required argument count for the function. + /// A callback for preparing the configuration associated with the instance. + /// The function invocation callback. + public V8FastHostFunctionOperations(int requiredArgCount, V8FastHostObjectConfigurator configurator, V8FastHostFunctionInvoker invoker) + : this(null, requiredArgCount, configurator, invoker) + { + } + + /// + /// Initializes a new instance with the specified name, required argument count, and configuration callback. + /// + /// The function name. + /// The required argument count for the function. + /// A callback for preparing the configuration associated with the instance. + /// The function invocation callback. + public V8FastHostFunctionOperations(string name, int requiredArgCount, V8FastHostObjectConfigurator configurator, V8FastHostFunctionInvoker invoker) + : base(configurator) + { + MiscHelpers.VerifyNonNullArgument(invoker, nameof(invoker)); + + this.name = name; + this.requiredArgCount = Math.Max(requiredArgCount, 0); + this.invoker = invoker; + } + + #region IV8FastHostFunctionOperations implementation + + void IV8FastHostFunctionOperations.Invoke(bool asConstructor, in V8FastArgs args, in V8FastResult result) + { + if (args.Count < requiredArgCount) + { + throw new ArgumentException($"Too few arguments specified for function '{name.ToNonNull("[unnamed]")}'"); + } + + invoker(asConstructor, args, result); + } + + #endregion + + #region IV8FastHostObjectOperations implementation + + string IV8FastHostObjectOperations.GetFriendlyName(IV8FastHostObject instance) => $"FastHostFunction:{name.ToNonNull("[unnamed]")}"; + + #endregion + } +} diff --git a/ClearScript/V8/FastProxy/V8FastHostItem.cs b/ClearScript/V8/FastProxy/V8FastHostItem.cs new file mode 100644 index 00000000..07d32cce --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostItem.cs @@ -0,0 +1,535 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using Microsoft.ClearScript.JavaScript; +using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.V8.SplitProxy; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + internal sealed class V8FastHostItem : IHostItem + { + private static readonly Func getPropertyName = static (pName, length) => PropertyNamePool.GetOrAdd(pName, length); + + public V8ScriptEngine Engine { get; } + + public IV8FastHostObject Target { get; } + + public HostItemFlags Flags { get; } + + public bool IsInvocable => Target.Operations is IV8FastHostMethodOperations or IV8FastHostFunctionOperations; + + internal V8FastHostItem(V8ScriptEngine engine, IV8FastHostObject target, HostItemFlags flags) + { + Engine = engine; + Target = target; + Flags = flags; + } + + public static object Wrap(V8ScriptEngine engine, IV8FastHostObject target, HostItemFlags flags) + { + return engine.GetOrCreateFastHostItem(target, flags); + } + + public void GetProperty(StdString.Ptr pName, V8Value.FastResult.Ptr pValue, out bool isCacheable) + { + var ctx = (self: this, name: StdString.GetValue(pName, getPropertyName), pValue, isCacheable: false); + + Engine.HostInvoke( + static pCtx => + { + ref var ctx = ref pCtx.AsRef(); + var value = new V8FastResult(ctx.self.Engine, ctx.self.Flags, ctx.pValue); + + var target = ctx.self.Target; + if (target.Operations is {} operations) + { + operations.GetProperty(target, ctx.name, value, out ctx.isCacheable); + } + else + { + throw new NotSupportedException("The object does not support property retrieval"); + } + }, + StructPtr.FromRef(ref ctx) + ); + + isCacheable = ctx.isCacheable; + } + + public void SetProperty(StdString.Ptr pName, V8Value.FastArg.Ptr pValue) + { + Engine.HostInvoke( + static ctx => + { + var value = new V8FastArg(ctx.self.Engine, ctx.pValue, V8FastArgKind.PropertyValue); + + var target = ctx.self.Target; + if (target.Operations is {} operations) + { + operations.SetProperty(target, ctx.name, value); + } + else + { + throw new NotSupportedException("The object does not support property assignment"); + } + }, + (self: this, name: StdString.GetValue(pName, getPropertyName), pValue) + ); + } + + public V8FastHostPropertyFlags QueryProperty(StdString.Ptr pName) + { + return Engine.HostInvoke( + static ctx => + { + var target = ctx.self.Target; + if (target.Operations is {} operations) + { + return operations.QueryProperty(target, ctx.name); + } + + return V8FastHostPropertyFlags.None; + }, + (self: this, name: StdString.GetValue(pName, getPropertyName)) + ); + } + + public bool DeleteProperty(StdString.Ptr pName) + { + return Engine.HostInvoke( + static ctx => + { + var target = ctx.self.Target; + if (target.Operations is {} operations) + { + return operations.DeleteProperty(target, ctx.name); + } + + return true; + }, + (self: this, name: StdString.GetValue(pName, getPropertyName)) + ); + } + + public IEnumerable GetPropertyNames() + { + return Engine.HostInvoke( + static target => + { + if (target.Operations is {} operations) + { + return operations.GetPropertyNames(target); + } + + return Enumerable.Empty(); + }, + Target + ); + } + + public void GetProperty(int index, V8Value.FastResult.Ptr pValue) + { + Engine.HostInvoke( + static ctx => + { + var value = new V8FastResult(ctx.self.Engine, ctx.self.Flags, ctx.pValue); + + var target = ctx.self.Target; + if (target.Operations is {} operations) + { + operations.GetProperty(target, ctx.index, value); + } + else + { + throw new NotSupportedException("The object does not support property retrieval"); + } + }, + (self: this, index, pValue) + ); + } + + public void SetProperty(int index, V8Value.FastArg.Ptr pValue) + { + Engine.HostInvoke( + static ctx => + { + var value = new V8FastArg(ctx.self.Engine, ctx.pValue, V8FastArgKind.PropertyValue); + + var target = ctx.self.Target; + if (target.Operations is {} operations) + { + operations.SetProperty(target, ctx.index, value); + } + else + { + throw new NotSupportedException("The object does not support property assignment"); + } + }, + (self: this, index, pValue) + ); + } + + public V8FastHostPropertyFlags QueryProperty(int index) + { + return Engine.HostInvoke( + static ctx => + { + var target = ctx.self.Target; + if (target.Operations is {} operations) + { + return operations.QueryProperty(target, ctx.index); + } + + return V8FastHostPropertyFlags.None; + }, + (self: this, index) + ); + } + + public bool DeleteProperty(int index) + { + return Engine.HostInvoke( + static ctx => + { + var target = ctx.self.Target; + if (target.Operations is {} operations) + { + return operations.DeleteProperty(target, ctx.index); + } + + return true; + }, + (self: this, index) + ); + } + + public IEnumerable GetPropertyIndices() + { + return Engine.HostInvoke( + static target => + { + if (target.Operations is {} operations) + { + return operations.GetPropertyIndices(target); + } + + return Enumerable.Empty(); + }, + Target + ); + } + + public void Invoke(bool asConstructor, int argCount, V8Value.FastArg.Ptr pArgs, V8Value.FastResult.Ptr pResult) + { + Engine.HostInvoke( + static ctx => + { + var result = new V8FastResult(ctx.self.Engine, ctx.self.Flags, ctx.pResult); + + var target = ctx.self.Target; + if (target.Operations is IV8FastHostMethodOperations methodOperations) + { + if (ctx.asConstructor) + { + throw new NotSupportedException("The object does not support constructor invocation"); + } + + var args = new V8FastArgs(ctx.self.Engine, ctx.pArgs.ToSpan(ctx.argCount), V8FastArgKind.MethodArg); + + methodOperations.Invoke(args, result); + if (!result.IsSet) + { + result.SetUndefined(); + } + } + else if (target.Operations is IV8FastHostFunctionOperations functionOperations) + { + var args = new V8FastArgs(ctx.self.Engine, ctx.pArgs.ToSpan(ctx.argCount), V8FastArgKind.FunctionArg); + + functionOperations.Invoke(ctx.asConstructor, args, result); + if (!result.IsSet) + { + result.SetUndefined(); + } + } + else + { + throw new NotSupportedException("The object does not support invocation"); + } + }, + (self: this, asConstructor, argCount, pArgs, pResult) + ); + } + + public void CreateEnumerator(V8Value.FastResult.Ptr pResult) + { + Engine.HostInvoke( + static ctx => + { + var result = new V8FastResult(ctx.self.Engine, ctx.self.Flags, ctx.pResult); + + var target = ctx.self.Target; + if (target.Operations is {} operations) + { + var enumerator = operations.CreateEnumerator(target); + if (enumerator is not null) + { + result.Set(new ScriptableEnumerator(enumerator)); + return; + } + } + + throw new NotSupportedException("The object is not enumerable"); + }, + (self: this, pResult) + ); + } + + public void CreateAsyncEnumerator(V8Value.FastResult.Ptr pResult) + { + Engine.HostInvoke( + static ctx => + { + var result = new V8FastResult(ctx.self.Engine, ctx.self.Flags, ctx.pResult); + + var target = ctx.self.Target; + if (target.Operations is {} operations) + { + var enumerator = operations.CreateAsyncEnumerator(target); + if (enumerator is not null) + { + result.Set(new ScriptableAsyncEnumerator(ctx.self.Engine, enumerator)); + return; + } + } + + throw new NotSupportedException("The object is not async-enumerable"); + }, + (self: this, pResult) + ); + } + + #region Object overrides + + public override string ToString() + { + if ((Target.Operations is {} operations) && (operations.GetFriendlyName(Target) is {} friendlyName)) + { + return $"[{friendlyName}]"; + } + + return $"[FastHostObject:{Target.GetFriendlyName(null)}]"; + } + + #endregion + + #region IScriptMarshalWrapper implementation + + ScriptEngine IScriptMarshalWrapper.Engine => Engine; + + public object Unwrap() => Target; + + #endregion + + #region Nested type: PropertyNamePool + + private static class PropertyNamePool + { + private static readonly ConcurrentDictionary pool = new(new Key.Comparer()); + + public static unsafe string GetOrAdd(IntPtr pName, int length) + { + if (!pool.TryGetValue(new Key(pName, length), out var name)) + { + name = new string((char*)pName, 0, length); + name = pool.GetOrAdd(new Key(name, length), name); + } + + return name; + } + + #region Nested type: Key + + private readonly struct Key + { + private readonly IntPtr pName; + private readonly string name; + private readonly int length; + + public Key(IntPtr pName, int length) + { + this.pName = pName; + name = null; + this.length = length; + } + + public Key(string name, int length) + { + pName = IntPtr.Zero; + this.name = name; + this.length = length; + } + + #region Nested type: Comparer + + public sealed class Comparer : IEqualityComparer + { + private static unsafe bool Equals(char* pLeftName, char* pRightName, int length) + { + for (var index = 0; index < length; index++) + { + if (pRightName[index] != pLeftName[index]) + { + return false; + } + } + + return true; + } + + private static unsafe bool Equals(char* pLeftName, string rightName, int length) + { + for (var index = 0; index < length; index++) + { + if (rightName[index] != pLeftName[index]) + { + return false; + } + } + + return true; + } + + private static unsafe bool Equals(string leftName, char* pRightName, int length) + { + for (var index = 0; index < length; index++) + { + if (pRightName[index] != leftName[index]) + { + return false; + } + } + + return true; + } + + private static bool Equals(string leftName, string rightName, int length) + { + for (var index = 0; index < length; index++) + { + if (rightName[index] != leftName[index]) + { + return false; + } + } + + return true; + } + + #region IEqualityComparer implementation + + unsafe bool IEqualityComparer.Equals(Key left, Key right) + { + if (right.length != left.length) + { + return false; + } + + if (left.name is null) + { + return (right.name is null) ? Equals((char*)left.pName, (char*)right.pName, left.length) : Equals((char*)left.pName, right.name, left.length); + } + + return (right.name is null) ? Equals(left.name, (char*)right.pName, left.length) : Equals(left.name, right.name, left.length); + } + + unsafe int IEqualityComparer.GetHashCode(Key key) + { + // DJB2 hash algorithm + + ulong hashCode = 5381; + + var length = key.length; + if (key.name is {} name) + { + for (var index = 0; index < length; index++) + { + hashCode = unchecked(((hashCode << 5) + hashCode) + name[index]); + } + } + else + { + var pName = (char*)key.pName; + for (var index = 0; index < length; index++) + { + hashCode = unchecked(((hashCode << 5) + hashCode) + pName[index]); + } + } + + return unchecked((int)hashCode); + } + + #endregion + } + + #endregion + } + + #endregion + } + + #endregion + + #region Nested type: ScriptableEnumerator + + private sealed class ScriptableEnumerator : V8FastHostObject + { + private readonly IV8FastEnumerator enumerator; + + static ScriptableEnumerator() + { + Configure(configuration => + { + configuration.AddPropertyGetter("ScriptableCurrent", static (ScriptableEnumerator instance, in V8FastResult value) => instance.enumerator.GetCurrent(value)); + configuration.AddMethodGetter("ScriptableMoveNext", static (ScriptableEnumerator instance, in V8FastArgs _, in V8FastResult result) => result.Set(instance.enumerator.MoveNext())); + configuration.AddMethodGetter("ScriptableDispose", static (ScriptableEnumerator instance, in V8FastArgs _, in V8FastResult _) => instance.enumerator.Dispose()); + }); + } + + public ScriptableEnumerator(IV8FastEnumerator enumerator) => this.enumerator = enumerator; + } + + #endregion + + #region Nested type: ScriptableAsyncEnumerator + + private sealed class ScriptableAsyncEnumerator : V8FastHostObject + { + private readonly V8ScriptEngine engine; + private readonly IV8FastAsyncEnumerator enumerator; + + static ScriptableAsyncEnumerator() + { + Configure(configuration => + { + configuration.AddPropertyGetter("ScriptableCurrent", static (ScriptableAsyncEnumerator instance, in V8FastResult value) => instance.enumerator.GetCurrent(value)); + configuration.AddMethodGetter("ScriptableMoveNextAsync", static (ScriptableAsyncEnumerator instance, in V8FastArgs _, in V8FastResult result) => result.Set(instance.enumerator.MoveNextAsync().ToPromise(instance.engine))); + configuration.AddMethodGetter("ScriptableDisposeAsync", static (ScriptableAsyncEnumerator instance, in V8FastArgs _, in V8FastResult result) => result.Set(instance.enumerator.DisposeAsync().ToPromise(instance.engine))); + }); + } + + public ScriptableAsyncEnumerator(V8ScriptEngine engine, IV8FastAsyncEnumerator enumerator) + { + this.engine = engine; + this.enumerator = enumerator; + } + } + + #endregion + } +} diff --git a/ClearScript/V8/FastProxy/V8FastHostMethod.cs b/ClearScript/V8/FastProxy/V8FastHostMethod.cs new file mode 100644 index 00000000..917d749f --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostMethod.cs @@ -0,0 +1,72 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Provides an implementation of with a private configuration. + /// + /// The fast host object type that supports the method. + public sealed class V8FastHostMethod : V8FastHostMethodOperations>, IV8FastHostMethod where TObject : IV8FastHostObject + { + /// + /// Initializes a new instance. + /// + /// The object whose method the instance represents. + /// The method name. + /// The method invocation callback. + public V8FastHostMethod(TObject parent, string name, V8FastHostMethodInvoker invoker) + : this(parent, name, 0, invoker) + { + } + + /// + /// Initializes a new instance with the specified required argument count. + /// + /// The object whose method the instance represents. + /// The method name. + /// The required argument count for the method. + /// The method invocation callback. + public V8FastHostMethod(TObject parent, string name, int requiredArgCount, V8FastHostMethodInvoker invoker) + : this(parent, name, requiredArgCount, null, invoker) + { + } + + /// + /// Initializes a new instance with the specified configuration callback. + /// + /// The object whose method the instance represents. + /// The method name. + /// A callback for preparing the configuration associated with the instance. + /// The method invocation callback. + public V8FastHostMethod(TObject parent, string name, V8FastHostObjectConfigurator> configurator, V8FastHostMethodInvoker invoker) + : this(parent, name, 0, configurator, invoker) + { + } + + /// + /// Initializes a new instance with the specified required argument count and configuration callback. + /// + /// The object whose method the instance represents. + /// The method name. + /// The required argument count for the method. + /// A callback for preparing the configuration associated with the instance. + /// The method invocation callback. + public V8FastHostMethod(TObject parent, string name, int requiredArgCount, V8FastHostObjectConfigurator> configurator, V8FastHostMethodInvoker invoker) + : base(parent, name, requiredArgCount, configurator, invoker) + { + } + + #region IV8FastHostMethod implementation + + IV8FastHostMethodOperations IV8FastHostMethod.Operations => this; + + #endregion + + #region IV8FastHostObject implementation + + IV8FastHostObjectOperations IV8FastHostObject.Operations => this; + + #endregion + } +} diff --git a/ClearScript/V8/FastProxy/V8FastHostMethodOperations.cs b/ClearScript/V8/FastProxy/V8FastHostMethodOperations.cs new file mode 100644 index 00000000..aa5085c7 --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostMethodOperations.cs @@ -0,0 +1,96 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using Microsoft.ClearScript.Util; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Provides an implementation of based on a private configuration. + /// + /// The fast host object type that supports the method. + /// The fast host method type. + public class V8FastHostMethodOperations : V8FastHostObjectOperations, IV8FastHostMethodOperations where TObject : IV8FastHostObject where TMethod : IV8FastHostMethod + { + private readonly TObject target; + private readonly string name; + private readonly int requiredArgCount; + private readonly V8FastHostMethodInvoker invoker; + + /// + /// Initializes a new instance. + /// + /// The object whose method the instance supports. + /// The method name. + /// The method invocation callback. + public V8FastHostMethodOperations(TObject target, string name, V8FastHostMethodInvoker invoker) + : this(target, name, 0, invoker) + { + } + + /// + /// Initializes a new instance with the specified required argument count. + /// + /// The object whose method the instance supports. + /// The method name. + /// The required argument count for the method. + /// The method invocation callback. + public V8FastHostMethodOperations(TObject target, string name, int requiredArgCount, V8FastHostMethodInvoker invoker) + : this(target, name, requiredArgCount, null, invoker) + { + } + + /// + /// Initializes a new instance with the specified configuration callback. + /// + /// The object whose method the instance supports. + /// The method name. + /// A callback for preparing the configuration associated with the instance. + /// The method invocation callback. + public V8FastHostMethodOperations(TObject target, string name, V8FastHostObjectConfigurator configurator, V8FastHostMethodInvoker invoker) + : this(target, name, 0, configurator, invoker) + { + } + + /// + /// Initializes a new instance with the specified required argument count and configuration callback. + /// + /// The object whose method the instance supports. + /// The method name. + /// The required argument count for the method. + /// A callback for preparing the configuration associated with the instance. + /// The method invocation callback. + public V8FastHostMethodOperations(TObject target, string name, int requiredArgCount, V8FastHostObjectConfigurator configurator, V8FastHostMethodInvoker invoker) + : base(configurator) + { + MiscHelpers.VerifyNonNullArgument(name, nameof(name)); + MiscHelpers.VerifyNonNullArgument(invoker, nameof(invoker)); + + this.target = target; + this.name = name; + this.requiredArgCount = Math.Max(requiredArgCount, 0); + this.invoker = invoker; + } + + #region IV8FastHostMethodOperations implementation + + void IV8FastHostMethodOperations.Invoke(in V8FastArgs args, in V8FastResult result) + { + if (args.Count < requiredArgCount) + { + throw new ArgumentException($"Too few arguments specified for method '{name}'"); + } + + invoker(target, args, result); + } + + #endregion + + #region IV8FastHostObjectOperations implementation + + string IV8FastHostObjectOperations.GetFriendlyName(IV8FastHostObject instance) => $"FastHostMethod:{name}"; + + #endregion + } +} diff --git a/ClearScript/V8/FastProxy/V8FastHostObject.cs b/ClearScript/V8/FastProxy/V8FastHostObject.cs new file mode 100644 index 00000000..9096021b --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostObject.cs @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Provides an implementation of with a shared configuration. + /// + /// The fast host object type. + /// + /// This class is a generic base for fast host object classes derived from it via the + /// Curiously Recurring Template Pattern (CRTP). + /// It uses a shared instance of + /// for each unique type argument. Derived classes are therefore advised to use a static + /// constructor to invoke the method. + /// + public abstract class V8FastHostObject : IV8FastHostObject where TObject : V8FastHostObject + { + private static readonly V8FastHostObjectOperations operations = new(); + + /// + /// Initializes a new instance. + /// + protected V8FastHostObject() + { + // the help file builder (SHFB) insists on an empty constructor here + } + + /// + /// Prepares the shared configuration associated with . + /// + /// The configuration callback. + /// + /// Derived classes are advised to invoke this method from a static constructor. Once + /// prepared, a fast host object configuration cannot be modified. + /// + protected static void Configure(V8FastHostObjectConfigurator configurator) => operations.Configure(configurator); + + #region IV8FastHostObject implementation + + IV8FastHostObjectOperations IV8FastHostObject.Operations => operations; + + #endregion + } +} diff --git a/ClearScript/V8/FastProxy/V8FastHostObjectConfiguration.cs b/ClearScript/V8/FastProxy/V8FastHostObjectConfiguration.cs new file mode 100644 index 00000000..b31741c7 --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostObjectConfiguration.cs @@ -0,0 +1,309 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.ClearScript.Util; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents a fast host object configuration. + /// + /// The fast host object type. + /// + /// This class provides a way to configure the scriptable capabilities of a fast host object or + /// type. It is not a required part of the interface between V8 and fast host objects, but it + /// is used extensively by ClearScript's fast host object implementation infrastructure. + /// + public abstract class V8FastHostObjectConfiguration where TObject : IV8FastHostObject + { + /// + /// Initializes a new instance. + /// + protected V8FastHostObjectConfiguration() + { + // the help file builder (SHFB) insists on an empty constructor here + } + + /// + /// Controls whether indexed properties are enumerable. + /// + public abstract bool EnumerateIndexedProperties { get; set; } + + /// + /// Adds a getter for a field-backed read-only property. + /// + /// The field type. + /// The property name. + /// A callback that provides access to the field. + /// + /// Properties configured by this method are not enumerable and cannot be assigned or + /// deleted. + /// + public void AddPropertyGetter(string name, V8FastHostFieldAccessor accessor) => AddPropertyGetter(name, accessor, V8FastHostPropertyFlags.None); + + /// + /// Adds a getter for a field-backed read-only property with the specified attributes. + /// + /// The field type. + /// The property name. + /// A callback that provides access to the field. + /// The attributes of the property configured by this method. + /// + /// In the context of this method, the only effective property attributes are + /// and + /// . Properties configured by this + /// method cannot be assigned or deleted. + /// + public void AddPropertyGetter(string name, V8FastHostFieldAccessor accessor, V8FastHostPropertyFlags flags) + { + MiscHelpers.VerifyNonNullArgument(accessor, nameof(accessor)); + AddPropertyGetter(name, (TObject instance, in V8FastResult value) => value.Set(accessor(instance)), flags); + } + + /// + /// Adds a getter for a read-only property. + /// + /// The property name. + /// A callback that gets the property value. + /// + /// Properties configured by this method are not enumerable and cannot be assigned or + /// deleted. + /// + public void AddPropertyGetter(string name, V8FastHostPropertyGetter getter) => AddPropertyGetter(name, getter, V8FastHostPropertyFlags.None); + + /// + /// Adds a getter for a read-only property with the specified attributes. + /// + /// The property name. + /// A callback that gets the property value. + /// The attributes of the property configured by this method. + /// + /// In the context of this method, the only effective property attributes are + /// and + /// . Properties configured by this + /// method cannot be assigned or deleted. + /// + public void AddPropertyGetter(string name, V8FastHostPropertyGetter getter, V8FastHostPropertyFlags flags) => AddPropertyAccessors(name, getter, null, flags); + + /// + /// Adds accessors for a field-backed property. + /// + /// The field type. + /// The property name. + /// A callback that provides access to the field. + /// + /// Properties configured by this method are not enumerable and cannot be deleted. + /// + public void AddPropertyAccessors(string name, V8FastHostFieldAccessor accessor) => AddPropertyAccessors(name, accessor, V8FastHostPropertyFlags.None); + + /// + /// Adds accessors for a field-backed property with the specified attributes. + /// + /// The field type. + /// The property name. + /// A callback that provides access to the field. + /// The attributes of the property configured by this method. + /// + /// In the context of this method, the only effective property attributes are + /// and + /// . Properties configured by this + /// method cannot be deleted. + /// + public void AddPropertyAccessors(string name, V8FastHostFieldAccessor accessor, V8FastHostPropertyFlags flags) + { + MiscHelpers.VerifyNonNullArgument(accessor, nameof(accessor)); + AddPropertyAccessors(name, (TObject instance, in V8FastResult value) => value.Set(accessor(instance)), (TObject instance, in V8FastArg value) => accessor(instance) = value.Get(name), flags); + } + + /// + /// Adds accessors for a property. + /// + /// The property name. + /// A callback that gets the property value. + /// A callback that sets the property value. + /// + /// Properties configured by this method are not enumerable and cannot be deleted. + /// + public void AddPropertyAccessors(string name, V8FastHostPropertyGetter getter, V8FastHostPropertySetter setter) => AddPropertyAccessors(name, getter, setter, V8FastHostPropertyFlags.None); + + /// + /// Adds accessors for a property with the specified attributes. + /// + /// The property name. + /// A callback that gets the property value. + /// A callback that sets the property value. + /// The attributes of the property configured by this method. + /// + /// In the context of this method, the only effective property attributes are + /// and + /// . Properties configured by this + /// method cannot be deleted. + /// + public abstract void AddPropertyAccessors(string name, V8FastHostPropertyGetter getter, V8FastHostPropertySetter setter, V8FastHostPropertyFlags flags); + + /// + /// Adds a getter for a method. + /// + /// The method name. + /// The method invocation callback. + /// + /// Properties configured by this method are not enumerable and cannot be assigned or + /// deleted. + /// + public void AddMethodGetter(string name, V8FastHostMethodInvoker invoker) => AddMethodGetter(name, 0, invoker); + + /// + /// Adds a getter for a method with the specified required argument count. + /// + /// The method name. + /// The required argument count for the method. + /// The method invocation callback. + /// + /// Properties configured by this method are not enumerable and cannot be assigned or + /// deleted. + /// + public void AddMethodGetter(string name, int requiredArgCount, V8FastHostMethodInvoker invoker) => AddMethodGetter(name, requiredArgCount, null, invoker); + + /// + /// Adds a getter for a method with the specified configuration callback. + /// + /// The method name. + /// A callback for preparing the method's configuration. + /// The method invocation callback. + /// + /// Properties configured by this method are not enumerable and cannot be assigned or + /// deleted. + /// + public void AddMethodGetter(string name, V8FastHostObjectConfigurator> configurator, V8FastHostMethodInvoker invoker) => AddMethodGetter(name, 0, configurator, invoker); + + /// + /// Adds a getter for a method with the specified required argument count and configuration callback. + /// + /// The method name. + /// The required argument count for the method. + /// A callback for preparing the method's configuration. + /// The method invocation callback. + /// + /// Properties configured by this method are not enumerable and cannot be assigned or + /// deleted. + /// + public abstract void AddMethodGetter(string name, int requiredArgCount, V8FastHostObjectConfigurator> configurator, V8FastHostMethodInvoker invoker); + + /// + /// Sets a callback that gets the dynamic properties of a instance. + /// + /// A callback that gets the dynamic properties of a instance. + public abstract void SetDynamicPropertiesGetter(Func getter); + + /// + /// Sets a callback that creates an enumerator for a instance in form. + /// + /// A callback that creates an enumerator for a instance in form. + public void SetEnumeratorFactory(Func factory) + { + MiscHelpers.VerifyNonNullArgument(factory, nameof(factory)); + SetEnumeratorFactory(instance => + { + var enumerator = factory(instance); + return (enumerator is not null) ? new FastEnumeratorOnEnumerator(enumerator) : null; + }); + } + + /// + /// Sets a callback that creates an enumerator for a instance in form. + /// + /// The enumerator's item type. + /// A callback that creates an enumerator for a instance in form. + public void SetEnumeratorFactory(Func> factory) + { + MiscHelpers.VerifyNonNullArgument(factory, nameof(factory)); + SetEnumeratorFactory(instance => + { + var enumerator = factory(instance); + return (enumerator is not null) ? new FastEnumeratorOnEnumerator(enumerator) : null; + }); + } + + /// + /// Sets a callback that creates an enumerator for a instance in form. + /// + /// A callback that creates an enumerator for a instance in form. + public abstract void SetEnumeratorFactory(Func factory); + + /// + /// Sets a callback that creates an asynchronous enumerator for a instance in form. + /// + /// The asynchronous enumerator's item type. + /// A callback that creates an asynchronous enumerator for a instance in form. + public void SetAsyncEnumeratorFactory(Func> factory) + { + MiscHelpers.VerifyNonNullArgument(factory, nameof(factory)); + SetAsyncEnumeratorFactory(instance => + { + var enumerator = factory(instance); + return (enumerator is not null) ? new FastAsyncEnumeratorOnAsyncEnumerator(enumerator) : null; + }); + } + + /// + /// Sets a callback that creates an asynchronous enumerator for a instance in form. + /// + /// A callback that creates an asynchronous enumerator for a instance in form. + public abstract void SetAsyncEnumeratorFactory(Func factory); + + #region Nested type: FastEnumeratorOnEnumerator + + private sealed class FastEnumeratorOnEnumerator : IV8FastEnumerator + { + private readonly IEnumerator enumerator; + + public FastEnumeratorOnEnumerator(IEnumerator enumerator) => this.enumerator = enumerator; + + public void GetCurrent(in V8FastResult item) => item.Set(enumerator.Current); + + public bool MoveNext() => enumerator.MoveNext(); + + public void Dispose() => (enumerator as IDisposable)?.Dispose(); + } + + #endregion + + #region Nested type: FastEnumeratorOnEnumerator + + private sealed class FastEnumeratorOnEnumerator : IV8FastEnumerator + { + private readonly IEnumerator enumerator; + + public FastEnumeratorOnEnumerator(IEnumerator enumerator) => this.enumerator = enumerator; + + public void GetCurrent(in V8FastResult item) => item.Set(enumerator.Current); + + public bool MoveNext() => enumerator.MoveNext(); + + public void Dispose() => enumerator.Dispose(); + } + + #endregion + + #region Nested type: FastAsyncEnumeratorOnAsyncEnumerator + + private sealed class FastAsyncEnumeratorOnAsyncEnumerator : IV8FastAsyncEnumerator + { + private readonly IAsyncEnumerator enumerator; + + public FastAsyncEnumeratorOnAsyncEnumerator(IAsyncEnumerator enumerator) => this.enumerator = enumerator; + + public void GetCurrent(in V8FastResult item) => item.Set(enumerator.Current); + + public ValueTask MoveNextAsync() => enumerator.MoveNextAsync(); + + public ValueTask DisposeAsync() => enumerator.DisposeAsync(); + } + + #endregion + } +} diff --git a/ClearScript/V8/FastProxy/V8FastHostObjectOperations.cs b/ClearScript/V8/FastProxy/V8FastHostObjectOperations.cs new file mode 100644 index 00000000..eeed4f74 --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostObjectOperations.cs @@ -0,0 +1,395 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.ClearScript.Util; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Provides an implementation of based on a private configuration. + /// + /// The fast host object type. + public class V8FastHostObjectOperations : IV8FastHostObjectOperations where TObject : IV8FastHostObject + { + private readonly Configuration configuration; + + /// + /// Initializes a new instance. + /// + public V8FastHostObjectOperations() + : this(null) + { + } + + /// + /// Initializes a new instance with the specified configuration callback. + /// + /// A callback for preparing the configuration associated with the instance. + public V8FastHostObjectOperations(V8FastHostObjectConfigurator configurator) + { + configuration = new Configuration(); + if (configurator is not null) + { + Configure(configurator); + } + } + + /// + /// Prepares the configuration associated with the instance. + /// + /// A callback for preparing the configuration associated with the instance. + /// + /// Once prepared, a fast host object configuration cannot be modified. + /// + public void Configure(V8FastHostObjectConfigurator configurator) => configuration.Configure(configurator); + + #region IV8FastHostObjectOperations implementation + + string IV8FastHostObjectOperations.GetFriendlyName(IV8FastHostObject instance) => $"FastHostObject:{typeof(TObject).GetFriendlyName()}"; + + void IV8FastHostObjectOperations.GetProperty(IV8FastHostObject instance, string name, in V8FastResult value, out bool isCacheable) => configuration.GetProperty(instance, name, value, out isCacheable); + + void IV8FastHostObjectOperations.SetProperty(IV8FastHostObject instance, string name, in V8FastArg value) => configuration.SetProperty(instance, name, value); + + V8FastHostPropertyFlags IV8FastHostObjectOperations.QueryProperty(IV8FastHostObject instance, string name) => configuration.QueryProperty(instance, name); + + bool IV8FastHostObjectOperations.DeleteProperty(IV8FastHostObject instance, string name) => configuration.DeleteProperty(instance, name); + + IEnumerable IV8FastHostObjectOperations.GetPropertyNames(IV8FastHostObject instance) => configuration.GetPropertyNames(instance); + + void IV8FastHostObjectOperations.GetProperty(IV8FastHostObject instance, int index, in V8FastResult value) => configuration.GetProperty(instance, index, value); + + void IV8FastHostObjectOperations.SetProperty(IV8FastHostObject instance, int index, in V8FastArg value) => configuration.SetProperty(instance, index, value); + + V8FastHostPropertyFlags IV8FastHostObjectOperations.QueryProperty(IV8FastHostObject instance, int index) => configuration.QueryProperty(instance, index); + + bool IV8FastHostObjectOperations.DeleteProperty(IV8FastHostObject instance, int index) => configuration.DeleteProperty(instance, index); + + IEnumerable IV8FastHostObjectOperations.GetPropertyIndices(IV8FastHostObject instance) => configuration.GetPropertyIndices(instance); + + IV8FastEnumerator IV8FastHostObjectOperations.CreateEnumerator(IV8FastHostObject instance) => configuration.CreateEnumerator(instance); + + IV8FastAsyncEnumerator IV8FastHostObjectOperations.CreateAsyncEnumerator(IV8FastHostObject instance) => configuration.CreateAsyncEnumerator(instance); + + #endregion + + #region Nested type: Configuration + + private sealed class Configuration : V8FastHostObjectConfiguration + { + private readonly Dictionary getter, V8FastHostPropertySetter setter, V8FastHostPropertyFlags flags)> propertyMap = new(); + private readonly IEnumerable propertyNames; + private Func dynamicPropertiesGetter; + private Func enumeratorFactory; + private Func asyncEnumeratorFactory; + private bool enumerateIndexedProperties; + private int state; + + public Configuration() + { + propertyNames = propertyMap.Keys; + } + + public void Configure(V8FastHostObjectConfigurator configurator) + { + MiscHelpers.VerifyNonNullArgument(configurator, nameof(configurator)); + + var currentState = Interlocked.CompareExchange(ref state, State.Configuring, State.Unconfigured); + switch (currentState) + { + case State.Configuring: + throw new InvalidOperationException("Configuration is already in progress"); + + case State.Configured: + throw new InvalidOperationException("Configuration is already complete"); + } + + try + { + configurator(this); + } + catch (Exception) + { + state = State.Unconfigured; + throw; + } + + if ((enumeratorFactory is not null) && (asyncEnumeratorFactory is null)) + { + asyncEnumeratorFactory = instance => + { + var enumerator = enumeratorFactory(instance); + return (enumerator is not null) ? new FastAsyncEnumeratorOnFastEnumerator(enumerator) : null; + }; + } + + state = State.Configured; + } + + public void GetProperty(IV8FastHostObject instance, string name, in V8FastResult value, out bool isCacheable) + { + if ((state == State.Configured) && propertyMap.TryGetValue(name, out var entry)) + { + entry.getter((TObject)instance, value); + isCacheable = (entry.setter is null) && entry.flags.HasAllFlags(V8FastHostPropertyFlags.Cacheable); + } + else if (dynamicPropertiesGetter?.Invoke((TObject)instance) is {} dynamicProperties) + { + dynamicProperties.GetDynamicProperty(name, value); + isCacheable = false; + } + else + { + isCacheable = false; + } + } + + public void SetProperty(IV8FastHostObject instance, string name, in V8FastArg value) + { + if ((state == State.Configured) && propertyMap.TryGetValue(name, out var entry)) + { + if (entry.setter is {} setter) + { + setter((TObject)instance, value); + } + else + { + throw new NotSupportedException($"The '{name}' property is read-only"); + } + } + else if (dynamicPropertiesGetter?.Invoke((TObject)instance) is {} dynamicProperties) + { + dynamicProperties.SetDynamicProperty(name, value); + } + else + { + throw new NotSupportedException("The object does not support dynamic properties"); + } + } + + public V8FastHostPropertyFlags QueryProperty(IV8FastHostObject instance, string name) + { + if ((state == State.Configured) && propertyMap.TryGetValue(name, out var entry)) + { + return entry.flags; + } + + if ((dynamicPropertiesGetter?.Invoke((TObject)instance) is {} dynamicProperties) && dynamicProperties.HasDynamicProperty(name)) + { + return V8FastHostPropertyFlags.Available | V8FastHostPropertyFlags.Enumerable | V8FastHostPropertyFlags.Writable | V8FastHostPropertyFlags.Deletable; + } + + return V8FastHostPropertyFlags.None; + } + + public bool DeleteProperty(IV8FastHostObject instance, string name) + { + if ((state == State.Configured) && propertyMap.ContainsKey(name)) + { + return false; + } + + if (dynamicPropertiesGetter?.Invoke((TObject)instance) is {} dynamicProperties) + { + dynamicProperties.DeleteDynamicProperty(name); + } + + return true; + } + + public IEnumerable GetPropertyNames(IV8FastHostObject instance) + { + IEnumerable names = null; + + if (state == State.Configured) + { + names = propertyNames; + } + + if (dynamicPropertiesGetter?.Invoke((TObject)instance) is {} dynamicProperties) + { + var dynamicPropertyNames = dynamicProperties.DynamicPropertyNames; + names = (names is null) ? dynamicPropertyNames : names.Concat(dynamicPropertyNames); + } + + return names ?? Enumerable.Empty(); + } + + public void GetProperty(IV8FastHostObject instance, int index, in V8FastResult value) + { + if (dynamicPropertiesGetter?.Invoke((TObject)instance) is {} dynamicProperties) + { + dynamicProperties.GetDynamicProperty(index, value); + } + } + + public void SetProperty(IV8FastHostObject instance, int index, in V8FastArg value) + { + if (dynamicPropertiesGetter?.Invoke((TObject)instance) is {} dynamicProperties) + { + dynamicProperties.SetDynamicProperty(index, value); + } + else + { + throw new NotSupportedException("The object does not support indexed properties"); + } + } + + public V8FastHostPropertyFlags QueryProperty(IV8FastHostObject instance, int index) + { + if ((dynamicPropertiesGetter?.Invoke((TObject)instance) is {} dynamicProperties) && dynamicProperties.HasDynamicProperty(index)) + { + var flags = V8FastHostPropertyFlags.Available | V8FastHostPropertyFlags.Writable | V8FastHostPropertyFlags.Deletable; + if (EnumerateIndexedProperties) + { + flags |= V8FastHostPropertyFlags.Enumerable; + } + + return flags; + } + + return V8FastHostPropertyFlags.None; + } + + public bool DeleteProperty(IV8FastHostObject instance, int index) + { + if (dynamicPropertiesGetter?.Invoke((TObject)instance) is {} dynamicProperties) + { + dynamicProperties.DeleteDynamicProperty(index); + } + + return true; + } + + public IEnumerable GetPropertyIndices(IV8FastHostObject instance) + { + if (dynamicPropertiesGetter?.Invoke((TObject)instance) is {} dynamicProperties) + { + return dynamicProperties.DynamicPropertyIndices; + } + + return Enumerable.Empty(); + } + + public IV8FastEnumerator CreateEnumerator(IV8FastHostObject instance) + { + return enumeratorFactory?.Invoke((TObject)instance); + } + + public IV8FastAsyncEnumerator CreateAsyncEnumerator(IV8FastHostObject instance) + { + return asyncEnumeratorFactory?.Invoke((TObject)instance); + } + + private void VerifyConfiguring() + { + if (state != State.Configuring) + { + throw new InvalidOperationException("Configuration is not in progress"); + } + } + + #region V8FastHostObjectConfiguration overrides + + public override bool EnumerateIndexedProperties + { + get => enumerateIndexedProperties; + set + { + VerifyConfiguring(); + enumerateIndexedProperties = value; + } + } + + public override void AddPropertyAccessors(string name, V8FastHostPropertyGetter getter, V8FastHostPropertySetter setter, V8FastHostPropertyFlags flags) + { + MiscHelpers.VerifyNonNullArgument(name, nameof(name)); + MiscHelpers.VerifyNonNullArgument(getter, nameof(getter)); + + VerifyConfiguring(); + + var addFlags = V8FastHostPropertyFlags.Available; + var removeFlags = V8FastHostPropertyFlags.Deletable; + + if (setter is not null) + { + addFlags |= V8FastHostPropertyFlags.Writable; + } + else + { + removeFlags |= V8FastHostPropertyFlags.Writable; + } + + flags |= addFlags; + flags &= ~removeFlags; + + propertyMap.Add(name, (getter, setter, flags)); + } + + public override void AddMethodGetter(string name, int requiredArgCount, V8FastHostObjectConfigurator> configurator, V8FastHostMethodInvoker invoker) + { + MiscHelpers.VerifyNonNullArgument(invoker, nameof(invoker)); + AddPropertyGetter(name, (TObject instance, in V8FastResult result) => result.Set(new V8FastHostMethod(instance, name, requiredArgCount, configurator, invoker)), V8FastHostPropertyFlags.Cacheable); + } + + public override void SetDynamicPropertiesGetter(Func getter) + { + VerifyConfiguring(); + dynamicPropertiesGetter = getter; + } + + public override void SetEnumeratorFactory(Func factory) + { + VerifyConfiguring(); + enumeratorFactory = factory; + } + + public override void SetAsyncEnumeratorFactory(Func factory) + { + VerifyConfiguring(); + asyncEnumeratorFactory = factory; + } + + #endregion + + #region Nested type: State + + private static class State + { + public const int Unconfigured = 0; + public const int Configuring = 1; + public const int Configured = 2; + } + + #endregion + + #region Nested type: FastAsyncEnumeratorOnFastEnumerator + + private sealed class FastAsyncEnumeratorOnFastEnumerator : IV8FastAsyncEnumerator + { + private readonly IV8FastEnumerator enumerator; + + public FastAsyncEnumeratorOnFastEnumerator(IV8FastEnumerator enumerator) => this.enumerator = enumerator; + + public void GetCurrent(in V8FastResult item) => enumerator.GetCurrent(item); + + public ValueTask MoveNextAsync() => new(enumerator.MoveNext()); + + public ValueTask DisposeAsync() + { + enumerator.Dispose(); + return default; + } + } + + #endregion + } + + #endregion + } +} diff --git a/ClearScript/V8/FastProxy/V8FastHostPropertyFlags.cs b/ClearScript/V8/FastProxy/V8FastHostPropertyFlags.cs new file mode 100644 index 00000000..4628bed8 --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastHostPropertyFlags.cs @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Defines fast host property attributes. + /// + [Flags] + public enum V8FastHostPropertyFlags + { + // IMPORTANT: maintain bitwise equivalence with native enum FastHostObjectUtil::PropertyFlags + + /// + /// Indicates that no attributes are present. + /// + None = 0, + + /// + /// Indicates that the property exists. + /// + Available = 0x00000001, + + /// + /// Indicates that the property value is a constant that may be cached for faster retrieval. + /// + Cacheable = 0x00000002, + + /// + /// Indicates that the property is enumerable via mechanisms such as for...in. + /// + Enumerable = 0x00000004, + + /// + /// Indicates that the property can be assigned. + /// + Writable = 0x00000008, + + /// + /// Indicates that the property can be deleted. + /// + Deletable = 0x00000010 + } + + internal static class V8FastHostPropertyFlagsHelpers + { + public static bool HasAllFlags(this V8FastHostPropertyFlags value, V8FastHostPropertyFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this V8FastHostPropertyFlags value, V8FastHostPropertyFlags flags) => (value & flags) != 0; + } +} diff --git a/ClearScript/V8/FastProxy/V8FastProxyHelpers.cs b/ClearScript/V8/FastProxy/V8FastProxyHelpers.cs new file mode 100644 index 00000000..a296bdf8 --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastProxyHelpers.cs @@ -0,0 +1,71 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Runtime.CompilerServices; +using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.V8.SplitProxy; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + internal static class NullableHelpers + { + private static readonly ConditionalWeakTable> table = new(); + + public static bool TryGet(Type underlyingType, in V8Value.FastArg arg, object obj, out TNullable value) + { + return GetImpl(underlyingType).TryGet(arg, obj, out value); + } + + public static void Set(Type underlyingType, in V8FastResult result, ref TNullable value) + { + GetImpl(underlyingType).Set(result, ref value); + } + + private static IImpl GetImpl(Type underlyingType) + { + lock (table) + { + var holder = table.GetOrCreateValue(underlyingType); + return holder.Value ?? (holder.Value = CreateImpl(underlyingType)); + } + } + + private static IImpl CreateImpl(Type underlyingType) + { + return (IImpl)typeof(Impl<>).MakeGenericType(underlyingType).CreateInstance(); + } + + #region Nested type: IImpl + + private interface IImpl + { + bool TryGet(in V8Value.FastArg arg, object obj, out TNullable value); + void Set(in V8FastResult result, ref TNullable value); + } + + #endregion + + #region Nested type: Impl + + private sealed class Impl : IImpl where TUnderlying : struct + { + #region IImpl implementation + + bool IImpl.TryGet(in V8Value.FastArg arg, object obj, out TNullable value) + { + value = default; + return V8FastArgImpl.TryGet(arg, obj, out Unsafe.As(ref value)); + } + + void IImpl.Set(in V8FastResult result, ref TNullable value) + { + result.SetNullable(Unsafe.As(ref value)); + } + + #endregion + } + + #endregion + } +} diff --git a/ClearScript/V8/FastProxy/V8FastResult.cs b/ClearScript/V8/FastProxy/V8FastResult.cs new file mode 100644 index 00000000..1e0c12a3 --- /dev/null +++ b/ClearScript/V8/FastProxy/V8FastResult.cs @@ -0,0 +1,497 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Numerics; +using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.V8.SplitProxy; + +namespace Microsoft.ClearScript.V8.FastProxy +{ + /// + /// Represents a result returned from a fast host property getter, method, or function. + /// + public readonly ref struct V8FastResult + { + private readonly V8ScriptEngine engine; + private readonly HostItemFlags flags; + private readonly V8Value.FastResult.Ptr pResult; + + internal V8FastResult(V8ScriptEngine engine, HostItemFlags flags, V8Value.FastResult.Ptr pResult) + { + this.engine = engine; + this.flags = flags; + this.pResult = pResult; + } + + /// + /// Determines whether the result has been set. + /// + /// + /// Once set, a result cannot be modified. + /// + public bool IsSet => !pResult.AsRef().IsNonexistent; + + /// + /// Sets the result to undefined. + /// + public void SetUndefined() + { + VerifyUnset(); + pResult.AsRef().SetUndefined(); + } + + /// + /// Sets the result to null. + /// + public void SetNull() + { + SetFromObject(engine.PrepareResult(null, typeof(object), ScriptMemberFlags.None, false)); + } + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(bool value) + { + VerifyUnset(); + pResult.AsRef().SetBoolean(value); + } + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(char value) => SetNumber(value); + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(sbyte value) => SetNumber(value); + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(byte value) => SetNumber(value); + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(short value) => SetNumber(value); + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(ushort value) => SetNumber(value); + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(int value) => SetNumber(value); + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(uint value) => SetNumber(value); + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(long value) + { + if (engine.Flags.HasAllFlags(V8ScriptEngineFlags.MarshalAllInt64AsBigInt)) + { + Set((BigInteger)value); + } + else if (engine.Flags.HasAllFlags(V8ScriptEngineFlags.MarshalUnsafeInt64AsBigInt) && ((value < -MiscHelpers.MaxInt64InDouble) || (value > MiscHelpers.MaxInt64InDouble))) + { + Set((BigInteger)value); + } + else + { + SetNumber(value); + } + } + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(ulong value) + { + if (engine.Flags.HasAllFlags(V8ScriptEngineFlags.MarshalAllInt64AsBigInt)) + { + Set((BigInteger)value); + } + else if (engine.Flags.HasAllFlags(V8ScriptEngineFlags.MarshalUnsafeInt64AsBigInt) && (value > MiscHelpers.MaxInt64InDouble)) + { + Set((BigInteger)value); + } + else + { + SetNumber(value); + } + } + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(float value) => SetNumber(value); + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(double value) => SetNumber(value); + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(decimal value) => SetNumber((double)value); + + /// + /// Sets the result to a string value. + /// + /// The string value to assign to the result. + public void Set(string value) + { + VerifyUnset(); + if (value is not null) + { + pResult.AsRef().SetString(value); + } + else + { + SetNull(); + } + } + + /// + /// Sets the result to a string value, specified as a ReadOnlySpan<char>. + /// + /// The string value to assign to the result, specified as a ReadOnlySpan<char>. + public void Set(ReadOnlySpan value) + { + VerifyUnset(); + pResult.AsRef().SetString(value); + } + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(DateTime value) + { + if (engine.Flags.HasAllFlags(V8ScriptEngineFlags.EnableDateTimeConversion)) + { + VerifyUnset(); + pResult.AsRef().SetDateTime(value); + } + else + { + SetFromObject(value); + } + } + + /// + /// Sets the result to a value. + /// + /// The value to assign to the result. + public void Set(BigInteger value) + { + VerifyUnset(); + pResult.AsRef().SetBigInteger(value); + } + + /// + /// Sets the result to a nullable value of the given underlying type. + /// + /// The underlying type of the nullable value to assign. + /// A nullable value of underlying type to assign to the result. + public void Set(T? value) where T : struct => SetNullable(value); + + /// + /// Sets the result to a value of the given type. + /// + /// The type of value to assign to the result. + /// A value of type to assign to the result. + public void Set(T value) + { + var type = typeof(T); + if (type == typeof(Undefined)) + { + if (value is Undefined) + { + SetUndefined(); + } + } + else if (type == typeof(bool)) + { + if (value is bool boolValue) + { + Set(boolValue); + } + } + else if (type == typeof(char)) + { + if (value is char charValue) + { + Set(charValue); + } + } + else if (type == typeof(sbyte)) + { + if (value is sbyte sbyteValue) + { + Set(sbyteValue); + } + } + else if (type == typeof(byte)) + { + if (value is byte byteValue) + { + Set(byteValue); + } + } + else if (type == typeof(short)) + { + if (value is short shortValue) + { + Set(shortValue); + } + } + else if (type == typeof(ushort)) + { + if (value is ushort ushortValue) + { + Set(ushortValue); + } + } + else if (type == typeof(int)) + { + if (value is int intValue) + { + Set(intValue); + } + } + else if (type == typeof(uint)) + { + if (value is uint uintValue) + { + Set(uintValue); + } + } + else if (type == typeof(long)) + { + if (value is long longValue) + { + Set(longValue); + } + } + else if (type == typeof(ulong)) + { + if (value is ulong ulongValue) + { + Set(ulongValue); + } + } + else if (type == typeof(float)) + { + if (value is float floatValue) + { + Set(floatValue); + } + } + else if (type == typeof(double)) + { + if (value is double doubleValue) + { + Set(doubleValue); + } + } + else if (type == typeof(decimal)) + { + if (value is decimal decimalValue) + { + Set(decimalValue); + } + } + else if (type == typeof(string)) + { + if (value is string stringValue) + { + Set(stringValue); + } + else if (value is null) + { + SetNull(); + } + } + else if (type == typeof(DateTime)) + { + if (value is DateTime dateTimeValue) + { + Set(dateTimeValue); + } + } + else if (type == typeof(BigInteger)) + { + if (value is BigInteger bigIntegerValue) + { + Set(bigIntegerValue); + } + } + else if (Nullable.GetUnderlyingType(type) is {} underlyingType) + { + NullableHelpers.Set(underlyingType, this, ref value); + } + else + { + SetFromObject(engine.PrepareResult(value, ScriptMemberFlags.None, false)); + } + } + + internal void SetNullable(in T? value) where T : struct + { + if (value.HasValue) + { + Set(value.Value); + } + else + { + SetNull(); + } + } + + private void SetNullInternal() + { + VerifyUnset(); + pResult.AsRef().SetNull(); + } + + private void SetNumber(double value) + { + VerifyUnset(); + pResult.AsRef().SetNumber(value); + } + + private void SetFromObject(object obj) + { + var result = engine.MarshalToScript(obj, flags); + if (result is null) + { + SetUndefined(); + } + else if (result is DBNull) + { + SetNullInternal(); + } + else if (result is bool boolValue) + { + Set(boolValue); + } + else if (result is char charValue) + { + Set(charValue); + } + else if (result is sbyte sbyteValue) + { + Set(sbyteValue); + } + else if (result is byte byteValue) + { + Set(byteValue); + } + else if (result is short shortValue) + { + Set(shortValue); + } + else if (result is ushort ushortValue) + { + Set(ushortValue); + } + else if (result is int intValue) + { + Set(intValue); + } + else if (result is uint uintValue) + { + Set(uintValue); + } + else if (result is long longValue) + { + Set(longValue); + } + else if (result is ulong ulongValue) + { + Set(ulongValue); + } + else if (result is float floatValue) + { + Set(floatValue); + } + else if (result is double doubleValue) + { + Set(doubleValue); + } + else if (result is decimal decimalValue) + { + Set(decimalValue); + } + else if (result is string stringValue) + { + Set(stringValue); + } + else if (result is DateTime dateTimeValue) + { + Set(dateTimeValue); + } + else if (result is BigInteger bigIntegerValue) + { + Set(bigIntegerValue); + } + else if (result is V8ObjectImpl v8Object) + { + SetV8Object(v8Object); + } + else if (result is IHostItem hostObject) + { + SetHostObject(hostObject); + } + else + { + SetUndefined(); + } + } + + private void SetV8Object(V8ObjectImpl v8Object) + { + VerifyUnset(); + pResult.AsRef().SetV8Object(v8Object); + } + + private void SetHostObject(IHostItem hostObject) + { + VerifyUnset(); + pResult.AsRef().SetHostObject(hostObject); + } + + private void VerifyUnset() + { + if (IsSet) + { + throw new InvalidOperationException("The result has already been set"); + } + } + } +} diff --git a/ClearScript/V8/IV8Object.cs b/ClearScript/V8/IV8Object.cs index 5beb01b3..b6815300 100644 --- a/ClearScript/V8/IV8Object.cs +++ b/ClearScript/V8/IV8Object.cs @@ -35,5 +35,6 @@ internal interface IV8Object : IDisposable V8ArrayBufferOrViewKind ArrayBufferOrViewKind { get; } V8ArrayBufferOrViewInfo GetArrayBufferOrViewInfo(); void InvokeWithArrayBufferOrViewData(Action action); + void InvokeWithArrayBufferOrViewData(Action action, in TArg arg); } } diff --git a/ClearScript/V8/SplitProxy/IV8SplitProxyNative.cs b/ClearScript/V8/SplitProxy/IV8SplitProxyNative.cs index 6194c103..165dd25e 100644 --- a/ClearScript/V8/SplitProxy/IV8SplitProxyNative.cs +++ b/ClearScript/V8/SplitProxy/IV8SplitProxyNative.cs @@ -15,10 +15,20 @@ internal interface IV8SplitProxyNative #endregion + #region memory methods + + IntPtr Memory_Allocate(UIntPtr size); + IntPtr Memory_AllocateZeroed(UIntPtr size); + void Memory_Free(IntPtr pMemory); + + #endregion + #region StdString methods StdString.Ptr StdString_New(string value); string StdString_GetValue(StdString.Ptr pString); + TValue StdString_GetValue(StdString.Ptr pString, Func factory); + TValue StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg); void StdString_SetValue(StdString.Ptr pString, string value); void StdString_Delete(StdString.Ptr pString); @@ -103,13 +113,11 @@ internal interface IV8SplitProxyNative void V8Value_SetNull(V8Value.Ptr pV8Value); void V8Value_SetBoolean(V8Value.Ptr pV8Value, bool value); void V8Value_SetNumber(V8Value.Ptr pV8Value, double value); - void V8Value_SetInt32(V8Value.Ptr pV8Value, int value); - void V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value); void V8Value_SetString(V8Value.Ptr pV8Value, string value); void V8Value_SetDateTime(V8Value.Ptr pV8Value, double value); void V8Value_SetBigInt(V8Value.Ptr pV8Value, int signBit, byte[] bytes); void V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Handle hObject, V8Value.Subtype subtype, V8Value.Flags flags); - void V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject); + void V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags); void V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded); void V8Value_Delete(V8Value.Ptr pV8Value); @@ -166,6 +174,7 @@ internal interface IV8SplitProxyNative UIntPtr V8Context_GetMaxIsolateStackUsage(V8Context.Handle hContext); void V8Context_SetMaxIsolateStackUsage(V8Context.Handle hContext, UIntPtr size); void V8Context_InvokeWithLock(V8Context.Handle hContext, IntPtr pAction); + void V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg); object V8Context_GetRootItem(V8Context.Handle hContext); void V8Context_AddGlobalItem(V8Context.Handle hContext, string name, object value, bool globalMembers); void V8Context_AwaitDebuggerAndPause(V8Context.Handle hContext); @@ -211,6 +220,7 @@ internal interface IV8SplitProxyNative object V8Object_InvokeMethod(V8Object.Handle hObject, string name, object[] args); void V8Object_GetArrayBufferOrViewInfo(V8Object.Handle hObject, out IV8Object arrayBuffer, out ulong offset, out ulong size, out ulong length); void V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handle hObject, IntPtr pAction); + void V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg); #endregion @@ -228,9 +238,10 @@ internal interface IV8SplitProxyNative #endregion - #region V8 entity cleanup + #region V8 entity methods void V8Entity_Release(V8Entity.Handle hEntity); + V8Entity.Handle V8Entity_CloneHandle(V8Entity.Handle hEntity); void V8Entity_DestroyHandle(V8Entity.Handle hEntity); #endregion diff --git a/ClearScript/V8/SplitProxy/NativeCallbackImpl.cs b/ClearScript/V8/SplitProxy/NativeCallbackImpl.cs index 6b52e0b3..818c58f6 100644 --- a/ClearScript/V8/SplitProxy/NativeCallbackImpl.cs +++ b/ClearScript/V8/SplitProxy/NativeCallbackImpl.cs @@ -21,7 +21,7 @@ public NativeCallbackImpl(NativeCallback.Handle hCallback) public void Invoke() { - V8SplitProxyNative.InvokeNoThrow(instance => instance.NativeCallback_Invoke(Handle)); + V8SplitProxyNative.InvokeNoThrow(static (instance, handle) => instance.NativeCallback_Invoke(handle), Handle); } #endregion diff --git a/ClearScript/V8/SplitProxy/V8ContextProxyImpl.cs b/ClearScript/V8/SplitProxy/V8ContextProxyImpl.cs index a56173e6..5a75a89b 100644 --- a/ClearScript/V8/SplitProxy/V8ContextProxyImpl.cs +++ b/ClearScript/V8/SplitProxy/V8ContextProxyImpl.cs @@ -3,6 +3,7 @@ using System; using System.IO; +using System.Runtime.CompilerServices; using Microsoft.ClearScript.Util; namespace Microsoft.ClearScript.V8.SplitProxy @@ -22,20 +23,20 @@ public V8ContextProxyImpl(V8IsolateProxy isolateProxy, string name, V8ScriptEngi public override UIntPtr MaxIsolateHeapSize { - get => V8SplitProxyNative.Invoke(instance => instance.V8Context_GetMaxIsolateHeapSize(Handle)); - set => V8SplitProxyNative.Invoke(instance => instance.V8Context_SetMaxIsolateHeapSize(Handle, value)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_GetMaxIsolateHeapSize(handle), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_SetMaxIsolateHeapSize(ctx.Handle, ctx.value), (Handle, value)); } public override TimeSpan IsolateHeapSizeSampleInterval { - get => V8SplitProxyNative.Invoke(instance => TimeSpan.FromMilliseconds(instance.V8Context_GetIsolateHeapSizeSampleInterval(Handle))); - set => V8SplitProxyNative.Invoke(instance => instance.V8Context_SetIsolateHeapSizeSampleInterval(Handle, value.TotalMilliseconds)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => TimeSpan.FromMilliseconds(instance.V8Context_GetIsolateHeapSizeSampleInterval(handle)), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_SetIsolateHeapSizeSampleInterval(ctx.Handle, ctx.value.TotalMilliseconds), (Handle, value)); } public override UIntPtr MaxIsolateStackUsage { - get => V8SplitProxyNative.Invoke(instance => instance.V8Context_GetMaxIsolateStackUsage(Handle)); - set => V8SplitProxyNative.Invoke(instance => instance.V8Context_SetMaxIsolateStackUsage(Handle, value)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_GetMaxIsolateStackUsage(handle), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_SetMaxIsolateStackUsage(ctx.Handle, ctx.value), (Handle, value)); } public override void InvokeWithLock(Action action) @@ -43,55 +44,79 @@ public override void InvokeWithLock(Action action) using (var actionScope = V8ProxyHelpers.CreateAddRefHostObjectScope(action)) { var pAction = actionScope.Value; - V8SplitProxyNative.Invoke(instance => instance.V8Context_InvokeWithLock(Handle, pAction)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_InvokeWithLock(ctx.Handle, ctx.pAction), (Handle, pAction)); + } + } + + public override unsafe void InvokeWithLock(Action action, in TArg arg) + { + var ctx = (action, arg); + var pCtx = (IntPtr)Unsafe.AsPointer(ref ctx); + + Action actionWithArg = static pCtx => + { + ref var ctx = ref Unsafe.AsRef<(Action action, TArg arg)>(pCtx.ToPointer()); + ctx.action(ctx.arg); + }; + + using (var actionScope = V8ProxyHelpers.CreateAddRefHostObjectScope(actionWithArg)) + { + var pAction = actionScope.Value; + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_InvokeWithLockWithArg(ctx.Handle, ctx.pAction, ctx.pCtx), (Handle, pAction, pCtx)); } } public override object GetRootItem() { - return V8SplitProxyNative.Invoke(instance => instance.V8Context_GetRootItem(Handle)); + return V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_GetRootItem(handle), Handle); } public override void AddGlobalItem(string name, object item, bool globalMembers) { - V8SplitProxyNative.Invoke(instance => instance.V8Context_AddGlobalItem(Handle, name, item, globalMembers)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_AddGlobalItem(ctx.Handle, ctx.name, ctx.item, ctx.globalMembers), (Handle, name, item, globalMembers)); } public override void AwaitDebuggerAndPause() { - V8SplitProxyNative.Invoke(instance => instance.V8Context_AwaitDebuggerAndPause(Handle)); + V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_AwaitDebuggerAndPause(handle), Handle); } public override void CancelAwaitDebugger() { - V8SplitProxyNative.Invoke(instance => instance.V8Context_CancelAwaitDebugger(Handle)); + V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_CancelAwaitDebugger(handle), Handle); } public override object Execute(UniqueDocumentInfo documentInfo, string code, bool evaluate) { - return V8SplitProxyNative.Invoke(instance => instance.V8Context_ExecuteCode( - Handle, - MiscHelpers.GetUrlOrPath(documentInfo.Uri, documentInfo.UniqueName), - MiscHelpers.GetUrlOrPath(documentInfo.SourceMapUri, string.Empty), - documentInfo.UniqueId, - documentInfo.Category.Kind, - V8ProxyHelpers.AddRefHostObject(documentInfo), - code, - evaluate - )); + return V8SplitProxyNative.Invoke( + static (instance, ctx) => instance.V8Context_ExecuteCode( + ctx.Handle, + MiscHelpers.GetUrlOrPath(ctx.documentInfo.Uri, ctx.documentInfo.UniqueName), + MiscHelpers.GetUrlOrPath(ctx.documentInfo.SourceMapUri, string.Empty), + ctx.documentInfo.UniqueId, + ctx.documentInfo.Category.Kind, + V8ProxyHelpers.AddRefHostObject(ctx.documentInfo), + ctx.code, + ctx.evaluate + ), + (Handle, documentInfo, code, evaluate) + ); } public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code) { - return new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke(instance => instance.V8Context_Compile( - Handle, - MiscHelpers.GetUrlOrPath(documentInfo.Uri, documentInfo.UniqueName), - MiscHelpers.GetUrlOrPath(documentInfo.SourceMapUri, string.Empty), - documentInfo.UniqueId, - documentInfo.Category.Kind, - V8ProxyHelpers.AddRefHostObject(documentInfo), - code - ))); + return new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke( + static (instance, ctx) => instance.V8Context_Compile( + ctx.Handle, + MiscHelpers.GetUrlOrPath(ctx.documentInfo.Uri, ctx.documentInfo.UniqueName), + MiscHelpers.GetUrlOrPath(ctx.documentInfo.SourceMapUri, string.Empty), + ctx.documentInfo.UniqueId, + ctx.documentInfo.Category.Kind, + V8ProxyHelpers.AddRefHostObject(ctx.documentInfo), + ctx.code + ), + (Handle, documentInfo, code) + )); } public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code, V8CacheKind cacheKind, out byte[] cacheBytes) @@ -102,46 +127,62 @@ public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code return Compile(documentInfo, code); } - byte[] tempCacheBytes = null; - var script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke(instance => instance.V8Context_CompileProducingCache( - Handle, - MiscHelpers.GetUrlOrPath(documentInfo.Uri, documentInfo.UniqueName), - MiscHelpers.GetUrlOrPath(documentInfo.SourceMapUri, string.Empty), - documentInfo.UniqueId, - documentInfo.Category.Kind, - V8ProxyHelpers.AddRefHostObject(documentInfo), - code, - cacheKind, - out tempCacheBytes - ))); - - cacheBytes = tempCacheBytes; + var ctx = (Handle, documentInfo, code, cacheKind, cacheBytes: (byte[])null); + + var script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke( + static (instance, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + return instance.V8Context_CompileProducingCache( + ctx.Handle, + MiscHelpers.GetUrlOrPath(ctx.documentInfo.Uri, ctx.documentInfo.UniqueName), + MiscHelpers.GetUrlOrPath(ctx.documentInfo.SourceMapUri, string.Empty), + ctx.documentInfo.UniqueId, + ctx.documentInfo.Category.Kind, + V8ProxyHelpers.AddRefHostObject(ctx.documentInfo), + ctx.code, + ctx.cacheKind, + out ctx.cacheBytes + ); + }, + StructPtr.FromRef(ref ctx) + )); + + cacheBytes = ctx.cacheBytes; return script; } public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code, V8CacheKind cacheKind, byte[] cacheBytes, out bool cacheAccepted) { - if ((cacheKind == V8CacheKind.None) || (cacheBytes == null) || (cacheBytes.Length < 1)) + if ((cacheKind == V8CacheKind.None) || (cacheBytes is null) || (cacheBytes.Length < 1)) { cacheAccepted = false; return Compile(documentInfo, code); } - var tempCacheAccepted = false; - var script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke(instance => instance.V8Context_CompileConsumingCache( - Handle, - MiscHelpers.GetUrlOrPath(documentInfo.Uri, documentInfo.UniqueName), - MiscHelpers.GetUrlOrPath(documentInfo.SourceMapUri, string.Empty), - documentInfo.UniqueId, - documentInfo.Category.Kind, - V8ProxyHelpers.AddRefHostObject(documentInfo), - code, - cacheKind, - cacheBytes, - out tempCacheAccepted - ))); - - cacheAccepted = tempCacheAccepted; + var ctx = (Handle, documentInfo, code, cacheKind, cacheBytes, cacheAccepted: false); + + var script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke( + static (instance, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + return instance.V8Context_CompileConsumingCache( + ctx.Handle, + MiscHelpers.GetUrlOrPath(ctx.documentInfo.Uri, ctx.documentInfo.UniqueName), + MiscHelpers.GetUrlOrPath(ctx.documentInfo.SourceMapUri, string.Empty), + ctx.documentInfo.UniqueId, + ctx.documentInfo.Category.Kind, + V8ProxyHelpers.AddRefHostObject(ctx.documentInfo), + ctx.code, + ctx.cacheKind, + ctx.cacheBytes, + out ctx.cacheAccepted + ); + }, + StructPtr.FromRef(ref ctx) + )); + + cacheAccepted = ctx.cacheAccepted; return script; } @@ -154,12 +195,11 @@ public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code } V8.V8Script script; - var tempCacheBytes = cacheBytes; - if ((cacheBytes == null) || (cacheBytes.Length < 1)) + if ((cacheBytes is null) || (cacheBytes.Length < 1)) { - script = Compile(documentInfo, code, cacheKind, out tempCacheBytes); - cacheResult = (tempCacheBytes != null) && (tempCacheBytes.Length > 0) ? V8CacheResult.Updated : V8CacheResult.UpdateFailed; + script = Compile(documentInfo, code, cacheKind, out var tempCacheBytes); + cacheResult = (tempCacheBytes is not null) && (tempCacheBytes.Length > 0) ? V8CacheResult.Updated : V8CacheResult.UpdateFailed; if (cacheResult == V8CacheResult.Updated) { cacheBytes = tempCacheBytes; @@ -168,24 +208,32 @@ public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code return script; } - var tempCacheResult = V8CacheResult.Disabled; - script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke(instance => instance.V8Context_CompileUpdatingCache( - Handle, - MiscHelpers.GetUrlOrPath(documentInfo.Uri, documentInfo.UniqueName), - MiscHelpers.GetUrlOrPath(documentInfo.SourceMapUri, string.Empty), - documentInfo.UniqueId, - documentInfo.Category.Kind, - V8ProxyHelpers.AddRefHostObject(documentInfo), - code, - cacheKind, - ref tempCacheBytes, - out tempCacheResult - ))); - - cacheResult = tempCacheResult; + var ctx = (Handle, documentInfo, code, cacheKind, cacheBytes, cacheResult: V8CacheResult.Disabled); + + script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke( + static (instance, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + return instance.V8Context_CompileUpdatingCache( + ctx.Handle, + MiscHelpers.GetUrlOrPath(ctx.documentInfo.Uri, ctx.documentInfo.UniqueName), + MiscHelpers.GetUrlOrPath(ctx.documentInfo.SourceMapUri, string.Empty), + ctx.documentInfo.UniqueId, + ctx.documentInfo.Category.Kind, + V8ProxyHelpers.AddRefHostObject(ctx.documentInfo), + ctx.code, + ctx.cacheKind, + ref ctx.cacheBytes, + out ctx.cacheResult + ); + }, + StructPtr.FromRef(ref ctx) + )); + + cacheResult = ctx.cacheResult; if (cacheResult == V8CacheResult.Updated) { - cacheBytes = tempCacheBytes; + cacheBytes = ctx.cacheBytes; } return script; @@ -193,90 +241,107 @@ out tempCacheResult public override object Execute(V8.V8Script script, bool evaluate) { - if (!(script is V8ScriptImpl scriptImpl)) + if (script is V8ScriptImpl scriptImpl) { - throw new ArgumentException("Invalid compiled script", nameof(script)); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_ExecuteScript(ctx.Handle, ctx.scriptImpl.Handle, ctx.evaluate), (Handle, scriptImpl, evaluate)); } - return V8SplitProxyNative.Invoke(instance => instance.V8Context_ExecuteScript( - Handle, - scriptImpl.Handle, - evaluate - )); + throw new ArgumentException("Invalid compiled script", nameof(script)); } public override void Interrupt() { - V8SplitProxyNative.Invoke(instance => instance.V8Context_Interrupt(Handle)); + V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_Interrupt(handle), Handle); } public override void CancelInterrupt() { - V8SplitProxyNative.Invoke(instance => instance.V8Context_CancelInterrupt(Handle)); + V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_CancelInterrupt(handle), Handle); } public override bool EnableIsolateInterruptPropagation { - get => V8SplitProxyNative.Invoke(instance => instance.V8Context_GetEnableIsolateInterruptPropagation(Handle)); - set => V8SplitProxyNative.Invoke(instance => instance.V8Context_SetEnableIsolateInterruptPropagation(Handle, value)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_GetEnableIsolateInterruptPropagation(handle), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_SetEnableIsolateInterruptPropagation(ctx.Handle, ctx.value), (Handle, value)); } public override bool DisableIsolateHeapSizeViolationInterrupt { - get => V8SplitProxyNative.Invoke(instance => instance.V8Context_GetDisableIsolateHeapSizeViolationInterrupt(Handle)); - set => V8SplitProxyNative.Invoke(instance => instance.V8Context_SetDisableIsolateHeapSizeViolationInterrupt(Handle, value)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_GetDisableIsolateHeapSizeViolationInterrupt(handle), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_SetDisableIsolateHeapSizeViolationInterrupt(ctx.Handle, ctx.value), (Handle, value)); } public override V8RuntimeHeapInfo GetIsolateHeapInfo() { - var totalHeapSize = 0UL; - var totalHeapSizeExecutable = 0UL; - var totalPhysicalSize = 0UL; - var totalAvailableSize = 0UL; - var usedHeapSize = 0UL; - var heapSizeLimit = 0UL; - var totalExternalSize = 0UL; - V8SplitProxyNative.Invoke(instance => instance.V8Context_GetIsolateHeapStatistics(Handle, out totalHeapSize, out totalHeapSizeExecutable, out totalPhysicalSize, out totalAvailableSize, out usedHeapSize, out heapSizeLimit, out totalExternalSize)); + + var ctx = ( + Handle, + totalHeapSize: 0UL, + totalHeapSizeExecutable: 0UL, + totalPhysicalSize: 0UL, + totalAvailableSize: 0UL, + usedHeapSize: 0UL, + heapSizeLimit: 0UL, + totalExternalSize: 0UL + ); + + V8SplitProxyNative.Invoke( + static (instance, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + instance.V8Context_GetIsolateHeapStatistics( + ctx.Handle, + out ctx.totalHeapSize, + out ctx.totalHeapSizeExecutable, + out ctx.totalPhysicalSize, + out ctx.totalAvailableSize, + out ctx.usedHeapSize, + out ctx.heapSizeLimit, + out ctx.totalExternalSize + ); + }, + StructPtr.FromRef(ref ctx) + ); return new V8RuntimeHeapInfo { - TotalHeapSize = totalHeapSize, - TotalHeapSizeExecutable = totalHeapSizeExecutable, - TotalPhysicalSize = totalPhysicalSize, - TotalAvailableSize = totalAvailableSize, - UsedHeapSize = usedHeapSize, - HeapSizeLimit = heapSizeLimit, - TotalExternalSize = totalExternalSize + TotalHeapSize = ctx.totalHeapSize, + TotalHeapSizeExecutable = ctx.totalHeapSizeExecutable, + TotalPhysicalSize = ctx.totalPhysicalSize, + TotalAvailableSize = ctx.totalAvailableSize, + UsedHeapSize = ctx.usedHeapSize, + HeapSizeLimit = ctx.heapSizeLimit, + TotalExternalSize = ctx.totalExternalSize }; } public override V8Runtime.Statistics GetIsolateStatistics() { var statistics = new V8Runtime.Statistics(); - V8SplitProxyNative.Invoke(instance => instance.V8Context_GetIsolateStatistics(Handle, out statistics.ScriptCount, out statistics.ScriptCacheSize, out statistics.ModuleCount, out statistics.PostedTaskCounts, out statistics.InvokedTaskCounts)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_GetIsolateStatistics(ctx.Handle, out ctx.statistics.ScriptCount, out ctx.statistics.ScriptCacheSize, out ctx.statistics.ModuleCount, out ctx.statistics.PostedTaskCounts, out ctx.statistics.InvokedTaskCounts), (Handle, statistics)); return statistics; } public override V8ScriptEngine.Statistics GetStatistics() { var statistics = new V8ScriptEngine.Statistics(); - V8SplitProxyNative.Invoke(instance => instance.V8Context_GetStatistics(Handle, out statistics.ScriptCount, out statistics.ModuleCount, out statistics.ModuleCacheSize)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_GetStatistics(ctx.Handle, out ctx.statistics.ScriptCount, out ctx.statistics.ModuleCount, out ctx.statistics.ModuleCacheSize), (Handle, statistics)); return statistics; } public override void CollectGarbage(bool exhaustive) { - V8SplitProxyNative.Invoke(instance => instance.V8Context_CollectGarbage(Handle, exhaustive)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_CollectGarbage(ctx.Handle, ctx.exhaustive), (Handle, exhaustive)); } public override void OnAccessSettingsChanged() { - V8SplitProxyNative.Invoke(instance => instance.V8Context_OnAccessSettingsChanged(Handle)); + V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_OnAccessSettingsChanged(handle), Handle); } public override bool BeginCpuProfile(string name, V8CpuProfileFlags flags) { - return V8SplitProxyNative.Invoke(instance => instance.V8Context_BeginCpuProfile(Handle, name, flags.HasFlag(V8CpuProfileFlags.EnableSampleCollection))); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_BeginCpuProfile(ctx.Handle, ctx.name, ctx.flags.HasAllFlags(V8CpuProfileFlags.EnableSampleCollection)), (Handle, name, flags)); } public override V8.V8CpuProfile EndCpuProfile(string name) @@ -287,7 +352,7 @@ public override V8.V8CpuProfile EndCpuProfile(string name) using (var actionScope = V8ProxyHelpers.CreateAddRefHostObjectScope(action)) { var pAction = actionScope.Value; - V8SplitProxyNative.Invoke(instance => instance.V8Context_EndCpuProfile(Handle, name, pAction)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_EndCpuProfile(ctx.Handle, ctx.name, ctx.pAction), (Handle, name, pAction)); } return profile; @@ -295,13 +360,13 @@ public override V8.V8CpuProfile EndCpuProfile(string name) public override void CollectCpuProfileSample() { - V8SplitProxyNative.Invoke(instance => instance.V8Context_CollectCpuProfileSample(Handle)); + V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_CollectCpuProfileSample(handle), Handle); } public override uint CpuProfileSampleInterval { - get => V8SplitProxyNative.Invoke(instance => instance.V8Context_GetCpuProfileSampleInterval(Handle)); - set => V8SplitProxyNative.Invoke(instance => instance.V8Context_SetCpuProfileSampleInterval(Handle, value)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Context_GetCpuProfileSampleInterval(handle), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_SetCpuProfileSampleInterval(ctx.Handle, ctx.value), (Handle, value)); } public override void WriteIsolateHeapSnapshot(Stream stream) @@ -309,7 +374,7 @@ public override void WriteIsolateHeapSnapshot(Stream stream) using (var streamScope = V8ProxyHelpers.CreateAddRefHostObjectScope(stream)) { var pStream = streamScope.Value; - V8SplitProxyNative.Invoke(instance => instance.V8Context_WriteIsolateHeapSnapshot(Handle, pStream)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Context_WriteIsolateHeapSnapshot(ctx.Handle, ctx.pStream), (Handle, pStream)); } } diff --git a/ClearScript/V8/SplitProxy/V8DebugListenerImpl.cs b/ClearScript/V8/SplitProxy/V8DebugListenerImpl.cs index abd35f09..9999e342 100644 --- a/ClearScript/V8/SplitProxy/V8DebugListenerImpl.cs +++ b/ClearScript/V8/SplitProxy/V8DebugListenerImpl.cs @@ -20,17 +20,17 @@ public V8DebugListenerImpl(V8DebugCallback.Handle hCallback) public void ConnectClient() { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8DebugCallback_ConnectClient(Handle)); + V8SplitProxyNative.InvokeNoThrow(static (instance, handle) => instance.V8DebugCallback_ConnectClient(handle), Handle); } public void SendCommand(string command) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8DebugCallback_SendCommand(Handle, command)); + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.V8DebugCallback_SendCommand(ctx.Handle, ctx.command), (Handle, command)); } public void DisconnectClient() { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8DebugCallback_DisconnectClient(Handle)); + V8SplitProxyNative.InvokeNoThrow(static (instance, handle) => instance.V8DebugCallback_DisconnectClient(handle), Handle); } #endregion diff --git a/ClearScript/V8/SplitProxy/V8EntityHolder.cs b/ClearScript/V8/SplitProxy/V8EntityHolder.cs index 64ae9d6b..ad102309 100644 --- a/ClearScript/V8/SplitProxy/V8EntityHolder.cs +++ b/ClearScript/V8/SplitProxy/V8EntityHolder.cs @@ -33,7 +33,7 @@ public void ReleaseEntity() var tempHandle = handle; if (tempHandle != V8Entity.Handle.Empty) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Entity_Release(tempHandle)); + V8SplitProxyNative.InvokeNoThrow(static (instance, tempHandle) => instance.V8Entity_Release(tempHandle), tempHandle); } } @@ -42,7 +42,7 @@ public static void Destroy(ref V8EntityHolder holder) var tempHandle = holder.handle; if (tempHandle != V8Entity.Handle.Empty) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Entity_DestroyHandle(tempHandle)); + V8SplitProxyNative.InvokeNoThrow(static (instance, tempHandle) => instance.V8Entity_DestroyHandle(tempHandle), tempHandle); } if (holder.registered) diff --git a/ClearScript/V8/SplitProxy/V8IsolateProxyImpl.cs b/ClearScript/V8/SplitProxy/V8IsolateProxyImpl.cs index 96d65b4a..c6dcfea5 100644 --- a/ClearScript/V8/SplitProxy/V8IsolateProxyImpl.cs +++ b/ClearScript/V8/SplitProxy/V8IsolateProxyImpl.cs @@ -15,68 +15,69 @@ internal sealed class V8IsolateProxyImpl : V8IsolateProxy public V8IsolateProxyImpl(string name, V8RuntimeConstraints constraints, V8RuntimeFlags flags, int debugPort) { - holder = new V8EntityHolder("V8 runtime", () => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_Create( - name, - constraints?.MaxNewSpaceSize ?? -1, - constraints?.MaxOldSpaceSize ?? -1, - constraints?.HeapExpansionMultiplier ?? 0, - constraints?.MaxArrayBufferAllocation ?? ulong.MaxValue, - flags, - debugPort - ))); + holder = new V8EntityHolder("V8 runtime", () => V8SplitProxyNative.Invoke( + static (instance, ctx) => instance.V8Isolate_Create( + ctx.name, + ctx.constraints?.MaxNewSpaceSize ?? -1, + ctx.constraints?.MaxOldSpaceSize ?? -1, + ctx.constraints?.HeapExpansionMultiplier ?? 0, + ctx.constraints?.MaxArrayBufferAllocation ?? ulong.MaxValue, + ctx.flags, + ctx.debugPort + ), + (name, constraints, flags, debugPort) + )); } public V8Context.Handle CreateContext(string name, V8ScriptEngineFlags flags, int debugPort) { - return V8SplitProxyNative.Invoke(instance => instance.V8Isolate_CreateContext( - Handle, - name, - flags, - debugPort - )); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_CreateContext(ctx.Handle, ctx.name, ctx.flags, ctx.debugPort), (Handle, name, flags, debugPort)); } #region V8IsolateProxy overrides public override UIntPtr MaxHeapSize { - get => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_GetMaxHeapSize(Handle)); - set => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_SetMaxHeapSize(Handle, value)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Isolate_GetMaxHeapSize(handle), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_SetMaxHeapSize(ctx.Handle, ctx.value), (Handle, value)); } public override TimeSpan HeapSizeSampleInterval { - get => V8SplitProxyNative.Invoke(instance => TimeSpan.FromMilliseconds(instance.V8Isolate_GetHeapSizeSampleInterval(Handle))); - set => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_SetHeapSizeSampleInterval(Handle, value.TotalMilliseconds)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => TimeSpan.FromMilliseconds(instance.V8Isolate_GetHeapSizeSampleInterval(handle)), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_SetHeapSizeSampleInterval(ctx.Handle, ctx.value.TotalMilliseconds), (Handle, value)); } public override UIntPtr MaxStackUsage { - get => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_GetMaxStackUsage(Handle)); - set => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_SetMaxStackUsage(Handle, value)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Isolate_GetMaxStackUsage(handle), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_SetMaxStackUsage(ctx.Handle, ctx.value), (Handle, value)); } public override void AwaitDebuggerAndPause() { - V8SplitProxyNative.Invoke(instance => instance.V8Isolate_AwaitDebuggerAndPause(Handle)); + V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Isolate_AwaitDebuggerAndPause(handle), Handle); } public override void CancelAwaitDebugger() { - V8SplitProxyNative.Invoke(instance => instance.V8Isolate_CancelAwaitDebugger(Handle)); + V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Isolate_CancelAwaitDebugger(handle), Handle); } public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code) { - return new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke(instance => instance.V8Isolate_Compile( - Handle, - MiscHelpers.GetUrlOrPath(documentInfo.Uri, documentInfo.UniqueName), - MiscHelpers.GetUrlOrPath(documentInfo.SourceMapUri, string.Empty), - documentInfo.UniqueId, - documentInfo.Category.Kind, - V8ProxyHelpers.AddRefHostObject(documentInfo), - code - ))); + return new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke( + static (instance, ctx) => instance.V8Isolate_Compile( + ctx.Handle, + MiscHelpers.GetUrlOrPath(ctx.documentInfo.Uri, ctx.documentInfo.UniqueName), + MiscHelpers.GetUrlOrPath(ctx.documentInfo.SourceMapUri, string.Empty), + ctx.documentInfo.UniqueId, + ctx.documentInfo.Category.Kind, + V8ProxyHelpers.AddRefHostObject(ctx.documentInfo), + ctx.code + ), + (Handle, documentInfo, code) + )); } public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code, V8CacheKind cacheKind, out byte[] cacheBytes) @@ -87,46 +88,62 @@ public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code return Compile(documentInfo, code); } - byte[] tempCacheBytes = null; - var script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke(instance => instance.V8Isolate_CompileProducingCache( - Handle, - MiscHelpers.GetUrlOrPath(documentInfo.Uri, documentInfo.UniqueName), - MiscHelpers.GetUrlOrPath(documentInfo.SourceMapUri, string.Empty), - documentInfo.UniqueId, - documentInfo.Category.Kind, - V8ProxyHelpers.AddRefHostObject(documentInfo), - code, - cacheKind, - out tempCacheBytes - ))); - - cacheBytes = tempCacheBytes; + var ctx = (Handle, documentInfo, code, cacheKind, cacheBytes: (byte[])null); + + var script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke( + static (instance, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + return instance.V8Isolate_CompileProducingCache( + ctx.Handle, + MiscHelpers.GetUrlOrPath(ctx.documentInfo.Uri, ctx.documentInfo.UniqueName), + MiscHelpers.GetUrlOrPath(ctx.documentInfo.SourceMapUri, string.Empty), + ctx.documentInfo.UniqueId, + ctx.documentInfo.Category.Kind, + V8ProxyHelpers.AddRefHostObject(ctx.documentInfo), + ctx.code, + ctx.cacheKind, + out ctx.cacheBytes + ); + }, + StructPtr.FromRef(ref ctx) + )); + + cacheBytes = ctx.cacheBytes; return script; } public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code, V8CacheKind cacheKind, byte[] cacheBytes, out bool cacheAccepted) { - if ((cacheKind == V8CacheKind.None) || (cacheBytes == null) || (cacheBytes.Length < 1)) + if ((cacheKind == V8CacheKind.None) || (cacheBytes is null) || (cacheBytes.Length < 1)) { cacheAccepted = false; return Compile(documentInfo, code); } - var tempCacheAccepted = false; - var script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke(instance => instance.V8Isolate_CompileConsumingCache( - Handle, - MiscHelpers.GetUrlOrPath(documentInfo.Uri, documentInfo.UniqueName), - MiscHelpers.GetUrlOrPath(documentInfo.SourceMapUri, string.Empty), - documentInfo.UniqueId, - documentInfo.Category.Kind, - V8ProxyHelpers.AddRefHostObject(documentInfo), - code, - cacheKind, - cacheBytes, - out tempCacheAccepted - ))); - - cacheAccepted = tempCacheAccepted; + var ctx = (Handle, documentInfo, code, cacheKind, cacheBytes, cacheAccepted: false); + + var script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke( + static (instance, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + return instance.V8Isolate_CompileConsumingCache( + ctx.Handle, + MiscHelpers.GetUrlOrPath(ctx.documentInfo.Uri, ctx.documentInfo.UniqueName), + MiscHelpers.GetUrlOrPath(ctx.documentInfo.SourceMapUri, string.Empty), + ctx.documentInfo.UniqueId, + ctx.documentInfo.Category.Kind, + V8ProxyHelpers.AddRefHostObject(ctx.documentInfo), + ctx.code, + ctx.cacheKind, + ctx.cacheBytes, + out ctx.cacheAccepted + ); + }, + StructPtr.FromRef(ref ctx) + )); + + cacheAccepted = ctx.cacheAccepted; return script; } @@ -139,12 +156,11 @@ public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code } V8.V8Script script; - var tempCacheBytes = cacheBytes; - if ((cacheBytes == null) || (cacheBytes.Length < 1)) + if ((cacheBytes is null) || (cacheBytes.Length < 1)) { - script = Compile(documentInfo, code, cacheKind, out tempCacheBytes); - cacheResult = (tempCacheBytes != null) && (tempCacheBytes.Length > 0) ? V8CacheResult.Updated : V8CacheResult.UpdateFailed; + script = Compile(documentInfo, code, cacheKind, out var tempCacheBytes); + cacheResult = (tempCacheBytes is not null) && (tempCacheBytes.Length > 0) ? V8CacheResult.Updated : V8CacheResult.UpdateFailed; if (cacheResult == V8CacheResult.Updated) { cacheBytes = tempCacheBytes; @@ -153,24 +169,32 @@ public override V8.V8Script Compile(UniqueDocumentInfo documentInfo, string code return script; } - var tempCacheResult = V8CacheResult.Disabled; - script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke(instance => instance.V8Isolate_CompileUpdatingCache( - Handle, - MiscHelpers.GetUrlOrPath(documentInfo.Uri, documentInfo.UniqueName), - MiscHelpers.GetUrlOrPath(documentInfo.SourceMapUri, string.Empty), - documentInfo.UniqueId, - documentInfo.Category.Kind, - V8ProxyHelpers.AddRefHostObject(documentInfo), - code, - cacheKind, - ref tempCacheBytes, - out tempCacheResult - ))); - - cacheResult = tempCacheResult; + var ctx = (Handle, documentInfo, code, cacheKind, cacheBytes, cacheResult: V8CacheResult.Disabled); + + script = new V8ScriptImpl(documentInfo, code.GetDigest(), V8SplitProxyNative.Invoke( + static (instance, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + return instance.V8Isolate_CompileUpdatingCache( + ctx.Handle, + MiscHelpers.GetUrlOrPath(ctx.documentInfo.Uri, ctx.documentInfo.UniqueName), + MiscHelpers.GetUrlOrPath(ctx.documentInfo.SourceMapUri, string.Empty), + ctx.documentInfo.UniqueId, + ctx.documentInfo.Category.Kind, + V8ProxyHelpers.AddRefHostObject(ctx.documentInfo), + ctx.code, + ctx.cacheKind, + ref ctx.cacheBytes, + out ctx.cacheResult + ); + }, + StructPtr.FromRef(ref ctx) + )); + + cacheResult = ctx.cacheResult; if (cacheResult == V8CacheResult.Updated) { - cacheBytes = tempCacheBytes; + cacheBytes = ctx.cacheBytes; } return script; @@ -178,54 +202,74 @@ out tempCacheResult public override bool EnableInterruptPropagation { - get => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_GetEnableInterruptPropagation(Handle)); - set => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_SetEnableInterruptPropagation(Handle, value)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Isolate_GetEnableInterruptPropagation(handle), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_SetEnableInterruptPropagation(ctx.Handle, ctx.value), (Handle, value)); } public override bool DisableHeapSizeViolationInterrupt { - get => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_GetDisableHeapSizeViolationInterrupt(Handle)); - set => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_SetDisableHeapSizeViolationInterrupt(Handle, value)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Isolate_GetDisableHeapSizeViolationInterrupt(handle), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_SetDisableHeapSizeViolationInterrupt(ctx.Handle, ctx.value), (Handle, value)); } public override V8RuntimeHeapInfo GetHeapInfo() { - var totalHeapSize = 0UL; - var totalHeapSizeExecutable = 0UL; - var totalPhysicalSize = 0UL; - var totalAvailableSize = 0UL; - var usedHeapSize = 0UL; - var heapSizeLimit = 0UL; - var totalExternalSize = 0UL; - V8SplitProxyNative.Invoke(instance => instance.V8Isolate_GetHeapStatistics(Handle, out totalHeapSize, out totalHeapSizeExecutable, out totalPhysicalSize, out totalAvailableSize, out usedHeapSize, out heapSizeLimit, out totalExternalSize)); + var ctx = ( + Handle, + totalHeapSize: 0UL, + totalHeapSizeExecutable: 0UL, + totalPhysicalSize: 0UL, + totalAvailableSize: 0UL, + usedHeapSize: 0UL, + heapSizeLimit: 0UL, + totalExternalSize: 0UL + ); + + V8SplitProxyNative.Invoke( + static (instance, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + instance.V8Isolate_GetHeapStatistics( + ctx.Handle, + out ctx.totalHeapSize, + out ctx.totalHeapSizeExecutable, + out ctx.totalPhysicalSize, + out ctx.totalAvailableSize, + out ctx.usedHeapSize, + out ctx.heapSizeLimit, + out ctx.totalExternalSize + ); + }, + StructPtr.FromRef(ref ctx) + ); return new V8RuntimeHeapInfo { - TotalHeapSize = totalHeapSize, - TotalHeapSizeExecutable = totalHeapSizeExecutable, - TotalPhysicalSize = totalPhysicalSize, - TotalAvailableSize = totalAvailableSize, - UsedHeapSize = usedHeapSize, - HeapSizeLimit = heapSizeLimit, - TotalExternalSize = totalExternalSize + TotalHeapSize = ctx.totalHeapSize, + TotalHeapSizeExecutable = ctx.totalHeapSizeExecutable, + TotalPhysicalSize = ctx.totalPhysicalSize, + TotalAvailableSize = ctx.totalAvailableSize, + UsedHeapSize = ctx.usedHeapSize, + HeapSizeLimit = ctx.heapSizeLimit, + TotalExternalSize = ctx.totalExternalSize }; } public override V8Runtime.Statistics GetStatistics() { var statistics = new V8Runtime.Statistics(); - V8SplitProxyNative.Invoke(instance => instance.V8Isolate_GetStatistics(Handle, out statistics.ScriptCount, out statistics.ScriptCacheSize, out statistics.ModuleCount, out statistics.PostedTaskCounts, out statistics.InvokedTaskCounts)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_GetStatistics(ctx.Handle, out ctx.statistics.ScriptCount, out ctx.statistics.ScriptCacheSize, out ctx.statistics.ModuleCount, out ctx.statistics.PostedTaskCounts, out ctx.statistics.InvokedTaskCounts), (Handle, statistics)); return statistics; } public override void CollectGarbage(bool exhaustive) { - V8SplitProxyNative.Invoke(instance => instance.V8Isolate_CollectGarbage(Handle, exhaustive)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_CollectGarbage(ctx.Handle, ctx.exhaustive), (Handle, exhaustive)); } public override bool BeginCpuProfile(string name, V8CpuProfileFlags flags) { - return V8SplitProxyNative.Invoke(instance => instance.V8Isolate_BeginCpuProfile(Handle, name, flags.HasFlag(V8CpuProfileFlags.EnableSampleCollection))); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_BeginCpuProfile(ctx.Handle, ctx.name, ctx.flags.HasAllFlags(V8CpuProfileFlags.EnableSampleCollection)), (Handle, name, flags)); } public override V8.V8CpuProfile EndCpuProfile(string name) @@ -236,7 +280,7 @@ public override V8.V8CpuProfile EndCpuProfile(string name) using (var actionScope = V8ProxyHelpers.CreateAddRefHostObjectScope(action)) { var pAction = actionScope.Value; - V8SplitProxyNative.Invoke(instance => instance.V8Isolate_EndCpuProfile(Handle, name, pAction)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_EndCpuProfile(ctx.Handle, ctx.name, ctx.pAction), (Handle, name, pAction)); } return profile; @@ -244,13 +288,13 @@ public override V8.V8CpuProfile EndCpuProfile(string name) public override void CollectCpuProfileSample() { - V8SplitProxyNative.Invoke(instance => instance.V8Isolate_CollectCpuProfileSample(Handle)); + V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Isolate_CollectCpuProfileSample(handle), Handle); } public override uint CpuProfileSampleInterval { - get => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_GetCpuProfileSampleInterval(Handle)); - set => V8SplitProxyNative.Invoke(instance => instance.V8Isolate_SetCpuProfileSampleInterval(Handle, value)); + get => V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Isolate_GetCpuProfileSampleInterval(handle), Handle); + set => V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_SetCpuProfileSampleInterval(ctx.Handle, ctx.value), (Handle, value)); } public override void WriteHeapSnapshot(Stream stream) @@ -258,7 +302,7 @@ public override void WriteHeapSnapshot(Stream stream) using (var streamScope = V8ProxyHelpers.CreateAddRefHostObjectScope(stream)) { var pStream = streamScope.Value; - V8SplitProxyNative.Invoke(instance => instance.V8Isolate_WriteHeapSnapshot(Handle, pStream)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Isolate_WriteHeapSnapshot(ctx.Handle, ctx.pStream), (Handle, pStream)); } } diff --git a/ClearScript/V8/SplitProxy/V8ObjectImpl.cs b/ClearScript/V8/SplitProxy/V8ObjectImpl.cs index 44c32d97..4e7a5aa2 100644 --- a/ClearScript/V8/SplitProxy/V8ObjectImpl.cs +++ b/ClearScript/V8/SplitProxy/V8ObjectImpl.cs @@ -1,8 +1,10 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. using System; +using System.Runtime.CompilerServices; using Microsoft.ClearScript.JavaScript; +using Microsoft.ClearScript.Util; namespace Microsoft.ClearScript.V8.SplitProxy { @@ -75,21 +77,31 @@ public JavaScriptObjectFlags ObjectFlags { var flags = JavaScriptObjectFlags.None; - if (Flags.HasFlag(V8Value.Flags.Shared)) + if (Flags.HasAllFlags(V8Value.Flags.Shared)) { flags |= JavaScriptObjectFlags.Shared; } - if (Flags.HasFlag(V8Value.Flags.Async)) + if (Flags.HasAllFlags(V8Value.Flags.Async)) { flags |= JavaScriptObjectFlags.Async; } - if (Flags.HasFlag(V8Value.Flags.Generator)) + if (Flags.HasAllFlags(V8Value.Flags.Generator)) { flags |= JavaScriptObjectFlags.Generator; } + if (Flags.HasAllFlags(V8Value.Flags.Pending)) + { + flags |= JavaScriptObjectFlags.Pending; + } + + if (Flags.HasAllFlags(V8Value.Flags.Rejected)) + { + flags |= JavaScriptObjectFlags.Rejected; + } + return flags; } } @@ -98,67 +110,76 @@ public JavaScriptObjectFlags ObjectFlags public object GetProperty(string name) { - return V8SplitProxyNative.Invoke(instance => instance.V8Object_GetNamedProperty(Handle, name)); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_GetNamedProperty(ctx.Handle, ctx.name), (Handle, name)); } public bool TryGetProperty(string name, out object value) { - object tempValue = null; - var result = V8SplitProxyNative.Invoke(instance => instance.V8Object_TryGetNamedProperty(Handle, name, out tempValue)); - value = tempValue; + var ctx = (Handle, name, value: (object)null); + + var result = V8SplitProxyNative.Invoke( + static (instance, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + return instance.V8Object_TryGetNamedProperty(ctx.Handle, ctx.name, out ctx.value); + }, + StructPtr.FromRef(ref ctx) + ); + + value = ctx.value; return result; } public void SetProperty(string name, object value) { - V8SplitProxyNative.Invoke(instance => instance.V8Object_SetNamedProperty(Handle, name, value)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_SetNamedProperty(ctx.Handle, ctx.name, ctx.value), (Handle, name, value)); } public bool DeleteProperty(string name) { - return V8SplitProxyNative.Invoke(instance => instance.V8Object_DeleteNamedProperty(Handle, name)); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_DeleteNamedProperty(ctx.Handle, ctx.name), (Handle, name)); } public string[] GetPropertyNames(bool includeIndices) { - return V8SplitProxyNative.Invoke(instance => instance.V8Object_GetPropertyNames(Handle, includeIndices)); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_GetPropertyNames(ctx.Handle, ctx.includeIndices), (Handle, includeIndices)); } public object GetProperty(int index) { - return V8SplitProxyNative.Invoke(instance => instance.V8Object_GetIndexedProperty(Handle, index)); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_GetIndexedProperty(ctx.Handle, ctx.index), (Handle, index)); } public void SetProperty(int index, object value) { - V8SplitProxyNative.Invoke(instance => instance.V8Object_SetIndexedProperty(Handle, index, value)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_SetIndexedProperty(ctx.Handle, ctx.index, ctx.value), (Handle, index, value)); } public bool DeleteProperty(int index) { - return V8SplitProxyNative.Invoke(instance => instance.V8Object_DeleteIndexedProperty(Handle, index)); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_DeleteIndexedProperty(ctx.Handle, ctx.index), (Handle, index)); } public int[] GetPropertyIndices() { - return V8SplitProxyNative.Invoke(instance => instance.V8Object_GetPropertyIndices(Handle)); + return V8SplitProxyNative.Invoke(static (instance, handle) => instance.V8Object_GetPropertyIndices(handle), Handle); } public object Invoke(bool asConstructor, object[] args) { - return V8SplitProxyNative.Invoke(instance => instance.V8Object_Invoke(Handle, asConstructor, args)); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_Invoke(ctx.Handle, ctx.asConstructor, ctx.args), (Handle, asConstructor, args)); } public object InvokeMethod(string name, object[] args) { - return V8SplitProxyNative.Invoke(instance => instance.V8Object_InvokeMethod(Handle, name, args)); + return V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_InvokeMethod(ctx.Handle, ctx.name, ctx.args), (Handle, name, args)); } public bool IsPromise => Subtype == V8Value.Subtype.Promise; public bool IsArray => Subtype == V8Value.Subtype.Array; - public bool IsShared => Flags.HasFlag(V8Value.Flags.Shared); + public bool IsShared => Flags.HasAllFlags(V8Value.Flags.Shared); public bool IsArrayBufferOrView { @@ -243,12 +264,18 @@ public V8ArrayBufferOrViewInfo GetArrayBufferOrViewInfo() var kind = ArrayBufferOrViewKind; if (kind != V8ArrayBufferOrViewKind.None) { - IV8Object arrayBuffer = null; - var offset = 0UL; - var size = 0UL; - var length = 0UL; - V8SplitProxyNative.Invoke(instance => instance.V8Object_GetArrayBufferOrViewInfo(Handle, out arrayBuffer, out offset, out size, out length)); - return new V8ArrayBufferOrViewInfo(kind, arrayBuffer, offset, size, length); + var ctx = (Handle, arrayBuffer: (IV8Object)null, offset: 0UL, size: 0UL, length: 0UL); + + V8SplitProxyNative.Invoke( + static (instance, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + instance.V8Object_GetArrayBufferOrViewInfo(ctx.Handle, out ctx.arrayBuffer, out ctx.offset, out ctx.size, out ctx.length); + }, + StructPtr.FromRef(ref ctx) + ); + + return new V8ArrayBufferOrViewInfo(kind, ctx.arrayBuffer, ctx.offset, ctx.size, ctx.length); } return null; @@ -259,7 +286,25 @@ public void InvokeWithArrayBufferOrViewData(Action action) using (var actionScope = V8ProxyHelpers.CreateAddRefHostObjectScope(action)) { var pAction = actionScope.Value; - V8SplitProxyNative.Invoke(instance => instance.V8Object_InvokeWithArrayBufferOrViewData(Handle, pAction)); + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_InvokeWithArrayBufferOrViewData(ctx.Handle, ctx.pAction), (Handle, pAction)); + } + } + + public unsafe void InvokeWithArrayBufferOrViewData(Action action, in TArg arg) + { + var ctx = (action, arg); + var pCtx = (IntPtr)Unsafe.AsPointer(ref ctx); + + Action actionWithArg = static (pData, pCtx) => + { + ref var ctx = ref Unsafe.AsRef<(Action action, TArg arg)>(pCtx.ToPointer()); + ctx.action(pData, ctx.arg); + }; + + using (var actionScope = V8ProxyHelpers.CreateAddRefHostObjectScope(actionWithArg)) + { + var pAction = actionScope.Value; + V8SplitProxyNative.Invoke(static (instance, ctx) => instance.V8Object_InvokeWithArrayBufferOrViewDataWithArg(ctx.Handle, ctx.pAction, ctx.pCtx), (Handle, pAction, pCtx)); } } diff --git a/ClearScript/V8/SplitProxy/V8SplitProxyHelpers.cs b/ClearScript/V8/SplitProxy/V8SplitProxyHelpers.cs index 29d59fbd..a5e31923 100644 --- a/ClearScript/V8/SplitProxy/V8SplitProxyHelpers.cs +++ b/ClearScript/V8/SplitProxy/V8SplitProxyHelpers.cs @@ -4,9 +4,13 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Diagnostics; +using System.Linq; using System.Numerics; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.V8.FastProxy; namespace Microsoft.ClearScript.V8.SplitProxy { @@ -14,19 +18,33 @@ namespace Microsoft.ClearScript.V8.SplitProxy internal static class StdString { - public static IScope CreateScope(string value = null) + public static ValueScope CreateScope(string value = null) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => instance.StdString_New(value ?? string.Empty), instance.StdString_Delete)); + return ScopeFactory.Create( + static value => V8SplitProxyNative.InvokeRaw(static (instance, value) => instance.StdString_New(value ?? string.Empty), value), + static pString => V8SplitProxyNative.InvokeRaw(static (instance, pString) => instance.StdString_Delete(pString), pString), + value + ); } public static string GetValue(Ptr pString) { - return V8SplitProxyNative.InvokeNoThrow(instance => instance.StdString_GetValue(pString)); + return V8SplitProxyNative.InvokeRaw(static (instance, pString) => instance.StdString_GetValue(pString), pString); + } + + public static TValue GetValue(Ptr pString, Func factory) + { + return V8SplitProxyNative.InvokeRaw(static (instance, ctx) => instance.StdString_GetValue(ctx.pString, ctx.factory), (pString, factory)); + } + + public static TValue GetValue(Ptr pString, Func factory, in TArg arg) + { + return V8SplitProxyNative.InvokeRaw(static (instance, ctx) => instance.StdString_GetValue(ctx.pString, ctx.factory, ctx.arg), (pString, factory, arg)); } public static void SetValue(Ptr pString, string value) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.StdString_SetValue(pString, value)); + V8SplitProxyNative.InvokeRaw(static (instance, ctx) => instance.StdString_SetValue(ctx.pString, ctx.value), (pString, value)); } #region Nested type: Ptr @@ -37,13 +55,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -58,57 +76,89 @@ public readonly struct Ptr internal static class StdStringArray { - public static IScope CreateScope(int elementCount = 0) + public static ValueScope CreateScope(int elementCount = 0) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => instance.StdStringArray_New(elementCount), instance.StdStringArray_Delete)); + return ScopeFactory.Create( + static elementCount => V8SplitProxyNative.InvokeRaw(static (instance, elementCount) => instance.StdStringArray_New(elementCount), elementCount), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdStringArray_Delete(pArray), pArray), + elementCount + ); } - public static IScope CreateScope(string[] array) + public static ValueScope CreateScope(string[] array) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => NewFromArray(instance, array), instance.StdStringArray_Delete)); + return ScopeFactory.Create( + static array => V8SplitProxyNative.InvokeRaw(static (instance, array) => NewFromArray(instance, array), array), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdStringArray_Delete(pArray), pArray), + array + ); } public static int GetElementCount(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => instance.StdStringArray_GetElementCount(pArray)); + return V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdStringArray_GetElementCount(pArray), pArray); } public static void SetElementCount(Ptr pArray, int elementCount) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.StdStringArray_SetElementCount(pArray, elementCount)); + V8SplitProxyNative.InvokeRaw(static (instance, ctx) => instance.StdStringArray_SetElementCount(ctx.pArray, ctx.elementCount), (pArray, elementCount)); } public static string[] ToArray(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = instance.StdStringArray_GetElementCount(pArray); - var array = new string[elementCount]; - - if (elementCount > 0) + return V8SplitProxyNative.InvokeRaw( + static (instance, pArray) => { - for (var index = 0; index < elementCount; index++) + var elementCount = instance.StdStringArray_GetElementCount(pArray); + var array = new string[elementCount]; + + if (elementCount > 0) { - array[index] = instance.StdStringArray_GetElement(pArray, index); + for (var index = 0; index < elementCount; index++) + { + array[index] = instance.StdStringArray_GetElement(pArray, index); + } } - } - return array; - }); + return array; + }, + pArray + ); } public static void CopyFromArray(Ptr pArray, string[] array) { - V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = array?.Length ?? 0; - instance.StdStringArray_SetElementCount(pArray, elementCount); + V8SplitProxyNative.InvokeRaw( + static (instance, ctx) => + { + var elementCount = ctx.array?.Length ?? 0; + instance.StdStringArray_SetElementCount(ctx.pArray, elementCount); - for (var index = 0; index < elementCount; index++) + for (var index = 0; index < elementCount; index++) + { + instance.StdStringArray_SetElement(ctx.pArray, index, ctx.array[index]); + } + }, + (pArray, array) + ); + } + + public static void CopyFromEnumerable(Ptr pArray, IEnumerable source) + { + V8SplitProxyNative.InvokeRaw( + static (instance, ctx) => { - instance.StdStringArray_SetElement(pArray, index, array[index]); - } - }); + var itemCount = ctx.source?.Count() ?? 0; + instance.StdStringArray_SetElementCount(ctx.pArray, itemCount); + + var index = 0; + foreach (var item in ctx.source) + { + instance.StdStringArray_SetElement(ctx.pArray, index++, item); + } + }, + (pArray, source) + ); } private static Ptr NewFromArray(IV8SplitProxyNative instance, string[] array) @@ -135,13 +185,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -156,54 +206,68 @@ public readonly struct Ptr internal static class StdByteArray { - public static IScope CreateScope(int elementCount = 0) + public static ValueScope CreateScope(int elementCount = 0) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => instance.StdByteArray_New(elementCount), instance.StdByteArray_Delete)); + return ScopeFactory.Create( + static elementCount => V8SplitProxyNative.InvokeRaw(static (instance, elementCount) => instance.StdByteArray_New(elementCount), elementCount), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdByteArray_Delete(pArray), pArray), + elementCount + ); } - public static IScope CreateScope(byte[] array) + public static ValueScope CreateScope(byte[] array) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => NewFromArray(instance, array), instance.StdByteArray_Delete)); + return ScopeFactory.Create( + static array => V8SplitProxyNative.InvokeRaw(static (instance, array) => NewFromArray(instance, array), array), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdByteArray_Delete(pArray), pArray), + array + ); } public static int GetElementCount(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => instance.StdByteArray_GetElementCount(pArray)); + return V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdByteArray_GetElementCount(pArray), pArray); } public static void SetElementCount(Ptr pArray, int elementCount) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.StdByteArray_SetElementCount(pArray, elementCount)); + V8SplitProxyNative.InvokeRaw(static (instance, ctx) => instance.StdByteArray_SetElementCount(ctx.pArray, ctx.elementCount), (pArray, elementCount)); } public static byte[] ToArray(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = instance.StdByteArray_GetElementCount(pArray); - var array = new byte[elementCount]; - - if (elementCount > 0) + return V8SplitProxyNative.InvokeRaw( + static (instance, pArray) => { - Marshal.Copy(instance.StdByteArray_GetData(pArray), array, 0, elementCount); - } + var elementCount = instance.StdByteArray_GetElementCount(pArray); + var array = new byte[elementCount]; - return array; - }); + if (elementCount > 0) + { + Marshal.Copy(instance.StdByteArray_GetData(pArray), array, 0, elementCount); + } + + return array; + }, + pArray + ); } public static void CopyFromArray(Ptr pArray, byte[] array) { - V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = array?.Length ?? 0; - instance.StdByteArray_SetElementCount(pArray, elementCount); - - if (elementCount > 0) + V8SplitProxyNative.InvokeRaw( + static (instance, ctx) => { - Marshal.Copy(array, 0, instance.StdByteArray_GetData(pArray), elementCount); - } - }); + var elementCount = ctx.array?.Length ?? 0; + instance.StdByteArray_SetElementCount(ctx.pArray, elementCount); + + if (elementCount > 0) + { + Marshal.Copy(ctx.array, 0, instance.StdByteArray_GetData(ctx.pArray), elementCount); + } + }, + (pArray, array) + ); } private static Ptr NewFromArray(IV8SplitProxyNative instance, byte[] array) @@ -227,13 +291,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -248,54 +312,90 @@ public readonly struct Ptr internal static class StdInt32Array { - public static IScope CreateScope(int elementCount = 0) + public static ValueScope CreateScope(int elementCount = 0) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => instance.StdInt32Array_New(elementCount), instance.StdInt32Array_Delete)); + return ScopeFactory.Create( + static elementCount => V8SplitProxyNative.InvokeRaw(static (instance, elementCount) => instance.StdInt32Array_New(elementCount), elementCount), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdInt32Array_Delete(pArray), pArray), + elementCount + ); } - public static IScope CreateScope(int[] array) + public static ValueScope CreateScope(int[] array) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => NewFromArray(instance, array), instance.StdInt32Array_Delete)); + return ScopeFactory.Create( + static array => V8SplitProxyNative.InvokeRaw(static (instance, array) => NewFromArray(instance, array), array), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdInt32Array_Delete(pArray), pArray), + array + ); } public static int GetElementCount(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => instance.StdInt32Array_GetElementCount(pArray)); + return V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdInt32Array_GetElementCount(pArray), pArray); } public static void SetElementCount(Ptr pArray, int elementCount) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.StdInt32Array_SetElementCount(pArray, elementCount)); + V8SplitProxyNative.InvokeRaw(static (instance, ctx) => instance.StdInt32Array_SetElementCount(ctx.pArray, ctx.elementCount), (pArray, elementCount)); } public static int[] ToArray(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = instance.StdInt32Array_GetElementCount(pArray); - var array = new int[elementCount]; - - if (elementCount > 0) + return V8SplitProxyNative.InvokeRaw( + static (instance, pArray) => { - Marshal.Copy(instance.StdInt32Array_GetData(pArray), array, 0, elementCount); - } + var elementCount = instance.StdInt32Array_GetElementCount(pArray); + var array = new int[elementCount]; - return array; - }); + if (elementCount > 0) + { + Marshal.Copy(instance.StdInt32Array_GetData(pArray), array, 0, elementCount); + } + + return array; + }, + pArray + ); } public static void CopyFromArray(Ptr pArray, int[] array) { - V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = array?.Length ?? 0; - instance.StdInt32Array_SetElementCount(pArray, elementCount); + V8SplitProxyNative.InvokeRaw( + static (instance, ctx) => + { + var elementCount = ctx.array?.Length ?? 0; + instance.StdInt32Array_SetElementCount(ctx.pArray, elementCount); + + if (elementCount > 0) + { + Marshal.Copy(ctx.array, 0, instance.StdInt32Array_GetData(ctx.pArray), elementCount); + } + }, + (pArray, array) + ); + } - if (elementCount > 0) + public static void CopyFromEnumerable(Ptr pArray, IEnumerable source) + { + V8SplitProxyNative.InvokeRaw( + static (instance, ctx) => { - Marshal.Copy(array, 0, instance.StdInt32Array_GetData(pArray), elementCount); - } - }); + var itemCount = ctx.source?.Count() ?? 0; + instance.StdInt32Array_SetElementCount(ctx.pArray, itemCount); + + if (itemCount > 0) + { + var index = 0; + var pData = instance.StdInt32Array_GetData(ctx.pArray); + foreach (var item in ctx.source) + { + Marshal.WriteInt32(pData, index++, item); + } + } + }, + (pArray, source) + ); } private static Ptr NewFromArray(IV8SplitProxyNative instance, int[] array) @@ -319,13 +419,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -340,54 +440,68 @@ public readonly struct Ptr internal static class StdUInt32Array { - public static IScope CreateScope(int elementCount = 0) + public static ValueScope CreateScope(int elementCount = 0) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => instance.StdUInt32Array_New(elementCount), instance.StdUInt32Array_Delete)); + return ScopeFactory.Create( + static elementCount => V8SplitProxyNative.InvokeRaw(static (instance, elementCount) => instance.StdUInt32Array_New(elementCount), elementCount), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdUInt32Array_Delete(pArray), pArray), + elementCount + ); } - public static IScope CreateScope(uint[] array) + public static ValueScope CreateScope(uint[] array) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => NewFromArray(instance, array), instance.StdUInt32Array_Delete)); + return ScopeFactory.Create( + static array => V8SplitProxyNative.InvokeRaw(static (instance, array) => NewFromArray(instance, array), array), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdUInt32Array_Delete(pArray), pArray), + array + ); } public static int GetElementCount(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => instance.StdUInt32Array_GetElementCount(pArray)); + return V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdUInt32Array_GetElementCount(pArray), pArray); } public static void SetElementCount(Ptr pArray, int elementCount) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.StdUInt32Array_SetElementCount(pArray, elementCount)); + V8SplitProxyNative.InvokeRaw(static (instance, ctx) => instance.StdUInt32Array_SetElementCount(ctx.pArray, ctx.elementCount), (pArray, elementCount)); } public static uint[] ToArray(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = instance.StdUInt32Array_GetElementCount(pArray); - var array = new uint[elementCount]; - - if (elementCount > 0) + return V8SplitProxyNative.InvokeRaw( + static (instance, pArray) => { - UnmanagedMemoryHelpers.Copy(instance.StdUInt32Array_GetData(pArray), (ulong)elementCount, array, 0); - } + var elementCount = instance.StdUInt32Array_GetElementCount(pArray); + var array = new uint[elementCount]; - return array; - }); + if (elementCount > 0) + { + UnmanagedMemoryHelpers.Copy(instance.StdUInt32Array_GetData(pArray), (ulong)elementCount, array, 0); + } + + return array; + }, + pArray + ); } public static void CopyFromArray(Ptr pArray, uint[] array) { - V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = array?.Length ?? 0; - instance.StdUInt32Array_SetElementCount(pArray, elementCount); - - if (elementCount > 0) + V8SplitProxyNative.InvokeRaw( + static (instance, ctx) => { - UnmanagedMemoryHelpers.Copy(array, 0, (ulong)elementCount, instance.StdUInt32Array_GetData(pArray)); - } - }); + var elementCount = ctx.array?.Length ?? 0; + instance.StdUInt32Array_SetElementCount(ctx.pArray, elementCount); + + if (elementCount > 0) + { + UnmanagedMemoryHelpers.Copy(ctx.array, 0, (ulong)elementCount, instance.StdUInt32Array_GetData(ctx.pArray)); + } + }, + (pArray, array) + ); } private static Ptr NewFromArray(IV8SplitProxyNative instance, uint[] array) @@ -411,13 +525,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -432,54 +546,68 @@ public readonly struct Ptr internal static class StdUInt64Array { - public static IScope CreateScope(int elementCount = 0) + public static ValueScope CreateScope(int elementCount = 0) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => instance.StdUInt64Array_New(elementCount), instance.StdUInt64Array_Delete)); + return ScopeFactory.Create( + static elementCount => V8SplitProxyNative.InvokeRaw(static (instance, elementCount) => instance.StdUInt64Array_New(elementCount), elementCount), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdUInt64Array_Delete(pArray), pArray), + elementCount + ); } - public static IScope CreateScope(ulong[] array) + public static ValueScope CreateScope(ulong[] array) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => NewFromArray(instance, array), instance.StdUInt64Array_Delete)); + return ScopeFactory.Create( + static array => V8SplitProxyNative.InvokeRaw(static (instance, array) => NewFromArray(instance, array), array), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdUInt64Array_Delete(pArray), pArray), + array + ); } public static int GetElementCount(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => instance.StdUInt64Array_GetElementCount(pArray)); + return V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdUInt64Array_GetElementCount(pArray), pArray); } public static void SetElementCount(Ptr pArray, int elementCount) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.StdUInt64Array_SetElementCount(pArray, elementCount)); + V8SplitProxyNative.InvokeRaw(static (instance, ctx) => instance.StdUInt64Array_SetElementCount(ctx.pArray, ctx.elementCount), (pArray, elementCount)); } public static ulong[] ToArray(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = instance.StdUInt64Array_GetElementCount(pArray); - var array = new ulong[elementCount]; - - if (elementCount > 0) + return V8SplitProxyNative.InvokeRaw( + static (instance, pArray) => { - UnmanagedMemoryHelpers.Copy(instance.StdUInt64Array_GetData(pArray), (ulong)elementCount, array, 0); - } + var elementCount = instance.StdUInt64Array_GetElementCount(pArray); + var array = new ulong[elementCount]; - return array; - }); + if (elementCount > 0) + { + UnmanagedMemoryHelpers.Copy(instance.StdUInt64Array_GetData(pArray), (ulong)elementCount, array, 0); + } + + return array; + }, + pArray + ); } public static void CopyFromArray(Ptr pArray, ulong[] array) { - V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = array?.Length ?? 0; - instance.StdUInt64Array_SetElementCount(pArray, elementCount); - - if (elementCount > 0) + V8SplitProxyNative.InvokeRaw( + static (instance, ctx) => { - UnmanagedMemoryHelpers.Copy(array, 0, (ulong)elementCount, instance.StdUInt64Array_GetData(pArray)); - } - }); + var elementCount = ctx.array?.Length ?? 0; + instance.StdUInt64Array_SetElementCount(ctx.pArray, elementCount); + + if (elementCount > 0) + { + UnmanagedMemoryHelpers.Copy(ctx.array, 0, (ulong)elementCount, instance.StdUInt64Array_GetData(ctx.pArray)); + } + }, + (pArray, array) + ); } private static Ptr NewFromArray(IV8SplitProxyNative instance, ulong[] array) @@ -503,13 +631,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -524,54 +652,68 @@ public readonly struct Ptr internal static class StdPtrArray { - public static IScope CreateScope(int elementCount = 0) + public static ValueScope CreateScope(int elementCount = 0) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => instance.StdPtrArray_New(elementCount), instance.StdPtrArray_Delete)); + return ScopeFactory.Create( + static elementCount => V8SplitProxyNative.InvokeRaw(static (instance, elementCount) => instance.StdPtrArray_New(elementCount), elementCount), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdPtrArray_Delete(pArray), pArray), + elementCount + ); } - public static IScope CreateScope(IntPtr[] array) + public static ValueScope CreateScope(IntPtr[] array) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => NewFromArray(instance, array), instance.StdPtrArray_Delete)); + return ScopeFactory.Create( + static array => V8SplitProxyNative.InvokeRaw(static (instance, array) => NewFromArray(instance, array), array), + static pArray => V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdPtrArray_Delete(pArray), pArray), + array + ); } public static int GetElementCount(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => instance.StdPtrArray_GetElementCount(pArray)); + return V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdPtrArray_GetElementCount(pArray), pArray); } public static void SetElementCount(Ptr pArray, int elementCount) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.StdPtrArray_SetElementCount(pArray, elementCount)); + V8SplitProxyNative.InvokeRaw(static (instance, ctx) => instance.StdPtrArray_SetElementCount(ctx.pArray, ctx.elementCount), (pArray, elementCount)); } public static IntPtr[] ToArray(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = instance.StdPtrArray_GetElementCount(pArray); - var array = new IntPtr[elementCount]; - - if (elementCount > 0) + return V8SplitProxyNative.InvokeRaw( + static (instance, pArray) => { - Marshal.Copy(instance.StdPtrArray_GetData(pArray), array, 0, elementCount); - } + var elementCount = instance.StdPtrArray_GetElementCount(pArray); + var array = new IntPtr[elementCount]; - return array; - }); + if (elementCount > 0) + { + Marshal.Copy(instance.StdPtrArray_GetData(pArray), array, 0, elementCount); + } + + return array; + }, + pArray + ); } public static void CopyFromArray(Ptr pArray, IntPtr[] array) { - V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = array?.Length ?? 0; - instance.StdPtrArray_SetElementCount(pArray, elementCount); - - if (elementCount > 0) + V8SplitProxyNative.InvokeRaw( + static (instance, ctx) => { - Marshal.Copy(array, 0, instance.StdPtrArray_GetData(pArray), elementCount); - } - }); + var elementCount = ctx.array?.Length ?? 0; + instance.StdPtrArray_SetElementCount(ctx.pArray, elementCount); + + if (elementCount > 0) + { + Marshal.Copy(ctx.array, 0, instance.StdPtrArray_GetData(ctx.pArray), elementCount); + } + }, + (pArray, array) + ); } private static Ptr NewFromArray(IV8SplitProxyNative instance, IntPtr[] array) @@ -595,13 +737,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -616,62 +758,76 @@ public readonly struct Ptr internal static class StdV8ValueArray { - public static IScope CreateScope(int elementCount = 0) + public static ValueScope CreateScope(int elementCount = 0) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => instance.StdV8ValueArray_New(elementCount), instance.StdV8ValueArray_Delete)); + return ScopeFactory.Create( + static elementCount => V8SplitProxyNative.InvokeRaw(static (instance, elementCount) => instance.StdV8ValueArray_New(elementCount), elementCount), + static pArray => V8SplitProxyNative.InvokeNoThrow(static (instance, pArray) => instance.StdV8ValueArray_Delete(pArray), pArray), + elementCount + ); } - public static IScope CreateScope(object[] array) + public static ValueScope CreateScope(object[] array) { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(() => NewFromArray(instance, array), instance.StdV8ValueArray_Delete)); + return ScopeFactory.Create( + static array => V8SplitProxyNative.InvokeNoThrow(static (instance, array) => NewFromArray(instance, array), array), + static pArray => V8SplitProxyNative.InvokeNoThrow(static (instance, pArray) => instance.StdV8ValueArray_Delete(pArray), pArray), + array + ); } public static int GetElementCount(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => instance.StdV8ValueArray_GetElementCount(pArray)); + return V8SplitProxyNative.InvokeRaw(static (instance, pArray) => instance.StdV8ValueArray_GetElementCount(pArray), pArray); } public static void SetElementCount(Ptr pArray, int elementCount) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.StdV8ValueArray_SetElementCount(pArray, elementCount)); + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.StdV8ValueArray_SetElementCount(ctx.pArray, ctx.elementCount), (pArray, elementCount)); } public static object[] ToArray(Ptr pArray) { - return V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = instance.StdV8ValueArray_GetElementCount(pArray); - var array = new object[elementCount]; - - if (elementCount > 0) + return V8SplitProxyNative.InvokeNoThrow( + static (instance, pArray) => { - var pElements = instance.StdV8ValueArray_GetData(pArray); - for (var index = 0; index < elementCount; index++) + var elementCount = instance.StdV8ValueArray_GetElementCount(pArray); + var array = new object[elementCount]; + + if (elementCount > 0) { - array[index] = V8Value.Get(GetElementPtr(pElements, index)); + var pElements = instance.StdV8ValueArray_GetData(pArray); + for (var index = 0; index < elementCount; index++) + { + array[index] = V8Value.Get(GetElementPtr(pElements, index)); + } } - } - return array; - }); + return array; + }, + pArray + ); } public static void CopyFromArray(Ptr pArray, object[] array) { - V8SplitProxyNative.InvokeNoThrow(instance => - { - var elementCount = array?.Length ?? 0; - instance.StdV8ValueArray_SetElementCount(pArray, elementCount); - - if (elementCount > 0) + V8SplitProxyNative.InvokeNoThrow( + static (instance, ctx) => { - var pElements = instance.StdV8ValueArray_GetData(pArray); - for (var index = 0; index < elementCount; index++) + var elementCount = ctx.array?.Length ?? 0; + instance.StdV8ValueArray_SetElementCount(ctx.pArray, elementCount); + + if (elementCount > 0) { - V8Value.Set(GetElementPtr(pElements, index), array[index]); + var pElements = instance.StdV8ValueArray_GetData(ctx.pArray); + for (var index = 0; index < elementCount; index++) + { + V8Value.Set(GetElementPtr(pElements, index), ctx.array[index]); + } } - } - }); + }, + (pArray, array) + ); } private static Ptr NewFromArray(IV8SplitProxyNative instance, object[] array) @@ -701,13 +857,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -724,12 +880,18 @@ internal static class V8Value { public const int Size = 16; - public static IScope CreateScope() + private const short positiveOrZero = 0; + private const short negative = 1; + + public static ValueScope CreateScope() { - return V8SplitProxyNative.InvokeNoThrow(instance => Scope.Create(instance.V8Value_New, instance.V8Value_Delete)); + return ScopeFactory.Create( + static () => V8SplitProxyNative.InvokeRaw(static instance => instance.V8Value_New()), + static pV8Value => V8SplitProxyNative.InvokeNoThrow(static (instance, pV8Value) => instance.V8Value_Delete(pV8Value), pV8Value) + ); } - public static IScope CreateScope(object obj) + public static ValueScope CreateScope(object obj) { var scope = CreateScope(); Set(scope.Value, obj); @@ -741,260 +903,173 @@ public static void Set(Ptr pV8Value, object obj) if (obj is Nonexistent) { SetNonexistent(pV8Value); - return; } - - if (obj == null) + else if (obj is null) { SetUndefined(pV8Value); - return; } - - if (obj is DBNull) + else if (obj is DBNull) { SetNull(pV8Value); - return; } - + else if (obj is bool boolValue) { - if (obj is bool value) - { - SetBoolean(pV8Value, value); - return; - } + SetBoolean(pV8Value, boolValue); } - + else if (obj is char charValue) { - if (obj is char value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, charValue); } - + else if (obj is sbyte sbyteValue) { - if (obj is sbyte value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, sbyteValue); } - + else if (obj is byte byteValue) { - if (obj is byte value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, byteValue); } - + else if (obj is short shortValue) { - if (obj is short value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, shortValue); } - + else if (obj is ushort ushortValue) { - if (obj is ushort value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, ushortValue); } - + else if (obj is int intValue) { - if (obj is int value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, intValue); } - + else if (obj is uint uintValue) { - if (obj is uint value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, uintValue); } - + else if (obj is long longValue) { - if (obj is long value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, longValue); } - + else if (obj is ulong ulongValue) { - if (obj is ulong value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, ulongValue); } - + else if (obj is float floatValue) { - if (obj is float value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, floatValue); } - + else if (obj is double doubleValue) { - if (obj is double value) - { - SetNumeric(pV8Value, value); - return; - } + SetNumber(pV8Value, doubleValue); } - + else if (obj is decimal decimalValue) { - if (obj is decimal value) - { - SetNumeric(pV8Value, (double)value); - return; - } + SetNumber(pV8Value, (double)decimalValue); } - + else if (obj is string stringValue) { - if (obj is string value) - { - SetString(pV8Value, value); - return; - } + SetString(pV8Value, stringValue); } - + else if (obj is DateTime dateTimeValue) { - if (obj is DateTime value) - { - SetDateTime(pV8Value, value); - return; - } + SetDateTime(pV8Value, dateTimeValue); } - + else if (obj is BigInteger bigIntegerValue) { - if (obj is BigInteger value) - { - SetBigInt(pV8Value, value); - return; - } + SetBigInteger(pV8Value, bigIntegerValue); } - + else if (obj is V8ObjectImpl v8Object) { - if (obj is V8ObjectImpl v8ObjectImpl) - { - SetV8Object(pV8Value, v8ObjectImpl); - return; - } + SetV8Object(pV8Value, v8Object); + } + else if (obj is IHostItem hostObject) + { + SetHostObject(pV8Value, hostObject); + } + else + { + SetUndefined(pV8Value); } - - SetHostObject(pV8Value, obj); } public static object Get(Ptr pV8Value) { - var decoded = default(Decoded); - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_Decode(pV8Value, out decoded)); - return decoded.Get(); - } - - private static bool TryGetBigInteger(int signBit, int wordCount, IntPtr pWords, out BigInteger result) - { - result = BigInteger.Zero; - - if (wordCount > 0) - { - var byteCount = (ulong)wordCount * sizeof(ulong); - if (byteCount >= int.MaxValue) + return V8SplitProxyNative.InvokeRaw( + static (instance, pV8Value) => { - return false; - } - - // use extra zero byte to force unsigned interpretation - var bytes = new byte[byteCount + 1]; - UnmanagedMemoryHelpers.Copy(pWords, byteCount, bytes, 0); - - // construct result and negate if necessary - result = new BigInteger(bytes); - if (signBit != 0) - { - result = BigInteger.Negate(result); - } - } - - return true; + instance.V8Value_Decode(pV8Value, out var decoded); + return decoded.Get(); + }, + pV8Value + ); } private static void SetNonexistent(Ptr pV8Value) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetNonexistent(pV8Value)); + V8SplitProxyNative.InvokeNoThrow(static (instance, pV8Value) => instance.V8Value_SetNonexistent(pV8Value), pV8Value); } private static void SetUndefined(Ptr pV8Value) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetUndefined(pV8Value)); + V8SplitProxyNative.InvokeNoThrow(static (instance, pV8Value) => instance.V8Value_SetUndefined(pV8Value), pV8Value); } private static void SetNull(Ptr pV8Value) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetNull(pV8Value)); + V8SplitProxyNative.InvokeNoThrow(static (instance, pV8Value) => instance.V8Value_SetNull(pV8Value), pV8Value); } private static void SetBoolean(Ptr pV8Value, bool value) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetBoolean(pV8Value, value)); + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.V8Value_SetBoolean(ctx.pV8Value, ctx.value), (pV8Value, value)); } - private static void SetNumeric(Ptr pV8Value, double value) + private static void SetNumber(Ptr pV8Value, double value) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetNumber(pV8Value, value)); - } - - private static void SetNumeric(Ptr pV8Value, int value) - { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetInt32(pV8Value, value)); - } - - private static void SetNumeric(Ptr pV8Value, uint value) - { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetUInt32(pV8Value, value)); + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.V8Value_SetNumber(ctx.pV8Value, ctx.value), (pV8Value, value)); } private static void SetString(Ptr pV8Value, string value) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetString(pV8Value, value)); + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.V8Value_SetString(ctx.pV8Value, ctx.value), (pV8Value, value)); } private static void SetDateTime(Ptr pV8Value, DateTime value) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetDateTime(pV8Value, (value.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds)); + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.V8Value_SetDateTime(ctx.pV8Value, ctx.value.ToUnixMilliseconds()), (pV8Value, value)); } - private static void SetBigInt(Ptr pV8Value, BigInteger value) + private static void SetBigInteger(Ptr pV8Value, BigInteger value) { - var signBit = 0; + var signBit = positiveOrZero; if (value.Sign < 0) { - signBit = 1; + signBit = negative; value = BigInteger.Negate(value); } var bytes = value.ToByteArray(); - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetBigInt(pV8Value, signBit, bytes)); + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.V8Value_SetBigInt(ctx.pV8Value, ctx.signBit, ctx.bytes), (pV8Value, signBit, bytes)); } - private static void SetV8Object(Ptr pV8Value, V8ObjectImpl v8ObjectImpl) + private static void SetV8Object(Ptr pV8Value, V8ObjectImpl v8Object) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetV8Object(pV8Value, v8ObjectImpl.Handle, v8ObjectImpl.Subtype, v8ObjectImpl.Flags)); + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.V8Value_SetV8Object(ctx.pV8Value, ctx.v8Object.Handle, ctx.v8Object.Subtype, ctx.v8Object.Flags), (pV8Value, v8Object)); } - private static void SetHostObject(Ptr pV8Value, object obj) + private static void SetHostObject(Ptr pV8Value, IHostItem hostObject) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Value_SetHostObject(pV8Value, V8ProxyHelpers.AddRefHostObject(obj))); + var subtype = Subtype.None; + var flags = Flags.None; + + if (hostObject is V8FastHostItem fastHostItem) + { + flags = Flags.Fast; + if (fastHostItem.IsInvocable) + { + subtype = Subtype.Function; + } + } + + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.V8Value_SetHostObject(ctx.pV8Value, V8ProxyHelpers.AddRefHostObject(ctx.obj), ctx.subtype, ctx.flags), (pV8Value, obj: hostObject, subtype, flags)); } #region Nested type: Type @@ -1007,8 +1082,6 @@ public enum Type : byte Null, Boolean, Number, - Int32, - UInt32, String, DateTime, BigInt, @@ -1053,10 +1126,16 @@ public enum Flags : ushort // IMPORTANT: maintain bitwise equivalence with native enum V8Value::Flags None = 0, Shared = 0x0001, + Fast = 0x0001, Async = 0x0002, - Generator = 0x0004 + Generator = 0x0004, + Pending = 0x0008, + Rejected = 0x0010 } + public static bool HasAllFlags(this Flags value, Flags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this Flags value, Flags flags) => (value & flags) != 0; + #endregion #region Nested type: Ptr @@ -1067,13 +1146,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -1085,12 +1164,12 @@ public readonly struct Ptr #endregion - #region Nested type: Decoded + #region Nested type: WireData [StructLayout(LayoutKind.Explicit)] - public struct Decoded + public struct WireData { - // IMPORTANT: maintain bitwise equivalence with native struct V8Value::Decoded + // IMPORTANT: maintain bitwise equivalence with native struct V8Value::WireData [FieldOffset(0)] public Type Type; [FieldOffset(1)] public Subtype Subtype; [FieldOffset(2)] public Flags Flags; @@ -1098,13 +1177,50 @@ public struct Decoded [FieldOffset(4)] public int Length; [FieldOffset(4)] public int IdentityHash; [FieldOffset(8)] public int Int32Value; - [FieldOffset(8)] public uint UInt32Value; [FieldOffset(8)] public double DoubleValue; [FieldOffset(8)] public IntPtr PtrOrHandle; + public readonly bool TryCreateBigInteger(out BigInteger value) + { + value = BigInteger.Zero; + + if (Length > 0) + { + var byteCount = (ulong)Length * sizeof(ulong); + if (byteCount >= int.MaxValue) + { + return false; + } + + // use extra zero byte to force unsigned interpretation + var bytes = new byte[byteCount + 1]; + UnmanagedMemoryHelpers.Copy(PtrOrHandle, byteCount, bytes, 0); + + // construct result and negate if necessary + value = new BigInteger(bytes); + if (SignBit != 0) + { + value = BigInteger.Negate(value); + } + } + + return true; + } + } + + #endregion + + #region Nested type: Decoded + + [StructLayout(LayoutKind.Explicit)] + public struct Decoded + { + // IMPORTANT: maintain bitwise equivalence with native struct V8Value::Decoded + [FieldOffset(0)] private WireData data; + public object Get() { - switch (Type) + switch (data.Type) { case Type.Nonexistent: return Nonexistent.Value; @@ -1113,41 +1229,32 @@ public object Get() return DBNull.Value; case Type.Boolean: - return Int32Value != 0; + return data.Int32Value != 0; case Type.Number: - return DoubleValue; - - case Type.Int32: - return Int32Value; - - case Type.UInt32: - return UInt32Value; + return data.DoubleValue; case Type.String: - return Marshal.PtrToStringUni(PtrOrHandle, Length); + return Marshal.PtrToStringUni(data.PtrOrHandle, data.Length); case Type.DateTime: - return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc) + TimeSpan.FromMilliseconds(DoubleValue); + return DateTimeHelpers.FromUnixMilliseconds(data.DoubleValue); case Type.BigInt: - return TryGetBigInteger(SignBit, Length, PtrOrHandle, out var result) ? (object)result : null; + return data.TryCreateBigInteger(out var result) ? result : null; case Type.V8Object: - return new V8ObjectImpl((V8Object.Handle)PtrOrHandle, Subtype, Flags, IdentityHash); + return new V8ObjectImpl((V8Object.Handle)data.PtrOrHandle, data.Subtype, data.Flags, data.IdentityHash); case Type.HostObject: - return V8ProxyHelpers.GetHostObject(PtrOrHandle); + return V8ProxyHelpers.GetHostObject(data.PtrOrHandle); default: return null; } } - public static unsafe object Get(Ptr pValues, int index) - { - return ((Decoded*)(IntPtr)pValues + index)->Get(); - } + public static unsafe object Get(Ptr pValues, int index) => ((Decoded*)(IntPtr)pValues + index)->Get(); public static object[] ToArray(int count, Ptr pValues) { @@ -1170,13 +1277,354 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); + + public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; + public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; + + public static explicit operator IntPtr(Ptr ptr) => ptr.bits; + public static explicit operator Ptr(IntPtr bits) => new(bits); + + public unsafe ref Decoded AsRef() => ref Unsafe.AsRef(bits.ToPointer()); + public unsafe ReadOnlySpan ToSpan(int length) => new(bits.ToPointer(), length); + + #region Object overrides + + public override bool Equals(object obj) => (obj is Ptr ptr) && (this == ptr); + public override int GetHashCode() => bits.GetHashCode(); + + #endregion + } + + #endregion + } + + #endregion + + #region Nested type: FastArg + + [StructLayout(LayoutKind.Explicit)] + public readonly struct FastArg + { + // IMPORTANT: maintain bitwise equivalence with native struct V8Value::FastArg + [FieldOffset(0)] private readonly WireData data; + + public bool IsUndefined() => (data.Type == Type.Undefined) || (data.Type == Type.Nonexistent); + + public bool IsNull() => data.Type == Type.Null; + + public bool TryGetBoolean(out bool value) + { + if (data.Type == Type.Boolean) + { + value = data.Int32Value != 0; + return true; + } + + value = false; + return false; + } + + public bool TryGetNumber(out double value) + { + if (data.Type == Type.Number) + { + value = data.DoubleValue; + return true; + } + + value = 0; + return false; + } + + public bool TryGetString(out string value) + { + if (data.Type == Type.String) + { + value = Marshal.PtrToStringUni(data.PtrOrHandle, data.Length); + return true; + } + + value = null; + return false; + } + + public unsafe bool TryGetCharSpan(out ReadOnlySpan value) + { + if (data.Type == Type.String) + { + value = new ReadOnlySpan(data.PtrOrHandle.ToPointer(), data.Length); + return true; + } + + value = ReadOnlySpan.Empty; + return false; + } + + public bool TryGetDateTime(out DateTime value) + { + if (data.Type == Type.DateTime) + { + value = DateTimeHelpers.FromUnixMilliseconds(data.DoubleValue); + return true; + } + + value = default; + return false; + } + + public bool TryGetBigInteger(out BigInteger value) + { + if (data.Type == Type.BigInt) + { + return data.TryCreateBigInteger(out value); + } + + value = default; + return false; + } + + public bool TryGetV8Object(out V8ObjectImpl v8Object) + { + if (data.Type == Type.V8Object) + { + v8Object = new V8ObjectImpl((V8Object.Handle)V8Entity.CloneHandle((V8Object.Handle)data.PtrOrHandle), data.Subtype, data.Flags, data.IdentityHash); + return true; + } + + v8Object = null; + return false; + } + + public bool TryGetHostObject(out object hostObject) + { + if (data.Type == Type.HostObject) + { + hostObject = V8ProxyHelpers.GetHostObject(data.PtrOrHandle); + return true; + } + + hostObject = null; + return false; + } + + #region Nested type: Ptr + + // ReSharper disable once MemberHidesStaticFromOuterClass + public readonly struct Ptr + { + private readonly IntPtr bits; + + private Ptr(IntPtr bits) => this.bits = bits; + + public static readonly Ptr Null = new(IntPtr.Zero); + + public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; + public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; + + public static explicit operator IntPtr(Ptr ptr) => ptr.bits; + public static explicit operator Ptr(IntPtr bits) => new(bits); + + public unsafe ref FastArg AsRef() => ref Unsafe.AsRef(bits.ToPointer()); + public unsafe ReadOnlySpan ToSpan(int length) => new(bits.ToPointer(), length); + + #region Object overrides + + public override bool Equals(object obj) => (obj is Ptr ptr) && (this == ptr); + public override int GetHashCode() => bits.GetHashCode(); + + #endregion + } + + #endregion + } + + #endregion + + #region Nested type: FastResult + + [StructLayout(LayoutKind.Explicit)] + public struct FastResult + { + // IMPORTANT: maintain bitwise equivalence with native struct V8Value::FastResult + [FieldOffset(0)] private WireData data; + + public bool IsNonexistent => data.Type == Type.Nonexistent; + + public void SetUndefined() + { + Debug.Assert(IsNonexistent); + data.Type = Type.Undefined; + } + + public void SetNull() + { + Debug.Assert(IsNonexistent); + data.Type = Type.Null; + } + + public void SetBoolean(bool value) + { + Debug.Assert(IsNonexistent); + data.Type = Type.Boolean; + data.Int32Value = value ? 1 : 0; + } + + public void SetNumber(double value) + { + Debug.Assert(IsNonexistent); + data.Type = Type.Number; + data.DoubleValue = value; + } + + public void SetString(string value) + { + Debug.Assert(IsNonexistent); + data.Type = Type.String; + data.Length = value.Length; + data.PtrOrHandle = CreateStringData(value); + } + + public void SetString(in ReadOnlySpan value) + { + Debug.Assert(IsNonexistent); + data.Type = Type.String; + data.Length = value.Length; + data.PtrOrHandle = CreateStringData(value); + } + + public void SetDateTime(DateTime value) + { + Debug.Assert(IsNonexistent); + data.Type = Type.DateTime; + data.DoubleValue = value.ToUnixMilliseconds(); + } + + public void SetBigInteger(BigInteger value) + { + Debug.Assert(IsNonexistent); + data.Type = Type.BigInt; + data.PtrOrHandle = CreateBigIntData(value, out data.SignBit, out data.Length); + } + + public void SetV8Object(V8ObjectImpl v8Object) + { + Debug.Assert(IsNonexistent); + data.Type = Type.V8Object; + data.Subtype = v8Object.Subtype; + data.Flags = v8Object.Flags; + data.IdentityHash = v8Object.IdentityHash; + data.PtrOrHandle = (IntPtr)V8Entity.CloneHandle(v8Object.Handle); + } + + public void SetHostObject(IHostItem hostObject) + { + var subtype = Subtype.None; + var flags = Flags.None; + + if (hostObject is V8FastHostItem fastHostItem) + { + flags = Flags.Fast; + if (fastHostItem.IsInvocable) + { + subtype = Subtype.Function; + } + } + + Debug.Assert(IsNonexistent); + data.Type = Type.HostObject; + data.Subtype = subtype; + data.Flags = flags; + data.PtrOrHandle = V8ProxyHelpers.AddRefHostObject(hostObject); + } + + private static unsafe IntPtr CreateStringData(string value) + { + if (string.IsNullOrEmpty(value)) + { + return IntPtr.Zero; + } + + var length = value.Length; + + var bufferSize = checked((length + 1) * sizeof(char)); + var pBuffer = V8SplitProxyNative.InvokeRaw(static (instance, size) => instance.Memory_AllocateZeroed(size), (UIntPtr)bufferSize); + + if (length > 0) + { + fixed (char* pValue = value) + { + var bytesToCopy = bufferSize - sizeof(char); + Buffer.MemoryCopy(pValue, pBuffer.ToPointer(), bytesToCopy, bytesToCopy); + } + } + + return pBuffer; + } + + private static unsafe IntPtr CreateStringData(in ReadOnlySpan value) + { + if (value.IsEmpty) + { + return IntPtr.Zero; + } + + var length = value.Length; + + var bufferSize = checked((length + 1) * sizeof(char)); + var pBuffer = V8SplitProxyNative.InvokeRaw(static (instance, size) => instance.Memory_AllocateZeroed(size), (UIntPtr)bufferSize); + + if (length > 0) + { + fixed (char* pValue = value) + { + var bytesToCopy = bufferSize - sizeof(char); + Buffer.MemoryCopy(pValue, pBuffer.ToPointer(), bytesToCopy, bytesToCopy); + } + } + + return pBuffer; + } + + private static IntPtr CreateBigIntData(BigInteger value, out short signBit, out int wordCount) + { + signBit = positiveOrZero; + if (value.Sign < 0) + { + signBit = negative; + value = BigInteger.Negate(value); + } + + var bytes = value.ToByteArray(); + var arrayLength = bytes.Length; + + wordCount = checked(arrayLength + sizeof(ulong) - 1) / sizeof(ulong); + var bufferSize = wordCount * sizeof(ulong); + var pWords = V8SplitProxyNative.InvokeRaw(static (instance, size) => instance.Memory_AllocateZeroed(size), (UIntPtr)bufferSize); + + UnmanagedMemoryHelpers.Copy(bytes, 0, (ulong)arrayLength, pWords); + return pWords; + } + + #region Nested type: Ptr + + // ReSharper disable once MemberHidesStaticFromOuterClass + public readonly struct Ptr + { + private readonly IntPtr bits; + + private Ptr(IntPtr bits) => this.bits = bits; + + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); + + public unsafe ref FastResult AsRef() => ref Unsafe.AsRef(bits.ToPointer()); + public unsafe ReadOnlySpan ToSpan(int length) => new(bits.ToPointer(), length); #region Object overrides @@ -1196,38 +1644,75 @@ internal static class V8CpuProfile { public static void ProcessProfile(V8Entity.Handle hEntity, Ptr pProfile, V8.V8CpuProfile profile) { - string name = null; - var startTimestamp = 0UL; - var endTimestamp = 0UL; - var sampleCount = 0; - var pRootNode = Node.Ptr.Null; - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8CpuProfile_GetInfo(pProfile, hEntity, out name, out startTimestamp, out endTimestamp, out sampleCount, out pRootNode)); - - profile.Name = name; - profile.StartTimestamp = startTimestamp; - profile.EndTimestamp = endTimestamp; - - if (pRootNode != Node.Ptr.Null) + var infoCtx = ( + pProfile, + hEntity, + name: (string)null, + startTimestamp: 0UL, + endTimestamp: 0UL, + sampleCount: 0, + pRootNode: Node.Ptr.Null + ); + + V8SplitProxyNative.InvokeNoThrow( + static (instance, pInfoCtx) => + { + ref var infoCtx = ref pInfoCtx.AsRef(); + instance.V8CpuProfile_GetInfo( + infoCtx.pProfile, + infoCtx.hEntity, + out infoCtx.name, + out infoCtx.startTimestamp, + out infoCtx.endTimestamp, + out infoCtx.sampleCount, + out infoCtx.pRootNode + ); + }, + StructPtr.FromRef(ref infoCtx) + ); + + profile.Name = infoCtx.name; + profile.StartTimestamp = infoCtx.startTimestamp; + profile.EndTimestamp = infoCtx.endTimestamp; + + if (infoCtx.pRootNode != Node.Ptr.Null) { - profile.RootNode = CreateNode(hEntity, pRootNode); + profile.RootNode = CreateNode(hEntity, infoCtx.pRootNode); } - if (sampleCount > 0) + if (infoCtx.sampleCount > 0) { - var samples = new List(sampleCount); + var samples = new List(infoCtx.sampleCount); - for (var index = 0; index < sampleCount; index++) + for (var index = 0; index < infoCtx.sampleCount; index++) { - var nodeId = 0UL; - var timestamp = 0UL; - var sampleIndex = index; - var found = V8SplitProxyNative.InvokeNoThrow(instance => instance.V8CpuProfile_GetSample(pProfile, sampleIndex, out nodeId, out timestamp)); + var sampleCtx = ( + pProfile, + sampleIndex: index, + nodeId: 0UL, + timestamp: 0UL + ); + + var found = V8SplitProxyNative.InvokeNoThrow( + static (instance, pSampleCtx) => + { + ref var sampleCtx = ref pSampleCtx.AsRef(); + return instance.V8CpuProfile_GetSample( + sampleCtx.pProfile, + sampleCtx.sampleIndex, + out sampleCtx.nodeId, + out sampleCtx.timestamp + ); + }, + StructPtr.FromRef(ref sampleCtx) + ); + if (found) { - var node = profile.FindNode(nodeId); - if (node != null) + var node = profile.FindNode(sampleCtx.nodeId); + if (node is not null) { - samples.Add(new V8.V8CpuProfile.Sample { Node = node, Timestamp = timestamp }); + samples.Add(new V8.V8CpuProfile.Sample { Node = node, Timestamp = sampleCtx.timestamp }); } } } @@ -1241,45 +1726,87 @@ public static void ProcessProfile(V8Entity.Handle hEntity, Ptr pProfile, V8.V8Cp private static V8.V8CpuProfile.Node CreateNode(V8Entity.Handle hEntity, Node.Ptr pNode) { - var nodeId = 0UL; - var scriptId = 0L; - string scriptName = null; - string functionName = null; - string bailoutReason = null; - var lineNumber = 0L; - var columnNumber = 0L; - var hitCount = 0UL; - var hitLineCount = 0U; - var childCount = 0; - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8CpuProfileNode_GetInfo(pNode, hEntity, out nodeId, out scriptId, out scriptName, out functionName, out bailoutReason, out lineNumber, out columnNumber, out hitCount, out hitLineCount, out childCount)); + var infoCtx = ( + pNode, + hEntity, + nodeId: 0UL, + scriptId: 0L, + scriptName: (string)null, + functionName: (string)null, + bailoutReason: (string)null, + lineNumber: 0L, + columnNumber: 0L, + hitCount: 0UL, + hitLineCount: 0U, + childCount: 0 + ); + + V8SplitProxyNative.InvokeNoThrow( + static (instance, pInfoCtx) => + { + ref var infoCtx = ref pInfoCtx.AsRef(); + instance.V8CpuProfileNode_GetInfo( + infoCtx.pNode, + infoCtx.hEntity, + out infoCtx.nodeId, + out infoCtx.scriptId, + out infoCtx.scriptName, + out infoCtx.functionName, + out infoCtx.bailoutReason, + out infoCtx.lineNumber, + out infoCtx.columnNumber, + out infoCtx.hitCount, + out infoCtx.hitLineCount, + out infoCtx.childCount + ); + }, + StructPtr.FromRef(ref infoCtx) + ); var node = new V8.V8CpuProfile.Node { - NodeId = nodeId, - ScriptId = scriptId, - ScriptName = scriptName, - FunctionName = functionName, - BailoutReason = bailoutReason, - LineNumber = lineNumber, - ColumnNumber = columnNumber, - HitCount = hitCount, + NodeId = infoCtx.nodeId, + ScriptId = infoCtx.scriptId, + ScriptName = infoCtx.scriptName, + FunctionName = infoCtx.functionName, + BailoutReason = infoCtx.bailoutReason, + LineNumber = infoCtx.lineNumber, + ColumnNumber = infoCtx.columnNumber, + HitCount = infoCtx.hitCount, }; - if (hitLineCount > 0) + if (infoCtx.hitLineCount > 0) { - int[] lineNumbers = null; - uint[] hitCounts = null; - if (V8SplitProxyNative.InvokeNoThrow(instance => instance.V8CpuProfileNode_GetHitLines(pNode, out lineNumbers, out hitCounts))) + var hitLinesCtx = ( + pNode, + lineNumbers: (int[])null, + hitCounts: (uint[])null + ); + + var found = V8SplitProxyNative.InvokeNoThrow( + static (instance, pHitLinesCtx) => + { + ref var hitLinesCtx = ref pHitLinesCtx.AsRef(); + return instance.V8CpuProfileNode_GetHitLines( + hitLinesCtx.pNode, + out hitLinesCtx.lineNumbers, + out hitLinesCtx.hitCounts + ); + }, + StructPtr.FromRef(ref hitLinesCtx) + ); + + if (found) { - var actualHitLineCount = Math.Min(lineNumbers.Length, hitCounts.Length); + var actualHitLineCount = Math.Min(hitLinesCtx.lineNumbers.Length, hitLinesCtx.hitCounts.Length); if (actualHitLineCount > 0) { var hitLines = new V8.V8CpuProfile.Node.HitLine[actualHitLineCount]; for (var index = 0; index < actualHitLineCount; index++) { - hitLines[index].LineNumber = lineNumbers[index]; - hitLines[index].HitCount = hitCounts[index]; + hitLines[index].LineNumber = hitLinesCtx.lineNumbers[index]; + hitLines[index].HitCount = hitLinesCtx.hitCounts[index]; } node.HitLines = new ReadOnlyCollection(hitLines); @@ -1287,14 +1814,14 @@ private static V8.V8CpuProfile.Node CreateNode(V8Entity.Handle hEntity, Node.Ptr } } - if (childCount > 0) + if (infoCtx.childCount > 0) { - var childNodes = new List(childCount); + var childNodes = new List(infoCtx.childCount); - for (var index = 0; index < childCount; index++) + for (var index = 0; index < infoCtx.childCount; index++) { var childIndex = index; - var pChildNode = V8SplitProxyNative.InvokeNoThrow(instance => instance.V8CpuProfileNode_GetChildNode(pNode, childIndex)); + var pChildNode = V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.V8CpuProfileNode_GetChildNode(ctx.pNode, ctx.childIndex), (pNode, childIndex)); if (pChildNode != Node.Ptr.Null) { childNodes.Add(CreateNode(hEntity, pChildNode)); @@ -1318,13 +1845,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -1349,13 +1876,13 @@ public readonly struct Ptr private Ptr(IntPtr bits) => this.bits = bits; - public static readonly Ptr Null = new Ptr(IntPtr.Zero); + public static readonly Ptr Null = new(IntPtr.Zero); public static bool operator ==(Ptr left, Ptr right) => left.bits == right.bits; public static bool operator !=(Ptr left, Ptr right) => left.bits != right.bits; public static explicit operator IntPtr(Ptr ptr) => ptr.bits; - public static explicit operator Ptr(IntPtr bits) => new Ptr(bits); + public static explicit operator Ptr(IntPtr bits) => new(bits); #region Object overrides @@ -1377,6 +1904,11 @@ public readonly struct Ptr internal static class V8Entity { + public static Handle CloneHandle(Handle handle) + { + return V8SplitProxyNative.InvokeRaw(static (instance, handle) => instance.V8Entity_CloneHandle(handle), handle); + } + #region Nested type: Handle public readonly struct Handle @@ -1385,13 +1917,13 @@ public readonly struct Handle private Handle(IntPtr guts) => this.guts = guts; - public static readonly Handle Empty = new Handle(IntPtr.Zero); + public static readonly Handle Empty = new(IntPtr.Zero); public static bool operator ==(Handle left, Handle right) => left.guts == right.guts; public static bool operator !=(Handle left, Handle right) => left.guts != right.guts; public static explicit operator IntPtr(Handle handle) => handle.guts; - public static explicit operator Handle(IntPtr guts) => new Handle(guts); + public static explicit operator Handle(IntPtr guts) => new(guts); #region Object overrides @@ -1414,13 +1946,13 @@ public readonly struct Handle private Handle(IntPtr guts) => this.guts = guts; - public static readonly Handle Empty = new Handle(IntPtr.Zero); + public static readonly Handle Empty = new(IntPtr.Zero); public static bool operator ==(Handle left, Handle right) => left.guts == right.guts; public static bool operator !=(Handle left, Handle right) => left.guts != right.guts; public static explicit operator IntPtr(Handle handle) => handle.guts; - public static explicit operator Handle(IntPtr guts) => new Handle(guts); + public static explicit operator Handle(IntPtr guts) => new(guts); public static implicit operator V8Entity.Handle(Handle handle) => (V8Entity.Handle)handle.guts; public static explicit operator Handle(V8Entity.Handle handle) => (Handle)(IntPtr)handle; @@ -1446,13 +1978,13 @@ public readonly struct Handle private Handle(IntPtr guts) => this.guts = guts; - public static readonly Handle Empty = new Handle(IntPtr.Zero); + public static readonly Handle Empty = new(IntPtr.Zero); public static bool operator ==(Handle left, Handle right) => left.guts == right.guts; public static bool operator !=(Handle left, Handle right) => left.guts != right.guts; public static explicit operator IntPtr(Handle handle) => handle.guts; - public static explicit operator Handle(IntPtr guts) => new Handle(guts); + public static explicit operator Handle(IntPtr guts) => new(guts); public static implicit operator V8Entity.Handle(Handle handle) => (V8Entity.Handle)handle.guts; public static explicit operator Handle(V8Entity.Handle handle) => (Handle)(IntPtr)handle; @@ -1478,13 +2010,13 @@ public readonly struct Handle private Handle(IntPtr guts) => this.guts = guts; - public static readonly Handle Empty = new Handle(IntPtr.Zero); + public static readonly Handle Empty = new(IntPtr.Zero); public static bool operator ==(Handle left, Handle right) => left.guts == right.guts; public static bool operator !=(Handle left, Handle right) => left.guts != right.guts; public static explicit operator IntPtr(Handle handle) => handle.guts; - public static explicit operator Handle(IntPtr guts) => new Handle(guts); + public static explicit operator Handle(IntPtr guts) => new(guts); public static implicit operator V8Entity.Handle(Handle handle) => (V8Entity.Handle)handle.guts; public static explicit operator Handle(V8Entity.Handle handle) => (Handle)(IntPtr)handle; @@ -1510,13 +2042,13 @@ public readonly struct Handle private Handle(IntPtr guts) => this.guts = guts; - public static readonly Handle Empty = new Handle(IntPtr.Zero); + public static readonly Handle Empty = new(IntPtr.Zero); public static bool operator ==(Handle left, Handle right) => left.guts == right.guts; public static bool operator !=(Handle left, Handle right) => left.guts != right.guts; public static explicit operator IntPtr(Handle handle) => handle.guts; - public static explicit operator Handle(IntPtr guts) => new Handle(guts); + public static explicit operator Handle(IntPtr guts) => new(guts); public static implicit operator V8Entity.Handle(Handle handle) => (V8Entity.Handle)handle.guts; public static explicit operator Handle(V8Entity.Handle handle) => (Handle)(IntPtr)handle; @@ -1542,13 +2074,13 @@ public readonly struct Handle private Handle(IntPtr guts) => this.guts = guts; - public static readonly Handle Empty = new Handle(IntPtr.Zero); + public static readonly Handle Empty = new(IntPtr.Zero); public static bool operator ==(Handle left, Handle right) => left.guts == right.guts; public static bool operator !=(Handle left, Handle right) => left.guts != right.guts; public static explicit operator IntPtr(Handle handle) => handle.guts; - public static explicit operator Handle(IntPtr guts) => new Handle(guts); + public static explicit operator Handle(IntPtr guts) => new(guts); public static implicit operator V8Entity.Handle(Handle handle) => (V8Entity.Handle)handle.guts; public static explicit operator Handle(V8Entity.Handle handle) => (Handle)(IntPtr)handle; @@ -1574,13 +2106,13 @@ public readonly struct Handle private Handle(IntPtr guts) => this.guts = guts; - public static readonly Handle Empty = new Handle(IntPtr.Zero); + public static readonly Handle Empty = new(IntPtr.Zero); public static bool operator ==(Handle left, Handle right) => left.guts == right.guts; public static bool operator !=(Handle left, Handle right) => left.guts != right.guts; public static explicit operator IntPtr(Handle handle) => handle.guts; - public static explicit operator Handle(IntPtr guts) => new Handle(guts); + public static explicit operator Handle(IntPtr guts) => new(guts); public static implicit operator V8Entity.Handle(Handle handle) => (V8Entity.Handle)handle.guts; public static explicit operator Handle(V8Entity.Handle handle) => (Handle)(IntPtr)handle; diff --git a/ClearScript/V8/SplitProxy/V8SplitProxyManaged.Net5.cs b/ClearScript/V8/SplitProxy/V8SplitProxyManaged.Net5.cs index 6989ae15..97be1056 100644 --- a/ClearScript/V8/SplitProxy/V8SplitProxyManaged.Net5.cs +++ b/ClearScript/V8/SplitProxy/V8SplitProxyManaged.Net5.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. +#if NET5_0_OR_GREATER + using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -117,29 +119,29 @@ static void Thunk(IntPtr pAction) } } - private static unsafe IntPtr GetHostObjectNamedPropertyFastMethodPtr + private static unsafe IntPtr InvokeHostActionWithArgFastMethodPtr { get { [UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvStdcall) })] - static void Thunk(IntPtr pObject, StdString.Ptr pName, V8Value.Ptr pValue) + static void Thunk(IntPtr pAction, IntPtr pArg) { - GetHostObjectNamedProperty(pObject, pName, pValue); + InvokeHostActionWithArg(pAction, pArg); } - delegate* unmanaged[Stdcall] pThunk = &Thunk; + delegate* unmanaged[Stdcall] pThunk = &Thunk; return (IntPtr)pThunk; } } - private static unsafe IntPtr GetHostObjectNamedPropertyWithCacheabilityFastMethodPtr + private static unsafe IntPtr GetHostObjectNamedPropertyFastMethodPtr { get { [UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvStdcall) })] static void Thunk(IntPtr pObject, StdString.Ptr pName, V8Value.Ptr pValue, IntPtr pIsCacheable) { - GetHostObjectNamedPropertyWithCacheability(pObject, pName, pValue, out var isCacheable); + GetHostObjectNamedProperty(pObject, pName, pValue, out var isCacheable); StdBool.Write(pIsCacheable, isCacheable); } @@ -223,6 +225,84 @@ static void Thunk(IntPtr pObject, StdString.Ptr pName, int argCount, V8Value.Dec } } + private static unsafe IntPtr GetFastHostObjectNamedPropertyFastMethodPtr + { + get + { + [UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvStdcall) })] + static void Thunk(IntPtr pObject, StdString.Ptr pName, V8Value.FastResult.Ptr pValue, IntPtr pIsCacheable) + { + GetFastHostObjectNamedProperty(pObject, pName, pValue, out var isCacheable); + StdBool.Write(pIsCacheable, isCacheable); + } + + delegate* unmanaged[Stdcall] pThunk = &Thunk; + return (IntPtr)pThunk; + } + } + + private static unsafe IntPtr SetFastHostObjectNamedPropertyFastMethodPtr + { + get + { + [UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvStdcall) })] + static void Thunk(IntPtr pObject, StdString.Ptr pName, V8Value.FastArg.Ptr pValue) + { + SetFastHostObjectNamedProperty(pObject, pName, pValue); + } + + delegate* unmanaged[Stdcall] pThunk = &Thunk; + return (IntPtr)pThunk; + } + } + + private static unsafe IntPtr GetFastHostObjectIndexedPropertyFastMethodPtr + { + get + { + [UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvStdcall) })] + static void Thunk(IntPtr pObject, int index, V8Value.FastResult.Ptr pValue) + { + GetFastHostObjectIndexedProperty(pObject, index, pValue); + } + + delegate* unmanaged[Stdcall] pThunk = &Thunk; + return (IntPtr)pThunk; + } + } + + private static unsafe IntPtr SetFastHostObjectIndexedPropertyFastMethodPtr + { + get + { + [UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvStdcall) })] + static void Thunk(IntPtr pObject, int index, V8Value.FastArg.Ptr pValue) + { + SetFastHostObjectIndexedProperty(pObject, index, pValue); + } + + delegate* unmanaged[Stdcall] pThunk = &Thunk; + return (IntPtr)pThunk; + } + } + + private static unsafe IntPtr InvokeFastHostObjectFastMethodPtr + { + get + { + [UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvStdcall) })] + static void Thunk(IntPtr pObject, StdBool asConstructor, int argCount, V8Value.FastArg.Ptr pArgs, V8Value.FastResult.Ptr pResult) + { + InvokeFastHostObject(pObject, asConstructor, argCount, pArgs, pResult); + } + + delegate* unmanaged[Stdcall] pThunk = &Thunk; + return (IntPtr)pThunk; + } + } + #endregion } } + +#endif // NET5_0_OR_GREATER diff --git a/ClearScript/V8/SplitProxy/V8SplitProxyManaged.cs b/ClearScript/V8/SplitProxy/V8SplitProxyManaged.cs index a21b1f21..4feb2a88 100644 --- a/ClearScript/V8/SplitProxy/V8SplitProxyManaged.cs +++ b/ClearScript/V8/SplitProxy/V8SplitProxyManaged.cs @@ -9,6 +9,7 @@ using System.Runtime.InteropServices; using Microsoft.ClearScript.JavaScript; using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.V8.FastProxy; namespace Microsoft.ClearScript.V8.SplitProxy { @@ -35,12 +36,12 @@ public static void Teardown() private static void ScheduleHostException(IntPtr pObject, Exception exception) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.HostException_Schedule(exception.GetBaseException().Message, V8ProxyHelpers.MarshalExceptionToScript(pObject, exception))); + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.HostException_Schedule(ctx.exception.GetBaseException().Message, V8ProxyHelpers.MarshalExceptionToScript(ctx.pObject, ctx.exception)), (pObject, exception)); } private static void ScheduleHostException(Exception exception) { - V8SplitProxyNative.InvokeNoThrow(instance => instance.HostException_Schedule(exception.GetBaseException().Message, ScriptEngine.Current?.MarshalToScript(exception))); + V8SplitProxyNative.InvokeNoThrow(static (instance, exception) => instance.HostException_Schedule(exception.GetBaseException().Message, ScriptEngine.Current?.MarshalToScript(exception)), exception); } private static uint GetMaxCacheSizeForCategory(DocumentCategory category) @@ -85,16 +86,29 @@ [In] V8Value.Ptr pInnerException ); [UnmanagedFunctionPointer(CallingConvention.StdCall)] - private delegate void RawInvokeAction( + private delegate void RawInvokeHostAction( [In] IntPtr pAction ); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawInvokeHostActionWithArg( + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate void RawProcessArrayBufferOrViewData( [In] IntPtr pData, [In] IntPtr pAction ); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawProcessArrayBufferOrViewDataWithArg( + [In] IntPtr pData, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate void RawProcessCpuProfile( [In] V8CpuProfile.Ptr pProfile, @@ -173,13 +187,6 @@ [In] IntPtr pObject [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate void RawGetHostObjectNamedProperty( - [In] IntPtr pObject, - [In] StdString.Ptr pName, - [In] V8Value.Ptr pValue - ); - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - private delegate void RawGetHostObjectNamedPropertyWithCacheability( [In] IntPtr pObject, [In] StdString.Ptr pName, [In] V8Value.Ptr pValue, @@ -263,6 +270,94 @@ private delegate void RawGetHostObjectAsyncEnumerator( [In] V8Value.Ptr pResult ); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawGetFastHostObjectNamedProperty( + [In] IntPtr pObject, + [In] StdString.Ptr pName, + [In] V8Value.FastResult.Ptr pValue, + [Out] [MarshalAs(UnmanagedType.I1)] out bool isCacheable + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawSetFastHostObjectNamedProperty( + [In] IntPtr pObject, + [In] StdString.Ptr pName, + [In] V8Value.FastArg.Ptr pValue + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate V8FastHostPropertyFlags RawQueryFastHostObjectNamedProperty( + [In] IntPtr pObject, + [In] StdString.Ptr pName + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + [return: MarshalAs(UnmanagedType.I1)] + private delegate bool RawDeleteFastHostObjectNamedProperty( + [In] IntPtr pObject, + [In] StdString.Ptr pName + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawGetFastHostObjectPropertyNames( + [In] IntPtr pObject, + [In] StdStringArray.Ptr pNames + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawGetFastHostObjectIndexedProperty( + [In] IntPtr pObject, + [In] int index, + [In] V8Value.FastResult.Ptr pValue + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawSetFastHostObjectIndexedProperty( + [In] IntPtr pObject, + [In] int index, + [In] V8Value.FastArg.Ptr pValue + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate V8FastHostPropertyFlags RawQueryFastHostObjectIndexedProperty( + [In] IntPtr pObject, + [In] int index + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + [return: MarshalAs(UnmanagedType.I1)] + private delegate bool RawDeleteFastHostObjectIndexedProperty( + [In] IntPtr pObject, + [In] int index + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawGetFastHostObjectPropertyIndices( + [In] IntPtr pObject, + [In] StdInt32Array.Ptr pIndices + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawInvokeFastHostObject( + [In] IntPtr pObject, + [In] [MarshalAs(UnmanagedType.I1)] bool asConstructor, + [In] int argCount, + [In] V8Value.FastArg.Ptr pArgs, + [In] V8Value.FastResult.Ptr pResult + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawGetFastHostObjectEnumerator( + [In] IntPtr pObject, + [In] V8Value.FastResult.Ptr pResult + ); + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate void RawGetFastHostObjectAsyncEnumerator( + [In] IntPtr pObject, + [In] V8Value.FastResult.Ptr pResult + ); + [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate void RawQueueNativeCallback( [In] NativeCallback.Handle hCallback @@ -341,11 +436,14 @@ private static void CreateMethodTable() #if NET5_0_OR_GREATER (IntPtr.Zero, InvokeHostActionFastMethodPtr), + (IntPtr.Zero, InvokeHostActionWithArgFastMethodPtr), #else - GetMethodPair(InvokeHostAction), + GetMethodPair(InvokeHostAction), + GetMethodPair(InvokeHostActionWithArg), #endif GetMethodPair(ProcessArrayBufferOrViewData), + GetMethodPair(ProcessArrayBufferOrViewDataWithArg), GetMethodPair(ProcessCpuProfile), GetMethodPair(CreateV8ObjectCache), @@ -377,11 +475,9 @@ private static void CreateMethodTable() #if NET5_0_OR_GREATER (IntPtr.Zero, GetHostObjectNamedPropertyFastMethodPtr), - (IntPtr.Zero, GetHostObjectNamedPropertyWithCacheabilityFastMethodPtr), (IntPtr.Zero, SetHostObjectNamedPropertyFastMethodPtr), #else GetMethodPair(GetHostObjectNamedProperty), - GetMethodPair(GetHostObjectNamedPropertyWithCacheability), GetMethodPair(SetHostObjectNamedProperty), #endif @@ -409,6 +505,40 @@ private static void CreateMethodTable() GetMethodPair(GetHostObjectEnumerator), GetMethodPair(GetHostObjectAsyncEnumerator), + + #if NET5_0_OR_GREATER + (IntPtr.Zero, GetFastHostObjectNamedPropertyFastMethodPtr), + (IntPtr.Zero, SetFastHostObjectNamedPropertyFastMethodPtr), + #else + GetMethodPair(GetFastHostObjectNamedProperty), + GetMethodPair(SetFastHostObjectNamedProperty), + #endif + + GetMethodPair(QueryFastHostObjectNamedProperty), + GetMethodPair(DeleteFastHostObjectNamedProperty), + GetMethodPair(GetFastHostObjectPropertyNames), + + #if NET5_0_OR_GREATER + (IntPtr.Zero, GetFastHostObjectIndexedPropertyFastMethodPtr), + (IntPtr.Zero, SetFastHostObjectIndexedPropertyFastMethodPtr), + #else + GetMethodPair(GetFastHostObjectIndexedProperty), + GetMethodPair(SetFastHostObjectIndexedProperty), + #endif + + GetMethodPair(QueryFastHostObjectIndexedProperty), + GetMethodPair(DeleteFastHostObjectIndexedProperty), + GetMethodPair(GetFastHostObjectPropertyIndices), + + #if NET5_0_OR_GREATER + (IntPtr.Zero, InvokeFastHostObjectFastMethodPtr), + #else + GetMethodPair(InvokeFastHostObject), + #endif + + GetMethodPair(GetFastHostObjectEnumerator), + GetMethodPair(GetFastHostObjectAsyncEnumerator), + GetMethodPair(QueueNativeCallback), GetMethodPair(CreateNativeCallbackTimer), GetMethodPair(ChangeNativeCallbackTimer), @@ -457,13 +587,13 @@ private static (IntPtr, IntPtr) GetMethodPair(T del) return (V8ProxyHelpers.AddRefHostObject(del), Marshal.GetFunctionPointerForDelegate((Delegate)(object)del)); } - #endregion +#endregion #region method table implementation private static void ScheduleForwardingException(V8Value.Ptr pException) { - Debug.Assert(ScheduledException == null); + Debug.Assert(ScheduledException is null); var exception = V8ProxyHelpers.MarshalExceptionToHost(V8Value.Get(pException)); if (exception is ScriptEngineException scriptEngineException) @@ -482,13 +612,13 @@ private static void ScheduleForwardingException(V8Value.Ptr pException) private static void ScheduleInvalidOperationException(StdString.Ptr pMessage) { - Debug.Assert(ScheduledException == null); + Debug.Assert(ScheduledException is null); ScheduledException = new InvalidOperationException(StdString.GetValue(pMessage)); } private static void ScheduleScriptEngineException(StdString.Ptr pEngineName, StdString.Ptr pMessage, StdString.Ptr pStackTrace, bool isFatal, bool executionStarted, V8Value.Ptr pScriptException, V8Value.Ptr pInnerException) { - Debug.Assert(ScheduledException == null); + Debug.Assert(ScheduledException is null); var scriptException = ScriptEngine.Current?.MarshalToHost(V8Value.Get(pScriptException), false); var innerException = V8ProxyHelpers.MarshalExceptionToHost(V8Value.Get(pInnerException)); ScheduledException = new ScriptEngineException(StdString.GetValue(pEngineName), StdString.GetValue(pMessage), StdString.GetValue(pStackTrace), 0, isFatal, executionStarted, scriptException, innerException); @@ -496,7 +626,7 @@ private static void ScheduleScriptEngineException(StdString.Ptr pEngineName, Std private static void ScheduleScriptInterruptedException(StdString.Ptr pEngineName, StdString.Ptr pMessage, StdString.Ptr pStackTrace, bool isFatal, bool executionStarted, V8Value.Ptr pScriptException, V8Value.Ptr pInnerException) { - Debug.Assert(ScheduledException == null); + Debug.Assert(ScheduledException is null); var scriptException = ScriptEngine.Current?.MarshalToHost(V8Value.Get(pScriptException), false); var innerException = V8ProxyHelpers.MarshalExceptionToHost(V8Value.Get(pInnerException)); ScheduledException = new ScriptInterruptedException(StdString.GetValue(pEngineName), StdString.GetValue(pMessage), StdString.GetValue(pStackTrace), 0, isFatal, executionStarted, scriptException, innerException); @@ -514,6 +644,18 @@ private static void InvokeHostAction(IntPtr pAction) } } + private static void InvokeHostActionWithArg(IntPtr pAction, IntPtr pArg) + { + try + { + V8ProxyHelpers.GetHostObject>(pAction)(pArg); + } + catch (Exception exception) + { + ScheduleHostException(exception); + } + } + private static void ProcessArrayBufferOrViewData(IntPtr pData, IntPtr pAction) { try @@ -526,6 +668,18 @@ private static void ProcessArrayBufferOrViewData(IntPtr pData, IntPtr pAction) } } + private static void ProcessArrayBufferOrViewDataWithArg(IntPtr pData, IntPtr pAction, IntPtr pArg) + { + try + { + V8ProxyHelpers.GetHostObject>(pAction)(pData, pArg); + } + catch (Exception exception) + { + ScheduleHostException(exception); + } + } + private static void ProcessCpuProfile(V8CpuProfile.Ptr pProfile, IntPtr pAction) { try @@ -613,19 +767,7 @@ private static Invocability GetHostObjectInvocability(IntPtr pObject) } } - private static void GetHostObjectNamedProperty(IntPtr pObject, StdString.Ptr pName, V8Value.Ptr pValue) - { - try - { - V8Value.Set(pValue, V8ProxyHelpers.GetHostObjectProperty(pObject, StdString.GetValue(pName))); - } - catch (Exception exception) - { - ScheduleHostException(pObject, exception); - } - } - - private static void GetHostObjectNamedPropertyWithCacheability(IntPtr pObject, StdString.Ptr pName, V8Value.Ptr pValue, out bool isCacheable) + private static void GetHostObjectNamedProperty(IntPtr pObject, StdString.Ptr pName, V8Value.Ptr pValue, out bool isCacheable) { try { @@ -659,7 +801,7 @@ private static bool DeleteHostObjectNamedProperty(IntPtr pObject, StdString.Ptr catch (Exception exception) { ScheduleHostException(pObject, exception); - return default; + return false; } } @@ -712,7 +854,7 @@ private static bool DeleteHostObjectIndexedProperty(IntPtr pObject, int index) catch (Exception exception) { ScheduleHostException(pObject, exception); - return default; + return false; } } @@ -780,6 +922,175 @@ private static void GetHostObjectAsyncEnumerator(IntPtr pObject, V8Value.Ptr pRe } } + private static void GetFastHostObjectNamedProperty(IntPtr pObject, StdString.Ptr pName, V8Value.FastResult.Ptr pValue, out bool isCacheable) + { + try + { + V8ProxyHelpers.GetFastHostObjectProperty(pObject, pName, pValue, out isCacheable); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + isCacheable = false; + } + } + + private static void SetFastHostObjectNamedProperty(IntPtr pObject, StdString.Ptr pName, V8Value.FastArg.Ptr pValue) + { + try + { + V8ProxyHelpers.SetFastHostObjectProperty(pObject, pName, pValue); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + } + } + + private static V8FastHostPropertyFlags QueryFastHostObjectNamedProperty(IntPtr pObject, StdString.Ptr pName) + { + try + { + return V8ProxyHelpers.QueryFastHostObjectProperty(pObject, pName); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + return default; + } + } + + private static bool DeleteFastHostObjectNamedProperty(IntPtr pObject, StdString.Ptr pName) + { + try + { + return V8ProxyHelpers.DeleteFastHostObjectProperty(pObject, pName); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + return false; + } + } + + private static void GetFastHostObjectPropertyNames(IntPtr pObject, StdStringArray.Ptr pNames) + { + IEnumerable names; + try + { + names = V8ProxyHelpers.GetFastHostObjectPropertyNames(pObject); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + return; + } + + StdStringArray.CopyFromEnumerable(pNames, names); + } + + private static void GetFastHostObjectIndexedProperty(IntPtr pObject, int index, V8Value.FastResult.Ptr pValue) + { + try + { + V8ProxyHelpers.GetFastHostObjectProperty(pObject, index, pValue); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + } + } + + private static void SetFastHostObjectIndexedProperty(IntPtr pObject, int index, V8Value.FastArg.Ptr pValue) + { + try + { + V8ProxyHelpers.SetFastHostObjectProperty(pObject, index, pValue); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + } + } + + private static V8FastHostPropertyFlags QueryFastHostObjectIndexedProperty(IntPtr pObject, int index) + { + try + { + return V8ProxyHelpers.QueryFastHostObjectProperty(pObject, index); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + return default; + } + } + + private static bool DeleteFastHostObjectIndexedProperty(IntPtr pObject, int index) + { + try + { + return V8ProxyHelpers.DeleteFastHostObjectProperty(pObject, index); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + return false; + } + } + + private static void GetFastHostObjectPropertyIndices(IntPtr pObject, StdInt32Array.Ptr pIndices) + { + IEnumerable indices; + try + { + indices = V8ProxyHelpers.GetFastHostObjectPropertyIndices(pObject); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + return; + } + + StdInt32Array.CopyFromEnumerable(pIndices, indices); + } + + private static void InvokeFastHostObject(IntPtr pObject, bool asConstructor, int argCount, V8Value.FastArg.Ptr pArgs, V8Value.FastResult.Ptr pResult) + { + try + { + V8ProxyHelpers.InvokeFastHostObject(pObject, asConstructor, argCount, pArgs, pResult); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + } + } + + private static void GetFastHostObjectEnumerator(IntPtr pObject, V8Value.FastResult.Ptr pResult) + { + try + { + V8ProxyHelpers.GetFastHostObjectEnumerator(pObject, pResult); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + } + } + + private static void GetFastHostObjectAsyncEnumerator(IntPtr pObject, V8Value.FastResult.Ptr pResult) + { + try + { + V8ProxyHelpers.GetFastHostObjectAsyncEnumerator(pObject, pResult); + } + catch (Exception exception) + { + ScheduleHostException(pObject, exception); + } + } + private static void QueueNativeCallback(NativeCallback.Handle hCallback) { MiscHelpers.QueueNativeCallback(new NativeCallbackImpl(hCallback)); @@ -814,7 +1125,7 @@ private static void LoadModule(IntPtr pSourceDocumentInfo, StdString.Ptr pSpecif catch (Exception exception) { ScheduleHostException(exception); - uniqueId = default; + uniqueId = 0; documentKind = default; pDocumentInfo = default; return; @@ -842,7 +1153,7 @@ private static void CreateModuleContext(IntPtr pDocumentInfo, StdStringArray.Ptr return; } - if (context == null) + if (context is null) { StdStringArray.SetElementCount(pNames, 0); StdV8ValueArray.SetElementCount(pValues, 0); diff --git a/ClearScript/V8/SplitProxy/V8SplitProxyNative.Common.tt b/ClearScript/V8/SplitProxy/V8SplitProxyNative.Common.tt index 18e1c4e0..0e914d70 100644 --- a/ClearScript/V8/SplitProxy/V8SplitProxyNative.Common.tt +++ b/ClearScript/V8/SplitProxy/V8SplitProxyNative.Common.tt @@ -77,6 +77,25 @@ namespace Microsoft.ClearScript.V8.SplitProxy #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -90,6 +109,18 @@ namespace Microsoft.ClearScript.V8.SplitProxy return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -343,16 +374,6 @@ namespace Microsoft.ClearScript.V8.SplitProxy V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -373,9 +394,9 @@ namespace Microsoft.ClearScript.V8.SplitProxy V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -694,6 +715,11 @@ namespace Microsoft.ClearScript.V8.SplitProxy V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -1057,6 +1083,11 @@ namespace Microsoft.ClearScript.V8.SplitProxy V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -1090,13 +1121,18 @@ namespace Microsoft.ClearScript.V8.SplitProxy #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -1158,6 +1194,25 @@ namespace Microsoft.ClearScript.V8.SplitProxy #endregion + #region memory methods + + [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] @@ -1438,18 +1493,6 @@ namespace Microsoft.ClearScript.V8.SplitProxy [In] double value ); - [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -1482,7 +1525,9 @@ namespace Microsoft.ClearScript.V8.SplitProxy [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] @@ -1800,6 +1845,13 @@ namespace Microsoft.ClearScript.V8.SplitProxy [In] IntPtr pAction ); + [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -2107,6 +2159,13 @@ namespace Microsoft.ClearScript.V8.SplitProxy [In] IntPtr pAction ); + [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -2138,13 +2197,18 @@ namespace Microsoft.ClearScript.V8.SplitProxy #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("<#= fileName #>", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity diff --git a/ClearScript/V8/SplitProxy/V8SplitProxyNative.Generated.cs b/ClearScript/V8/SplitProxy/V8SplitProxyNative.Generated.cs index d578dba3..5d542578 100644 --- a/ClearScript/V8/SplitProxy/V8SplitProxyNative.Generated.cs +++ b/ClearScript/V8/SplitProxy/V8SplitProxyNative.Generated.cs @@ -119,6 +119,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -132,6 +151,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -385,16 +416,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -415,9 +436,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -736,6 +757,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -1099,6 +1125,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -1132,13 +1163,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -1200,6 +1236,25 @@ [In] uint size #endregion + #region memory methods + + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] @@ -1480,18 +1535,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -1524,7 +1567,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] @@ -1842,6 +1887,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -2149,6 +2201,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -2180,13 +2239,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity @@ -2252,6 +2316,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -2265,6 +2348,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -2518,16 +2613,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -2548,9 +2633,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -2869,6 +2954,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -3232,6 +3322,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -3265,13 +3360,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -3333,6 +3433,25 @@ [In] uint size #endregion + #region memory methods + + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] @@ -3613,18 +3732,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -3657,7 +3764,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] @@ -3975,6 +4084,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -4282,6 +4398,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -4313,13 +4436,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity @@ -4385,6 +4513,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -4398,6 +4545,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -4651,16 +4810,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -4681,9 +4830,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -5002,6 +5151,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -5365,6 +5519,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -5398,13 +5557,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -5466,6 +5630,25 @@ [In] uint size #endregion + #region memory methods + + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] @@ -5746,18 +5929,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -5790,7 +5961,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] @@ -6108,6 +6281,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -6415,6 +6595,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -6446,13 +6633,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity @@ -6518,6 +6710,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -6531,6 +6742,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -6784,16 +7007,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -6814,9 +7027,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -7135,6 +7348,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -7498,6 +7716,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -7531,13 +7754,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -7599,12 +7827,31 @@ [In] uint size #endregion - #region StdString methods + #region memory methods [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] - private static extern StdString.Ptr StdString_New( - [In] [MarshalAs(UnmanagedType.LPWStr)] string value, - [In] int length + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + + #region StdString methods + + [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] + private static extern StdString.Ptr StdString_New( + [In] [MarshalAs(UnmanagedType.LPWStr)] string value, + [In] int length ); [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] @@ -7879,18 +8126,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -7923,7 +8158,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] @@ -8241,6 +8478,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -8548,6 +8792,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -8579,13 +8830,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.linux-x64.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity @@ -8651,6 +8907,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -8664,6 +8939,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -8917,16 +9204,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -8947,9 +9224,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -9268,6 +9545,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -9631,6 +9913,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -9664,13 +9951,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -9732,6 +10024,25 @@ [In] uint size #endregion + #region memory methods + + [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] @@ -10012,18 +10323,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -10056,7 +10355,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] @@ -10374,6 +10675,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -10681,6 +10989,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -10712,13 +11027,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.linux-arm64.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity @@ -10784,6 +11104,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -10797,6 +11136,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -11050,16 +11401,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -11080,9 +11421,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -11401,6 +11742,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -11764,6 +12110,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -11797,13 +12148,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -11865,6 +12221,25 @@ [In] uint size #endregion + #region memory methods + + [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] @@ -12145,18 +12520,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -12189,7 +12552,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] @@ -12507,6 +12872,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -12814,6 +13186,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -12845,13 +13224,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.linux-arm.so", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity @@ -12917,6 +13301,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -12930,6 +13333,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -13183,16 +13598,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -13213,9 +13618,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -13534,6 +13939,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -13897,6 +14307,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -13930,13 +14345,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -13998,6 +14418,25 @@ [In] uint size #endregion + #region memory methods + + [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] @@ -14278,18 +14717,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -14322,7 +14749,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] @@ -14640,6 +15069,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -14947,6 +15383,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -14978,13 +15421,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.osx-x64.dylib", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity @@ -15050,6 +15498,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -15063,6 +15530,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -15316,16 +15795,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -15346,9 +15815,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -15667,6 +16136,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -16030,6 +16504,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -16063,13 +16542,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -16131,6 +16615,25 @@ [In] uint size #endregion + #region memory methods + + [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] @@ -16411,18 +16914,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -16455,7 +16946,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] @@ -16773,6 +17266,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -17080,6 +17580,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -17111,13 +17618,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.osx-arm64.dylib", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity diff --git a/ClearScript/V8/SplitProxy/V8SplitProxyNative.UWP.Generated.cs b/ClearScript/V8/SplitProxy/V8SplitProxyNative.UWP.Generated.cs index 5be31a3a..078c87e1 100644 --- a/ClearScript/V8/SplitProxy/V8SplitProxyNative.UWP.Generated.cs +++ b/ClearScript/V8/SplitProxy/V8SplitProxyNative.UWP.Generated.cs @@ -75,6 +75,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -88,6 +107,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -341,16 +372,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -371,9 +392,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -692,6 +713,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -1055,6 +1081,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -1088,13 +1119,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -1156,6 +1192,25 @@ [In] uint size #endregion + #region memory methods + + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] @@ -1436,18 +1491,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -1480,7 +1523,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] @@ -1798,6 +1843,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -2105,6 +2157,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -2136,13 +2195,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.win-x86.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity @@ -2208,6 +2272,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -2221,6 +2304,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -2474,16 +2569,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -2504,9 +2589,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -2825,6 +2910,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -3188,6 +3278,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -3221,13 +3316,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -3289,6 +3389,25 @@ [In] uint size #endregion + #region memory methods + + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] @@ -3569,18 +3688,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -3613,7 +3720,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] @@ -3931,6 +4040,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -4238,6 +4354,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -4269,13 +4392,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.win-x64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity @@ -4341,6 +4469,25 @@ void IV8SplitProxyNative.V8Environment_InitializeICU(IntPtr pICUData, uint size) #endregion + #region memory methods + + IntPtr IV8SplitProxyNative.Memory_Allocate(UIntPtr size) + { + return Memory_Allocate(size); + } + + IntPtr IV8SplitProxyNative.Memory_AllocateZeroed(UIntPtr size) + { + return Memory_AllocateZeroed(size); + } + + void IV8SplitProxyNative.Memory_Free(IntPtr pMemory) + { + Memory_Free(pMemory); + } + + #endregion + #region StdString methods StdString.Ptr IV8SplitProxyNative.StdString_New(string value) @@ -4354,6 +4501,18 @@ string IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString) return Marshal.PtrToStringUni(pValue, length); } + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length); + } + + TValue IV8SplitProxyNative.StdString_GetValue(StdString.Ptr pString, Func factory, in TArg arg) + { + var pValue = StdString_GetValue(pString, out var length); + return factory(pValue, length, arg); + } + void IV8SplitProxyNative.StdString_SetValue(StdString.Ptr pString, string value) { StdString_SetValue(pString, value, value.Length); @@ -4607,16 +4766,6 @@ void IV8SplitProxyNative.V8Value_SetNumber(V8Value.Ptr pV8Value, double value) V8Value_SetNumber(pV8Value, value); } - void IV8SplitProxyNative.V8Value_SetInt32(V8Value.Ptr pV8Value, int value) - { - V8Value_SetInt32(pV8Value, value); - } - - void IV8SplitProxyNative.V8Value_SetUInt32(V8Value.Ptr pV8Value, uint value) - { - V8Value_SetUInt32(pV8Value, value); - } - void IV8SplitProxyNative.V8Value_SetString(V8Value.Ptr pV8Value, string value) { V8Value_SetString(pV8Value, value, value.Length); @@ -4637,9 +4786,9 @@ void IV8SplitProxyNative.V8Value_SetV8Object(V8Value.Ptr pV8Value, V8Object.Hand V8Value_SetV8Object(pV8Value, hObject, subtype, flags); } - void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject) + void IV8SplitProxyNative.V8Value_SetHostObject(V8Value.Ptr pV8Value, IntPtr pObject, V8Value.Subtype subtype, V8Value.Flags flags) { - V8Value_SetHostObject(pV8Value, pObject); + V8Value_SetHostObject(pV8Value, pObject, subtype, flags); } void IV8SplitProxyNative.V8Value_Decode(V8Value.Ptr pV8Value, out V8Value.Decoded decoded) @@ -4958,6 +5107,11 @@ void IV8SplitProxyNative.V8Context_InvokeWithLock(V8Context.Handle hContext, Int V8Context_InvokeWithLock(hContext, pAction); } + void IV8SplitProxyNative.V8Context_InvokeWithLockWithArg(V8Context.Handle hContext, IntPtr pAction, IntPtr pArg) + { + V8Context_InvokeWithLockWithArg(hContext, pAction, pArg); + } + object IV8SplitProxyNative.V8Context_GetRootItem(V8Context.Handle hContext) { using (var itemScope = V8Value.CreateScope()) @@ -5321,6 +5475,11 @@ void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewData(V8Object.Handl V8Object_InvokeWithArrayBufferOrViewData(hObject, pAction); } + void IV8SplitProxyNative.V8Object_InvokeWithArrayBufferOrViewDataWithArg(V8Object.Handle hObject, IntPtr pAction, IntPtr pArg) + { + V8Object_InvokeWithArrayBufferOrViewDataWithArg(hObject, pAction, pArg); + } + #endregion #region V8 debug callback methods @@ -5354,13 +5513,18 @@ void IV8SplitProxyNative.NativeCallback_Invoke(NativeCallback.Handle hCallback) #endregion - #region V8 entity cleanup + #region V8 entity methods void IV8SplitProxyNative.V8Entity_Release(V8Entity.Handle hEntity) { V8Entity_Release(hEntity); } + V8Entity.Handle IV8SplitProxyNative.V8Entity_CloneHandle(V8Entity.Handle hEntity) + { + return V8Entity_CloneHandle(hEntity); + } + void IV8SplitProxyNative.V8Entity_DestroyHandle(V8Entity.Handle hEntity) { V8Entity_DestroyHandle(hEntity); @@ -5422,6 +5586,25 @@ [In] uint size #endregion + #region memory methods + + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_Allocate( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr Memory_AllocateZeroed( + [In] UIntPtr size + ); + + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void Memory_Free( + [In] IntPtr pMemory + ); + + #endregion + #region StdString methods [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] @@ -5702,18 +5885,6 @@ private static extern void V8Value_SetNumber( [In] double value ); - [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetInt32( - [In] V8Value.Ptr pV8Value, - [In] int value - ); - - [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] - private static extern void V8Value_SetUInt32( - [In] V8Value.Ptr pV8Value, - [In] uint value - ); - [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetString( [In] V8Value.Ptr pV8Value, @@ -5746,7 +5917,9 @@ [In] V8Value.Flags flags [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Value_SetHostObject( [In] V8Value.Ptr pV8Value, - [In] IntPtr pObject + [In] IntPtr pObject, + [In] V8Value.Subtype subtype, + [In] V8Value.Flags flags ); [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] @@ -6064,6 +6237,13 @@ private static extern void V8Context_InvokeWithLock( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Context_InvokeWithLockWithArg( + [In] V8Context.Handle hContext, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Context_GetRootItem( [In] V8Context.Handle hContext, @@ -6371,6 +6551,13 @@ private static extern void V8Object_InvokeWithArrayBufferOrViewData( [In] IntPtr pAction ); + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern void V8Object_InvokeWithArrayBufferOrViewDataWithArg( + [In] V8Object.Handle hObject, + [In] IntPtr pAction, + [In] IntPtr pArg + ); + #endregion #region V8 debug callback methods @@ -6402,13 +6589,18 @@ [In] NativeCallback.Handle hCallback #endregion - #region V8 entity cleanup + #region V8 entity methods [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_Release( [In] V8Entity.Handle hEntity ); + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] + private static extern V8Entity.Handle V8Entity_CloneHandle( + [In] V8Entity.Handle hEntity + ); + [DllImport("ClearScriptV8.win-arm64.dll", CallingConvention = CallingConvention.StdCall)] private static extern void V8Entity_DestroyHandle( [In] V8Entity.Handle hEntity diff --git a/ClearScript/V8/SplitProxy/V8SplitProxyNative.cs b/ClearScript/V8/SplitProxy/V8SplitProxyNative.cs index b1ca55b7..f2766ecd 100644 --- a/ClearScript/V8/SplitProxy/V8SplitProxyNative.cs +++ b/ClearScript/V8/SplitProxy/V8SplitProxyNative.cs @@ -25,32 +25,57 @@ public static string GetVersion() public static void Invoke(Action action) { var previousScheduledException = MiscHelpers.Exchange(ref V8SplitProxyManaged.ScheduledException, null); - var previousMethodTable = instance.V8SplitProxyManaged_SetMethodTable(V8SplitProxyManaged.MethodTable); try { - action(instance); + InvokeNoThrow(action); ThrowScheduledException(); } finally { - instance.V8SplitProxyManaged_SetMethodTable(previousMethodTable); V8SplitProxyManaged.ScheduledException = previousScheduledException; } } - public static T Invoke(Func func) + public static void Invoke(Action action, in TArg arg) + { + var previousScheduledException = MiscHelpers.Exchange(ref V8SplitProxyManaged.ScheduledException, null); + try + { + InvokeNoThrow(action, arg); + ThrowScheduledException(); + } + finally + { + V8SplitProxyManaged.ScheduledException = previousScheduledException; + } + } + + public static TResult Invoke(Func func) { var previousScheduledException = MiscHelpers.Exchange(ref V8SplitProxyManaged.ScheduledException, null); - var previousMethodTable = instance.V8SplitProxyManaged_SetMethodTable(V8SplitProxyManaged.MethodTable); try { - var result = func(instance); + var result = InvokeNoThrow(func); + ThrowScheduledException(); + return result; + } + finally + { + V8SplitProxyManaged.ScheduledException = previousScheduledException; + } + } + + public static TResult Invoke(Func func, in TArg arg) + { + var previousScheduledException = MiscHelpers.Exchange(ref V8SplitProxyManaged.ScheduledException, null); + try + { + var result = InvokeNoThrow(func, arg); ThrowScheduledException(); return result; } finally { - instance.V8SplitProxyManaged_SetMethodTable(previousMethodTable); V8SplitProxyManaged.ScheduledException = previousScheduledException; } } @@ -60,30 +85,76 @@ public static void InvokeNoThrow(Action action) var previousMethodTable = instance.V8SplitProxyManaged_SetMethodTable(V8SplitProxyManaged.MethodTable); try { - action(instance); + InvokeRaw(action); } finally { - instance.V8SplitProxyManaged_SetMethodTable(previousMethodTable); + if (previousMethodTable != V8SplitProxyManaged.MethodTable) + { + instance.V8SplitProxyManaged_SetMethodTable(previousMethodTable); + } } } - public static T InvokeNoThrow(Func func) + public static void InvokeNoThrow(Action action, in TArg arg) { var previousMethodTable = instance.V8SplitProxyManaged_SetMethodTable(V8SplitProxyManaged.MethodTable); try { - return func(instance); + InvokeRaw(action, arg); } finally { - instance.V8SplitProxyManaged_SetMethodTable(previousMethodTable); + if (previousMethodTable != V8SplitProxyManaged.MethodTable) + { + instance.V8SplitProxyManaged_SetMethodTable(previousMethodTable); + } } } + public static TResult InvokeNoThrow(Func func) + { + var previousMethodTable = instance.V8SplitProxyManaged_SetMethodTable(V8SplitProxyManaged.MethodTable); + try + { + return InvokeRaw(func); + } + finally + { + if (previousMethodTable != V8SplitProxyManaged.MethodTable) + { + instance.V8SplitProxyManaged_SetMethodTable(previousMethodTable); + } + } + } + + public static TResult InvokeNoThrow(Func func, in TArg arg) + { + var previousMethodTable = instance.V8SplitProxyManaged_SetMethodTable(V8SplitProxyManaged.MethodTable); + try + { + return InvokeRaw(func, arg); + } + finally + { + if (previousMethodTable != V8SplitProxyManaged.MethodTable) + { + instance.V8SplitProxyManaged_SetMethodTable(previousMethodTable); + } + } + } + + public static void InvokeRaw(Action action) => action(instance); + + public static void InvokeRaw(Action action, in TArg arg) => action(instance, arg); + + public static TResult InvokeRaw(Func func) => func(instance); + + public static TResult InvokeRaw(Func func, in TArg arg) => func(instance, arg); + private static void ThrowScheduledException() { - if (V8SplitProxyManaged.ScheduledException != null) + if (V8SplitProxyManaged.ScheduledException is not null) { throw V8SplitProxyManaged.ScheduledException; } diff --git a/ClearScript/V8/SplitProxy/V8TestProxyImpl.cs b/ClearScript/V8/SplitProxy/V8TestProxyImpl.cs index eebc1f74..5a5fd0e6 100644 --- a/ClearScript/V8/SplitProxy/V8TestProxyImpl.cs +++ b/ClearScript/V8/SplitProxy/V8TestProxyImpl.cs @@ -9,13 +9,13 @@ internal sealed class V8TestProxyImpl : V8TestProxy { public override UIntPtr GetNativeDigest(string value) { - return V8SplitProxyNative.InvokeNoThrow(instance => instance.V8UnitTestSupport_GetTextDigest(value)); + return V8SplitProxyNative.InvokeNoThrow(static (instance, value) => instance.V8UnitTestSupport_GetTextDigest(value), value); } public override Statistics GetStatistics() { var statistics = new Statistics(); - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8UnitTestSupport_GetStatistics(out statistics.IsolateCount, out statistics.ContextCount)); + V8SplitProxyNative.InvokeNoThrow(static (instance, statistics) => instance.V8UnitTestSupport_GetStatistics(out statistics.IsolateCount, out statistics.ContextCount), statistics); return statistics; } diff --git a/ClearScript/V8/V8ContextProxy.cs b/ClearScript/V8/V8ContextProxy.cs index b61ef764..ebeae064 100644 --- a/ClearScript/V8/V8ContextProxy.cs +++ b/ClearScript/V8/V8ContextProxy.cs @@ -22,6 +22,8 @@ public static V8ContextProxy Create(V8IsolateProxy isolateProxy, string name, V8 public abstract void InvokeWithLock(Action action); + public abstract void InvokeWithLock(Action action, in TArg arg); + public abstract object GetRootItem(); public abstract void AddGlobalItem(string name, object item, bool globalMembers); diff --git a/ClearScript/V8/V8CpuProfile.cs b/ClearScript/V8/V8CpuProfile.cs index 94e8aaec..27ba4cb4 100644 --- a/ClearScript/V8/V8CpuProfile.cs +++ b/ClearScript/V8/V8CpuProfile.cs @@ -105,7 +105,7 @@ private void WriteNodesJson(TextWriter writer) writer.Write("\"nodes\":["); { - if (RootNode != null) + if (RootNode is not null) { var queue = new Queue(); RootNode.WriteJson(writer, queue); @@ -123,7 +123,7 @@ private void WriteSamplesJson(TextWriter writer) { // V8 Inspector JSON Protocol 1.3: https://github.com/v8/v8/blob/4b9b23521e6fd42373ebbcb20ebe03bf445494f9/src/inspector/js_protocol-1.3.json - if ((Samples != null) && (Samples.Count > 0)) + if ((Samples is not null) && (Samples.Count > 0)) { writer.Write(",\"samples\":[{0}]", string.Join(",", Samples.Select(sample => sample.Node.NodeId))); } @@ -133,7 +133,7 @@ private void WriteTimeDeltasJson(TextWriter writer) { // V8 Inspector JSON Protocol 1.3: https://github.com/v8/v8/blob/4b9b23521e6fd42373ebbcb20ebe03bf445494f9/src/inspector/js_protocol-1.3.json - if ((Samples != null) && (Samples.Count > 0)) + if ((Samples is not null) && (Samples.Count > 0)) { const ulong maxSafeInteger = 9007199254740991UL; // 2^53 - 1 @@ -246,12 +246,12 @@ internal Node FindNode(ulong nodeId) return this; } - if (ChildNodes != null) + if (ChildNodes is not null) { foreach (var childNode in ChildNodes) { var node = childNode.FindNode(nodeId); - if (node != null) + if (node is not null) { return node; } @@ -302,7 +302,7 @@ private void WriteChildrenJson(TextWriter writer, Queue queue) { // V8 Inspector JSON Protocol 1.3: https://github.com/v8/v8/blob/4b9b23521e6fd42373ebbcb20ebe03bf445494f9/src/inspector/js_protocol-1.3.json - if ((ChildNodes != null) && (ChildNodes.Count > 0)) + if ((ChildNodes is not null) && (ChildNodes.Count > 0)) { writer.Write(",\"children\":[{0}]", string.Join(",", ChildNodes.Select(node => node.NodeId))); ChildNodes.ForEach(queue.Enqueue); @@ -313,7 +313,7 @@ private void WritePositionTicksJson(TextWriter writer) { // V8 Inspector JSON Protocol 1.3: https://github.com/v8/v8/blob/4b9b23521e6fd42373ebbcb20ebe03bf445494f9/src/inspector/js_protocol-1.3.json - if ((HitLines != null) && (HitLines.Count > 0)) + if ((HitLines is not null) && (HitLines.Count > 0)) { writer.Write(",\"positionTicks\":["); { diff --git a/ClearScript/V8/V8CpuProfileFlags.cs b/ClearScript/V8/V8CpuProfileFlags.cs index 8a6564a2..eeec685f 100644 --- a/ClearScript/V8/V8CpuProfileFlags.cs +++ b/ClearScript/V8/V8CpuProfileFlags.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; namespace Microsoft.ClearScript.V8 { @@ -18,4 +21,10 @@ public enum V8CpuProfileFlags /// EnableSampleCollection = 0x00000001 } + + internal static class V8CpuProfileFlagsHelpers + { + public static bool HasAllFlags(this V8CpuProfileFlags value, V8CpuProfileFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this V8CpuProfileFlags value, V8CpuProfileFlags flags) => (value & flags) != 0; + } } diff --git a/ClearScript/V8/V8DebugAgent.cs b/ClearScript/V8/V8DebugAgent.cs index 883b04dd..206f5d5d 100644 --- a/ClearScript/V8/V8DebugAgent.cs +++ b/ClearScript/V8/V8DebugAgent.cs @@ -30,7 +30,7 @@ internal sealed class V8DebugAgent : IDisposable private TcpListener tcpListener; private V8DebugClient activeClient; - private readonly InterlockedOneWayFlag disposedFlag = new InterlockedOneWayFlag(); + private readonly InterlockedOneWayFlag disposedFlag = new(); #endregion @@ -47,20 +47,26 @@ public V8DebugAgent(string name, string version, int port, bool remote, IV8Debug if (remote) { - started = MiscHelpers.Try(() => - { - tcpListener = new TcpListener(IPAddress.Any, port); - tcpListener.Start(); - }); + started = MiscHelpers.Try( + static ctx => + { + ctx.self.tcpListener = new TcpListener(IPAddress.Any, ctx.port); + ctx.self.tcpListener.Start(); + }, + (self: this, port) + ); } if (!started) { - started = MiscHelpers.Try(() => - { - tcpListener = new TcpListener(IPAddress.Loopback, port); - tcpListener.Start(); - }); + started = MiscHelpers.Try( + static ctx => + { + ctx.self.tcpListener = new TcpListener(IPAddress.Loopback, ctx.port); + ctx.self.tcpListener.Start(); + }, + (self: this, port) + ); } if (started) @@ -110,7 +116,7 @@ private void StartAcceptWebClient() private void OnWebClientAccepted(Task task) { - var succeeded = MiscHelpers.Try(out var socket, () => task.Result); + var succeeded = MiscHelpers.Try(out var socket, static task => task.Result, task); if (!disposedFlag.IsSet) { @@ -125,7 +131,7 @@ private void OnWebClientAccepted(Task task) private void OnWebContextCreated(Task task) { - if (MiscHelpers.Try(out var webContext, () => task.Result) && !disposedFlag.IsSet) + if (MiscHelpers.Try(out var webContext, static task => task.Result, task) && !disposedFlag.IsSet) { if (!webContext.Request.IsWebSocketRequest) { @@ -150,7 +156,7 @@ private void HandleWebRequest(WebContext webContext) if (webContext.Request.RawUrl.Equals("/json", StringComparison.OrdinalIgnoreCase) || webContext.Request.RawUrl.Equals("/json/list", StringComparison.OrdinalIgnoreCase)) { - if (activeClient != null) + if (activeClient is not null) { SendWebResponse(webContext, MiscHelpers.FormatInvariant( "[ {{\r\n" + @@ -249,7 +255,7 @@ private void StartAcceptWebSocket(WebContext webContext) private void OnWebSocketAccepted(WebContext webContext, Task task) { - if (MiscHelpers.Try(out var webSocket, () => task.Result)) + if (MiscHelpers.Try(out var webSocket, static task => task.Result, task)) { if (!ConnectClient(webSocket)) { @@ -265,7 +271,7 @@ private void OnWebSocketAccepted(WebContext webContext, Task task) private bool ConnectClient(WebSocket webSocket) { var client = new V8DebugClient(this, webSocket); - if (Interlocked.CompareExchange(ref activeClient, client, null) == null) + if (Interlocked.CompareExchange(ref activeClient, client, null) is null) { listener.ConnectClient(); client.Start(); @@ -279,7 +285,7 @@ private bool ConnectClient(WebSocket webSocket) private void DisconnectClient(WebSocket.ErrorCode errorCode, string message) { var client = Interlocked.Exchange(ref activeClient, null); - if (client != null) + if (client is not null) { client.Dispose(errorCode, message); listener.DisconnectClient(); @@ -295,9 +301,9 @@ public void Dispose() { if (disposedFlag.Set()) { - if (tcpListener != null) + if (tcpListener is not null) { - MiscHelpers.Try(tcpListener.Stop); + MiscHelpers.Try(static tcpListener => tcpListener.Stop(), tcpListener); } DisconnectClient(WebSocket.ErrorCode.EndpointUnavailable, "The V8 runtime has been destroyed"); diff --git a/ClearScript/V8/V8DebugClient.cs b/ClearScript/V8/V8DebugClient.cs index d2f0284e..e69325b9 100644 --- a/ClearScript/V8/V8DebugClient.cs +++ b/ClearScript/V8/V8DebugClient.cs @@ -20,10 +20,10 @@ internal sealed class V8DebugClient private readonly V8DebugAgent agent; private readonly WebSocket webSocket; - private readonly ConcurrentQueue queue = new ConcurrentQueue(); - private readonly SemaphoreSlim sendSemaphore = new SemaphoreSlim(1); + private readonly ConcurrentQueue queue = new(); + private readonly SemaphoreSlim sendSemaphore = new(1); - private readonly InterlockedOneWayFlag disposedFlag = new InterlockedOneWayFlag(); + private readonly InterlockedOneWayFlag disposedFlag = new(); #endregion diff --git a/ClearScript/V8/V8Proxy.cs b/ClearScript/V8/V8Proxy.cs index a0d4898d..6ac7fac1 100644 --- a/ClearScript/V8/V8Proxy.cs +++ b/ClearScript/V8/V8Proxy.cs @@ -17,7 +17,7 @@ namespace Microsoft.ClearScript.V8 { internal abstract partial class V8Proxy : IDisposable { - private static readonly object dataLock = new object(); + private static readonly object dataLock = new(); private static IntPtr hNativeAssembly; private static ulong splitImplCount; @@ -47,7 +47,7 @@ internal static void OnEntityHolderCreated() } catch { - gotNativeVersion = MiscHelpers.Try(out nativeVersion, V8SplitProxyNative.GetVersion); + gotNativeVersion = MiscHelpers.Try(out nativeVersion, static () => V8SplitProxyNative.GetVersion()); if (!gotNativeVersion) { throw; @@ -151,7 +151,7 @@ private static IntPtr LoadNativeLibrary(string baseName, string platform, string return hLibrary; } - messageBuilder.AppendInvariant("\n{0}: {1}", path, MiscHelpers.EnsureNonBlank(GetLoadLibraryErrorMessage(), "Unknown error")); + messageBuilder.AppendInvariant("\n{0}: {1}", path, GetLoadLibraryErrorMessage().ToNonBlank("Unknown error")); } var message = MiscHelpers.FormatInvariant("Cannot load ClearScript V8 library. Load failure information for {0}:{1}", fileName, messageBuilder); @@ -170,7 +170,7 @@ private static unsafe void InitializeICU() fixed (byte* pBytes = bytes) { var pICUData = (IntPtr)pBytes; - V8SplitProxyNative.InvokeNoThrow(instance => instance.V8Environment_InitializeICU(pICUData, Convert.ToUInt32(length))); + V8SplitProxyNative.InvokeNoThrow(static (instance, ctx) => instance.V8Environment_InitializeICU(ctx.pICUData, Convert.ToUInt32(ctx.length)), (pICUData, length)); } } } @@ -183,7 +183,7 @@ private static IEnumerable GetDirPaths(string platform, string architect var location = typeof(V8Proxy).Assembly.Location; if (!string.IsNullOrWhiteSpace(location)) { - if ((platform != null) && (architecture != null)) + if ((platform is not null) && (architecture is not null)) { yield return Path.Combine(Path.GetDirectoryName(location), "runtimes", $"{platform}-{architecture}", "native"); } diff --git a/ClearScript/V8/V8ProxyHelpers.cs b/ClearScript/V8/V8ProxyHelpers.cs index fccefadc..6a0053d8 100644 --- a/ClearScript/V8/V8ProxyHelpers.cs +++ b/ClearScript/V8/V8ProxyHelpers.cs @@ -7,6 +7,8 @@ using System.Runtime.InteropServices; using Microsoft.ClearScript.JavaScript; using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.V8.FastProxy; +using Microsoft.ClearScript.V8.SplitProxy; namespace Microsoft.ClearScript.V8 { @@ -29,9 +31,9 @@ public static void ReleaseHostObject(IntPtr pObject) GCHandle.FromIntPtr(pObject).Free(); } - public static IScope CreateAddRefHostObjectScope(object obj) + public static ValueScope CreateAddRefHostObjectScope(object obj) { - return Scope.Create(() => AddRefHostObject(obj), ReleaseHostObject); + return ScopeFactory.Create(static obj => AddRefHostObject(obj), static pObject => ReleaseHostObject(pObject), obj); } #endregion @@ -48,16 +50,6 @@ public static T GetHostObject(IntPtr pObject) where T : class return (T)GetHostObject(pObject); } - public static object GetHostObjectProperty(IntPtr pObject, string name) - { - return GetHostObjectProperty(GetHostObject(pObject), name); - } - - public static object GetHostObjectProperty(object obj, string name) - { - return ((IDynamic)obj).GetProperty(name); - } - public static object GetHostObjectProperty(IntPtr pObject, string name, out bool isCacheable) { return GetHostObjectProperty(GetHostObject(pObject), name, out isCacheable); @@ -166,7 +158,7 @@ public static Invocability GetHostObjectInvocability(IntPtr pObject) public static Invocability GetHostObjectInvocability(object obj) { var hostItem = obj as HostItem; - if (hostItem == null) + if (hostItem is null) { return Invocability.None; } @@ -196,6 +188,140 @@ public static object GetHostObjectAsyncEnumerator(object obj) #endregion + #region fast host object access + + public static void GetFastHostObjectProperty(IntPtr pObject, StdString.Ptr pName, V8Value.FastResult.Ptr pValue, out bool isCacheable) + { + GetFastHostObjectProperty(GetHostObject(pObject), pName, pValue, out isCacheable); + } + + public static void GetFastHostObjectProperty(object obj, StdString.Ptr pName, V8Value.FastResult.Ptr pValue, out bool isCacheable) + { + ((V8FastHostItem)obj).GetProperty(pName, pValue, out isCacheable); + } + + public static void SetFastHostObjectProperty(IntPtr pObject, StdString.Ptr pName, V8Value.FastArg.Ptr pValue) + { + SetFastHostObjectProperty(GetHostObject(pObject), pName, pValue); + } + + public static void SetFastHostObjectProperty(object obj, StdString.Ptr pName, V8Value.FastArg.Ptr pValue) + { + ((V8FastHostItem)obj).SetProperty(pName, pValue); + } + + public static V8FastHostPropertyFlags QueryFastHostObjectProperty(IntPtr pObject, StdString.Ptr pName) + { + return QueryFastHostObjectProperty(GetHostObject(pObject), pName); + } + + public static V8FastHostPropertyFlags QueryFastHostObjectProperty(object obj, StdString.Ptr pName) + { + return ((V8FastHostItem)obj).QueryProperty(pName); + } + + public static bool DeleteFastHostObjectProperty(IntPtr pObject, StdString.Ptr pName) + { + return DeleteFastHostObjectProperty(GetHostObject(pObject), pName); + } + + public static bool DeleteFastHostObjectProperty(object obj, StdString.Ptr pName) + { + return ((V8FastHostItem)obj).DeleteProperty(pName); + } + + public static IEnumerable GetFastHostObjectPropertyNames(IntPtr pObject) + { + return GetFastHostObjectPropertyNames(GetHostObject(pObject)); + } + + public static IEnumerable GetFastHostObjectPropertyNames(object obj) + { + return ((V8FastHostItem)obj).GetPropertyNames(); + } + + public static void GetFastHostObjectProperty(IntPtr pObject, int index, V8Value.FastResult.Ptr pValue) + { + GetFastHostObjectProperty(GetHostObject(pObject), index, pValue); + } + + public static void GetFastHostObjectProperty(object obj, int index, V8Value.FastResult.Ptr pValue) + { + ((V8FastHostItem)obj).GetProperty(index, pValue); + } + + public static void SetFastHostObjectProperty(IntPtr pObject, int index, V8Value.FastArg.Ptr pValue) + { + SetFastHostObjectProperty(GetHostObject(pObject), index, pValue); + } + + public static void SetFastHostObjectProperty(object obj, int index, V8Value.FastArg.Ptr pValue) + { + ((V8FastHostItem)obj).SetProperty(index, pValue); + } + + public static V8FastHostPropertyFlags QueryFastHostObjectProperty(IntPtr pObject, int index) + { + return QueryFastHostObjectProperty(GetHostObject(pObject), index); + } + + public static V8FastHostPropertyFlags QueryFastHostObjectProperty(object obj, int index) + { + return ((V8FastHostItem)obj).QueryProperty(index); + } + + public static bool DeleteFastHostObjectProperty(IntPtr pObject, int index) + { + return DeleteFastHostObjectProperty(GetHostObject(pObject), index); + } + + public static bool DeleteFastHostObjectProperty(object obj, int index) + { + return ((V8FastHostItem)obj).DeleteProperty(index); + } + + public static IEnumerable GetFastHostObjectPropertyIndices(IntPtr pObject) + { + return GetFastHostObjectPropertyIndices(GetHostObject(pObject)); + } + + public static IEnumerable GetFastHostObjectPropertyIndices(object obj) + { + return ((V8FastHostItem)obj).GetPropertyIndices(); + } + + public static void InvokeFastHostObject(IntPtr pObject, bool asConstructor, int argCount, V8Value.FastArg.Ptr pArgs, V8Value.FastResult.Ptr pResult) + { + InvokeFastHostObject(GetHostObject(pObject), asConstructor, argCount, pArgs, pResult); + } + + public static void InvokeFastHostObject(object obj, bool asConstructor, int argCount, V8Value.FastArg.Ptr pArgs, V8Value.FastResult.Ptr pResult) + { + ((V8FastHostItem)obj).Invoke(asConstructor, argCount, pArgs, pResult); + } + + public static void GetFastHostObjectEnumerator(IntPtr pObject, V8Value.FastResult.Ptr pResult) + { + GetFastHostObjectEnumerator(GetHostObject(pObject), pResult); + } + + public static void GetFastHostObjectEnumerator(object obj, V8Value.FastResult.Ptr pResult) + { + ((V8FastHostItem)obj).CreateEnumerator(pResult); + } + + public static void GetFastHostObjectAsyncEnumerator(IntPtr pObject, V8Value.FastResult.Ptr pResult) + { + GetFastHostObjectAsyncEnumerator(GetHostObject(pObject), pResult); + } + + public static void GetFastHostObjectAsyncEnumerator(object obj, V8Value.FastResult.Ptr pResult) + { + ((V8FastHostItem)obj).CreateAsyncEnumerator(pResult); + } + + #endregion + #region exception marshaling public static object MarshalExceptionToScript(IntPtr pSource, Exception exception) @@ -205,7 +331,7 @@ public static object MarshalExceptionToScript(IntPtr pSource, Exception exceptio public static object MarshalExceptionToScript(object source, Exception exception) { - return ((IScriptMarshalWrapper)source).Engine.MarshalToScript(exception); + return ((source as IScriptMarshalWrapper)?.Engine ?? ScriptEngine.Current)?.MarshalToScript(exception); } public static Exception MarshalExceptionToHost(object exception) @@ -220,7 +346,7 @@ public static Exception MarshalExceptionToHost(object exception) public static string LoadModule(IntPtr pSourceDocumentInfo, string specifier, out UniqueDocumentInfo documentInfo, out object exports) { var engine = ScriptEngine.Current; - if (!(engine is IJavaScriptEngine javaScriptEngine)) + if (engine is not IJavaScriptEngine javaScriptEngine) { throw new InvalidOperationException("Module loading requires a JavaScript engine"); } @@ -246,7 +372,7 @@ public static string LoadModule(IntPtr pSourceDocumentInfo, string specifier, ou else { var uri = document.Info.Uri; - var name = (uri != null) ? (uri.IsFile ? uri.LocalPath : uri.AbsoluteUri) : document.Info.Name; + var name = (uri is not null) ? (uri.IsFile ? uri.LocalPath : uri.AbsoluteUri) : document.Info.Name; throw new FileLoadException($"Unsupported document category '{category}'", name); } @@ -256,7 +382,7 @@ public static string LoadModule(IntPtr pSourceDocumentInfo, string specifier, ou public static IDictionary CreateModuleContext(IntPtr pDocumentInfo) { var engine = ScriptEngine.Current; - if (!(engine is IJavaScriptEngine)) + if (engine is not IJavaScriptEngine) { throw new InvalidOperationException("Module context construction requires a JavaScript engine"); } @@ -264,7 +390,7 @@ public static IDictionary CreateModuleContext(IntPtr pDocumentIn var documentInfo = (UniqueDocumentInfo)GetHostObject(pDocumentInfo); var callback = documentInfo.ContextCallback ?? engine.DocumentSettings.ContextCallback; - if ((callback != null) && MiscHelpers.Try(out var sharedContext, () => callback(documentInfo.Info)) && (sharedContext != null)) + if ((callback is not null) && MiscHelpers.Try(out var sharedContext, static ctx => ctx.callback(ctx.documentInfo.Info), (callback, documentInfo)) && (sharedContext is not null)) { var context = new Dictionary(sharedContext.Count); foreach (var pair in sharedContext) diff --git a/ClearScript/V8/V8Runtime.cs b/ClearScript/V8/V8Runtime.cs index 8475b692..abd383d3 100644 --- a/ClearScript/V8/V8Runtime.cs +++ b/ClearScript/V8/V8Runtime.cs @@ -18,10 +18,10 @@ public sealed class V8Runtime : IDisposable private static readonly IUniqueNameManager nameManager = new UniqueNameManager(); private DocumentSettings documentSettings; - private readonly DocumentSettings defaultDocumentSettings = new DocumentSettings(); + private readonly DocumentSettings defaultDocumentSettings = new(); private readonly V8IsolateProxy proxy; - private readonly InterlockedOneWayFlag disposedFlag = new InterlockedOneWayFlag(); + private readonly InterlockedOneWayFlag disposedFlag = new(); #endregion @@ -977,7 +977,7 @@ public void WriteHeapSnapshot(Stream stream) using (var engine = CreateScriptEngine(Name)) { - engine.ScriptInvoke(() => proxy.WriteHeapSnapshot(stream)); + engine.ScriptInvoke(static ctx => ctx.proxy.WriteHeapSnapshot(ctx.stream), (proxy, stream)); } } @@ -985,9 +985,9 @@ public void WriteHeapSnapshot(Stream stream) #region internal members - internal readonly UniqueFileNameManager DocumentNameManager = new UniqueFileNameManager(); + internal readonly UniqueFileNameManager DocumentNameManager = new(); - internal readonly HostItemCollateral HostItemCollateral = new HostItemCollateral(); + internal readonly HostItemCollateral HostItemCollateral = new(); internal static void OnDebuggerConnected(V8RuntimeDebuggerEventArgs args) { diff --git a/ClearScript/V8/V8ScriptEngine.InitScript.cs b/ClearScript/V8/V8ScriptEngine.InitScript.cs index 3017ae44..538b53ce 100644 --- a/ClearScript/V8/V8ScriptEngine.InitScript.cs +++ b/ClearScript/V8/V8ScriptEngine.InitScript.cs @@ -9,6 +9,6 @@ namespace Microsoft.ClearScript.V8 { public sealed partial class V8ScriptEngine { - private const string initScript = "Object.defineProperty(this,'EngineInternal',{value:(t=>{let e=t=>t.bind();function r(){return new this(...arguments)}let o=t.isHostObjectKey;delete t.isHostObjectKey;let n=t=>!!t&&!0===t[o],c=Promise,i=JSON,a=Symbol(),s=t.toJson;return delete t.toJson,Object.freeze({commandHolder:{},getCommandResult:e(t=>null==t?t:'function'!=typeof t.hasOwnProperty?'Module'===t[Symbol.toStringTag]?'[module]':'[external]':!0===t[o]?t:'function'!=typeof t.toString?'['+typeof t+']':t.toString()),strictEquals:e((t,e)=>t===e),invokeConstructor:e((t,e)=>{if('function'!=typeof t)throw Error('Function expected');return r.apply(t,Array.from(e))}),invokeMethod:e((t,e,r)=>{if('function'!=typeof e)throw Error('Function expected');return e.apply(t,Array.from(r))}),createPromise:e(function(){return new c(...arguments)}),isPromise:e(t=>t instanceof c),isHostObject:e(n),completePromiseWithResult:e((t,e,r)=>{try{e(t())}catch(o){r(o)}}),completePromise:e((t,e,r)=>{try{t(),e()}catch(o){r(o)}}),throwValue:e(t=>{throw t}),getStackTrace:e(()=>{try{throw Error('[stack trace]')}catch(t){return t.stack}}),toIterator:e(function*(t){try{for(;t.ScriptableMoveNext();)yield t.ScriptableCurrent}finally{t.ScriptableDispose()}}),toAsyncIterator:e(async function*(t){try{for(;await t.ScriptableMoveNextAsync();)yield t.ScriptableCurrent}finally{await t.ScriptableDisposeAsync()}}),getIterator:e(t=>t?.[Symbol.iterator]?.()),getAsyncIterator:e(t=>t?.[Symbol.asyncIterator]?.()),checkpoint:e(()=>{let e=t[a];if(e)throw e}),toJson:e((t,e)=>s?i.parse(s(t,e)):e),parseJson:e(t=>i.parse(t)),asyncGenerator:async function*(){}().constructor})})(this)});"; + private const string initScript = "Object.defineProperty(this,'EngineInternal',{value:(e=>{let t=e=>e.bind();function r(){return new this(...arguments)}let o=e.isHostObjectKey;delete e.isHostObjectKey;let n=e=>!!e&&!0===e[o],i=e.moduleResultKey;delete e.moduleResultKey;let c=e.getPromiseState;delete e.getPromiseState;let s=e.getPromiseResult;delete e.getPromiseResult;let a=Promise,l=JSON,u=Symbol(),y=e.toJson;return delete e.toJson,Object.freeze({commandHolder:{},getCommandResult:t(e=>null==e?e:'function'!=typeof e.hasOwnProperty?'Module'===e[Symbol.toStringTag]?'[module]':'[external]':!0===e[o]?e:'function'!=typeof e.toString?'['+typeof e+']':e.toString()),strictEquals:t((e,t)=>e===t),isPromise:t(e=>e instanceof a),isHostObject:t(n),invokeConstructor:t((e,t)=>{if('function'!=typeof e)throw Error('Function expected');return r.apply(e,Array.from(t))}),invokeMethod:t((e,t,r)=>{if('function'!=typeof t)throw Error('Function expected');return t.apply(e,Array.from(r))}),createPromise:t(function(){return new a(...arguments)}),createSettledPromiseWithResult:t(e=>{try{return a.resolve(e())}catch(t){return a.reject(t)}}),createSettledPromise:t(e=>{try{return e(),a.resolve()}catch(t){return a.reject(t)}}),completePromiseWithResult:t((e,t,r)=>{try{t(e())}catch(o){r(o)}}),completePromise:t((e,t,r)=>{try{e(),t()}catch(o){r(o)}}),getPromiseState:t(c),getPromiseResult:t(s),initializeTask:t((e,t,r,o,n)=>{t?e.then(o,n):r?n(s(e)):o(s(e))}),createArray:t(()=>[]),throwValue:t(e=>{throw e}),getStackTrace:t(()=>{try{throw Error('[stack trace]')}catch(e){return e.stack}}),toIterator:t(function*(e){try{for(;e.ScriptableMoveNext();)yield e.ScriptableCurrent}finally{e.ScriptableDispose()}}),toAsyncIterator:t(async function*(e){try{for(;await e.ScriptableMoveNextAsync();)yield e.ScriptableCurrent}finally{await e.ScriptableDisposeAsync()}}),getIterator:t(e=>e?.[Symbol.iterator]?.()),getAsyncIterator:t(e=>e?.[Symbol.asyncIterator]?.()),checkpoint:t(()=>{let t=e[u];if(t)throw t}),toJson:t((e,t)=>y?l.parse(y(e,t)):t),parseJson:t(e=>l.parse(e)),asyncGenerator:async function*(){}().constructor,getModuleResult:t(async(e,t)=>(await e,t[0]?.[i]))})})(this)});"; } } diff --git a/ClearScript/V8/V8ScriptEngine.InitScript.js b/ClearScript/V8/V8ScriptEngine.InitScript.js index cf81c7b0..b61526d2 100644 --- a/ClearScript/V8/V8ScriptEngine.InitScript.js +++ b/ClearScript/V8/V8ScriptEngine.InitScript.js @@ -13,6 +13,15 @@ Object.defineProperty(this, 'EngineInternal', { value: (globalObject => { delete globalObject.isHostObjectKey; const isHostObject = value => !!value && (value[isHostObjectKey] === true); + const moduleResultKey = globalObject.moduleResultKey; + delete globalObject.moduleResultKey; + + const getPromiseState = globalObject.getPromiseState; + delete globalObject.getPromiseState; + + const getPromiseResult = globalObject.getPromiseResult; + delete globalObject.getPromiseResult; + const savedPromise = Promise; const savedJSON = JSON; const checkpointSymbol = Symbol(); @@ -45,6 +54,10 @@ Object.defineProperty(this, 'EngineInternal', { value: (globalObject => { strictEquals: bind((left, right) => left === right), + isPromise: bind(value => value instanceof savedPromise), + + isHostObject: bind(isHostObject), + invokeConstructor: bind((constructor, args) => { if (typeof(constructor) !== 'function') { throw new Error('Function expected'); @@ -63,9 +76,24 @@ Object.defineProperty(this, 'EngineInternal', { value: (globalObject => { return new savedPromise(...arguments); }), - isPromise: bind(value => value instanceof savedPromise), + createSettledPromiseWithResult: bind(getResult => { + try { + return savedPromise.resolve(getResult()); + } + catch (exception) { + return savedPromise.reject(exception); + } + }), - isHostObject: bind(isHostObject), + createSettledPromise: bind(wait => { + try { + wait(); + return savedPromise.resolve(); + } + catch (exception) { + return savedPromise.reject(exception); + } + }), completePromiseWithResult: bind((getResult, resolve, reject) => { try { @@ -88,6 +116,25 @@ Object.defineProperty(this, 'EngineInternal', { value: (globalObject => { return undefined; }), + getPromiseState: bind(getPromiseState), + + getPromiseResult: bind(getPromiseResult), + + initializeTask: bind((promise, isPending, isRejected, onResolved, onRejected) => { + if (isPending) { + promise.then(onResolved, onRejected); + } + else if (isRejected) { + onRejected(getPromiseResult(promise)); + } + else { + onResolved(getPromiseResult(promise)); + } + return undefined; + }), + + createArray: bind(() => []), + throwValue: bind(value => { throw value; }), @@ -138,7 +185,12 @@ Object.defineProperty(this, 'EngineInternal', { value: (globalObject => { parseJson: bind(json => savedJSON.parse(json)), - asyncGenerator: (async function* () {})().constructor + asyncGenerator: (async function* () {})().constructor, + + getModuleResult: bind(async (result, metaHolder) => { + await result; + return metaHolder[0]?.[moduleResultKey]; + }) }); })(this) }); diff --git a/ClearScript/V8/V8ScriptEngine.NetStandard.cs b/ClearScript/V8/V8ScriptEngine.NetStandard.cs deleted file mode 100644 index 858553c2..00000000 --- a/ClearScript/V8/V8ScriptEngine.NetStandard.cs +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.Reflection; -using System.Threading.Tasks; -using Microsoft.ClearScript.JavaScript; -using Microsoft.ClearScript.Util; - -namespace Microsoft.ClearScript.V8 -{ - public sealed partial class V8ScriptEngine - { - #region internal members - - private void CompletePromise(ValueTask valueTask, object resolve, object reject) - { - Func getResult = () => valueTask.Result; - var engineInternal = (ScriptObject)script.GetProperty("EngineInternal"); - engineInternal.InvokeMethod("completePromiseWithResult", getResult, resolve, reject); - } - - private void CompletePromise(ValueTask valueTask, object resolve, object reject) - { - Action wait = () => WaitForValueTask(valueTask); - var engineInternal = (ScriptObject)script.GetProperty("EngineInternal"); - engineInternal.InvokeMethod("completePromise", wait, resolve, reject); - } - - private static void WaitForValueTask(ValueTask valueTask) - { - if (valueTask.IsCompletedSuccessfully) - { - return; - } - - if (valueTask.IsCanceled) - { - throw new TaskCanceledException(); - } - - valueTask.AsTask().Wait(); - } - - partial void TryConvertValueTaskToPromise(object obj, Action setResult) - { - if (obj.GetType().IsAssignableToGenericType(typeof(ValueTask<>), out var typeArgs)) - { - setResult(typeof(ValueTaskConverter<>).MakeSpecificType(typeArgs).InvokeMember("ToPromise", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, new[] { obj, this })); - } - else if (obj is ValueTask valueTask) - { - setResult(valueTask.ToPromise(this)); - } - } - - #endregion - - #region IJavaScriptEngine implementation - - object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) - { - if (valueTask.IsCompleted) - { - return CreatePromise((resolve, reject) => CompletePromise(valueTask, resolve, reject)); - } - - return ((IJavaScriptEngine)this).CreatePromiseForTask(valueTask.AsTask()); - } - - object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) - { - if (valueTask.IsCompleted) - { - return CreatePromise((resolve, reject) => CompletePromise(valueTask, resolve, reject)); - } - - return ((IJavaScriptEngine)this).CreatePromiseForTask(valueTask.AsTask()); - } - - #endregion - - #region Nested type: ValueTaskConverter - - private static class ValueTaskConverter - { - // ReSharper disable UnusedMember.Local - - public static object ToPromise(ValueTask valueTask, V8ScriptEngine engine) - { - return valueTask.ToPromise(engine); - } - - // ReSharper restore UnusedMember.Local - } - - #endregion - } -} diff --git a/ClearScript/V8/V8ScriptEngine.cs b/ClearScript/V8/V8ScriptEngine.cs index e88d3209..7a0089f4 100644 --- a/ClearScript/V8/V8ScriptEngine.cs +++ b/ClearScript/V8/V8ScriptEngine.cs @@ -2,16 +2,19 @@ // Licensed under the MIT license. using System; +using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Numerics; using System.Reflection; +using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; using Microsoft.ClearScript.JavaScript; using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.V8.FastProxy; using Newtonsoft.Json; namespace Microsoft.ClearScript.V8 @@ -32,15 +35,14 @@ public sealed partial class V8ScriptEngine : ScriptEngine, IJavaScriptEngine { #region data - private static readonly DocumentInfo initScriptInfo = new DocumentInfo(MiscHelpers.FormatInvariant("{0} [internal]", nameof(V8ScriptEngine))); + private static readonly DocumentInfo initScriptInfo = new(MiscHelpers.FormatInvariant("{0} [internal]", nameof(V8ScriptEngine))); private readonly V8Runtime runtime; private readonly bool usingPrivateRuntime; - private readonly V8ScriptEngineFlags engineFlags; private readonly V8ContextProxy proxy; private readonly V8ScriptItem script; - private readonly InterlockedOneWayFlag disposedFlag = new InterlockedOneWayFlag(); + private readonly InterlockedOneWayFlag disposedFlag = new(); private const int continuationInterval = 2000; private bool inContinuationTimerScope; @@ -214,9 +216,9 @@ public V8ScriptEngine(string name, V8RuntimeConstraints constraints, V8ScriptEng } internal V8ScriptEngine(V8Runtime runtime, string name, V8RuntimeConstraints constraints, V8ScriptEngineFlags flags, int debugPort) - : base((runtime != null) ? runtime.Name + ":" + name : name, "js") + : base((runtime is not null) ? runtime.Name + ":" + name : name, "js") { - if (runtime != null) + if (runtime is not null) { this.runtime = runtime; } @@ -229,18 +231,18 @@ internal V8ScriptEngine(V8Runtime runtime, string name, V8RuntimeConstraints con DocumentNameManager = runtime.DocumentNameManager; HostItemCollateral = runtime.HostItemCollateral; - engineFlags = flags; + Flags = flags; proxy = V8ContextProxy.Create(runtime.IsolateProxy, Name, flags, debugPort); script = (V8ScriptItem)GetRootItem(); - if (flags.HasFlag(V8ScriptEngineFlags.EnableStringifyEnhancements)) + if (flags.HasAllFlags(V8ScriptEngineFlags.EnableStringifyEnhancements)) { script.SetProperty("toJson", new Func(new JsonHelper(this).ToJson)); } Execute(initScriptInfo, initScript); - if (flags.HasFlag(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.AwaitDebuggerAndPauseOnStart)) + if (flags.HasAllFlags(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.AwaitDebuggerAndPauseOnStart)) { awaitDebuggerAndPause = true; } @@ -490,7 +492,7 @@ public V8Script Compile(string documentName, string code) public V8Script Compile(DocumentInfo documentInfo, string code) { VerifyNotDisposed(); - return ScriptInvoke(() => CompileInternal(documentInfo.MakeUnique(this), code)); + return ScriptInvoke(static ctx => ctx.self.CompileInternal(ctx.documentInfo.MakeUnique(ctx.self), ctx.code), (self: this, documentInfo, code)); } /// @@ -545,13 +547,18 @@ public V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cach { VerifyNotDisposed(); - V8Script tempScript = null; - cacheBytes = ScriptInvoke(() => - { - tempScript = CompileInternal(documentInfo.MakeUnique(this), code, cacheKind, out var tempCacheBytes); - return tempCacheBytes; - }); + var ctx = (self: this, documentInfo, code, cacheKind, cacheBytes: (byte[])null); + + var tempScript = ScriptInvoke( + static pCtx => + { + ref var ctx = ref pCtx.AsRef(); + return ctx.self.CompileInternal(ctx.documentInfo.MakeUnique(ctx.self), ctx.code, ctx.cacheKind, out ctx.cacheBytes); + }, + StructPtr.FromRef(ref ctx) + ); + cacheBytes = ctx.cacheBytes; return tempScript; } @@ -616,13 +623,18 @@ public V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cach { VerifyNotDisposed(); - V8Script tempScript = null; - cacheAccepted = ScriptInvoke(() => - { - tempScript = CompileInternal(documentInfo.MakeUnique(this), code, cacheKind, cacheBytes, out var tempCacheAccepted); - return tempCacheAccepted; - }); + var ctx = (self: this, documentInfo, code, cacheKind, cacheBytes, cacheAccepted: false); + + var tempScript = ScriptInvoke( + static pCtx => + { + ref var ctx = ref pCtx.AsRef(); + return ctx.self.CompileInternal(ctx.documentInfo.MakeUnique(ctx.self), ctx.code, ctx.cacheKind, ctx.cacheBytes, out ctx.cacheAccepted); + }, + StructPtr.FromRef(ref ctx) + ); + cacheAccepted = ctx.cacheAccepted; return tempScript; } @@ -681,19 +693,23 @@ public V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cach { VerifyNotDisposed(); - V8Script tempScript = null; - var tempCacheBytes = cacheBytes; - cacheResult = ScriptInvoke(() => - { - tempScript = CompileInternal(documentInfo.MakeUnique(this), code, cacheKind, ref tempCacheBytes, out var tempCacheUpdated); - return tempCacheUpdated; - }); + var ctx = (self: this, documentInfo, code, cacheKind, cacheBytes, cacheResult: V8CacheResult.Disabled); - if (cacheResult == V8CacheResult.Updated) + var tempScript = ScriptInvoke( + static pCtx => + { + ref var ctx = ref pCtx.AsRef(); + return ctx.self.CompileInternal(ctx.documentInfo.MakeUnique(ctx.self), ctx.code, ctx.cacheKind, ref ctx.cacheBytes, out ctx.cacheResult); + }, + StructPtr.FromRef(ref ctx) + ); + + if (ctx.cacheResult == V8CacheResult.Updated) { - cacheBytes = tempCacheBytes; + cacheBytes = ctx.cacheBytes; } + cacheResult = ctx.cacheResult; return tempScript; } @@ -1046,13 +1062,15 @@ public void WriteRuntimeHeapSnapshot(Stream stream) MiscHelpers.VerifyNonNullArgument(stream, nameof(stream)); VerifyNotDisposed(); - ScriptInvoke(() => proxy.WriteIsolateHeapSnapshot(stream)); + ScriptInvoke(static ctx => ctx.proxy.WriteIsolateHeapSnapshot(ctx.stream), (proxy, stream)); } #endregion #region internal members + internal V8ScriptEngineFlags Flags { get; } + internal V8Runtime.Statistics GetRuntimeStatistics() { VerifyNotDisposed(); @@ -1062,17 +1080,20 @@ internal V8Runtime.Statistics GetRuntimeStatistics() internal Statistics GetStatistics() { VerifyNotDisposed(); - return ScriptInvoke(() => - { - var statistics = proxy.GetStatistics(); - - if (commonJSManager != null) + return ScriptInvoke( + static self => { - statistics.CommonJSModuleCacheSize = CommonJSManager.ModuleCacheSize; - } + var statistics = self.proxy.GetStatistics(); - return statistics; - }); + if (self.commonJSManager is not null) + { + statistics.CommonJSModuleCacheSize = self.commonJSManager.ModuleCacheSize; + } + + return statistics; + }, + this + ); } internal bool Equals(V8ScriptItem left, V8ScriptItem right) @@ -1092,7 +1113,7 @@ internal bool Equals(V8ScriptItem left, V8ScriptItem right) private object GetRootItem() { - return MarshalToHost(ScriptInvoke(() => proxy.GetRootItem()), false); + return MarshalToHost(ScriptInvoke(static proxy => proxy.GetRootItem(), proxy), false); } private void VerifyNotDisposed() @@ -1103,6 +1124,8 @@ private void VerifyNotDisposed() } } + private string BaseExecuteCommand(string command) => base.ExecuteCommand(command); + // ReSharper disable ParameterHidesMember private object Execute(V8Script script, bool evaluate) @@ -1110,39 +1133,45 @@ private object Execute(V8Script script, bool evaluate) MiscHelpers.VerifyNonNullArgument(script, nameof(script)); VerifyNotDisposed(); - return MarshalToHost(ScriptInvoke(() => - { - if (inContinuationTimerScope || (ContinuationCallback == null)) - { - if (ShouldAwaitDebuggerAndPause(script.DocumentInfo)) + return MarshalToHost( + ScriptInvoke( + static ctx => { - proxy.AwaitDebuggerAndPause(); - } - - return ExecuteInternal(script, evaluate); - } + if (ctx.self.inContinuationTimerScope || (ctx.self.ContinuationCallback is null)) + { + if (ctx.self.ShouldAwaitDebuggerAndPause(ctx.script.DocumentInfo)) + { + ctx.self.proxy.AwaitDebuggerAndPause(); + } - var state = new Timer[] { null }; - using (state[0] = new Timer(_ => OnContinuationTimer(state[0]), null, Timeout.Infinite, Timeout.Infinite)) - { - inContinuationTimerScope = true; - try - { - state[0].Change(continuationInterval, Timeout.Infinite); + return ctx.self.ExecuteInternal(ctx.script, ctx.evaluate); + } - if (ShouldAwaitDebuggerAndPause(script.DocumentInfo)) + var state = new Timer[] { null }; + using (state[0] = new Timer(_ => ctx.self.OnContinuationTimer(state[0]), null, Timeout.Infinite, Timeout.Infinite)) { - proxy.AwaitDebuggerAndPause(); + ctx.self.inContinuationTimerScope = true; + try + { + state[0].Change(continuationInterval, Timeout.Infinite); + + if (ctx.self.ShouldAwaitDebuggerAndPause(ctx.script.DocumentInfo)) + { + ctx.self.proxy.AwaitDebuggerAndPause(); + } + + return ctx.self.ExecuteInternal(ctx.script, ctx.evaluate); + } + finally + { + ctx.self.inContinuationTimerScope = false; + } } - - return ExecuteInternal(script, evaluate); - } - finally - { - inContinuationTimerScope = false; - } - } - }), false); + }, + (self: this, script, evaluate) + ), + false + ); } // ReSharper restore ParameterHidesMember @@ -1168,7 +1197,7 @@ private V8Script CompileInternal(UniqueDocumentInfo documentInfo, string code) // ReSharper disable once LocalVariableHidesMember var script = proxy.Compile(documentInfo, code); - if (module != null) + if (module is not null) { module.Evaluator = () => proxy.Execute(script, true); } @@ -1197,7 +1226,7 @@ private V8Script CompileInternal(UniqueDocumentInfo documentInfo, string code, V // ReSharper disable once LocalVariableHidesMember var script = proxy.Compile(documentInfo, code, cacheKind, out cacheBytes); - if (module != null) + if (module is not null) { module.Evaluator = () => proxy.Execute(script, true); } @@ -1226,7 +1255,7 @@ private V8Script CompileInternal(UniqueDocumentInfo documentInfo, string code, V // ReSharper disable once LocalVariableHidesMember var script = proxy.Compile(documentInfo, code, cacheKind, cacheBytes, out cacheAccepted); - if (module != null) + if (module is not null) { module.Evaluator = () => proxy.Execute(script, true); } @@ -1255,7 +1284,7 @@ private V8Script CompileInternal(UniqueDocumentInfo documentInfo, string code, V // ReSharper disable once LocalVariableHidesMember var script = proxy.Compile(documentInfo, code, cacheKind, ref cacheBytes, out cacheResult); - if (module != null) + if (module is not null) { module.Evaluator = () => proxy.Execute(script, true); } @@ -1303,7 +1332,7 @@ private bool ShouldAwaitDebuggerAndPause(DocumentInfo documentInfo) { if (!awaitDebuggerAndPause.HasValue) { - if (documentInfo.Flags.GetValueOrDefault().HasFlag(DocumentFlags.AwaitDebuggerAndPause)) + if (documentInfo.Flags.GetValueOrDefault().HasAllFlags(DocumentFlags.AwaitDebuggerAndPause)) { awaitDebuggerAndPause = false; return true; @@ -1326,7 +1355,7 @@ private void OnContinuationTimer(Timer timer) try { var callback = ContinuationCallback; - if ((callback != null) && !callback()) + if ((callback is not null) && !callback()) { Interrupt(); } @@ -1347,6 +1376,38 @@ private object CreatePromise(Action executor) return V8ScriptItem.Wrap(this, v8Internal.InvokeMethod(false, "createPromise", executor)); } + private object CreateSettledPromise(Task task) + { + VerifyNotDisposed(); + Func getResult = () => task.Result; + var v8Internal = (V8ScriptItem)script.GetProperty("EngineInternal"); + return V8ScriptItem.Wrap(this, v8Internal.InvokeMethod(false, "createSettledPromiseWithResult", getResult)); + } + + private object CreateSettledPromise(Task task) + { + VerifyNotDisposed(); + Action wait = task.Wait; + var v8Internal = (V8ScriptItem)script.GetProperty("EngineInternal"); + return V8ScriptItem.Wrap(this, v8Internal.InvokeMethod(false, "createSettledPromise", wait)); + } + + private object CreateSettledPromise(ValueTask valueTask) + { + VerifyNotDisposed(); + Func getResult = () => valueTask.Result; + var v8Internal = (V8ScriptItem)script.GetProperty("EngineInternal"); + return V8ScriptItem.Wrap(this, v8Internal.InvokeMethod(false, "createSettledPromiseWithResult", getResult)); + } + + private object CreateSettledPromise(ValueTask valueTask) + { + VerifyNotDisposed(); + Action wait = () => WaitForValueTask(valueTask); + var v8Internal = (V8ScriptItem)script.GetProperty("EngineInternal"); + return V8ScriptItem.Wrap(this, v8Internal.InvokeMethod(false, "createSettledPromise", wait)); + } + private void CompletePromise(Task task, object resolve, object reject) { Func getResult = () => task.Result; @@ -1361,7 +1422,20 @@ private void CompletePromise(Task task, object resolve, object reject) engineInternal.InvokeMethod("completePromise", wait, resolve, reject); } - partial void TryConvertValueTaskToPromise(object obj, Action setResult); + private static void WaitForValueTask(ValueTask valueTask) + { + if (valueTask.IsCompletedSuccessfully) + { + return; + } + + if (valueTask.IsCanceled) + { + throw new TaskCanceledException(); + } + + valueTask.AsTask().Wait(); + } #endregion @@ -1415,13 +1489,16 @@ public override ScriptObject Global /// public override string ExecuteCommand(string command) { - return ScriptInvoke(() => - { - var engineInternal = (ScriptObject)script.GetProperty("EngineInternal"); - var commandHolder = (ScriptObject)engineInternal.GetProperty("commandHolder"); - commandHolder.SetProperty("command", command); - return base.ExecuteCommand("EngineInternal.getCommandResult(eval(EngineInternal.commandHolder.command))"); - }); + return ScriptInvoke( + static ctx => + { + var engineInternal = (ScriptObject)ctx.self.script.GetProperty("EngineInternal"); + var commandHolder = (ScriptObject)engineInternal.GetProperty("commandHolder"); + commandHolder.SetProperty("command", ctx.command); + return ctx.self.BaseExecuteCommand("EngineInternal.getCommandResult(eval(EngineInternal.commandHolder.command))"); + }, + (self: this, command) + ); } /// @@ -1463,43 +1540,49 @@ public override void CollectGarbage(bool exhaustive) internal override bool EnumerateExtensionMethods => base.EnumerateExtensionMethods && !SuppressExtensionMethodEnumeration; - internal override bool UseCaseInsensitiveMemberBinding => engineFlags.HasFlag(V8ScriptEngineFlags.UseCaseInsensitiveMemberBinding); + internal override bool UseCaseInsensitiveMemberBinding => Flags.HasAllFlags(V8ScriptEngineFlags.UseCaseInsensitiveMemberBinding); internal override void AddHostItem(string itemName, HostItemFlags flags, object item) { VerifyNotDisposed(); - var globalMembers = flags.HasFlag(HostItemFlags.GlobalMembers); - if (globalMembers && engineFlags.HasFlag(V8ScriptEngineFlags.DisableGlobalMembers)) + var globalMembers = flags.HasAllFlags(HostItemFlags.GlobalMembers); + if (globalMembers && Flags.HasAllFlags(V8ScriptEngineFlags.DisableGlobalMembers)) { throw new InvalidOperationException("GlobalMembers support is disabled in this script engine"); } MiscHelpers.VerifyNonNullArgument(itemName, nameof(itemName)); - Debug.Assert(item != null); + Debug.Assert(item is not null); - ScriptInvoke(() => - { - var marshaledItem = MarshalToScript(item, flags); - if (!(marshaledItem is HostItem)) + ScriptInvoke( + static ctx => { - throw new InvalidOperationException("Invalid host item"); - } + var marshaledItem = ctx.self.MarshalToScript(ctx.item, ctx.flags); + if ((marshaledItem is not HostItem) && (marshaledItem is not V8FastHostItem)) + { + throw new InvalidOperationException("Invalid host item"); + } - proxy.AddGlobalItem(itemName, marshaledItem, globalMembers); - }); + ctx.self.proxy.AddGlobalItem(ctx.itemName, marshaledItem, ctx.globalMembers); + }, + (self: this, itemName, flags, item, globalMembers) + ); } internal override object MarshalToScript(object obj, HostItemFlags flags) { - const long maxIntInDouble = (1L << 53) - 1; + return MarshalToScriptInternal(obj, flags, null); + } - if (obj == null) + private object MarshalToScriptInternal(object obj, HostItemFlags flags, Dictionary marshaledArrayMap) + { + if (obj is null) { obj = NullExportValue; } - if (obj == null) + if (obj is null) { return DBNull.Value; } @@ -1531,12 +1614,12 @@ internal override object MarshalToScript(object obj, HostItemFlags flags) if (obj is long longValue) { - if (engineFlags.HasFlag(V8ScriptEngineFlags.MarshalAllLongAsBigInt)) + if (Flags.HasAllFlags(V8ScriptEngineFlags.MarshalAllInt64AsBigInt)) { return new BigInteger(longValue); } - if (engineFlags.HasFlag(V8ScriptEngineFlags.MarshalUnsafeLongAsBigInt) && (Math.Abs(longValue) > maxIntInDouble)) + if (Flags.HasAllFlags(V8ScriptEngineFlags.MarshalUnsafeInt64AsBigInt) && ((longValue < -MiscHelpers.MaxInt64InDouble) || (longValue > MiscHelpers.MaxInt64InDouble))) { return new BigInteger(longValue); } @@ -1544,23 +1627,23 @@ internal override object MarshalToScript(object obj, HostItemFlags flags) if (obj is ulong ulongValue) { - if (engineFlags.HasFlag(V8ScriptEngineFlags.MarshalAllLongAsBigInt)) + if (Flags.HasAllFlags(V8ScriptEngineFlags.MarshalAllInt64AsBigInt)) { return new BigInteger(ulongValue); } - if (engineFlags.HasFlag(V8ScriptEngineFlags.MarshalUnsafeLongAsBigInt) && (ulongValue > maxIntInDouble)) + if (Flags.HasAllFlags(V8ScriptEngineFlags.MarshalUnsafeInt64AsBigInt) && (ulongValue > MiscHelpers.MaxInt64InDouble)) { return new BigInteger(ulongValue); } } - if (engineFlags.HasFlag(V8ScriptEngineFlags.EnableDateTimeConversion) && (obj is DateTime)) + if (Flags.HasAllFlags(V8ScriptEngineFlags.EnableDateTimeConversion) && (obj is DateTime)) { return obj; } - if (engineFlags.HasFlag(V8ScriptEngineFlags.EnableTaskPromiseConversion)) + if (Flags.HasAllFlags(V8ScriptEngineFlags.EnableTaskPromiseConversion)) { // .NET Core async functions return Task subclass instances that trigger result wrapping @@ -1570,19 +1653,26 @@ internal override object MarshalToScript(object obj, HostItemFlags flags) testObject = testHostObject.Target; } - if (testObject != null) + if (testObject is not null) { - if (testObject.GetType().IsAssignableToGenericType(typeof(Task<>), out var typeArgs)) + if (testObject.GetType().IsAssignableToGenericType(typeof(Task<>), out var taskTypeArgs) && (taskTypeArgs.Length > 0) && taskTypeArgs[0].IsAccessible(this)) { - obj = typeof(TaskConverter<>).MakeSpecificType(typeArgs).InvokeMember("ToPromise", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, new[] { testObject, this }); + obj = typeof(TaskConverter<>).MakeSpecificType(taskTypeArgs).InvokeMember("ToPromise", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, new[] { testObject, this }); } else if (testObject is Task task) { obj = task.ToPromise(this); } - else if (engineFlags.HasFlag(V8ScriptEngineFlags.EnableValueTaskPromiseConversion)) + else if (Flags.HasAllFlags(V8ScriptEngineFlags.EnableValueTaskPromiseConversion)) { - TryConvertValueTaskToPromise(testObject, result => obj = result); + if (obj.GetType().IsAssignableToGenericType(typeof(ValueTask<>), out var valueTaskTypeArgs)) + { + obj = typeof(ValueTaskConverter<>).MakeSpecificType(valueTaskTypeArgs).InvokeMember("ToPromise", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, new[] { obj, this }); + } + else if (obj is ValueTask valueTask) + { + obj = valueTask.ToPromise(this); + } } } } @@ -1598,11 +1688,34 @@ internal override object MarshalToScript(object obj, HostItemFlags flags) } var hostTarget = obj as HostTarget; - if ((hostTarget != null) && !(hostTarget is IHostVariable)) + if ((hostTarget is not null) && (hostTarget is not IHostVariable)) { obj = hostTarget.Target; } + if (Flags.HasAllFlags(V8ScriptEngineFlags.EnableArrayConversion)) + { + if ((obj is Array array) && ((hostTarget is null) || hostTarget.Type.IsArray) && (array.Rank == 1)) + { + if (marshaledArrayMap?.TryGetValue(array, out var scriptArray) != true) + { + var v8Internal = (V8ScriptItem)script.GetProperty("EngineInternal"); + scriptArray = (V8ScriptItem)V8ScriptItem.Wrap(this, v8Internal.InvokeMethod(false, "createArray")); + (marshaledArrayMap ?? (marshaledArrayMap = new Dictionary())).Add(array, scriptArray); + + var elementType = array.GetType().GetElementType(); + var upperBound = array.GetUpperBound(0); + for (var index = array.GetLowerBound(0); index <= upperBound; index++) + { + var result = PrepareResult(array.GetValue(index), elementType, ScriptMemberFlags.None, false); + scriptArray.SetProperty(false, index, MarshalToScriptInternal(result, flags, marshaledArrayMap)); + } + } + + obj = scriptArray; + } + } + if (obj is ScriptItem scriptItem) { if ((scriptItem.Engine is V8ScriptEngine that) && (that.runtime == runtime)) @@ -1616,19 +1729,29 @@ internal override object MarshalToScript(object obj, HostItemFlags flags) } } + if (obj is IV8FastHostObject fastObject) + { + return V8FastHostItem.Wrap(this, fastObject, flags); + } + return HostItem.Wrap(this, hostTarget ?? obj, flags); } internal override object MarshalToHost(object obj, bool preserveHostTarget) { - if (obj == null) + return MarshalToHostInternal(obj, preserveHostTarget, null); + } + + private object MarshalToHostInternal(object obj, bool preserveHostTarget, Dictionary marshaledArrayMap) + { + if (obj is null) { return UndefinedImportValue; } if (obj is DBNull) { - return null; + return NullImportValue; } if (MiscHelpers.TryMarshalPrimitiveToHost(obj, DisableFloatNarrowing, out var result)) @@ -1636,6 +1759,11 @@ internal override object MarshalToHost(object obj, bool preserveHostTarget) return result; } + if (obj is V8FastHostItem fastHostItem) + { + return fastHostItem.Target; + } + if (obj is HostTarget hostTarget) { return preserveHostTarget ? hostTarget : hostTarget.Target; @@ -1651,57 +1779,83 @@ internal override object MarshalToHost(object obj, bool preserveHostTarget) return obj; } - var scriptItem = V8ScriptItem.Wrap(this, obj); - if (engineFlags.HasFlag(V8ScriptEngineFlags.EnableTaskPromiseConversion) && (obj is IV8Object v8Object) && v8Object.IsPromise) - { - return scriptItem.ToTask(); - } - - return scriptItem; - } + var wrappedObject = V8ScriptItem.Wrap(this, obj); - internal override object Execute(UniqueDocumentInfo documentInfo, string code, bool evaluate) - { - VerifyNotDisposed(); - - return ScriptInvoke(() => + if (obj is IV8Object v8Object) { - if ((documentNames != null) && !documentInfo.Flags.GetValueOrDefault().HasFlag(DocumentFlags.IsTransient)) + var scriptItem = (V8ScriptItem)wrappedObject; + + if (Flags.HasAllFlags(V8ScriptEngineFlags.EnableTaskPromiseConversion) && v8Object.IsPromise) { - documentNames.Add(documentInfo.UniqueName); + return wrappedObject.ToTask(); } - if (inContinuationTimerScope || (ContinuationCallback == null)) + if (Flags.HasAllFlags(V8ScriptEngineFlags.EnableArrayConversion) && v8Object.IsArray) { - if (ShouldAwaitDebuggerAndPause(documentInfo.Info)) + if (marshaledArrayMap?.TryGetValue(scriptItem, out var array) != true) { - proxy.AwaitDebuggerAndPause(); + array = new object[((IList)scriptItem).Count]; + (marshaledArrayMap ?? (marshaledArrayMap = new Dictionary())).Add(scriptItem, array); + + var length = array.Length; + for (var index = 0; index < length; index++) + { + array[index] = MarshalToHostInternal(scriptItem.GetProperty(false, index), false, marshaledArrayMap); + } } - return ExecuteInternal(documentInfo, code, evaluate); + return array; } + } + + return wrappedObject; + } + + internal override object Execute(UniqueDocumentInfo documentInfo, string code, bool evaluate) + { + VerifyNotDisposed(); - var state = new Timer[] { null }; - using (state[0] = new Timer(_ => OnContinuationTimer(state[0]), null, Timeout.Infinite, Timeout.Infinite)) + return ScriptInvoke( + static ctx => { - inContinuationTimerScope = true; - try + if ((ctx.self.documentNames is not null) && !ctx.documentInfo.Flags.GetValueOrDefault().HasAllFlags(DocumentFlags.IsTransient)) { - state[0].Change(continuationInterval, Timeout.Infinite); + ctx.self.documentNames.Add(ctx.documentInfo.UniqueName); + } - if (ShouldAwaitDebuggerAndPause(documentInfo.Info)) + if (ctx.self.inContinuationTimerScope || (ctx.self.ContinuationCallback is null)) + { + if (ctx.self.ShouldAwaitDebuggerAndPause(ctx.documentInfo.Info)) { - proxy.AwaitDebuggerAndPause(); + ctx.self.proxy.AwaitDebuggerAndPause(); } - return ExecuteInternal(documentInfo, code, evaluate); + return ctx.self.ExecuteInternal(ctx.documentInfo, ctx.code, ctx.evaluate); } - finally + + var state = new Timer[] { null }; + using (state[0] = new Timer(_ => ctx.self.OnContinuationTimer(state[0]), null, Timeout.Infinite, Timeout.Infinite)) { - inContinuationTimerScope = false; + ctx.self.inContinuationTimerScope = true; + try + { + state[0].Change(continuationInterval, Timeout.Infinite); + + if (ctx.self.ShouldAwaitDebuggerAndPause(ctx.documentInfo.Info)) + { + ctx.self.proxy.AwaitDebuggerAndPause(); + } + + return ctx.self.ExecuteInternal(ctx.documentInfo, ctx.code, ctx.evaluate); + } + finally + { + ctx.self.inContinuationTimerScope = false; + } } - } - }); + }, + (self: this, documentInfo, code, evaluate) + ); } internal override object ExecuteRaw(UniqueDocumentInfo documentInfo, string code, bool evaluate) @@ -1714,7 +1868,7 @@ internal override object ExecuteRaw(UniqueDocumentInfo documentInfo, string code internal override void OnAccessSettingsChanged() { base.OnAccessSettingsChanged(); - ScriptInvoke(() => proxy.OnAccessSettingsChanged()); + ScriptInvoke(static proxy => proxy.OnAccessSettingsChanged(), proxy); } #endregion @@ -1726,18 +1880,56 @@ internal override void ScriptInvoke(Action action) VerifyNotDisposed(); using (CreateEngineScope()) { - proxy.InvokeWithLock(() => ScriptInvokeInternal(action)); + proxy.InvokeWithLock(static ctx => ctx.self.ScriptInvokeInternal(ctx.action), (self: this, action)); } } - internal override T ScriptInvoke(Func func) + internal override void ScriptInvoke(Action action, in TArg arg) { VerifyNotDisposed(); using (CreateEngineScope()) { - var result = default(T); - proxy.InvokeWithLock(() => result = ScriptInvokeInternal(func)); - return result; + proxy.InvokeWithLock(static ctx => ctx.self.ScriptInvokeInternal(ctx.action, ctx.arg), (self: this, action, arg)); + } + } + + internal override TResult ScriptInvoke(Func func) + { + VerifyNotDisposed(); + using (CreateEngineScope()) + { + var ctx = (self: this, func, result: default(TResult)); + + proxy.InvokeWithLock( + static pCtx => + { + ref var ctx = ref pCtx.AsRef(); + ctx.result = ctx.self.ScriptInvokeInternal(ctx.func); + }, + StructPtr.FromRef(ref ctx) + ); + + return ctx.result; + } + } + + internal override TResult ScriptInvoke(Func func, in TArg arg) + { + VerifyNotDisposed(); + using (CreateEngineScope()) + { + var ctx = (self: this, func, arg, result: default(TResult)); + + proxy.InvokeWithLock( + static pCtx => + { + ref var ctx = ref pCtx.AsRef(); + ctx.result = ctx.self.ScriptInvokeInternal(ctx.func, ctx.arg); + }, + StructPtr.FromRef(ref ctx) + ); + + return ctx.result; } } @@ -1782,6 +1974,72 @@ protected override void Dispose(bool disposing) #endregion + #region fast host item cache + + private readonly ConditionalWeakTable>> fastHostItemCache = new(); + + internal V8FastHostItem GetOrCreateFastHostItem(IV8FastHostObject target, HostItemFlags flags) + { + var cacheEntry = fastHostItemCache.GetOrCreateValue(target); + + List> activeWeakRefs = null; + var staleWeakRefCount = 0; + + foreach (var weakRef in cacheEntry) + { + if (!weakRef.TryGetTarget(out var hostItem)) + { + staleWeakRefCount++; + } + else + { + if (hostItem.Flags == flags) + { + return hostItem; + } + + if (activeWeakRefs is null) + { + activeWeakRefs = new List>(cacheEntry.Count); + } + + activeWeakRefs.Add(weakRef); + } + } + + if (staleWeakRefCount > 4) + { + cacheEntry.Clear(); + if (activeWeakRefs is not null) + { + cacheEntry.Capacity = activeWeakRefs.Count + 1; + cacheEntry.AddRange(activeWeakRefs); + } + } + + return CreateFastHostItem(target, flags, cacheEntry); + } + + private V8FastHostItem CreateFastHostItem(IV8FastHostObject target, HostItemFlags flags, List> cacheEntry) + { + var newHostItem = new V8FastHostItem(this, target, flags); + + if (cacheEntry is not null) + { + cacheEntry.Add(new WeakReference(newHostItem)); + } + + // ReSharper disable once SuspiciousTypeConversion.Global + if (target is IScriptableObject scriptableObject) + { + scriptableObject.OnExposedToScriptCode(this); + } + + return newHostItem; + } + + #endregion + #region IJavaScriptEngine implementation uint IJavaScriptEngine.BaseLanguageVersion => 8; @@ -1792,7 +2050,12 @@ protected override void Dispose(bool disposing) object IJavaScriptEngine.CreatePromiseForTask(Task task) { - var scheduler = (engineFlags.HasFlag(V8ScriptEngineFlags.UseSynchronizationContexts) && MiscHelpers.Try(out var contextScheduler, TaskScheduler.FromCurrentSynchronizationContext)) ? contextScheduler : TaskScheduler.Current; + if (task.IsCompleted) + { + return CreateSettledPromise(task); + } + + var scheduler = (Flags.HasAllFlags(V8ScriptEngineFlags.UseSynchronizationContexts) && MiscHelpers.Try(out var contextScheduler, static () => TaskScheduler.FromCurrentSynchronizationContext())) ? contextScheduler : TaskScheduler.Current; return CreatePromise((resolve, reject) => { task.ContinueWith(_ => CompletePromise(task, resolve, reject), CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously, scheduler); @@ -1801,28 +2064,55 @@ object IJavaScriptEngine.CreatePromiseForTask(Task task) object IJavaScriptEngine.CreatePromiseForTask(Task task) { - var scheduler = (engineFlags.HasFlag(V8ScriptEngineFlags.UseSynchronizationContexts) && MiscHelpers.Try(out var contextScheduler, TaskScheduler.FromCurrentSynchronizationContext)) ? contextScheduler : TaskScheduler.Current; + if (task.IsCompleted) + { + return CreateSettledPromise(task); + } + + var scheduler = (Flags.HasAllFlags(V8ScriptEngineFlags.UseSynchronizationContexts) && MiscHelpers.Try(out var contextScheduler, static () => TaskScheduler.FromCurrentSynchronizationContext())) ? contextScheduler : TaskScheduler.Current; return CreatePromise((resolve, reject) => { task.ContinueWith(_ => CompletePromise(task, resolve, reject), CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously, scheduler); }); } + object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) + { + if (valueTask.IsCompleted) + { + return CreateSettledPromise(valueTask); + } + + return ((IJavaScriptEngine)this).CreatePromiseForTask(valueTask.AsTask()); + } + + object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) + { + if (valueTask.IsCompleted) + { + return CreateSettledPromise(valueTask); + } + + return ((IJavaScriptEngine)this).CreatePromiseForTask(valueTask.AsTask()); + } + Task IJavaScriptEngine.CreateTaskForPromise(ScriptObject promise) { - if (!(promise is V8ScriptItem v8ScriptItem) || !v8ScriptItem.IsPromise) + if ((promise is not V8ScriptItem v8ScriptItem) || !v8ScriptItem.IsPromise) { throw new ArgumentException("The object is not a V8 promise", nameof(promise)); } var source = new TaskCompletionSource(); - var context = engineFlags.HasFlag(V8ScriptEngineFlags.UseSynchronizationContexts) ? SynchronizationContext.Current : null; + var context = Flags.HasAllFlags(V8ScriptEngineFlags.UseSynchronizationContexts) ? SynchronizationContext.Current : null; Action setResultWorker = result => source.SetResult(result); - var setResult = (context == null) ? setResultWorker : result => context.Post(_ => setResultWorker(result), null); + var setResult = (context is null) ? setResultWorker : result => context.Post(_ => setResultWorker(result), null); Action setExceptionWorker = exception => source.SetException(exception); - var setException = (context == null) ? setExceptionWorker : exception => context.Post(_ => setExceptionWorker(exception), null); + var setException = (context is null) ? setExceptionWorker : exception => context.Post(_ => setExceptionWorker(exception), null); + + var v8Internal = (V8ScriptItem)script.GetProperty("EngineInternal"); Action onResolved = result => { @@ -1833,8 +2123,7 @@ Task IJavaScriptEngine.CreateTaskForPromise(ScriptObject promise) { try { - var engineInternal = (ScriptObject)script.GetProperty("EngineInternal"); - engineInternal.InvokeMethod("throwValue", error); + v8Internal.InvokeMethod("throwValue", error); } catch (Exception exception) { @@ -1842,7 +2131,8 @@ Task IJavaScriptEngine.CreateTaskForPromise(ScriptObject promise) } }; - v8ScriptItem.InvokeMethod(false, "then", onResolved, onRejected); + var flags = v8ScriptItem.Flags; + v8Internal.InvokeMethod(false, "initializeTask", v8ScriptItem, flags.HasAllFlags(JavaScriptObjectFlags.Pending), flags.HasAllFlags(JavaScriptObjectFlags.Rejected), onResolved, onRejected); return source.Task; } @@ -1891,13 +2181,29 @@ public static object ToPromise(Task task, V8ScriptEngine engine) #endregion + #region Nested type: ValueTaskConverter + + private static class ValueTaskConverter + { + // ReSharper disable UnusedMember.Local + + public static object ToPromise(ValueTask valueTask, V8ScriptEngine engine) + { + return valueTask.ToPromise(engine); + } + + // ReSharper restore UnusedMember.Local + } + + #endregion + #region Nested type: JsonHelper /// public sealed class JsonHelper : JsonConverter { private readonly ScriptObject stringify; - private readonly HashSet cycleDetectionSet = new HashSet(); + private readonly HashSet cycleDetectionSet = new(); /// public JsonHelper(V8ScriptEngine engine) @@ -1909,14 +2215,13 @@ public JsonHelper(V8ScriptEngine engine) /// public string ToJson(object key, object value) { - key = MiscHelpers.EnsureNonBlank(key.ToString(), "[root]"); + key = key.ToString().ToNonBlank("[root]"); - if (cycleDetectionSet.Contains(value)) + if (!cycleDetectionSet.Add(value)) { throw new InvalidOperationException($"Cycle detected at key '{key}' during JSON serialization"); } - cycleDetectionSet.Add(value); try { return JsonConvert.SerializeObject(value, this); diff --git a/ClearScript/V8/V8ScriptEngineFlags.cs b/ClearScript/V8/V8ScriptEngineFlags.cs index 9fb36b3f..28bd9945 100644 --- a/ClearScript/V8/V8ScriptEngineFlags.cs +++ b/ClearScript/V8/V8ScriptEngineFlags.cs @@ -62,21 +62,33 @@ public enum V8ScriptEngineFlags EnableDynamicModuleImports = 0x00000020, /// - /// Specifies that long integers with values greater than + /// Specifies that 64-bit integers with values greater than /// Number.MAX_SAFE_INTEGER /// or less than /// Number.MIN_SAFE_INTEGER /// are to be marshaled as /// BigInt. - /// This option is ignored if is specified. + /// This option is ignored if is specified. /// - MarshalUnsafeLongAsBigInt = 0x00000040, + MarshalUnsafeInt64AsBigInt = 0x00000040, /// - /// Specifies that all long integers are to be marshaled as + /// Equivalent to . + /// + [Obsolete("This option has been renamed to MarshalUnsafeInt64AsBigInt.")] + MarshalUnsafeLongAsBigInt = MarshalUnsafeInt64AsBigInt, + + /// + /// Specifies that all 64-bit integers are to be marshaled as /// BigInt. /// - MarshalAllLongAsBigInt = 0x00000080, + MarshalAllInt64AsBigInt = 0x00000080, + + /// + /// Equivalent to . + /// + [Obsolete("This option has been renamed to MarshalAllInt64AsBigInt.")] + MarshalAllLongAsBigInt = MarshalAllInt64AsBigInt, /// /// Specifies that the script engine is to perform automatic conversion between @@ -146,6 +158,22 @@ public enum V8ScriptEngineFlags /// hint and may be ignored on some systems. On platforms that support it, this option can /// degrade overall system performance or power efficiency, so caution is recommended. /// - SetTimerResolution = 0x00008000 + SetTimerResolution = 0x00008000, + + /// + /// Specifies that the script engine is to perform automatic conversion between .NET and + /// JavaScript arrays. This conversion is bidirectional and lossy. A .NET array constructed + /// from a JavaScript array always has an element type of , + /// making it impossible for script code to specify a strongly typed array as a .NET method + /// argument or property value. Excessive copying of array contents can also impact + /// application performance and/or memory consumption. Caution is recommended. + /// + EnableArrayConversion = 0x00010000 + } + + internal static class V8ScriptEngineFlagsHelpers + { + public static bool HasAllFlags(this V8ScriptEngineFlags value, V8ScriptEngineFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this V8ScriptEngineFlags value, V8ScriptEngineFlags flags) => (value & flags) != 0; } } diff --git a/ClearScript/V8/V8ScriptItem.cs b/ClearScript/V8/V8ScriptItem.cs index 49eeba8b..7d002556 100644 --- a/ClearScript/V8/V8ScriptItem.cs +++ b/ClearScript/V8/V8ScriptItem.cs @@ -18,7 +18,7 @@ internal abstract class V8ScriptItem : ScriptItem, IJavaScriptObject private readonly V8ScriptEngine engine; private readonly IV8Object target; private V8ScriptItem holder; - private readonly InterlockedOneWayFlag disposedFlag = new InterlockedOneWayFlag(); + private readonly InterlockedOneWayFlag disposedFlag = new(); private V8ScriptItem(V8ScriptEngine engine, IV8Object target) { @@ -28,9 +28,9 @@ private V8ScriptItem(V8ScriptEngine engine, IV8Object target) public static object Wrap(V8ScriptEngine engine, object obj) { - Debug.Assert(!(obj is IScriptMarshalWrapper)); + Debug.Assert(obj is not IScriptMarshalWrapper); - if (obj == null) + if (obj is null) { return null; } @@ -98,11 +98,24 @@ public static object Wrap(V8ScriptEngine engine, object obj) public bool IsShared => target.IsShared; + public object GetProperty(bool marshalValue, int index) + { + VerifyNotDisposed(); + var value = engine.ScriptInvoke(static ctx => ctx.target.GetProperty(ctx.index), (target, index)); + return marshalValue ? engine.MarshalToHost(value, false) : value; + } + + public void SetProperty(bool marshalValue, int index, object value) + { + VerifyNotDisposed(); + engine.ScriptInvoke(static ctx => ctx.self.target.SetProperty(ctx.index, ctx.marshalValue ? ctx.self.engine.MarshalToScript(ctx.value) : ctx.value), (self: this, marshalValue, index, value)); + } + public object InvokeMethod(bool marshalResult, string name, params object[] args) { VerifyNotDisposed(); - var result = engine.ScriptInvoke(() => target.InvokeMethod(name, engine.MarshalToScript(args))); + var result = engine.ScriptInvoke(static ctx => ctx.self.target.InvokeMethod(ctx.name, ctx.self.engine.MarshalToScript(ctx.args)), (self: this, name, args)); if (marshalResult) { return engine.MarshalToHost(result, false); @@ -133,7 +146,7 @@ protected override bool TryBindAndInvoke(DynamicMetaObjectBinder binder, object[ return true; } - if ((binder is SetMemberBinder setMemberBinder) && (args != null) && (args.Length > 0)) + if ((binder is SetMemberBinder setMemberBinder) && (args is not null) && (args.Length > 0)) { target.SetProperty(setMemberBinder.Name, args[0]); result = args[0]; @@ -142,7 +155,7 @@ protected override bool TryBindAndInvoke(DynamicMetaObjectBinder binder, object[ if (binder is GetIndexBinder) { - if ((args != null) && (args.Length == 1)) + if ((args is not null) && (args.Length == 1)) { result = MiscHelpers.TryGetNumericIndex(args[0], out int index) ? target.GetProperty(index) : target.GetProperty(args[0].ToString()); return true; @@ -153,7 +166,7 @@ protected override bool TryBindAndInvoke(DynamicMetaObjectBinder binder, object[ if (binder is SetIndexBinder) { - if ((args != null) && (args.Length == 2)) + if ((args is not null) && (args.Length == 2)) { if (MiscHelpers.TryGetNumericIndex(args[0], out int index)) { @@ -185,7 +198,7 @@ protected override bool TryBindAndInvoke(DynamicMetaObjectBinder binder, object[ } catch (Exception exception) { - if (engine.CurrentScriptFrame != null) + if (engine.CurrentScriptFrame is not null) { if (exception is IScriptEngineException scriptError) { @@ -210,13 +223,13 @@ protected override bool TryBindAndInvoke(DynamicMetaObjectBinder binder, object[ public override string[] GetPropertyNames() { VerifyNotDisposed(); - return engine.ScriptInvoke(() => target.GetPropertyNames(false /*includeIndices*/)); + return engine.ScriptInvoke(static target => target.GetPropertyNames(false), target); } public override int[] GetPropertyIndices() { VerifyNotDisposed(); - return engine.ScriptInvoke(() => target.GetPropertyIndices()); + return engine.ScriptInvoke(static target => target.GetPropertyIndices(), target); } #endregion @@ -226,12 +239,12 @@ public override int[] GetPropertyIndices() public override object GetProperty(string name, params object[] args) { VerifyNotDisposed(); - if ((args != null) && (args.Length != 0)) + if ((args is not null) && (args.Length != 0)) { throw new InvalidOperationException("Invalid argument or index count"); } - var result = engine.MarshalToHost(engine.ScriptInvoke(() => target.GetProperty(name)), false); + var result = engine.MarshalToHost(engine.ScriptInvoke(static ctx => ctx.target.GetProperty(ctx.name), (target, name)), false); if ((result is V8ScriptItem resultScriptItem) && (resultScriptItem.engine == engine)) { @@ -244,45 +257,43 @@ public override object GetProperty(string name, params object[] args) public override void SetProperty(string name, params object[] args) { VerifyNotDisposed(); - if ((args == null) || (args.Length != 1)) + if ((args is null) || (args.Length != 1)) { throw new InvalidOperationException("Invalid argument or index count"); } - engine.ScriptInvoke(() => target.SetProperty(name, engine.MarshalToScript(args[0]))); + engine.ScriptInvoke(static ctx => ctx.self.target.SetProperty(ctx.name, ctx.self.engine.MarshalToScript(ctx.value)), (self: this, name, value: args[0])); } public override bool DeleteProperty(string name) { VerifyNotDisposed(); - return engine.ScriptInvoke(() => target.DeleteProperty(name)); + return engine.ScriptInvoke(static ctx => ctx.target.DeleteProperty(ctx.name), (target, name)); } public override object GetProperty(int index) { - VerifyNotDisposed(); - return engine.MarshalToHost(engine.ScriptInvoke(() => target.GetProperty(index)), false); + return GetProperty(true, index); } public override void SetProperty(int index, object value) { - VerifyNotDisposed(); - engine.ScriptInvoke(() => target.SetProperty(index, engine.MarshalToScript(value))); + SetProperty(true, index, value); } public override bool DeleteProperty(int index) { VerifyNotDisposed(); - return engine.ScriptInvoke(() => target.DeleteProperty(index)); + return engine.ScriptInvoke(static ctx => ctx.target.DeleteProperty(ctx.index), (target, index)); } public override object Invoke(bool asConstructor, params object[] args) { VerifyNotDisposed(); - if (asConstructor || (holder == null)) + if (asConstructor || (holder is null)) { - return engine.MarshalToHost(engine.ScriptInvoke(() => target.Invoke(asConstructor, engine.MarshalToScript(args))), false); + return engine.MarshalToHost(engine.ScriptInvoke(static ctx => ctx.self.target.Invoke(ctx.asConstructor, ctx.self.engine.MarshalToScript(ctx.args)), (self: this, asConstructor, args)), false); } var engineInternal = (ScriptObject)engine.Global.GetProperty("EngineInternal"); @@ -348,10 +359,20 @@ private bool TryGetProperty(string name, out object value) { VerifyNotDisposed(); - object tempResult = null; - if (engine.ScriptInvoke(() => target.TryGetProperty(name, out tempResult))) + var ctx = (target, name, value: (object)null); + + var found = engine.ScriptInvoke( + static pCtx => + { + ref var ctx = ref pCtx.AsRef(); + return ctx.target.TryGetProperty(ctx.name, out ctx.value); + }, + StructPtr.FromRef(ref ctx) + ); + + if (found) { - var result = engine.MarshalToHost(tempResult, false); + var result = engine.MarshalToHost(ctx.value, false); if ((result is V8ScriptItem resultScriptItem) && (resultScriptItem.engine == engine)) { resultScriptItem.holder = this; @@ -376,16 +397,18 @@ private bool TryGetProperty(string name, out object value) private string[] GetPropertyKeys() { VerifyNotDisposed(); - return engine.ScriptInvoke(() => target.GetPropertyNames(true /*includeIndices*/)); + return engine.ScriptInvoke(static target => target.GetPropertyNames(true), target); } IEnumerator> IEnumerable>.GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return KeyValuePairs.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return ThisDictionary.GetEnumerator(); } @@ -531,6 +554,7 @@ int IList.IndexOf(object item) IEnumerator IEnumerable.GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return ThisGenericList.GetEnumerator(); } @@ -672,61 +696,201 @@ protected V8ArrayBufferOrView(V8ScriptEngine engine, IV8Object target) protected byte[] GetBytes() { var size = Size; - var result = new byte[size]; - InvokeWithDirectAccess(pData => UnmanagedMemoryHelpers.Copy(pData, size, result, 0)); - return result; + return InvokeWithDirectAccess( + static (pData, size) => + { + var result = new byte[size]; + UnmanagedMemoryHelpers.Copy(pData, size, result, 0); + return result; + }, + size + ); } protected ulong ReadBytes(ulong offset, ulong count, byte[] destination, ulong destinationIndex) { var size = Size; - if (offset >= size) + if (size < 1) + { + if (offset > 0) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + + if (count > 0) + { + throw new ArgumentOutOfRangeException(nameof(count)); + } + } + else if (offset >= size) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(GetPtrWithOffset(pData, ctx.offset), Math.Min(ctx.count, ctx.size - ctx.offset), ctx.destination, ctx.destinationIndex), + (offset, count, destination, destinationIndex, size) + ); + } + + protected unsafe ulong ReadBytes(ulong offset, ulong count, Span destination, ulong destinationIndex) + { + var size = Size; + if (size < 1) + { + if (offset > 0) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + + if (count > 0) + { + throw new ArgumentOutOfRangeException(nameof(count)); + } + } + else if (offset >= size) { throw new ArgumentOutOfRangeException(nameof(offset)); } - return InvokeWithDirectAccess(pData => UnmanagedMemoryHelpers.Copy(GetPtrWithOffset(pData, offset), Math.Min(count, size - offset), destination, destinationIndex)); + fixed (void* pDestination = destination) + { + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(GetPtrWithOffset(pData, ctx.offset), Math.Min(ctx.count, ctx.size - ctx.offset), new Span(ctx.pDestination.ToPointer(), ctx.destinationLength), ctx.destinationIndex), + (offset, count, pDestination: (IntPtr)pDestination, destinationLength: destination.Length, destinationIndex, size) + ); + } } protected ulong WriteBytes(byte[] source, ulong sourceIndex, ulong count, ulong offset) { var size = Size; - if (offset >= size) + if (size < 1) + { + if (offset > 0) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + + if (count > 0) + { + throw new ArgumentOutOfRangeException(nameof(count)); + } + } + else if (offset >= size) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(ctx.source, ctx.sourceIndex, Math.Min(ctx.count, ctx.size - ctx.offset), GetPtrWithOffset(pData, ctx.offset)), + (source, sourceIndex, count, offset, size) + ); + } + + protected unsafe ulong WriteBytes(in ReadOnlySpan source, ulong sourceIndex, ulong count, ulong offset) + { + var size = Size; + if (size < 1) + { + if (offset > 0) + { + throw new ArgumentOutOfRangeException(nameof(offset)); + } + + if (count > 0) + { + throw new ArgumentOutOfRangeException(nameof(count)); + } + } + else if (offset >= size) { throw new ArgumentOutOfRangeException(nameof(offset)); } - return InvokeWithDirectAccess(pData => UnmanagedMemoryHelpers.Copy(source, sourceIndex, Math.Min(count, size - offset), GetPtrWithOffset(pData, offset))); + fixed (void* pSource = source) + { + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(new ReadOnlySpan(ctx.pSource.ToPointer(), ctx.sourceLength), ctx.sourceIndex, Math.Min(ctx.count, ctx.size - ctx.offset), GetPtrWithOffset(pData, ctx.offset)), + (pSource: (IntPtr)pSource, sourceLength: source.Length, sourceIndex, count, offset, size) + ); + } } protected void InvokeWithDirectAccess(Action action) { - engine.ScriptInvoke(() => target.InvokeWithArrayBufferOrViewData(action)); + engine.ScriptInvoke(static ctx => ctx.target.InvokeWithArrayBufferOrViewData(ctx.action), (target, action)); } - protected T InvokeWithDirectAccess(Func func) + protected TResult InvokeWithDirectAccess(Func func) { - return engine.ScriptInvoke(() => - { - var result = default(T); - target.InvokeWithArrayBufferOrViewData(pData => result = func(pData)); - return result; - }); + var ctx = (self: this, func, result: default(TResult)); + + return engine.ScriptInvoke( + static pCtx => + { + ref var ctx = ref pCtx.AsRef(); + + ctx.self.target.InvokeWithArrayBufferOrViewData( + static (pData, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + ctx.result = ctx.func(pData); + }, + pCtx + ); + + return ctx.result; + }, + StructPtr.FromRef(ref ctx) + ); + } + + protected void InvokeWithDirectAccess(Action action, in TArg arg) + { + engine.ScriptInvoke(static ctx => ctx.target.InvokeWithArrayBufferOrViewData(ctx.action, ctx.arg), (target, action, arg)); + } + + protected TResult InvokeWithDirectAccess(Func func, in TArg arg) + { + var ctx = (self: this, func, arg, result: default(TResult)); + + return engine.ScriptInvoke( + static pCtx => + { + ref var ctx = ref pCtx.AsRef(); + + ctx.self.target.InvokeWithArrayBufferOrViewData( + static (pData, pCtx) => + { + ref var ctx = ref pCtx.AsRef(); + ctx.result = ctx.func(pData, ctx.arg); + }, + pCtx + ); + + return ctx.result; + }, + StructPtr.FromRef(ref ctx) + ); } private V8ArrayBufferOrViewInfo GetInfo() { VerifyNotDisposed(); - if (info == null) + if (info is null) { - engine.ScriptInvoke(() => - { - if (info == null) + engine.ScriptInvoke( + static ctx => { - info = target.GetArrayBufferOrViewInfo(); - } - }); + if (ctx.self.info is null) + { + ctx.self.info = ctx.target.GetArrayBufferOrViewInfo(); + } + }, + (self: this, target) + ); } return info; @@ -739,8 +903,13 @@ private IArrayBuffer GetArrayBuffer() private static IntPtr GetPtrWithOffset(IntPtr pData, ulong offset) { + if (offset < 1) + { + return pData; + } + var baseAddr = unchecked((ulong)pData.ToInt64()); - return new IntPtr(unchecked((long)checked(baseAddr + offset))); + return (IntPtr)unchecked((long)checked(baseAddr + offset)); } } @@ -769,23 +938,45 @@ ulong IArrayBuffer.ReadBytes(ulong offset, ulong count, byte[] destination, ulon return ReadBytes(offset, count, destination, destinationIndex); } + ulong IArrayBuffer.ReadBytes(ulong offset, ulong count, Span destination, ulong destinationIndex) + { + return ReadBytes(offset, count, destination, destinationIndex); + } + ulong IArrayBuffer.WriteBytes(byte[] source, ulong sourceIndex, ulong count, ulong offset) { return WriteBytes(source, sourceIndex, count, offset); } + ulong IArrayBuffer.WriteBytes(ReadOnlySpan source, ulong sourceIndex, ulong count, ulong offset) + { + return WriteBytes(source, sourceIndex, count, offset); + } + void IArrayBuffer.InvokeWithDirectAccess(Action action) { MiscHelpers.VerifyNonNullArgument(action, nameof(action)); InvokeWithDirectAccess(action); } - T IArrayBuffer.InvokeWithDirectAccess(Func func) + TResult IArrayBuffer.InvokeWithDirectAccess(Func func) { MiscHelpers.VerifyNonNullArgument(func, nameof(func)); return InvokeWithDirectAccess(func); } + void IArrayBuffer.InvokeWithDirectAccess(Action action, in TArg arg) + { + MiscHelpers.VerifyNonNullArgument(action, nameof(action)); + InvokeWithDirectAccess(action, arg); + } + + TResult IArrayBuffer.InvokeWithDirectAccess(Func func, in TArg arg) + { + MiscHelpers.VerifyNonNullArgument(func, nameof(func)); + return InvokeWithDirectAccess(func, arg); + } + #endregion } @@ -818,23 +1009,45 @@ ulong IArrayBufferView.ReadBytes(ulong offset, ulong count, byte[] destination, return ReadBytes(offset, count, destination, destinationIndex); } + ulong IArrayBufferView.ReadBytes(ulong offset, ulong count, Span destination, ulong destinationIndex) + { + return ReadBytes(offset, count, destination, destinationIndex); + } + ulong IArrayBufferView.WriteBytes(byte[] source, ulong sourceIndex, ulong count, ulong offset) { return WriteBytes(source, sourceIndex, count, offset); } + ulong IArrayBufferView.WriteBytes(ReadOnlySpan source, ulong sourceIndex, ulong count, ulong offset) + { + return WriteBytes(source, sourceIndex, count, offset); + } + void IArrayBufferView.InvokeWithDirectAccess(Action action) { MiscHelpers.VerifyNonNullArgument(action, nameof(action)); InvokeWithDirectAccess(action); } - T IArrayBufferView.InvokeWithDirectAccess(Func func) + TResult IArrayBufferView.InvokeWithDirectAccess(Func func) { MiscHelpers.VerifyNonNullArgument(func, nameof(func)); return InvokeWithDirectAccess(func); } + void IArrayBufferView.InvokeWithDirectAccess(Action action, in TArg arg) + { + MiscHelpers.VerifyNonNullArgument(action, nameof(action)); + InvokeWithDirectAccess(action, arg); + } + + TResult IArrayBufferView.InvokeWithDirectAccess(Func func, in TArg arg) + { + MiscHelpers.VerifyNonNullArgument(func, nameof(func)); + return InvokeWithDirectAccess(func, arg); + } + #endregion } @@ -863,8 +1076,13 @@ protected V8TypedArray(V8ScriptEngine engine, IV8Object target) protected IntPtr GetPtrWithIndex(IntPtr pData, ulong index) { + if (index < 1) + { + return pData; + } + var baseAddr = unchecked((ulong)pData.ToInt64()); - return new IntPtr(unchecked((long)checked(baseAddr + (index * (Size / Length))))); + return (IntPtr)unchecked((long)checked(baseAddr + (index * (Size / Length)))); } #region ITypedArray implementation @@ -878,7 +1096,7 @@ protected IntPtr GetPtrWithIndex(IntPtr pData, ulong index) #region Nested type: V8TypedArray - private class V8TypedArray : V8TypedArray, ITypedArray + private class V8TypedArray : V8TypedArray, ITypedArray where T : unmanaged { public V8TypedArray(V8ScriptEngine engine, IV8Object target) : base(engine, target) @@ -890,31 +1108,125 @@ public V8TypedArray(V8ScriptEngine engine, IV8Object target) T[] ITypedArray.ToArray() { var length = Length; - var result = new T[length]; - InvokeWithDirectAccess(pData => UnmanagedMemoryHelpers.Copy(pData, length, result, 0)); - return result; + return InvokeWithDirectAccess( + static (pData, length) => + { + var result = new T[length]; + UnmanagedMemoryHelpers.Copy(pData, length, result, 0); + return result; + }, + length + ); } ulong ITypedArray.Read(ulong index, ulong length, T[] destination, ulong destinationIndex) { var totalLength = Length; - if (index >= totalLength) + if (totalLength < 1) + { + if (index > 0) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (index >= totalLength) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(ctx.self.GetPtrWithIndex(pData, ctx.index), Math.Min(ctx.length, ctx.totalLength - ctx.index), ctx.destination, ctx.destinationIndex), + (self: this, index, length, destination, destinationIndex, totalLength) + ); + } + + unsafe ulong ITypedArray.Read(ulong index, ulong length, Span destination, ulong destinationIndex) + { + var totalLength = Length; + if (totalLength < 1) + { + if (index > 0) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (index >= totalLength) { throw new ArgumentOutOfRangeException(nameof(index)); } - return InvokeWithDirectAccess(pData => UnmanagedMemoryHelpers.Copy(GetPtrWithIndex(pData, index), Math.Min(length, totalLength - index), destination, destinationIndex)); + fixed (void* pDestination = destination) + { + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(ctx.self.GetPtrWithIndex(pData, ctx.index), Math.Min(ctx.length, ctx.totalLength - ctx.index), new Span(ctx.pDestination.ToPointer(), ctx.destinationLength), ctx.destinationIndex), + (self: this, index, length, pDestination: (IntPtr)pDestination, destinationLength: destination.Length, destinationIndex, totalLength) + ); + } } ulong ITypedArray.Write(T[] source, ulong sourceIndex, ulong length, ulong index) { var totalLength = Length; - if (index >= totalLength) + if (totalLength < 1) + { + if (index > 0) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (index >= totalLength) { throw new ArgumentOutOfRangeException(nameof(index)); } - return InvokeWithDirectAccess(pData => UnmanagedMemoryHelpers.Copy(source, sourceIndex, Math.Min(length, totalLength - index), GetPtrWithIndex(pData, index))); + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(ctx.source, ctx.sourceIndex, Math.Min(ctx.length, ctx.totalLength - ctx.index), ctx.self.GetPtrWithIndex(pData, ctx.index)), + (self: this, source, sourceIndex, length, index, totalLength) + ); + } + + unsafe ulong ITypedArray.Write(ReadOnlySpan source, ulong sourceIndex, ulong length, ulong index) + { + var totalLength = Length; + if (totalLength < 1) + { + if (index > 0) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (index >= totalLength) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + fixed (void* pSource = source) + { + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(new ReadOnlySpan(ctx.pSource.ToPointer(), ctx.sourceLength), ctx.sourceIndex, Math.Min(ctx.length, ctx.totalLength - ctx.index), ctx.self.GetPtrWithIndex(pData, ctx.index)), + (self: this, pSource: (IntPtr)pSource, sourceLength: source.Length, sourceIndex, length, index, totalLength) + ); + } } #endregion @@ -938,31 +1250,125 @@ public V8UInt16Array(V8ScriptEngine engine, IV8Object target) char[] ITypedArray.ToArray() { var length = Length; - var result = new char[length]; - InvokeWithDirectAccess(pData => UnmanagedMemoryHelpers.Copy(pData, length, result, 0)); - return result; + return InvokeWithDirectAccess( + static (pData, length) => + { + var result = new char[length]; + UnmanagedMemoryHelpers.Copy(pData, length, result, 0); + return result; + }, + length + ); } ulong ITypedArray.Read(ulong index, ulong length, char[] destination, ulong destinationIndex) { var totalLength = Length; - if (index >= totalLength) + if (totalLength < 1) + { + if (index > 0) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (index >= totalLength) { throw new ArgumentOutOfRangeException(nameof(index)); } - return InvokeWithDirectAccess(pData => UnmanagedMemoryHelpers.Copy(GetPtrWithIndex(pData, index), Math.Min(length, totalLength - index), destination, destinationIndex)); + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(ctx.self.GetPtrWithIndex(pData, ctx.index), Math.Min(ctx.length, ctx.totalLength - ctx.index), ctx.destination, ctx.destinationIndex), + (self: this, index, length, destination, destinationIndex, totalLength) + ); + } + + unsafe ulong ITypedArray.Read(ulong index, ulong length, Span destination, ulong destinationIndex) + { + var totalLength = Length; + if (totalLength < 1) + { + if (index > 0) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (index >= totalLength) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + fixed (void* pDestination = destination) + { + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(ctx.self.GetPtrWithIndex(pData, ctx.index), Math.Min(ctx.length, ctx.totalLength - ctx.index), new Span(ctx.pDestination.ToPointer(), ctx.destinationLength), ctx.destinationIndex), + (self: this, index, length, pDestination: (IntPtr)pDestination, destinationLength: destination.Length, destinationIndex, totalLength) + ); + } } ulong ITypedArray.Write(char[] source, ulong sourceIndex, ulong length, ulong index) { var totalLength = Length; - if (index >= totalLength) + if (totalLength < 1) + { + if (index > 0) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (index >= totalLength) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(ctx.source, ctx.sourceIndex, Math.Min(ctx.length, ctx.totalLength - ctx.index), ctx.self.GetPtrWithIndex(pData, ctx.index)), + (self: this, source, sourceIndex, length, index, totalLength) + ); + } + + unsafe ulong ITypedArray.Write(ReadOnlySpan source, ulong sourceIndex, ulong length, ulong index) + { + var totalLength = Length; + if (totalLength < 1) + { + if (index > 0) + { + throw new ArgumentOutOfRangeException(nameof(index)); + } + + if (length > 0) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } + } + else if (index >= totalLength) { throw new ArgumentOutOfRangeException(nameof(index)); } - return InvokeWithDirectAccess(pData => UnmanagedMemoryHelpers.Copy(source, sourceIndex, Math.Min(length, totalLength - index), GetPtrWithIndex(pData, index))); + fixed (void* pSource = source) + { + return InvokeWithDirectAccess( + static (pData, ctx) => UnmanagedMemoryHelpers.Copy(new ReadOnlySpan(ctx.pSource.ToPointer(), ctx.sourceLength), ctx.sourceIndex, Math.Min(ctx.length, ctx.totalLength - ctx.index), ctx.self.GetPtrWithIndex(pData, ctx.index)), + (self: this, pSource: (IntPtr)pSource, sourceLength: source.Length, sourceIndex, length, index, totalLength) + ); + } } #endregion diff --git a/ClearScript/VoidResult.cs b/ClearScript/VoidResult.cs index 9a159d15..7749a285 100644 --- a/ClearScript/VoidResult.cs +++ b/ClearScript/VoidResult.cs @@ -20,7 +20,7 @@ public class VoidResult /// /// The sole instance of the class. /// - public static readonly VoidResult Value = new VoidResult(); + public static readonly VoidResult Value = new(); private VoidResult() { diff --git a/ClearScript/Windows/Core/ActiveXDebugging.cs b/ClearScript/Windows/Core/ActiveXDebugging.cs index c9e58abc..8df00c14 100644 --- a/ClearScript/Windows/Core/ActiveXDebugging.cs +++ b/ClearScript/Windows/Core/ActiveXDebugging.cs @@ -95,7 +95,7 @@ internal enum BreakpointState #region structures [StructLayout(LayoutKind.Sequential)] - internal struct DebugStackFrameDescriptor + internal ref struct DebugStackFrameDescriptor { [MarshalAs(UnmanagedType.Interface)] public IDebugStackFrame Frame; @@ -110,7 +110,7 @@ internal struct DebugStackFrameDescriptor } [StructLayout(LayoutKind.Sequential)] - internal struct DebugStackFrameDescriptor64 + internal ref struct DebugStackFrameDescriptor64 { [MarshalAs(UnmanagedType.Interface)] public IDebugStackFrame Frame; diff --git a/ClearScript/Windows/Core/ActiveXScripting.cs b/ClearScript/Windows/Core/ActiveXScripting.cs index d3f88f3f..78fe6e10 100644 --- a/ClearScript/Windows/Core/ActiveXScripting.cs +++ b/ClearScript/Windows/Core/ActiveXScripting.cs @@ -21,6 +21,12 @@ internal enum ScriptInfoFlags : uint // ReSharper restore InconsistentNaming } + internal static class ScriptInfoFlagsHelpers + { + public static bool HasAllFlags(this ScriptInfoFlags value, ScriptInfoFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this ScriptInfoFlags value, ScriptInfoFlags flags) => (value & flags) != 0; + } + [Flags] internal enum ScriptInterruptFlags : uint { diff --git a/ClearScript/Windows/Core/ActiveXWrappers.cs b/ClearScript/Windows/Core/ActiveXWrappers.cs index f58b0f5e..7835bb9e 100644 --- a/ClearScript/Windows/Core/ActiveXWrappers.cs +++ b/ClearScript/Windows/Core/ActiveXWrappers.cs @@ -127,7 +127,7 @@ public ActiveScriptWrapper32(string progID, WindowsScriptEngineFlags flags) activeScriptGarbageCollector = activeScript as IActiveScriptGarbageCollector; debugStackFrameSniffer = activeScript as IDebugStackFrameSnifferEx32; - if (flags.HasFlag(WindowsScriptEngineFlags.EnableStandardsMode)) + if (flags.HasAllFlags(WindowsScriptEngineFlags.EnableStandardsMode)) { if (activeScript is IActiveScriptProperty activeScriptProperty) { @@ -139,7 +139,7 @@ public ActiveScriptWrapper32(string progID, WindowsScriptEngineFlags flags) } } - if (!flags.HasFlag(WindowsScriptEngineFlags.DoNotEnableVTablePatching) && MiscHelpers.ProcessorArchitectureIsIntel()) + if (!flags.HasAllFlags(WindowsScriptEngineFlags.DoNotEnableVTablePatching) && MiscHelpers.ProcessorArchitectureIsIntel()) { HostItem.EnableVTablePatching = true; } @@ -197,7 +197,7 @@ public override void EnumCodeContextsOfPosition(UIntPtr sourceContext, uint offs public override void EnumStackFrames(out IEnumDebugStackFrames enumFrames) { - if (debugStackFrameSniffer != null) + if (debugStackFrameSniffer is not null) { debugStackFrameSniffer.EnumStackFrames(out enumFrames); } @@ -280,7 +280,7 @@ public ActiveScriptWrapper64(string progID, WindowsScriptEngineFlags flags) activeScriptGarbageCollector = activeScript as IActiveScriptGarbageCollector; debugStackFrameSniffer = activeScript as IDebugStackFrameSnifferEx64; - if (flags.HasFlag(WindowsScriptEngineFlags.EnableStandardsMode)) + if (flags.HasAllFlags(WindowsScriptEngineFlags.EnableStandardsMode)) { if (activeScript is IActiveScriptProperty activeScriptProperty) { @@ -292,7 +292,7 @@ public ActiveScriptWrapper64(string progID, WindowsScriptEngineFlags flags) } } - if (!flags.HasFlag(WindowsScriptEngineFlags.DoNotEnableVTablePatching) && MiscHelpers.ProcessorArchitectureIsIntel()) + if (!flags.HasAllFlags(WindowsScriptEngineFlags.DoNotEnableVTablePatching) && MiscHelpers.ProcessorArchitectureIsIntel()) { HostItem.EnableVTablePatching = true; } @@ -350,7 +350,7 @@ public override void EnumCodeContextsOfPosition(UIntPtr sourceContext, uint offs public override void EnumStackFrames(out IEnumDebugStackFrames enumFrames) { - if (debugStackFrameSniffer != null) + if (debugStackFrameSniffer is not null) { debugStackFrameSniffer.EnumStackFrames(out enumFrames); } diff --git a/ClearScript/Windows/Core/JScriptEngine.NetStandard.cs b/ClearScript/Windows/Core/JScriptEngine.NetStandard.cs deleted file mode 100644 index 763d6c44..00000000 --- a/ClearScript/Windows/Core/JScriptEngine.NetStandard.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.Threading.Tasks; -using Microsoft.ClearScript.JavaScript; - -namespace Microsoft.ClearScript.Windows.Core -{ - public partial class JScriptEngine - { - #region IJavaScriptEngine implementation - - object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) - { - throw new NotImplementedException(); - } - - object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) - { - throw new NotImplementedException(); - } - - #endregion - } -} diff --git a/ClearScript/Windows/Core/JScriptEngine.cs b/ClearScript/Windows/Core/JScriptEngine.cs index 05c623ee..c1c44815 100644 --- a/ClearScript/Windows/Core/JScriptEngine.cs +++ b/ClearScript/Windows/Core/JScriptEngine.cs @@ -26,7 +26,7 @@ public partial class JScriptEngine : WindowsScriptEngine, IJavaScriptEngine, IJS { #region data - internal static readonly Dictionary StaticRuntimeErrorMap = new Dictionary + internal static readonly Dictionary StaticRuntimeErrorMap = new() { // https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/1dk3k160(v=vs.84) { 5029, "Array length must be a finite positive integer" }, @@ -62,7 +62,7 @@ public partial class JScriptEngine : WindowsScriptEngine, IJavaScriptEngine, IJS { 5013, "VBArray expected" } }; - internal static readonly Dictionary StaticSyntaxErrorMap = new Dictionary + internal static readonly Dictionary StaticSyntaxErrorMap = new() { // https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/6bby3x2e(v=vs.84) { 1019, "Can't have 'break' outside of loop" }, @@ -224,7 +224,7 @@ internal override object Execute(UniqueDocumentInfo documentInfo, string code, b if (documentInfo.Category == ModuleCategory.CommonJS) { var module = CommonJSManager.GetOrCreateModule(documentInfo, code); - return ScriptInvoke(() => module.Process()); + return ScriptInvoke(static module => module.Process(), module); } if (documentInfo.Category != DocumentCategory.Script) @@ -255,6 +255,16 @@ object IJavaScriptEngine.CreatePromiseForTask(Task task) throw new NotImplementedException(); } + object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) + { + throw new NotImplementedException(); + } + + object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) + { + throw new NotImplementedException(); + } + Task IJavaScriptEngine.CreateTaskForPromise(ScriptObject promise) { throw new NotImplementedException(); diff --git a/ClearScript/Windows/Core/VBScriptEngine.cs b/ClearScript/Windows/Core/VBScriptEngine.cs index 8df8c9c2..abaa2bd8 100644 --- a/ClearScript/Windows/Core/VBScriptEngine.cs +++ b/ClearScript/Windows/Core/VBScriptEngine.cs @@ -18,7 +18,7 @@ public class VBScriptEngine : WindowsScriptEngine, IVBScriptEngineTag { #region data - internal static readonly Dictionary StaticRuntimeErrorMap = new Dictionary + internal static readonly Dictionary StaticRuntimeErrorMap = new() { // https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/xe43cc8d(v=vs.84) { 429, "ActiveX component can't create object" }, @@ -66,7 +66,7 @@ public class VBScriptEngine : WindowsScriptEngine, IVBScriptEngineTag { 450, "Wrong number of arguments or invalid property assignment" } }; - internal static readonly Dictionary StaticSyntaxErrorMap = new Dictionary + internal static readonly Dictionary StaticSyntaxErrorMap = new() { // https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/2z84dwk8(v=vs.84) { 1052, "Cannot have multiple default property/method in a Class" }, diff --git a/ClearScript/Windows/Core/WindowsScriptEngine.Debug.cs b/ClearScript/Windows/Core/WindowsScriptEngine.Debug.cs index 7652d33f..5183264c 100644 --- a/ClearScript/Windows/Core/WindowsScriptEngine.Debug.cs +++ b/ClearScript/Windows/Core/WindowsScriptEngine.Debug.cs @@ -60,7 +60,7 @@ private string GetFileName() private string GetUrl() { - if (documentInfo.Uri != null) + if (documentInfo.Uri is not null) { return documentInfo.Uri.IsAbsoluteUri ? documentInfo.Uri.AbsoluteUri : documentInfo.Uri.ToString(); } @@ -70,7 +70,7 @@ private string GetUrl() private bool TryGetSourceMapUrl(out string sourceMapUrl) { - if (documentInfo.SourceMapUri != null) + if (documentInfo.SourceMapUri is not null) { sourceMapUrl = documentInfo.SourceMapUri.IsAbsoluteUri ? documentInfo.SourceMapUri.AbsoluteUri : documentInfo.SourceMapUri.ToString(); return true; diff --git a/ClearScript/Windows/Core/WindowsScriptEngine.Site.cs b/ClearScript/Windows/Core/WindowsScriptEngine.Site.cs index 35a8f078..11ba4bc2 100644 --- a/ClearScript/Windows/Core/WindowsScriptEngine.Site.cs +++ b/ClearScript/Windows/Core/WindowsScriptEngine.Site.cs @@ -27,7 +27,7 @@ public ScriptSite(WindowsScriptEngine engine) private string GetDetails(object error, string message) { - if (engine.processDebugManager != null) + if (engine.processDebugManager is not null) { try { @@ -134,12 +134,12 @@ public void GetItemInfo(string name, ScriptInfoFlags mask, ref IntPtr pUnkItem, { var item = engine.hostItemMap[name]; - if (mask.HasFlag(ScriptInfoFlags.IUnknown)) + if (mask.HasAllFlags(ScriptInfoFlags.IUnknown)) { pUnkItem = Marshal.GetIUnknownForObject(item); } - if (mask.HasFlag(ScriptInfoFlags.ITypeInfo)) + if (mask.HasAllFlags(ScriptInfoFlags.ITypeInfo)) { pTypeInfo = item.GetType().GetTypeInfo(); } @@ -160,7 +160,7 @@ public void OnStateChange(ScriptState state) public void OnScriptError(IActiveScriptError error) { - if ((engine.CurrentScriptFrame != null) && (error != null)) + if ((engine.CurrentScriptFrame is not null) && (error is not null)) { error.GetExceptionInfo(out var excepInfo); if (excepInfo.scode == HResult.E_ABORT) @@ -186,7 +186,7 @@ public void OnScriptError(IActiveScriptError error) else { innerException = engine.CurrentScriptFrame.HostException; - if ((innerException != null) && string.IsNullOrWhiteSpace(description)) + if ((innerException is not null) && string.IsNullOrWhiteSpace(description)) { description = innerException.GetBaseException().Message; } @@ -213,8 +213,8 @@ public void OnLeaveScript() public uint QueryContinue() { var callback = engine.ContinuationCallback; - var keepGoing = ((callback == null) || callback()); - if (engine.CurrentScriptFrame != null) + var keepGoing = ((callback is null) || callback()); + if (engine.CurrentScriptFrame is not null) { keepGoing = keepGoing && !engine.CurrentScriptFrame.InterruptRequested; } @@ -263,7 +263,7 @@ public void GetRootApplicationNode(out IDebugApplicationNode node) public void OnScriptErrorDebug(IActiveScriptErrorDebug errorDebug, out bool enterDebugger, out bool callOnScriptErrorWhenContinuing) { - if ((engine.CurrentScriptFrame != null) && (errorDebug != null)) + if ((engine.CurrentScriptFrame is not null) && (errorDebug is not null)) { errorDebug.GetExceptionInfo(out var excepInfo); if (excepInfo.scode == HResult.E_ABORT) @@ -283,7 +283,7 @@ public void OnScriptErrorDebug(IActiveScriptErrorDebug errorDebug, out bool ente else { innerException = engine.CurrentScriptFrame.HostException; - if ((innerException != null) && string.IsNullOrWhiteSpace(description)) + if ((innerException is not null) && string.IsNullOrWhiteSpace(description)) { description = innerException.GetBaseException().Message; } @@ -293,7 +293,7 @@ public void OnScriptErrorDebug(IActiveScriptErrorDebug errorDebug, out bool ente } } - enterDebugger = engine.engineFlags.HasFlag(WindowsScriptEngineFlags.EnableJITDebugging); + enterDebugger = engine.engineFlags.HasAllFlags(WindowsScriptEngineFlags.EnableJITDebugging); callOnScriptErrorWhenContinuing = true; } @@ -334,12 +334,12 @@ public CustomQueryInterfaceResult GetInterface(ref Guid iid, out IntPtr pInterfa if ((iid == typeof(IActiveScriptSiteDebug32).GUID) || (iid == typeof(IActiveScriptSiteDebug64).GUID) || (iid == typeof(IActiveScriptSiteDebugEx).GUID)) { - return (engine.processDebugManager != null) ? CustomQueryInterfaceResult.NotHandled : CustomQueryInterfaceResult.Failed; + return (engine.processDebugManager is not null) ? CustomQueryInterfaceResult.NotHandled : CustomQueryInterfaceResult.Failed; } if (iid == typeof(IActiveScriptSiteWindow).GUID) { - return (engine.HostWindow != null) ? CustomQueryInterfaceResult.NotHandled : CustomQueryInterfaceResult.Failed; + return (engine.HostWindow is not null) ? CustomQueryInterfaceResult.NotHandled : CustomQueryInterfaceResult.Failed; } return CustomQueryInterfaceResult.NotHandled; diff --git a/ClearScript/Windows/Core/WindowsScriptEngine.cs b/ClearScript/Windows/Core/WindowsScriptEngine.cs index 05215303..85a5cf17 100644 --- a/ClearScript/Windows/Core/WindowsScriptEngine.cs +++ b/ClearScript/Windows/Core/WindowsScriptEngine.cs @@ -29,7 +29,7 @@ public abstract partial class WindowsScriptEngine : ScriptEngine, IWindowsScript private ActiveScriptWrapper activeScript; private WindowsScriptEngineFlags engineFlags; - private readonly HostItemMap hostItemMap = new HostItemMap(); + private readonly HostItemMap hostItemMap = new(); private readonly WindowsScriptItem script; private ProcessDebugManagerWrapper processDebugManager; @@ -37,11 +37,11 @@ public abstract partial class WindowsScriptEngine : ScriptEngine, IWindowsScript private uint debugApplicationCookie; private bool sourceManagement; - private readonly DebugDocumentMap debugDocumentMap = new DebugDocumentMap(); + private readonly DebugDocumentMap debugDocumentMap = new(); private uint nextSourceContext = 1; private readonly ISyncInvoker syncInvoker; - private readonly InterlockedOneWayFlag disposedFlag = new InterlockedOneWayFlag(); + private readonly InterlockedOneWayFlag disposedFlag = new(); #endregion @@ -65,33 +65,36 @@ protected WindowsScriptEngine(string progID, string name, string fileNameExtensi MiscHelpers.VerifyNonNullArgument(syncInvoker, nameof(syncInvoker)); this.syncInvoker = syncInvoker; - script = (WindowsScriptItem)base.ScriptInvoke(() => - { - activeScript = ActiveScriptWrapper.Create(progID, flags); - engineFlags = flags; - - if (flags.HasFlag(WindowsScriptEngineFlags.EnableDebugging) && ProcessDebugManagerWrapper.TryCreate(out processDebugManager)) + script = (WindowsScriptItem)base.ScriptInvoke( + static ctx => { - processDebugManager.CreateApplication(out debugApplication); - debugApplication.SetName(Name); + ctx.self.activeScript = ActiveScriptWrapper.Create(ctx.progID, ctx.flags); + ctx.self.engineFlags = ctx.flags; - if (processDebugManager.TryAddApplication(debugApplication, out debugApplicationCookie)) - { - sourceManagement = !flags.HasFlag(WindowsScriptEngineFlags.DisableSourceManagement); - } - else + if (ctx.flags.HasAllFlags(WindowsScriptEngineFlags.EnableDebugging) && ProcessDebugManagerWrapper.TryCreate(out ctx.self.processDebugManager)) { - debugApplication.Close(); - debugApplication = null; - processDebugManager = null; + ctx.self.processDebugManager.CreateApplication(out ctx.self.debugApplication); + ctx.self.debugApplication.SetName(ctx.self.Name); + + if (ctx.self.processDebugManager.TryAddApplication(ctx.self.debugApplication, out ctx.self.debugApplicationCookie)) + { + ctx.self.sourceManagement = !ctx.flags.HasAllFlags(WindowsScriptEngineFlags.DisableSourceManagement); + } + else + { + ctx.self.debugApplication.Close(); + ctx.self.debugApplication = null; + ctx.self.processDebugManager = null; + } } - } - activeScript.SetScriptSite(new ScriptSite(this)); - activeScript.InitNew(); - activeScript.SetScriptState(ScriptState.Started); - return WindowsScriptItem.Wrap(this, GetScriptDispatch()); - }); + ctx.self.activeScript.SetScriptSite(new ScriptSite(ctx.self)); + ctx.self.activeScript.InitNew(); + ctx.self.activeScript.SetScriptState(ScriptState.Started); + return WindowsScriptItem.Wrap(ctx.self, ctx.self.GetScriptDispatch()); + }, + (self: this, progID, flags) + ); } #endregion @@ -162,7 +165,7 @@ private void Parse(UniqueDocumentInfo documentInfo, string code, ScriptTextFlags } finally { - if (documentInfo.Flags.GetValueOrDefault().HasFlag(DocumentFlags.IsTransient) && (sourceContext != UIntPtr.Zero)) + if (documentInfo.Flags.GetValueOrDefault().HasAllFlags(DocumentFlags.IsTransient) && (sourceContext != UIntPtr.Zero)) { debugDocumentMap.Remove(sourceContext); debugDocument.Close(); @@ -190,7 +193,7 @@ private UIntPtr CreateDebugDocument(UniqueDocumentInfo documentInfo, string code private string GetStackTraceInternal() { - Debug.Assert(processDebugManager != null); + Debug.Assert(processDebugManager is not null); var stackTrace = string.Empty; activeScript.EnumStackFrames(out var enumFrames); @@ -209,7 +212,7 @@ private string GetStackTraceInternal() descriptor.Frame.GetCodeContext(out var codeContext); codeContext.GetDocumentContext(out var documentContext); - if (documentContext == null) + if (documentContext is null) { stackTrace += MiscHelpers.FormatInvariant(" at {0}\n", description); } @@ -278,7 +281,7 @@ private bool GetDirectAccessItem(object item, out object directAccessItem) continue; } - if ((item != null) && (item.GetType().IsCOMObject || item.GetType().IsCOMVisible(this))) + if ((item is not null) && (item.GetType().IsCOMObject || item.GetType().IsCOMVisible(this))) { directAccessItem = item; return true; @@ -293,9 +296,9 @@ private bool GetDirectAccessItem(object item, out object directAccessItem) private object MarshalToScriptInternal(object obj, HostItemFlags flags, HashSet marshaledArraySet) { - if (obj == null) + if (obj is null) { - if (engineFlags.HasFlag(WindowsScriptEngineFlags.MarshalNullAsDispatch)) + if (engineFlags.HasAllFlags(WindowsScriptEngineFlags.MarshalNullAsDispatch)) { return nullDispatch; } @@ -303,7 +306,7 @@ private object MarshalToScriptInternal(object obj, HostItemFlags flags, HashSet< obj = NullExportValue; } - if (obj == null) + if (obj is null) { return DBNull.Value; } @@ -328,12 +331,12 @@ private object MarshalToScriptInternal(object obj, HostItemFlags flags, HashSet< return nullDispatch; } - if (engineFlags.HasFlag(WindowsScriptEngineFlags.MarshalDateTimeAsDate) && (obj is DateTime)) + if (engineFlags.HasAllFlags(WindowsScriptEngineFlags.MarshalDateTimeAsDate) && (obj is DateTime)) { return obj; } - if (engineFlags.HasFlag(WindowsScriptEngineFlags.MarshalDecimalAsCurrency) && (obj is decimal)) + if (engineFlags.HasAllFlags(WindowsScriptEngineFlags.MarshalDecimalAsCurrency) && (obj is decimal)) { return new CurrencyWrapper(obj); } @@ -349,7 +352,7 @@ private object MarshalToScriptInternal(object obj, HostItemFlags flags, HashSet< } var hostTarget = obj as HostTarget; - if ((hostTarget != null) && !(hostTarget is IHostVariable)) + if ((hostTarget is not null) && (hostTarget is not IHostVariable)) { obj = hostTarget.Target; } @@ -362,12 +365,12 @@ private object MarshalToScriptInternal(object obj, HostItemFlags flags, HashSet< } } - if (engineFlags.HasFlag(WindowsScriptEngineFlags.MarshalArraysByValue)) + if (engineFlags.HasAllFlags(WindowsScriptEngineFlags.MarshalArraysByValue)) { - if ((obj is Array array) && ((hostTarget == null) || hostTarget.Type.IsArray)) + if ((obj is Array array) && ((hostTarget is null) || hostTarget.Type.IsArray)) { bool alreadyMarshaled; - if (marshaledArraySet != null) + if (marshaledArraySet is not null) { alreadyMarshaled = marshaledArraySet.Contains(array); } @@ -396,14 +399,14 @@ private object MarshalToScriptInternal(object obj, HostItemFlags flags, HashSet< private object MarshalToHostInternal(object obj, bool preserveHostTarget, HashSet marshaledArraySet) { - if (obj == null) + if (obj is null) { return UndefinedImportValue; } if (obj is DBNull) { - return null; + return NullImportValue; } if (MiscHelpers.TryMarshalPrimitiveToHost(obj, DisableFloatNarrowing, out var result)) @@ -416,7 +419,7 @@ private object MarshalToHostInternal(object obj, bool preserveHostTarget, HashSe // COM interop converts VBScript arrays to managed arrays bool alreadyMarshaled; - if (marshaledArraySet != null) + if (marshaledArraySet is not null) { alreadyMarshaled = marshaledArraySet.Contains(array); } @@ -455,7 +458,7 @@ private object MarshalToHostInternal(object obj, bool preserveHostTarget, HashSe private void ThrowHostException(Exception exception) { - if (CurrentScriptFrame != null) + if (CurrentScriptFrame is not null) { // Record the host exception in the script frame and throw an easily recognizable // surrogate across the COM boundary. Recording the host exception enables @@ -486,7 +489,7 @@ private void ThrowScriptError(Exception exception) ThrowScriptError(CurrentScriptFrame.ScriptError ?? CurrentScriptFrame.PendingScriptError); var hostException = CurrentScriptFrame.HostException; - if (hostException != null) + if (hostException is not null) { throw new ScriptEngineException(Name, hostException.Message, null, HResult.CLEARSCRIPT_E_HOSTEXCEPTION, false, true, null, hostException); } @@ -549,7 +552,7 @@ public override ScriptObject Global public override string GetStackTrace() { VerifyNotDisposed(); - return (processDebugManager != null) ? ScriptInvoke(GetStackTraceInternal) : string.Empty; + return (processDebugManager is not null) ? ScriptInvoke(static self => self.GetStackTraceInternal(), this) : string.Empty; } /// @@ -565,7 +568,7 @@ public override void Interrupt() public override void CollectGarbage(bool exhaustive) { VerifyNotDisposed(); - ScriptInvoke(() => activeScript.CollectGarbage(exhaustive ? ScriptGCType.Exhaustive : ScriptGCType.Normal)); + ScriptInvoke(static ctx => ctx.self.activeScript.CollectGarbage(ctx.exhaustive ? ScriptGCType.Exhaustive : ScriptGCType.Normal), (self: this, exhaustive)); } #endregion @@ -579,52 +582,55 @@ internal override void AddHostItem(string itemName, HostItemFlags flags, object VerifyNotDisposed(); MiscHelpers.VerifyNonNullArgument(itemName, nameof(itemName)); - Debug.Assert(item != null); + Debug.Assert(item is not null); - ScriptInvoke(() => - { - if (!flags.HasFlag(HostItemFlags.DirectAccess) || !GetDirectAccessItem(item, out var marshaledItem)) + ScriptInvoke( + static ctx => { - marshaledItem = MarshalToScript(item, flags); - if (!(marshaledItem is HostItem)) + if (!ctx.flags.HasAllFlags(HostItemFlags.DirectAccess) || !ctx.self.GetDirectAccessItem(ctx.item, out var marshaledItem)) { - throw new InvalidOperationException("Invalid host item"); + marshaledItem = ctx.self.MarshalToScript(ctx.item, ctx.flags); + if (marshaledItem is not HostItem) + { + throw new InvalidOperationException("Invalid host item"); + } } - } - var oldItem = ((IDictionary)hostItemMap)[itemName]; - hostItemMap[itemName] = marshaledItem; + var oldItem = ((IDictionary)ctx.self.hostItemMap)[ctx.itemName]; + ctx.self.hostItemMap[ctx.itemName] = marshaledItem; - var nativeFlags = ScriptItemFlags.IsVisible; - if (flags.HasFlag(HostItemFlags.GlobalMembers)) - { - nativeFlags |= ScriptItemFlags.GlobalMembers; - } - - try - { - activeScript.AddNamedItem(itemName, nativeFlags); - } - catch - { - if (oldItem != null) + var nativeFlags = ScriptItemFlags.IsVisible; + if (ctx.flags.HasAllFlags(HostItemFlags.GlobalMembers)) { - hostItemMap[itemName] = oldItem; + nativeFlags |= ScriptItemFlags.GlobalMembers; } - else + + try { - hostItemMap.Remove(itemName); + ctx.self.activeScript.AddNamedItem(ctx.itemName, nativeFlags); } + catch + { + if (oldItem is not null) + { + ctx.self.hostItemMap[ctx.itemName] = oldItem; + } + else + { + ctx.self.hostItemMap.Remove(ctx.itemName); + } - throw; - } - }); + throw; + } + }, + (self: this, itemName, flags, item) + ); } internal override object PrepareResult(object result, Type type, ScriptMemberFlags flags, bool isListIndexResult) { var tempResult = base.PrepareResult(result, type, flags, isListIndexResult); - if ((tempResult != null) || !engineFlags.HasFlag(WindowsScriptEngineFlags.MarshalNullAsDispatch)) + if ((tempResult is not null) || !engineFlags.HasAllFlags(WindowsScriptEngineFlags.MarshalNullAsDispatch)) { return tempResult; } @@ -650,7 +656,7 @@ internal override object MarshalToHost(object obj, bool preserveHostTarget) internal override object Execute(UniqueDocumentInfo documentInfo, string code, bool evaluate) { VerifyNotDisposed(); - return ScriptInvoke(() => ExecuteRaw(documentInfo, code, evaluate)); + return ScriptInvoke(static ctx => ctx.self.ExecuteRaw(ctx.documentInfo, ctx.code, ctx.evaluate), (self: this, documentInfo, code, evaluate)); } internal sealed override object ExecuteRaw(UniqueDocumentInfo documentInfo, string code, bool evaluate) @@ -670,7 +676,7 @@ internal sealed override object ExecuteRaw(UniqueDocumentInfo documentInfo, stri } } - internal override HostItemCollateral HostItemCollateral { get; } = new HostItemCollateral(); + internal override HostItemCollateral HostItemCollateral { get; } = new(); #endregion @@ -689,7 +695,20 @@ internal override void HostInvoke(Action action) } } - internal override T HostInvoke(Func func) + internal override void HostInvoke(Action action, in TArg arg) + { + try + { + base.HostInvoke(action, arg); + } + catch (Exception exception) + { + ThrowHostException(exception); + throw; + } + } + + internal override TResult HostInvoke(Func func) { try { @@ -702,6 +721,19 @@ internal override T HostInvoke(Func func) } } + internal override TResult HostInvoke(Func func, in TArg arg) + { + try + { + return base.HostInvoke(func, arg); + } + catch (Exception exception) + { + ThrowHostException(exception); + throw; + } + } + #endregion #region ScriptEngine overrides (script-side invocation) @@ -709,35 +741,81 @@ internal override T HostInvoke(Func func) internal override void ScriptInvoke(Action action) { VerifyAccess(); - base.ScriptInvoke(() => - { - try + base.ScriptInvoke( + static ctx => { - action(); - } - catch (Exception exception) + try + { + ctx.action(); + } + catch (Exception exception) + { + ctx.self.ThrowScriptError(exception); + throw; + } + }, + (self: this, action) + ); + } + + internal override void ScriptInvoke(Action action, in TArg arg) + { + VerifyAccess(); + base.ScriptInvoke( + static ctx => { - ThrowScriptError(exception); - throw; - } - }); + try + { + ctx.action(ctx.arg); + } + catch (Exception exception) + { + ctx.self.ThrowScriptError(exception); + throw; + } + }, + (self: this, action, arg) + ); } - internal override T ScriptInvoke(Func func) + internal override TResult ScriptInvoke(Func func) { VerifyAccess(); - return base.ScriptInvoke(() => - { - try + return base.ScriptInvoke( + static ctx => { - return func(); - } - catch (Exception exception) + try + { + return ctx.func(); + } + catch (Exception exception) + { + ctx.self.ThrowScriptError(exception); + throw; + } + }, + (self: this, func) + ); + } + + internal override TResult ScriptInvoke(Func func, in TArg arg) + { + VerifyAccess(); + return base.ScriptInvoke( + static ctx => { - ThrowScriptError(exception); - throw; - } - }); + try + { + return ctx.func(ctx.arg); + } + catch (Exception exception) + { + ctx.self.ThrowScriptError(exception); + throw; + } + }, + (self: this, func, arg) + ); } #endregion @@ -784,7 +862,7 @@ protected override void Dispose(bool disposing) debugDocumentMap.Values.ForEach(debugDocument => debugDocument.Close()); } - if (processDebugManager != null) + if (processDebugManager is not null) { processDebugManager.RemoveApplication(debugApplicationCookie); debugApplication.Close(); diff --git a/ClearScript/Windows/Core/WindowsScriptItem.cs b/ClearScript/Windows/Core/WindowsScriptItem.cs index 116d89de..16d40632 100644 --- a/ClearScript/Windows/Core/WindowsScriptItem.cs +++ b/ClearScript/Windows/Core/WindowsScriptItem.cs @@ -21,7 +21,7 @@ internal class WindowsScriptItem : ScriptItem, IWindowsScriptObject, IDictionary private readonly WindowsScriptEngine engine; private readonly IDispatchEx target; private WindowsScriptItem holder; - private readonly InterlockedOneWayFlag disposedFlag = new InterlockedOneWayFlag(); + private readonly InterlockedOneWayFlag disposedFlag = new(); private WindowsScriptItem(WindowsScriptEngine engine, IDispatchEx target) { @@ -31,9 +31,9 @@ private WindowsScriptItem(WindowsScriptEngine engine, IDispatchEx target) public static object Wrap(WindowsScriptEngine engine, object obj) { - Debug.Assert(!(obj is IScriptMarshalWrapper)); + Debug.Assert(obj is not IScriptMarshalWrapper); - if (obj == null) + if (obj is null) { return null; } @@ -67,7 +67,7 @@ private bool TryGetScriptError(Exception exception, out IScriptEngineException s } scriptError = exception as IScriptEngineException; - if (scriptError != null) + if (scriptError is not null) { return true; } @@ -75,16 +75,16 @@ private bool TryGetScriptError(Exception exception, out IScriptEngineException s if (exception is COMException comException) { var result = comException.ErrorCode; - if (((result == HResult.SCRIPT_E_REPORTED) || (result == HResult.CLEARSCRIPT_E_HOSTEXCEPTION)) && (engine.CurrentScriptFrame != null)) + if (((result == HResult.SCRIPT_E_REPORTED) || (result == HResult.CLEARSCRIPT_E_HOSTEXCEPTION)) && (engine.CurrentScriptFrame is not null)) { scriptError = engine.CurrentScriptFrame.ScriptError ?? engine.CurrentScriptFrame.PendingScriptError; - if (scriptError != null) + if (scriptError is not null) { return true; } var hostException = engine.CurrentScriptFrame.HostException; - if (hostException != null) + if (hostException is not null) { scriptError = new ScriptEngineException(engine.Name, hostException.Message, null, HResult.CLEARSCRIPT_E_HOSTEXCEPTION, false, true, null, hostException); return true; @@ -116,7 +116,7 @@ private bool TryGetScriptError(Exception exception, out IScriptEngineException s } else { - if ((exception is ArgumentException argumentException) && (argumentException.ParamName == null)) + if ((exception is ArgumentException argumentException) && (argumentException.ParamName is null)) { // this usually indicates invalid object or property access in VBScript scriptError = new ScriptEngineException(engine.Name, "Invalid object or property access", null, HResult.CLEARSCRIPT_E_SCRIPTITEMEXCEPTION, false, false, null, exception.InnerException); @@ -139,32 +139,37 @@ private bool TryGetProperty(string name, out object value) { VerifyNotDisposed(); - object tempResult = null; - var found = engine.ScriptInvoke(() => - { - try - { - tempResult = target.GetProperty(name, false); - return !(tempResult is Nonexistent); - } - catch (Exception exception) + var ctx = (self: this, name, value: (object)null); + + var found = engine.ScriptInvoke( + static pCtx => { - if (!name.IsDispIDName(out _) && (exception.HResult != HResult.DISP_E_UNKNOWNNAME)) + ref var ctx = ref pCtx.AsRef(); + try { - // Property retrieval failed, but a method with the given name exists; - // create a tear-off method. This currently applies only to VBScript. - - tempResult = new ScriptMethod(this, name); - return true; + ctx.value = ctx.self.target.GetProperty(ctx.name, false); + return ctx.value is not Nonexistent; } + catch (Exception exception) + { + if (!ctx.name.IsDispIDName(out _) && (exception.HResult != HResult.DISP_E_UNKNOWNNAME)) + { + // Property retrieval failed, but a method with the given name exists; + // create a tear-off method. This currently applies only to VBScript. - return false; - } - }); + ctx.value = new ScriptMethod(ctx.self, ctx.name); + return true; + } + + return false; + } + }, + StructPtr.FromRef(ref ctx) + ); if (found) { - var result = engine.MarshalToHost(tempResult, false); + var result = engine.MarshalToHost(ctx.value, false); if ((result is WindowsScriptItem resultScriptItem) && (resultScriptItem.engine == engine)) { resultScriptItem.holder = this; @@ -187,7 +192,7 @@ protected override bool TryBindAndInvoke(DynamicMetaObjectBinder binder, object[ var succeeded = DynamicHelpers.TryBindAndInvoke(binder, target, args, out result); if (!succeeded) { - if ((result is Exception exception) && (engine.CurrentScriptFrame != null)) + if ((result is Exception exception) && (engine.CurrentScriptFrame is not null)) { var scriptError = exception as IScriptEngineException ?? GetScriptError(exception); @@ -215,13 +220,13 @@ protected override object[] AdjustInvokeArgs(object[] args) public override string[] GetPropertyNames() { VerifyNotDisposed(); - return engine.ScriptInvoke(() => target.GetPropertyNames().ExcludeIndices().ToArray()); + return engine.ScriptInvoke(static target => target.GetPropertyNames().ExcludeIndices().ToArray(), target); } public override int[] GetPropertyIndices() { VerifyNotDisposed(); - return engine.ScriptInvoke(() => target.GetPropertyNames().GetIndices().ToArray()); + return engine.ScriptInvoke(static target => target.GetPropertyNames().GetIndices().ToArray(), target); } #endregion @@ -232,26 +237,32 @@ public override object GetProperty(string name, params object[] args) { VerifyNotDisposed(); - var result = engine.MarshalToHost(engine.ScriptInvoke(() => - { - try - { - var value = target.GetProperty(name, false, engine.MarshalToScript(args)); - return (value is Nonexistent) ? Undefined.Value : value; - } - catch (Exception exception) - { - if (!name.IsDispIDName(out _) && (exception.HResult != HResult.DISP_E_UNKNOWNNAME)) + var result = engine.MarshalToHost( + engine.ScriptInvoke( + static ctx => { - // Property retrieval failed, but a method with the given name exists; - // create a tear-off method. This currently applies only to VBScript. - - return new ScriptMethod(this, name); - } - - return Undefined.Value; - } - }), false); + try + { + var value = ctx.self.target.GetProperty(ctx.name, false, ctx.self.engine.MarshalToScript(ctx.args)); + return (value is Nonexistent) ? Undefined.Value : value; + } + catch (Exception exception) + { + if (!ctx.name.IsDispIDName(out _) && (exception.HResult != HResult.DISP_E_UNKNOWNNAME)) + { + // Property retrieval failed, but a method with the given name exists; + // create a tear-off method. This currently applies only to VBScript. + + return new ScriptMethod(ctx.self, ctx.name); + } + + return Undefined.Value; + } + }, + (self: this, name, args) + ), + false + ); if ((result is WindowsScriptItem resultScriptItem) && (resultScriptItem.engine == engine)) { @@ -264,13 +275,13 @@ public override object GetProperty(string name, params object[] args) public override void SetProperty(string name, params object[] args) { VerifyNotDisposed(); - engine.ScriptInvoke(() => target.SetProperty(name, false, engine.MarshalToScript(args))); + engine.ScriptInvoke(static ctx => ctx.self.target.SetProperty(ctx.name, false, ctx.self.engine.MarshalToScript(ctx.args)), (self: this, name, args)); } public override bool DeleteProperty(string name) { VerifyNotDisposed(); - return engine.ScriptInvoke(() => target.DeleteProperty(name, false)); + return engine.ScriptInvoke(static ctx => ctx.target.DeleteProperty(ctx.name, false), (target, name)); } public override object GetProperty(int index) @@ -311,7 +322,7 @@ public override object InvokeMethod(string name, params object[] args) try { - return engine.MarshalToHost(engine.ScriptInvoke(() => target.InvokeMethod(name, false, engine.MarshalToScript(args))), false); + return engine.MarshalToHost(engine.ScriptInvoke(static ctx => ctx.self.target.InvokeMethod(ctx.name, false, ctx.self.engine.MarshalToScript(ctx.args)), (self: this, name, args)), false); } catch (Exception exception) { @@ -368,16 +379,18 @@ object IWindowsScriptObject.GetUnderlyingObject() private string[] GetPropertyKeys() { VerifyNotDisposed(); - return engine.ScriptInvoke(() => target.GetPropertyNames().ToArray()); + return engine.ScriptInvoke(static target => target.GetPropertyNames().ToArray(), target); } IEnumerator> IEnumerable>.GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return KeyValuePairs.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return ThisDictionary.GetEnumerator(); } diff --git a/ClearScript/Windows/JScriptEngine.NetStandard.cs b/ClearScript/Windows/JScriptEngine.NetStandard.cs deleted file mode 100644 index 93210494..00000000 --- a/ClearScript/Windows/JScriptEngine.NetStandard.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.Threading.Tasks; -using Microsoft.ClearScript.JavaScript; - -namespace Microsoft.ClearScript.Windows -{ - public partial class JScriptEngine - { - #region IJavaScriptEngine implementation - - object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) - { - throw new NotImplementedException(); - } - - object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) - { - throw new NotImplementedException(); - } - - #endregion - } -} diff --git a/ClearScript/Windows/JScriptEngine.cs b/ClearScript/Windows/JScriptEngine.cs index 9c9c5cd9..085ebf04 100644 --- a/ClearScript/Windows/JScriptEngine.cs +++ b/ClearScript/Windows/JScriptEngine.cs @@ -144,7 +144,7 @@ internal override object Execute(UniqueDocumentInfo documentInfo, string code, b if (documentInfo.Category == ModuleCategory.CommonJS) { var module = CommonJSManager.GetOrCreateModule(documentInfo, code); - return ScriptInvoke(() => module.Process()); + return ScriptInvoke(static module => module.Process(), module); } if (documentInfo.Category != DocumentCategory.Script) @@ -175,6 +175,16 @@ object IJavaScriptEngine.CreatePromiseForTask(Task task) throw new NotImplementedException(); } + object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) + { + throw new NotImplementedException(); + } + + object IJavaScriptEngine.CreatePromiseForValueTask(ValueTask valueTask) + { + throw new NotImplementedException(); + } + Task IJavaScriptEngine.CreateTaskForPromise(ScriptObject promise) { throw new NotImplementedException(); diff --git a/ClearScript/Windows/Nothing.cs b/ClearScript/Windows/Nothing.cs index 2716c69a..e4359298 100644 --- a/ClearScript/Windows/Nothing.cs +++ b/ClearScript/Windows/Nothing.cs @@ -21,7 +21,7 @@ public class Nothing : INothingTag /// /// The sole instance of the class. /// - public static readonly Nothing Value = new Nothing(); + public static readonly Nothing Value = new(); private Nothing() { diff --git a/ClearScript/Windows/WindowsScriptEngineFlags.cs b/ClearScript/Windows/WindowsScriptEngineFlags.cs index 712f96cf..0d107827 100644 --- a/ClearScript/Windows/WindowsScriptEngineFlags.cs +++ b/ClearScript/Windows/WindowsScriptEngineFlags.cs @@ -82,4 +82,10 @@ public enum WindowsScriptEngineFlags /// MarshalDateTimeAsDate = 0x00000100 } + + internal static class WindowsScriptEngineFlagsHelpers + { + public static bool HasAllFlags(this WindowsScriptEngineFlags value, WindowsScriptEngineFlags flags) => (value & flags) == flags; + public static bool HasAnyFlag(this WindowsScriptEngineFlags value, WindowsScriptEngineFlags flags) => (value & flags) != 0; + } } diff --git a/ClearScript/doc/Reference.chm b/ClearScript/doc/Reference.chm index 653524451d8388930457b87a5fb61db488297f67..6397cd133e5f0c05a7d252916665dbda76f95410 100644 GIT binary patch literal 1344678 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 z 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 z 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 z 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⩛Lk51nV)e~l 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 >?^6I#q`l2P!jZuW2 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�i(rrSZl%nRa%10R5+{C(sBckqX? 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 z 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

EsI!RcwmXQDfNE1ZcoVSTPWUk{0jtj3y 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πBS}KFBA!y0selzSFPdtaK+5S`Sp z@8?$cc~RmKZw2eL1VaM51%KdvN$Re&1;>6C(;J$@dF+Rsc(m9KdvW|3(>69D5}ds~ z{BI$<0;2$g4Y4Ji+T>oS?c_>kLJ>>VX;10BPI4{mSIob}JW)q|A>rl0U!1;t!q4XNC8$$np#6<4~+I zga;Jb4hJ*fe#RdbBt^pnt|8v8%*#_Ef}|>{ z_d3yHh!NV%SRLhwVrD-Gb~U*I)xlTNoQC= z=DOz@E(*2316j8Jg|mQhkmahRTOdxTMs@1cEYf{gjKZP&6H(H83BzUi5Ykywg9w8pA2`!c&&`V4YRm0T<9-iRh>GPc8^6WI*rX-OGH^Tz*W>d(M9tVV}?E(l!b`H#21iSBX; zEP;vG9K*97o%w>)lNmY>gy_wZ@}+WHr%bF>g~0fJZP4nGzDi2lvWIur{^l!4h+=KO zw4h#jM)fIQD*WwHY0nqENh6nxQG{@vnIV9*=LNReSbDP3T9tmO_AwU&Ug&LguDU^t z#(r@h>Up|mav1UTP~2BVD$ucU`SbC{4UAlzprt2V|DgJ`ym^?E-)nE?&@LNY7;CTB zC@B2;8|jLgx@nJr_wm_=;v9Q~}(YS&}lP)l5bK_U;%l)rtawev!Sb#oUAELV6{UNq=$A6a9NF0Ly4<*@6F zS78k`gMP_eVukx1O6%}a#6WhoT~qC4s3MhQ|CGu`lo$N>-iF@p+)`jk;CUUMl~On; zM|g8eT`~Grp?}kpuHKu85XEl;%Aji? zXR)fvXhuscf_y9sI56buhB`nsm54LyUWz_Tk&Pa4vPch1LN}0E!BP$ zrXvcSmFVLhOpd-xZf?{>NswIaDrfsM1riIRteORM$s87-3;=Wi2Ikj)=Q@p-;BZi} zq&cjw6{(orB!>e};AdtfNo-Sb01pEfM$~w(t|3nsn38IzewfEnw3cWMXl;j}E{T_v z^dm4{T*BW4Mq;4;T|IxyTq27rWc7F&EOOUzJ@@h$Cq#fIFfuFHG*~WE%20kB#Vtlx z2Kk}0V5j)eyYnuv|6&|dSh8Gq?it`A|MC$Hu2R6y3)8#7Y0�BM%6`((g*tKKCXF ze2?KAz|myr07IiS4~>S9wYpJ81ub@JxRaN>Y!QB3i*w$IRX^rjWeWH!m<2!x-eC+R zG@&~_eUO5b|0c-80CI1?d>++ci&=L*PDCRW_{D4z2$HVQtghq}hGSfQjBuykDB1!S z9j#tggAODA`_qjhoDW4ah9r$qnR0Q<1h$S)Y@G*lYF(1`hh>kT8(z0iv7HbzjwFZG z)fQy4c9dB405MU3KPhok&_}*o*3;t2QBp$x7 zi=-iQ86D&xC$r3l+)}Dji&%_ROGP93!}ij2y_OyvGnl_M6OA~_S6iJd+;&K+2K@+h zU%d|*JLqlif~}P&Y!NlORo$YAYXx|p&cB7?i4BZ>j8o9xDMHB=*5fZc-*H$nWuL3@ zrXU{+vN@~|(yT;gPSQ}SI-L4-jNqisDD<{T5Foj1sz}e~=x%F4TRacQ8hVLeE8GY?dPw+^=(BInWcQIi2z>H9vl0 zWh?x1SmwXd(m|5XG?vP4Zs|lL(NtC5NMRjyinfeM;7EhqB&FjW8=r2!*ImFJMnpH9 zon6GR;b~~eGYmH$ZVES>XZ0uec_W0piDRb`4aR*;#UTRLyo>)74TN9JGV3Ezy^xaP zN0AWL2DA0jKJhu7qxW{GOehCy-FoU))eK9~kpG$(ZPi~iYYiXvDS+Uqm~?`!!7U?C zM=$LgGyKS^0s$8B>;_z`NumkJ69^mACSRri84t)#>n1KFRQeL4chJkB2Xjs}hr@~} z)P5sD{ENC_OcS!os2BGj*H1NAhI@x){N@fxH^y*uR?Zgk@ zZ`w)|mkU~(=&!bm_g;P<)#KRtVn5iYhU#hg3Gq_Kp^qFW`o;b-&#vXrvc~RJ?Z0zI z9WXxF04s%?0-w$USY&iYW^)zV`trz`>v~!!pyX>*KBmHD$`rDh!JDKVa|5cikSa!E z&4J}}Fdz1FH{EAy|=Ho*-d z;>(UAPk!qYvvdw{^(1hcdhI68x>wX~LIlkzx5hoGDP&7Q|e@4wX-2LFrq?$A+-O%5ph8u%-^(DqQjIJOT9a?j&Dkt`Qao~0n(dJ~St}TE~ z?XE-YWf~kVZ`A7nji}b$LX}Q@EEUs^2H9nYdAKNAr!o@lYCjzd>Rl$rdN{Q{n*5Y~ zRBf7Q??ld`c3l|;S8d^jU9N`1xB$A`A*qk+%u;n)MD*w|4tv95*7fm5wm*%MK*Zp4 zr{=GfO}uHijnvJOThZ4jinLl?eTmXN-zohYY4LyhGd59%(dv>HXKh`^g-S<+QzI=g z?>2-Cfm;nEnF(} zuc+obDq&lAsil)#9WL;BSgrU|^_~d+5!cY1zfR5SmF8GD{44*ZqqSnnijYfLV zr?FhI?<|egjBmI+((X=kPR69}L)1*9C#ih-=0&)DeO-9XRdJI$bt13UG0id5oY~gH3nuV=)YLZ>|*AF<>$BdQ> zEp(2~m>;)LtOt4piMInwFV_Yg0Q-gyqx!K3!vn=b0vY+PhAgDP82(I5!58A%pyOAk zzQtiNTUd5G8f@ma6bzSai`NGSC5q6?R%$=&2LwN`T28AkmE&RkvV;s=tn zq-iVe_DPT6eN@pnIkavuHl7|FtBw=t9@c8C78O(j3KJfk#FLVTo#FrXX_|R>%hTGm zv${P0#Lwt3Z@P%BBv@UG?FR&yKC0|KF`nVdG38A0^;vBRa?)2K_j*Ke+T%!aKg4Ks z>Z~j>ZLM}a3CNFXsL)u3#j$1u<0n5uaskz@C%Xe{K&ko%ZQSl*-$rdHTzyp9i2Lht zrMK$;JZZS+Cx_(18WhLHbRYGY8C0{u&N`VJFm2LPk43NGoUS*7gC4L;3UE@s=rTiB z-b3g@YNh+dadUQ)*L9A480+)&0mfWE&YK|oCP z1hPyO6sfMVlVa#vse$LlpN#aV{{9U+PGe>f&IhB`>809XMwYeV4S85}Y-;w?H)Khz zlWb@Qs>)$%Z>>eU&)T=1#_HgArco!lT>^4<^Y9^|l09Gxh@>=~p343VVM2}N zeLy$P5b{!Xg5)L)?A=+;vy@ZKxk0ExNtq737(gA#U*mgVZpuD_^h)ard3092Og35? zqr5$xTSJ@maiFyKAZ{JUMU|*uFqthdC}T@e8+axR12+5uEUsDrNKsVI|f%5DBk8D59mmtd!#6*`m@P4mC*XA8*v7nN1c1!KIXQ|}P(cu$zax7Oks z+9G3XVAr(0izjS055+M}I|hu9GW7L7%C@fzrqxhABK&TFK0#i^awlCeD{3sefLe6Z zDlC2hR7AQCD2fQ`Hr&6br2(u4*VlBfXMIKle-^&}CY=yL(WYD&x0us>uXJ>Rn(sv> zN3kKH_=)2BYoJ|SlyPouvAk$`A^v{wKB(oNZF9jE3=YPi4$`riX)EVjO+{u` z$V?j3lvFG}d+968h@`Etdc6SRyJj|eB?Ll%{|O8P{9rq9yLYssnY~23w8i2}X3&g` zid)h)6ctaWon9NBVGqP#bBQAhdi%HQe+D)ex9=D}FSP(Jk5{|1#X0g(a-+JE5p>6gdw6 ztF_CGrWztgFSl0a66r`d0o?>H$B6vStMl@C#%t|PCl#|1F>*sD~rj9L! zfq+EJbiILrd(X99qMhf4m3WU-hu7EuToYAVpyccGSZk#G~3)Z%xCO`~S5 z<&(FX>e<<5N7BG*gGXCgS;MKT>lymkqAYgP#jkR%&*t5R=yKy9-EX0i8Hi-vNQ6LF z0CFLTZ;d>FD6^d%g8tLy=6BJh(blrb*~9*#n7X5)(Fx|!+KkLXqtREzzejbNnD__w z4@5nra$gcZ0bpP#eSjZ{FMvG@n@7k(uQp)4{LNS`w&>mSN#goNo2?D7gNC3aAB9<@4=d-X1QpJrV+g(|3iq1 z%UYB?n)@=s-$VwCd_y_s%T&pY!Y0#yN-?fMgB(`%7DU;#Du0jTx_$gYikaK^3!i)# zL7ygXC;LzuE6C=K-_9%dFzoOd>}edfm3GPLKV9WmBiyv93w%mjmnA8)3F*4A%nmCi zo3sd;>~$xW`yHbV(oox?83$HLf&+Q{8snRg5{;iUT2(=%B+&FOz43lT#Qa6YD1s_R zC?aYljgdp+;J=aVsU4}j7Rln4NMtCgS3QJlTjF2org_A@(rRIcW{$0ITtS`H7*jnQ z?IJ{6NoW)PyKy+22eC=z0wtMME~*yY?a;XUD%*@041HT*iCANs{WPcR7(d#@M^JY_ z+GB;^WAR`r8cy6@aaw_Nm!>$J0{JOskKGxq8%jt4)i9d4!csI$L1YsfFeZ#CteDG^di&zVNZD0(j#w;!u~?*d<4PlyjNjNGyd-BKeIht?Ma*%G7CDJ`Mel-lQ_MI&s;Pr^7 zC;0-0YU->-82>bUMyD#cY%bMQn}Xl4cccktWMFdk#xEC(o(-uuTLW z_*DPQ{t%{q6zK90m0FTKz_BP_03tueVt7l5T)M0$ELQhd-iUkpjtgyVsTvE7H~B*s zSx}RfTGGbu1BKP^v)@}Gqu0%<8QWPypWAb)8(ZJqqGMuPp7>^M)FXo(;hWDTgwUE&{nOy`TbCtHWEFRXF z+O6AVFU4fV+QMxFNba9J@wqemr1{j?(37vF z9cHZ0P$~vn0(L-?*^`@W9gwEd6#3(<8O63Ly^;0n_Jy^8RG{O1RDa7d6mz2QW*F?y zDcJ^#7h{4M=TCgSo~eDA>LZ+EkZC@tjv^Jwyhd_ba6)HQ-ml|9qB>jbKE6JYul`#wZ=;6vX(K_|O`*T(17lHZ8ZP0Fxy)bn zGDL5-5-GmZ>Pc*84rHjao4fxpdd?`6<# z>K~R%7b^M{WX8a6)`$M`2=eC(mk_>W-fPp3ZP5#m8!l6qZ(S|no#CBoG?LG$qn93L zD(dqfCv5bYX+z~SdO^kDFkyH3ffCn#QZwvHVAwBGwAium&r-V9UMR%Ydvs3}c_)Z@ zzCY3eLPp!%Jcx8Msd-+gd)8w|GiW#u^OG!@yPN!|i=Z?_o+hw|+`%p%%6t3k0cG)? zoGrnBgshiq+MV>XxPEuJ*u^h?VZFtTOry&KeQuPqJk_Pg4wB!x9;nKO2N!4P6sQQ^39KFPJfzwF zg-@T5QK6na?52pKTF^KbE7-~d;mYoM5_Xig2MhafPp*y5PT<*8Nz8 zg>0^+s@cSx;48-&3qxIN3vGrmoP8|nE@^T(uTw0Lq|6?YYKh;^JzuavIqRofXOV#X z-PKGmi8CdnIdkkxO!b%H51pDnqp)@ncAbO7AdP)$Qh9t+T*Gvasu4Ag4C!9XFTuJS zc-rzl((^wDtx#%7i2$yN$G8ER6YFv!s`8|!ZncLj7nA)T^*me;n$E|<+h4qIn1!+F zCppBVpIG&|;eX;%?F9oJaBJHPd0@FIgvWqpjU$&L`vaFxH7HNul8C9MI(i z8N?}rm!KTe4-XAOV#yWx1!UMT0!N)sBM8aRva(hdk~z2}AaERKc)=M9L3Y7W01&bk z9&tO*X<<^IP0ognaZBpXbzw;$Vc;qpCGV?Z5&L{-WgelG<~_DLT6`g!XIHLTxBUw} zPz6FK6dNaw|3#$mfP7N(ZM7(AT?c%6fk4S2@y)2rPkjCQfN0(^VZFokG3|$uH)#k* zbrY_lRh6?ko;X1h_X^4v#Ox``hV5H}%-x|Sn1-9sm^u387?39(h!(To(Gnx({*YCtCZmn*ygtt;^fkdfMK59RmB&OXlzf7&5IA-idz-cT@{id$?#6&XF4 z2gIr0&$w6^Hs`U02iqv1W#^Sd4MTA3+TA~P4OX|MW;OaZ!u0b+NKicg%RvVk3rp`2 za(fKAmOnLr$2dh;xC?&$-KjZ-@%R462Lu7!74SlddvXY`^t>Pf@t;+3BI1Y^Ih#-Xc=t&8sKS{VMNHmm0; zuhZ1##uO1v3ya#J0%bXM~^&o^nTn6kWiKo zk~);*%{EBG}x}w9=rPb#gZ>5S`srx3GL4|RS0_9+MtrWam0g) z2u(b-b!|KaR8&)oJ92zoe+sf6AoMPm$0;$|l|yK2Q@Xm-!uFXQ^byIk=MabWKB7ib z(m|-pAIq#fqYeKC8T7@~tGA&eu`g~M92B-(D0dz`G2VXS(elySvra{@xlmC;behK{ z-WvJLjnE%l!ikdFgt0etUPwaq;7h$AM%X_+FC6zU}yn2VUpZtwAX2eAF2FcBfif1Yo2pU*sQa6qHd#rEty zO+{TRI2Ke=S2u^oU?1V>tGnQ4>aAm7LFdF4QdmQm`V?-7gcBE!c3}F1yW%a$*MrDj z>7nO5FfNiyYOH;fMpY1dl(Sr?MkUwQ!35N5XmhzUUQ{R>ro$g>oG=Q_5)9cs_Gbe%ysUu(<3(NP+fM z$sIyR?2f6=7q0M=EFByj>Em|r@bIqYZaWk3kX?%C^tjW^5_AJZo_GHxSH~eCWc}Xb zuYS+Ge`jaSS0dN0u~R=Mf&U`LgRgYJr6oCsM?X2MdwN)FlK_rvS9tDj z=}NEhL5_oPgWqWPvy$hG+BMz(9vhj_gaZGWB9Fn9R?AKnyqjGavH z`#025~^`^dul$}-Dr6|NB z*O6Szn0`quu|p_;l!&MV1)pl{l9-Vzb;``6`ll%OHS zr0H<^UO!#>+RWPrUX|>u0bBQ3AtaFe|LgWst$pkEXOoUuJb9gWUgFZl<4FDh!0TYqkSpq;1L`V3z z(l*9A6%miC<2EWViw$fIn5L1*tWkQVBq^-4h0U?liw|&l! zH~)4}%8)n!{1k8AZC8(*E^A6{ZPsOtwl;L9B^SjPSsqir_5nLwkd9!GV8S8iEZ zSMLYeYOtr4Fj-nAhplOLvYavW(f)D+`K{+*op7sbYgHw}J~Fsx2KZ^JZ8Rdpjkw}G zO(mX0@z-0oZ-I*;#6ne=j>yd!3f$2m3x=n0BdlYIj<#$}!|0K6EW79HN_sQ8J1?qI zo&G(NbSTp=#!~y3+y>plw0uUC@~~CB9oG%*57^zQlfOqV#*p+@{^J z!qsr}`VkY&QlWi}!pqbfnca|+9-bSr;a%O~qP}UEQ4FHN#gYK5=88-~PZOIzdVl|( zVcGP&nM8A4={|780zHZl@G!U&>b%ijye}X-=`dwG6WwQ^pG!^HUsE_^g|9eMajWOf zFI8}frF&9RGAd4%Ja~!p`SXNpPO`%^bHN(@6IcSA#ho9U#c(4cW&Q`%U0`%gwl?}j zV=L(Ga^2S0^9^I)ViFNl*I;~E@^)=t(TphKT(t_u()W@IxxMvc9aMyoPPL7Y^XQF) zgQc?0)4(K7A&%u0nML-`azPnIfx$tl9-Ui_@rocS)}>mJHuXAM_H%%>+LE=WT)`M_Q$eLH88?n%B!Kiel~!eu zfM((GbJ+cnkSHu9My9P`Kh`32oxhG7%D_+WNUNR!VRNZ6$k2a!SLthp}Be{T%mXm$9#+njS%~?RA<^GD5TDe(a^`>5?Tx zvpkczut>Q$Idgh(#876&fRM?aw-L{n-A0>43v`VQj~bdX9;fMm@f*DYw`a`6SMe?3YLA4n4>Fl8yX^Dt zBdZc4?gbv91T_)yHwh`cj%*Dmr)QHfKvEy)=0dwK@?*^$hfX{g&+6l}U~DwOh`f(+ z@C7rZ_G4#ZV8gXXXyWpQy+N!720aFwA>|~exWz-2zTWLVD0-0C?&Yn>@NMa)Ok(c(O0PnD;%xcn)(3cW_AZRNqtCW@Xq< zO3qC^*b7_BEpLc`f(P};gkA+(Lp{a~(rqK~V%-M?ZLQ8~k4(?SI+yM-hz&P^IwpcU zFEO~?mchi);AlWSQ+)|tiPx%8q@m&N?;fQW;%bcT=wDc{4aX--%BaMMJrj3IiG%MAvC=GKwwEb|{1( z9=jEn-(sGVh2``&VT5ef>Uy|M8ROac_q5oS<(hZWq+yeDGR&w_->%)aX1sqNuTO{_ zdfgIf)E;6@lLHpx*!wlP1s3t}Fi8Qca(`sp!t(3c;~i#X=@*J{cpgtZ=UNroJ?acr z-{PG@-4L!Rvkjy}tjWam!P?jp2DR<7;m8kJA7r`=o1j_Uznd#=$jVog+(+33r@#!a z?Y&;z#A)5Hp>AjcN0;t)NXl0B?EUJdv2(QMPlx=CID%^A%deU2=zO_L$&zhPIF=J6 zdo4#$(inA6B>iMJAsxUA?;~<$$Lji07J+*OrYVdWhC6?2Fe4ea5B$AV=DO-%$F|U# z(Ad3u`hNU0JDYRl2Fs9>;vbVMi{w92XVb_={n=JanSPz(u0u=VWJI4OCD&iK<&AN-F+X=8D-(6^I;4r1j+q4jN5Pl-78g)+E6K9kvS$vWh{5_>2mf|I%Yi4?^%hv zhxfC&Sc-M1JMa;GGJnXjCDl<6FO$fcV}wF0r=>j=yJFpD1?OJ%BLh-f-;p}_g( z&!B=_C0r^`A{M{KH(_k7a8J%W!t7mpHItqyIjDKrPWxd--gL>vntJR?H*Xy?5~!fD zN%l?&!cJN27rh#(S7khtl}92;r0}!(Zt69zD1VYTHanoTx$d*|avZ0TNi0|4JFdYo zzF3A@iXq`j$|jR!)8b_lzveFcAAvI4q@BS2>B~S_Qw<)Pu$`=0Gml2wbGbn2A2z=n zFx>pqOPH2q(jWi0E*|$LRtj)lS*tTUrS5Ra;8kg(hI$JAP*(=0p|_ovcw_dT z9lx_TLOeI!OL`^Uq;s5ef};8Sdt*SYg6*~CPxf(k9}%la3#!kB!>)L#IP?%`0ewnI zb0SDFa?jM6V#-r|#XI@sa?hPIn#ZMI?~<$dA~R1CgjpCT)qIbg0pju;L_IzRcRT5w?K!eUZ!N30ZTd$!a( z{^V`>>apTUxSCQ}`;dBLTO!iqS@Y~~!do5Z!ZDi@n@#SWZz>K0^GuYK|KH%E7F59h~ z*HeqaR8tOsg&SO_#Ksl6svSApdN_6~KpFESo9sK+pq#AxNfYDY)WhFx*FGxVxx{LV z%`W<*rl|@q)7GXr#|7IN6k*8osy6FR0P#<8FM3=lxy2U|o zS=7katc@sCS7fD-Jp`gr65|Mc?Ht7G+_x#P&Fbl?18_X<7z-v}PGQ`=(Ydx6S@-uZ zJ>(xYZlxrWvX*a`K6q`$PrxF$fzUU3S%0G1#dPVZIfOXFF}Tv&V<3C%K<9n2it}XP zlm)^@lpOrG!(QjRYg9ACi>L4kA9}>&Nv8Wgk19VG4q|(EeJ5>hG+K}8&-AlCqNS=x z4)ayZZlkVPbHrvDSkPMA0yTQqcZvKl2)0Fi%JR% zf${QEVstsfQqE29tD`gYc!Sje3Vr8+V}_J^jb_-!nr$A1E9?2yqBbug8xLuzRSlv9 z5OGOiVPTC-sV8m++fMB=ounA&Di6-NUge-M18^kBoqt(?Hlpp6kl&qcsPUuxhDTAI z`&j5OgNOY+7k_BD%b?p9Ax@Ty{EpCflM{(c%MDM9A>rEGsqVg}H*FZ>hLXdSkyy1Y>I>G$mJQgk*cS-$MRrk4 z^bGxlc)_|?-HZGy$_?$L2rekEY{`Hts^|i$ zAu;~d^a3DFYeC!G4);??O3z_XfY-hd3k5>v!Oa&~MWg^y=B~puF2BI0=$S z1pc&70eX%QF?V&=WY}FHEd6+DBPHGa0&N+{>R!b)3$#6af0IQz!pGtimZQ4uyLHvEV=D$gd)|GJILSCDsVuBsLg{^f6<3%>F+rZ zM-{k@JpPX8tr`0P$=T4iRLJ^8gT=*=so_8po;MjQiH$|ZV$5IV@b%@`^0#5J?`6S` zseGO6F72l$rbFfa&&Y$vojv*%=H#PTd-^$3!g0X)Kfj{|H0XVyK`!#Xwz?{M(t_FFpy7)6G4o+hjS6h5C#QIJ)Q_;9>1na;CG@?Hy7o^2>g%l2j^=_sQ&6* z76SlC3GqAMR#qc=%|`PAs(KAa-ajqCo3T8jYv4J)6#^b)KE__=@5mqZ4ZRPM^u0EL z3GxHyD<2EJss7jH|E9YGhB{g%q!}NkoEfcjMm8-h~U7Fia9du3`c@A_~+X|h%5!5xtKs`xw8R0bZ8lMkCYRz z5LkZrn|5)4Ut50)+=#eX*vkN=EI{>@IQD>LnY|jG<2#5){U$FSlo{V{;?x}qyBOAg z)&T$rKn^+3F4%di^Sd-OUv};@otb&6g^mNl|3p_x<#qb>?2a6LqWCj!HPz&1h~I&< zlC3G@N3)D!Q2Bn}0TQqra8AWyVMo!;vIDIp|BO{Zm!a`9St9BGwVSOr(=CYFo!E$7 z56mV#6Hc;-Rk`ZigRyoo&D%DxLD`b{R&*nCK1;HZqsjk|kta$F00)4RT3GYleGe5w z0>$y~HVvC9qnrBb1ST1$b~qhXCN-QpUa@O5wr^}Kr7kwM$qcC`;hL`BRLred8x6@+ zSZWTcXxrC8n~(%RdgsW?`XK@n`xtlw0EB=HOkWUwimj)5YpE%!(t?Sa|?C}TwG=U6^7-F&LBou>?NHxGfg08?wfuX>@F|lUof;_$JK$}3fNF1>o zh@%MfnA7^oi>Z+cY{eX-wbJ@5GEsS9zY3;qzbr_48pC1wNao2Hlqzj&X@5MKa4oyX z5;zI7IA%!yV)C-4U0~3PSXEk~I_EGZJ>nHE<+6`5v~iC%ujNLKlA94>o%*G}QJege zP3950=fyJh&+pdd5wxa3!gRmC@D(Nnth1x%JLyg}&vu-JK2rR2a1xrbq)KI*a*p1` z8^@1#Qq|UIBpNs8(UzKKN9<<=A6v9WQRa(If{|$4t^I8Z6)osACvNe2gd!eM3j#;+ zoy)BqL9|{@EPqMREwZSccHmR!LY_Ms5bFEe9O4Ww>8BM6)mnRM^Egu@54)Q>TNGcu zn@v+Lh^8GSM%oE;V&&W#QFUxtv*#tNxgl%mZG&AERSb8L{wtM}J=z8pX}WW&$ir}{ z<^2t&-aRTDp`10%AGR0`P%G3res5{o9y z3k_U)za|7ZqdNmdrh`KF=!cmjQB6^j<>`ZLi_QbX^v2EMN#I`54Z6{yme*U~)t=0c}Rh@IX z&Z@rlwGrb)DiYXWfd=i`)8YVAP>c3!3t|-!P}dpqY*wT}8Jib}opwc>i*9Z1#ZJf?-d9eKoqD(^In& zWv)wueUY}w+sb4u(|vCi3k@Urb3f`e%YUSaxmfW$GXh~?_K3Om(T^;nI5;;ib&|`S zT5zI3@f!?$;I~2Dq=@!mXoDcGYJyvX*K(kiT@`d*b2l+C0~&`cf@{epWS1ZNwfqv* z$mFv)Jls--yOl0c0BT>yA!q{4KHQX&rNH=O7gVQ@SZfZnd1#B5H$_Ri7rRW$th_r& z(b?JBFxddQ5mLcWzgZKf_juf6JYlEb1p#8rTPK6@u=bm{@I%paa`%2E5? z=!c{AF!jiJQWsxq{oEp@h@Y0T_phjX+J zUg3s=C8dJB_|~C1No!Xu;be#8`*@`Hz_sm3WRRD$kUdRvIf8N)M}`GPVGv=xG-s3E zzXSK0LVBGzcU8}BAf?xGsOWZ3UomVtpX%IE7d&J%hmT?->^eTgRl$^08yQbn5VnhG z59eTFozjCPgJM7_fMtQMVD`Vw1_Lh}H9`AK;SPJtYfG;L89KH={*ix**oJuwtCkbIf!N7J0#na^vMf_aE~ zdBM=D{|8(o(Ip_ViyFOCBH7rX8uc0LS30_DaO2W+gryb_>MR4@X7MW)*E=;Z9fX4v z)(4lDlx!>+=QS5-nPdLKPNBCgo-&C>u+&>hVmDx|u*Ux)b%_H?23{(*n3ZoE29^ia zDn+gx`tyX5qF3@2^Zh_oP+F>c*RF7r#{6>gFpG*whZLWz-tfxypjb$kq!W*ZY3_K> zV;mSE(LH-h{^`~2H1!CSFfRDu$CVRB3K;5ip>)LB+I-iuO%vf73ENwrMo`TzUDZW8 z3FoGFm}2DzfdLUj-=&gu=Fde4%dB~64ND)xsNA>xz2>9N90s3mt9PE^1$^cSxlP%U zt9&*jubI!!74!Lv^hn0`d)Vp$NX3d82jS06TxkCd-PKu@<|VqysLNw?q>39hxZU^F z906XUtHhGgM+#=xvjaosT8^8B3`mAC)Q+5U>lK+KwPXGfWC3L^Wk@u5SDuRzyp1Jc zm3cKnKb$o@f~FI54GrY)LnEUlYoo{JRBp9n3CDtaRYmWn!B{gs`A7?de2ZgcRgM2= zaB9*#FvhEf{U9g9h+}UY6f-klm&&^b5y&ZaY3q-w&suDrnSGq7I z{L@nfVF-b_dxe8g_y(ME(9RKLQ_9=RgK>`}v0p{YRwlZlG94ic8{^1Yt>3v=@qOxR zCdbMf9U*&YBeLo_!0?0g4n-dF3{IUDV0BF^d*@-lUglT9!rYwOmUhrIjZbY(1aCikU94CcIDb_ zq0FvoNZV|4K|+#HnLQqq8M8`JmsQ@C;7$uu83SFUGg}EI(eh#x72iUe+$AZoZ&Nw2 zG*h*UDP^0ylhFL@m1j=v#sbTf zG1iZT0@Rec!?RKZMvf)5*6Rpz^bN&`_qfQ9aPeN2fmkNrbR~j1rFK<``Pyj}aWl+n z+AMzpkZU(>+HPVca7b-(^95Ozsuq-q9V1)LC)-I^X)_-snSeiJC&U!`G!(xb<(uc%Z;bnZ6G>xq;#ToQ`t?7^-dNFs!L=bH;t)Z8z%t>HfXBC)r$TpPWWc9Br zH_5`(5U>t>Y~7spwI3K<3OyX5IAbcl8CXyqpCjxz>SLROhJ`j@E$)UBW2JKD_d|3{ z6nMIa7L&Lh(+yF@_|h~+#@!=f6ps?}q}r>S`j*z&)pFXt!KQn)kavDyBDO@aF5Z98mT?#A>Hu&sItc9xl zx&)qCVj}X{BQ@ZqB%{;i2<(*@%sOG+VwTp`e4vc$&yu7qqd`B5y+&~_aKvbnJq!5=mm&OTNo|fa5^Vd_{5K&DNq_I zIg*hq$TqHwha8|R(gptL9y|6$GS07m`1P?nUV9Ob*Q@NGD{rXRXC1q6W(|ZB%>67qEiP^N3KUFbKs#JV6A=cBu;Rz#ddH!{1#l)&w!USdK7z@w+9|Xt z4L2(|LB7&k@C=agVQX2+DDE$<_PF+a{BsxMBeCzeU#_n9xpIvS65q2H(e(;894}k~ zIUiiHqO|gWh`A<-Opv{5pjd4o?!seeC>961iKGh4&RCM_>T)`eajgTceeOSFZgHVISWG+cYSr<2m87syTw1OW*W=%53B>g)WPgIp= z>e0LwqMMJeW8w!HO|MXQ6jKy8qCL^bBEo>mei+Rh50bkbuG!uIQ1ojMCzH4_VKe|B zo%`DmgQT39Ehfi#KIFWCI8W0k$zpV`JqVUL^%Ief&{qv>Dnz$ zpWsf&Dhf}0w6~}bgZtgiKuVZB=eB&_&y!?|Dcb|pvii;5Sw3f`dId_|$K4jAG60;q zPNf9i@*IRCk5vHxldI`$%*gD>Jg`zeNVSAbjIL+hS>xC9uej~-Ree>1tt>WI2VbWM z&ZUwJ+R?CRy@PE_913E4#<^ z-HMNYwFGX(3;?hFz&8V^9eyi1dKdWai+^i|{|$nluv99pk}&&%cwzh!eWHdC#tMqG z3Ua^w!1WJG-$S@7r*grPJnTLDU16$I?-{0q=?T)QMs%NZ;Js$H8-$l2ybU8%^9&%9 z6Bx~06nf`i%vYYUdhp=ieV#pEft?}A0fhh7nI6IA3hw71QJXjX8|##{8firV%rAUs zCyPoYU2p@5DmZOv`-nVfj%on#Q{YcvgC~^?HeOdm0sVyR7 zsf2J;=;|MF2*9y?S(Re&Fs3{fc5l>FF^@CF3J@gT!zxh_J*8$6DvHh_1V3Sko%zpa z4HxjtG0k9MW~$N_a5E*OB83+TpRVD>pY#U{m)e(;JJWypeN6%>Qy^{bubgx;wSWpb zA2yd*|1SpbbGu>KLn5CYOR?d zhW<4`PE44NQcuJ=Ov_95UER;N$)GFl#Xo&(FeLn~Ga#9ZU$yVy4I$QeSUNu3$jqLS z%@fQ0-6*(F!)yR+6ZJsKv*%?yt%$}NR6*fExK6yP7yqq`U#XczUPrlgV%wSXlD>A? zQIiVYm@WgmB~C&p*LPLlKSUgZ6Q^nIklk@+_1fEoH1SpXx>to@7^(WmnJ?os+dG#s zPseZT3*>SHI`%i6=m3eJh(pf?<%jf1I;#Zezuf=|o)|weCp%VXtlwFH%t#UAuA7A}S^4Ie=pDIN#ccL(`QOM5{3QH04-1F} ze`DWTk2F#(Q5;_W{zPv;4FK?ebqlttGvB%ew*6 zqt$QK!ojy45y<~k3)TGU41k}e083NAB^)G_y0veoALI~MaQPtJ%Qg^Xhh_k%dX1TVywt4}27#kfgjvQMi zMN5j7o2yKmYZ(EUCHC4OycPgP+scq+qYi6jRAMv`m%RLsY!KH;F21WQVG z0A-VBNDCmqkp%lyRkR#Z)?}{MtXULLbe_bu@t~|xE;8F6J--C1!6K6Eq(~XiCN-$T zP|(mK@eot!)6%9);gO})x7hAM){|wD7v*hQxZq_`PBJT7sV-Dfnb3kWGFGBp{(D){ z6-SU-W@(U~ikUf(Y5}SFuNBG?b0CW;eITu_g|*XcJ;#ZhG@pZvM7JWoGccpH)Bu<2 zJKo9d%x3B+3ZB~>G_LC7WyV3P)}uM&qKfs`7!CQtawcL&)73G4_2CmcxVqY;D{X*&pviv!&`Q%rmoo_!D)hZAER{LCWh2lNQZI!1Lb{O(>-yQL5GOInLEC zw_h)eNOt{8=`;hOP2#znnKXl8e?CK}R(H`2* zYO>pyc|MAV-yFt>W{75T9X+&}&C(}Y4jUT=S8-gYoys57o!zC8Cd>`Eynaj!79ORE z8S++QV|&StExoRQ*lxzs;8g|k$_M7DdL^tj(*~^sOok^}pAD-tAzo5KLtPc^MzOAl zmi1NLdSFVcATN-f&eUtt?Bl6|Nt7X?2GH$WrDIG8vnkH8s**K_v+*pjj4*IPwowniHpjLHXp&6SgYJf4aE&1g;0gV#dQSq@R;a}$ecAATfe-6G<~2E zVGvzzYh5tzC)FI5$WO}H7i@Y zZ+p4)oy@q1_K0f+q+}TA=yy}-n=C;0%YK2*DqR>l$TgKD)hs7_Qmp@W(b~F6segI+ zq}9DuMr@a@e7oXL(`jSy#=(O+-V?|Q^6re(epRz?4GV|Y-jaGC^(s7?xe8cj^2t1z zTmTL|RLq{rY3%~)avlz2R+@|;e!!;j+m7i_z0ah$NU?6b^w*-t;hBnP>X8Mr+K!Y9 znE*LdwR=}l`&**z>6l_woED~bOJi8m#(5S}h_-2~6&qtkG*fcMnw1u)MD%98Jk>&; zhx%?gZgC3r=)kJ-M1=E>BB6AzX;q~|!n|qVi&w1Ipn^HYAmiv1&+VF_rPC9>ruC9d zA6)rtxgFR$d2Z8{*v%UvXlx;2B&!su_9Kb&hrA;l7LyNc$IHSM#rZUZBKX{ejRN}z zkUc9tvBfPcW0a_-AXp7o!JZYLm9tG~1u09+;Im>(zgR z(+gQ)ey^*xu*oB8SH)%r7_7|(ip0)4*X779?$+h~9(l5~Ll&Cptm*y8HTaD<2hJ^i zHK`O{7VO1N1?M)Su-%5oKcd)&o(8)|nn`Pd zVt`5ZN-I59<$cvrWU$G%dRnTZPdZE+3`IE51K2up_L5rnz>CZ57(tG(*VQcE;?I>8 z2_GbDrgt}6ShJz{6ye0*l~uM5vyRSI3sjPJS^EfXJL zH9n6moVpH9z|!W_)`q%DIUr^9%SobfJi4q`YlzxY`{QKst^N`%1CFu+biLnMG;yWQ61 zo~Q9HxBRVigCv3pvkA0y1o;=X|k0+qRC96lWt{xy^Z8Ll)=*23!fSK-ddu*@|FAat>Ot_lp{3d}7_Z?VTqvI;p zj4-E>yCCNg8XD3U(k#2>o*U2VeroPDX|y;v9+t~F$2gcYY`9*I&Qq*<6(Wxm^qaVUixuu13b-y&b)lSvm$nE#5WhABd>lQD_ zkBaRgE1!hU8+WaNb&@89OR=>0&G0l8eyK&HVoP#WSQQH0m5FYib*y_vg%g;MHKZj^ zq$&L^$c)pW^jHdQ?K~ssoEwGa_pjo+nRU8I6(5rtR=oMr6k_hM=x`80DyvcEP)3r~ z;QZn%+q&8RJCZL14(?EV3Tc*9<*JlAc(TdqXjA1HuNvYX_U(x`E2fm^(0W~F0`e&d zCVT)V4ZPCa?2>M4MK5Z-I%J}J<#LoaJEx{OxG#+cF=_PP(5+!$Nkd)Ol@ueWqjLLe zS&E_}TS01dcjrL76Rb03&*bs$5!GWo_PIcOZpr>}UhC;ixVUnUzS5zZj(2fH(^#eM zq_Q-;=?p}vq;!1scVW;4ZOBEOFLue9uBI5hka@EB7=-2F=75Pgn%ZY-1MJHntvfX+ z0{e$KWu5EBM@WJd@gxm!>YvDj>8}P^B@#GzVE8?N&Qi%SBX?-Bae*mNwB3p4%fe@Y@EV8nCn+Zx1+ay4rlew-A(w|b55 z<_B|wfW1dg^>E*&+Q9srIW8&iaa{G#iV_NRF z>@Sn5`2s{?6RT5n0j=MP}rj&oPIMT+xGW)~#G> zJvYws)MsgfpX$R7*}OmIF=b|o3_OyAw{zu_qe#4LH_76QQNbKQn};d|7k!Ez5wS!| zZ(ux4CmgYGlGV(l{J|$Lh@5gfJcU>#bke&&ROQC(TWB%bEF?{7^|;4-Yue9#vcD7P z?lIs-FS~vMLKr%8SPV0l67541?s}42tZ`3ST9Q}H&BGu>O|9)k)lUCgw{yRf5Lhzm zI3=^yGPnHr9Gwr6$5d*_oUYWuMddGi+^`nWC5QYERJpQPsD|2144eM?;-JILAN|@g z>UvN7XK24)RoAD{!9|N6ZUuEuv*ws~nNX=`xj3Dl0_2tDt2+=KoF5rDBeo*YlH+iU zQ3o+tM|&~L1+Pc%>{I=Yz3s_@ON>kyw?yge?rqQoW_T}`^j`n zydyc3PxZe|?3)bG&ssz}v z?kDhEfPZG9vBC-TM5A`?yP7bC4;3<&WT!nk*^_==`Z!o&Fc+|ZPj6F&t(h=7=(QX$o-CV z2a)HC)QUJ0D;X6N&{F#dqbDrP1-|d3!(Lgf;87#gMtURag%MO;4WX7Jp6j1>-@Z|e z$8ZCz%K4V)+YY9!1Zt)BP6XY7L;{AIf&NuJ0Dvw�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

#DjcrX9+r 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

a=Hd27IiUqtRqpnMaAjg3N1 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%0DAy*)TN*3zcl|?DixJl(G$KkeEqsG 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%0D0DBE|6EBcCd#xJ2wbo6A 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

Md?yI5# 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≀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%0Ao!8eucs;sB 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%0A1RhXl8bra+A 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 Y+D~~!h_wBPLJCntA%!TS5JMESpJ#i)RsaA1 literal 1058410 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

aW58k(A{tX5beVl(@Y&LlP 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 i|LdrO`G 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

5sT_ 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

=Lip5P;lRrZTxdV3N;gHvmEl<_7uS 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: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∾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%0DYBk| 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 z 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 G{r~`yodak9 diff --git a/ClearScript/doc/Reference.shfbproj b/ClearScript/doc/Reference.shfbproj index c2537277..8873801f 100644 --- a/ClearScript/doc/Reference.shfbproj +++ b/ClearScript/doc/Reference.shfbproj @@ -46,11 +46,12 @@ AboveNamespaces Copyright &#169%3b Microsoft Corporation. All rights reserved. + The Microsoft.ClearScript namespace contains types that support all script engines. The Microsoft.ClearScript.V8 namespace contains types that provide access to the V8 high-performance open-source JavaScript engine. + The Microsoft.ClearScript.V8.FastProxy namespace contains types that support low-overhead access to host resources from the V8 JavaScript engine. The Microsoft.ClearScript.Windows namespace contains types that provide access to Windows Script engines such as JScript and VBScript in a desktop environment. The Microsoft.ClearScript.Windows.Core namespace contains types that provide access to Windows Script engines such as JScript and VBScript. - The Microsoft.ClearScript.JavaScript namespace contains types that provide access to JavaScript-specific features. ClearScript Library Reference diff --git a/ClearScript/doc/WebReference.shfbproj b/ClearScript/doc/WebReference.shfbproj index 9d329ef2..f05e70b8 100644 --- a/ClearScript/doc/WebReference.shfbproj +++ b/ClearScript/doc/WebReference.shfbproj @@ -46,11 +46,12 @@ AboveNamespaces Copyright &#169%3b Microsoft Corporation. All rights reserved. + The Microsoft.ClearScript namespace contains types that support all script engines. The Microsoft.ClearScript.V8 namespace contains types that provide access to the V8 high-performance open-source JavaScript engine. + The Microsoft.ClearScript.V8.FastProxy namespace contains types that support low-overhead access to host resources from the V8 JavaScript engine. The Microsoft.ClearScript.Windows namespace contains types that provide access to Windows Script engines such as JScript and VBScript in a desktop environment. The Microsoft.ClearScript.Windows.Core namespace contains types that provide access to Windows Script engines such as JScript and VBScript. - The Microsoft.ClearScript.JavaScript namespace contains types that provide access to JavaScript-specific features. ClearScript Library Reference diff --git a/ClearScriptBenchmarks/ClearScriptBenchmarks.Unix.cs b/ClearScriptBenchmarks/ClearScriptBenchmarks.Unix.cs index f8f76b59..e34368dc 100644 --- a/ClearScriptBenchmarks/ClearScriptBenchmarks.Unix.cs +++ b/ClearScriptBenchmarks/ClearScriptBenchmarks.Unix.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. using System; +using System.Collections.Generic; using System.Diagnostics; using System.Runtime.InteropServices; using Microsoft.ClearScript.V8; @@ -18,8 +19,21 @@ public static class ClearScriptBenchmarks public static void Main(string[] args) { - uint choice = 0; - var burn = (args.Length == 2) && (args[0] == "-b") && uint.TryParse(args[1], out choice) && (choice >= 1) && (choice <= 2); + var choice = 0U; + var burn = false; + + var argQueue = new Queue(args); + while (argQueue.TryDequeue(out var arg)) + { + if ((arg == "-b") || (arg == "--burn")) + { + burn = argQueue.TryDequeue(out var choiceString) && uint.TryParse(choiceString, out choice) && (choice >= 1) && (choice <= 2); + } + else if ((arg == "-d") || (arg == "--disable-background-work")) + { + V8Settings.GlobalFlags |= V8GlobalFlags.DisableBackgroundWork; + } + } Console.Clear(); if (!burn) Console.WriteLine("ClearScript Benchmarks ({0}, {1}, {2} {3})\n", RuntimeInformation.FrameworkDescription.Trim(), RuntimeInformation.OSDescription.Trim(), RuntimeInformation.ProcessArchitecture, flavor); diff --git a/ClearScriptBenchmarks/ClearScriptBenchmarks.Windows.cs b/ClearScriptBenchmarks/ClearScriptBenchmarks.Windows.cs index 52c9498a..0360432e 100644 --- a/ClearScriptBenchmarks/ClearScriptBenchmarks.Windows.cs +++ b/ClearScriptBenchmarks/ClearScriptBenchmarks.Windows.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. using System; +using System.Collections.Generic; using System.Diagnostics; using System.Runtime.InteropServices; using Microsoft.ClearScript.V8; @@ -19,8 +20,21 @@ public static class ClearScriptBenchmarks public static void Main(string[] args) { - uint choice = 0; - var burn = (args.Length == 2) && (args[0] == "-b") && uint.TryParse(args[1], out choice) && (choice >= 1) && (choice <= 3); + var choice = 0U; + var burn = false; + + var argQueue = new Queue(args); + while (argQueue.TryDequeue(out var arg)) + { + if ((arg == "-b") || (arg == "--burn")) + { + burn = argQueue.TryDequeue(out var choiceString) && uint.TryParse(choiceString, out choice) && (choice >= 1) && (choice <= 3); + } + else if ((arg == "-d") || (arg == "--disable-background-work")) + { + V8Settings.GlobalFlags |= V8GlobalFlags.DisableBackgroundWork; + } + } Console.Clear(); if (!burn) Console.WriteLine("ClearScript Benchmarks ({0}, {1}, {2} {3})\n", RuntimeInformation.FrameworkDescription.Trim(), RuntimeInformation.OSDescription.Trim(), RuntimeInformation.ProcessArchitecture, flavor); @@ -129,4 +143,20 @@ private static void Run(Func engineFactory, Action(this Queue queue, out T value) + { + try + { + value = queue.Dequeue(); + return true; + } + catch (InvalidOperationException) + { + value = default; + return false; + } + } + } } diff --git a/ClearScriptBenchmarks/Properties/AssemblyInfo.cs b/ClearScriptBenchmarks/Properties/AssemblyInfo.cs index a879a356..e7788097 100644 --- a/ClearScriptBenchmarks/Properties/AssemblyInfo.cs +++ b/ClearScriptBenchmarks/Properties/AssemblyInfo.cs @@ -11,6 +11,6 @@ [assembly: AssemblyCopyright("(c) Microsoft Corporation")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("7.4.5")] -[assembly: AssemblyFileVersion("7.4.5")] -[assembly: AssemblyInformationalVersion("7.4.5")] +[assembly: AssemblyVersion("7.5.0")] +[assembly: AssemblyFileVersion("7.5.0")] +[assembly: AssemblyInformationalVersion("7.5.0")] diff --git a/ClearScriptBenchmarks/SunSpider.cs b/ClearScriptBenchmarks/SunSpider.cs index 26907a43..5756b13c 100644 --- a/ClearScriptBenchmarks/SunSpider.cs +++ b/ClearScriptBenchmarks/SunSpider.cs @@ -65,7 +65,7 @@ function ClearScriptCleanup() { if (!quiet) Console.WriteLine("Done"); // run main test - var results = repeatIndices.Select(index => new Dictionary()).ToArray(); + var results = repeatIndices.Select(_ => new Dictionary()).ToArray(); var timeSpans = new long[repeatCount]; repeatIndices.ForEach(repeatIndex => { diff --git a/ClearScriptConsole/ClearScriptConsole.cs b/ClearScriptConsole/ClearScriptConsole.cs index 502fcfa2..ee18c9e0 100644 --- a/ClearScriptConsole/ClearScriptConsole.cs +++ b/ClearScriptConsole/ClearScriptConsole.cs @@ -65,7 +65,7 @@ private static void RunConsole(ScriptEngine engine) Console.Write("-> "); var command = Console.ReadLine(); - if (command == null) + if (command is null) { break; } @@ -78,7 +78,7 @@ private static void RunConsole(ScriptEngine engine) try { var result = engine.ExecuteCommand(command); - if (result != null) + if (result is not null) { Console.WriteLine(result); } diff --git a/ClearScriptConsole/ConsoleTest.cs b/ClearScriptConsole/ConsoleTest.cs index 03dcf6d2..49d96750 100644 --- a/ClearScriptConsole/ConsoleTest.cs +++ b/ClearScriptConsole/ConsoleTest.cs @@ -31,7 +31,7 @@ public static unsafe void BugFix_V8StackLimitIntegerOverflow() var thread = new Thread(() => { var ptr = stackalloc byte[192 * 1024]; - if ((ulong)ptr < (984 * 1024UL)) + if ((ulong)ptr < (1536 * 1024UL)) { try { @@ -51,13 +51,13 @@ public static unsafe void BugFix_V8StackLimitIntegerOverflow() done.Set(); exit.Wait(); - }, 256 * 1024); + }, 384 * 1024); threads.Add(thread); thread.Start(); done.WaitOne(); - if (caughtException != null) + if (caughtException is not null) { throw new AssertFailedException("Exception thrown in worker thread", caughtException); } diff --git a/ClearScriptConsole/Properties/AssemblyInfo.cs b/ClearScriptConsole/Properties/AssemblyInfo.cs index 6927224c..3556cacd 100644 --- a/ClearScriptConsole/Properties/AssemblyInfo.cs +++ b/ClearScriptConsole/Properties/AssemblyInfo.cs @@ -11,6 +11,6 @@ [assembly: AssemblyCopyright("(c) Microsoft Corporation")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("7.4.5")] -[assembly: AssemblyFileVersion("7.4.5")] -[assembly: AssemblyInformationalVersion("7.4.5")] +[assembly: AssemblyVersion("7.5.0")] +[assembly: AssemblyFileVersion("7.5.0")] +[assembly: AssemblyInformationalVersion("7.5.0")] diff --git a/ClearScriptTest/BugFixTest.NetFramework.cs b/ClearScriptTest/BugFixTest.NetFramework.cs index 57e4c220..74962fee 100644 --- a/ClearScriptTest/BugFixTest.NetFramework.cs +++ b/ClearScriptTest/BugFixTest.NetFramework.cs @@ -3,6 +3,7 @@ using System.Reflection; using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.Windows; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Microsoft.ClearScript.Test @@ -35,6 +36,84 @@ public void BugFix_MultipleAppDomains() TestUtil.InvokeConsoleTest("BugFix_MultipleAppDomains"); } + [TestMethod, TestCategory("BugFix")] + public void BugFix_XMLDOM_Enumeration_Attributes_JScript() + { + var document = new MSXML2.DOMDocument60Class(); + document.loadXML(@" + + + + + + + + + + + + + + + + + + "); + + engine.Dispose(); + engine = new JScriptEngine(); + + engine.AddHostObject("document", document); + engine.Execute(@" + allPages = document.getElementsByTagName('page'); + total = 0; + for (var e = new Enumerator(allPages); !e.atEnd(); e.moveNext()) { + total = total + parseInt(e.item().getAttribute('id')) + } + "); + + Assert.AreEqual(5115, engine.Script.total); + } + + [TestMethod, TestCategory("BugFix")] + public void BugFix_XMLDOM_Enumeration_Attributes_VBScript() + { + var document = new MSXML2.DOMDocument60Class(); + document.loadXML(@" + + + + + + + + + + + + + + + + + + "); + + engine.Dispose(); + engine = new VBScriptEngine(); + + engine.AddHostObject("document", document); + engine.Execute(@" + set allPages = document.getElementsByTagName(""page"") + total = 0 + for each page in allPages + total = total + CInt(page.getAttribute(""id"")) + next + "); + + Assert.AreEqual(5115, engine.Script.total); + } + #endregion } } diff --git a/ClearScriptTest/BugFixTest.Windows.cs b/ClearScriptTest/BugFixTest.Windows.cs index 832d4a46..64f2d500 100644 --- a/ClearScriptTest/BugFixTest.Windows.cs +++ b/ClearScriptTest/BugFixTest.Windows.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. using System; @@ -119,7 +119,7 @@ public void BugFix_IDispatchExArgLeak_InvokeMethod_JScript() [TestMethod, TestCategory("BugFix")] public void BugFix_TooManyDebugApplications() { - var engines = Enumerable.Range(0, 2048).Select(index => new JScriptEngine(WindowsScriptEngineFlags.EnableDebugging)).ToArray(); + var engines = Enumerable.Range(0, 2048).Select(_ => new JScriptEngine(WindowsScriptEngineFlags.EnableDebugging)).ToArray(); Array.ForEach(engines, tempEngine => tempEngine.Dispose()); } @@ -460,7 +460,8 @@ public void BugFix_JScript_TargetInvocationException() } catch (ScriptEngineException exception) { - Assert.IsTrue(exception.ErrorDetails.Contains("bar\n at test (Script:0:18) -> foo")); + Assert.IsTrue(exception.ErrorDetails.Contains("bar\n")); + Assert.IsTrue(exception.ErrorDetails.Contains("(Script:0:18) -> foo")); } } @@ -1441,12 +1442,114 @@ public void BugFix_MultidimensionalArray_VBScript() Assert.AreEqual(456, engine.Evaluate("y(2, 3)")); } + [TestMethod, TestCategory("BugFix")] + public void BugFix_XMLDOM_Enumeration_JScript() + { + var document = new MSXML2.DOMDocument60Class(); + document.loadXML(@" + + + + + + + + + + + + + + + + + + "); + + engine.Dispose(); + engine = new JScriptEngine(); + + engine.AddHostObject("document", document); + engine.Execute(@" + allPages = document.getElementsByTagName('page'); + count = 0; + for (var e = new Enumerator(allPages); !e.atEnd(); e.moveNext()) { + ++count; + } + "); + + Assert.AreEqual(11, engine.Script.count); + } + + [TestMethod, TestCategory("BugFix")] + public void BugFix_XMLDOM_Enumeration_VBScript() + { + var document = new MSXML2.DOMDocument60Class(); + document.loadXML(@" + + + + + + + + + + + + + + + + + + "); + + engine.Dispose(); + engine = new VBScriptEngine(); + + engine.AddHostObject("document", document); + engine.Execute(@" + set allPages = document.getElementsByTagName(""page"") + count = 0 + for each page in allPages + count = count + 1 + next + "); + + Assert.AreEqual(11, engine.Script.count); + } + + [TestMethod, TestCategory("BugFix")] + public void BugFix_SparseArgumentBinding() + { + engine.Dispose(); + engine = new VBScriptEngine(); + + engine.Script.test = new SparseArgumentTest(); + engine.UseReflectionBindFallback = true; + + Assert.AreEqual("'foo' 'bar' 789 456", engine.Evaluate("test.go(\"foo\", \"bar\", 789)")); + Assert.AreEqual("'foo' 'bar' 123 456", engine.Evaluate("test.go(\"foo\", \"bar\")")); + Assert.AreEqual("'foo' 'xyz' 789 456", engine.Evaluate("test.go(\"foo\", , 789)")); + Assert.AreEqual("'foo' 'xyz' 123 789", engine.Evaluate("test.go(\"foo\", , , 789)")); + Assert.AreEqual("'foo' 'xyz' 123 456", engine.Evaluate("test.go(\"foo\")")); + } + // ReSharper restore InconsistentNaming #endregion #region miscellaneous + public sealed class SparseArgumentTest + { + public string Go(string first, string second = "xyz", int third = 123, int fourth = 456) + { + return $"'{first}' '{second}' {third} {fourth}"; + } + } + private static void VariantClearTestHelper(object x) { using (var engine = new JScriptEngine()) diff --git a/ClearScriptTest/BugFixTest.cs b/ClearScriptTest/BugFixTest.cs index dba009a7..db0d6919 100644 --- a/ClearScriptTest/BugFixTest.cs +++ b/ClearScriptTest/BugFixTest.cs @@ -22,6 +22,7 @@ using System.Threading; using System.Threading.Tasks; using System.Xml.Linq; +using Microsoft.ClearScript.JavaScript; namespace Microsoft.ClearScript.Test { @@ -128,12 +129,14 @@ public void BugFix_V8ScriptInterruptCrash() public void BugFix_InheritedInterfaceMethod() { var list = new List { 123 }; - var enumerator = list.AsEnumerable().GetEnumerator(); - engine.AddRestrictedHostObject("enumerator", enumerator); - Assert.IsTrue((bool)engine.Evaluate("enumerator.MoveNext()")); - Assert.AreEqual(123, engine.Evaluate("enumerator.Current")); - Assert.IsFalse((bool)engine.Evaluate("enumerator.MoveNext()")); - engine.Execute("enumerator.Dispose()"); + using (var enumerator = list.AsEnumerable().GetEnumerator()) + { + engine.AddRestrictedHostObject("enumerator", enumerator); + Assert.IsTrue((bool)engine.Evaluate("enumerator.MoveNext()")); + Assert.AreEqual(123, engine.Evaluate("enumerator.Current")); + Assert.IsFalse((bool)engine.Evaluate("enumerator.MoveNext()")); + engine.Execute("enumerator.Dispose()"); + } } [TestMethod, TestCategory("BugFix")] @@ -445,50 +448,81 @@ public void BugFix_V8CachedObjectLeak() [TestMethod, TestCategory("BugFix")] public void BugFix_Resurrection_V8ScriptEngine() { - for (var index = 0; index < 256; index++) + new Action(static () => { - // ReSharper disable UnusedVariable + for (var index = 0; index < 256; index++) + { + // ReSharper disable UnusedVariable - var wrapper = new ResurrectionTestWrapper(new V8ScriptEngine()); - GC.Collect(); + var wrapper = new ResurrectionTestWrapper(new V8ScriptEngine()); + GC.Collect(); - // ReSharper restore UnusedVariable - } + // ReSharper restore UnusedVariable + } + })(); + + GC.Collect(); + GC.WaitForPendingFinalizers(); } [TestMethod, TestCategory("BugFix")] public void BugFix_Resurrection_V8Runtime() { - for (var index = 0; index < 256; index++) + new Action(static () => { - // ReSharper disable UnusedVariable + for (var index = 0; index < 256; index++) + { + // ReSharper disable UnusedVariable - var wrapper = new ResurrectionTestWrapper(new V8Runtime()); - GC.Collect(); + var wrapper = new ResurrectionTestWrapper(new V8Runtime()); + GC.Collect(); - // ReSharper restore UnusedVariable - } + // ReSharper restore UnusedVariable + } + })(); + + GC.Collect(); + GC.WaitForPendingFinalizers(); } [TestMethod, TestCategory("BugFix")] public void BugFix_Resurrection_V8Script() { - for (var index = 0; index < 256; index++) + new Action(static () => { - // ReSharper disable UnusedVariable + for (var index = 0; index < 256; index++) + { + // ReSharper disable UnusedVariable - var tempEngine = new V8ScriptEngine(); - var wrapper = new ResurrectionTestWrapper(tempEngine.Compile("function foo() {}")); - GC.Collect(); + var tempEngine = new V8ScriptEngine(); + var wrapper = new ResurrectionTestWrapper(tempEngine.Compile("function foo() {}")); + GC.Collect(); - // ReSharper restore UnusedVariable - } + // ReSharper restore UnusedVariable + } + })(); + + GC.Collect(); + GC.WaitForPendingFinalizers(); } [TestMethod, TestCategory("BugFix")] public void BugFix_Resurrection_V8ScriptItem() { - TestV8ScriptItemResurrection(); + new Action(static () => + { + for (var index = 0; index < 256; index++) + { + // ReSharper disable UnusedVariable + + var tempEngine = new V8ScriptEngine(); + var wrapper = new ResurrectionTestWrapper(tempEngine.Script.Math); + GC.Collect(); + + // ReSharper restore UnusedVariable + } + })(); + GC.Collect(); GC.WaitForPendingFinalizers(); } @@ -1201,7 +1235,9 @@ public void BugFix_SharedV8RuntimeLeak() } runtime.CollectGarbage(true); - Assert.IsFalse(runtime.GetHeapInfo().TotalHeapSize > (heapSize * 1.75)); + + var newHeapSize = runtime.GetHeapInfo().TotalHeapSize; + Assert.IsFalse(newHeapSize > (heapSize * 2.0)); } } @@ -1901,6 +1937,120 @@ public void BugFix_V8Runtime_CreateScriptEngineWithPendingInterrupt() } } + [TestMethod, TestCategory("BugFix")] + public void BugFix_V8_MaxRuntimeHeapSize_SetBelowCurrent() + { + ((V8ScriptEngine)engine).MaxRuntimeHeapSize = new UIntPtr(256 * 1024); + TestUtil.AssertException(() => engine.Execute("")); + TestUtil.AssertException(() => engine.Execute("")); + } + + [TestMethod, TestCategory("BugFix")] + public void BugFix_ZeroLengthDataTransfer() + { + var buffer = (IArrayBuffer)engine.Evaluate("new ArrayBuffer(0)"); + + Assert.AreEqual(0UL, buffer.ReadBytes(0, 0, new byte[0], 0)); + TestUtil.AssertException(() => buffer.ReadBytes(1, 0, new byte[0], 0)); + TestUtil.AssertException(() => buffer.ReadBytes(0, 1, new byte[0], 0)); + TestUtil.AssertException(() => buffer.ReadBytes(0, 0, new byte[0], 1)); + + Assert.AreEqual(0UL, buffer.ReadBytes(0, 0, new byte[0].AsSpan(), 0)); + TestUtil.AssertException(() => buffer.ReadBytes(1, 0, new byte[0].AsSpan(), 0)); + TestUtil.AssertException(() => buffer.ReadBytes(0, 1, new byte[0].AsSpan(), 0)); + TestUtil.AssertException(() => buffer.ReadBytes(0, 0, new byte[0].AsSpan(), 1)); + + Assert.AreEqual(0UL, buffer.WriteBytes(new byte[0], 0, 0, 0)); + TestUtil.AssertException(() => buffer.WriteBytes(new byte[0], 1, 0, 0)); + TestUtil.AssertException(() => buffer.WriteBytes(new byte[0], 0, 1, 0)); + TestUtil.AssertException(() => buffer.WriteBytes(new byte[0], 0, 0, 1)); + + Assert.AreEqual(0UL, buffer.WriteBytes(new byte[0].AsSpan(), 0, 0, 0)); + TestUtil.AssertException(() => buffer.WriteBytes(new byte[0].AsSpan(), 1, 0, 0)); + TestUtil.AssertException(() => buffer.WriteBytes(new byte[0].AsSpan(), 0, 1, 0)); + TestUtil.AssertException(() => buffer.WriteBytes(new byte[0].AsSpan(), 0, 0, 1)); + + var view = (IDataView)engine.Evaluate("new DataView(new ArrayBuffer(0))"); + + Assert.AreEqual(0UL, view.ReadBytes(0, 0, new byte[0], 0)); + TestUtil.AssertException(() => view.ReadBytes(1, 0, new byte[0], 0)); + TestUtil.AssertException(() => view.ReadBytes(0, 1, new byte[0], 0)); + TestUtil.AssertException(() => view.ReadBytes(0, 0, new byte[0], 1)); + + Assert.AreEqual(0UL, view.ReadBytes(0, 0, new byte[0].AsSpan(), 0)); + TestUtil.AssertException(() => view.ReadBytes(1, 0, new byte[0].AsSpan(), 0)); + TestUtil.AssertException(() => view.ReadBytes(0, 1, new byte[0].AsSpan(), 0)); + TestUtil.AssertException(() => view.ReadBytes(0, 0, new byte[0].AsSpan(), 1)); + + Assert.AreEqual(0UL, view.WriteBytes(new byte[0], 0, 0, 0)); + TestUtil.AssertException(() => view.WriteBytes(new byte[0], 1, 0, 0)); + TestUtil.AssertException(() => view.WriteBytes(new byte[0], 0, 1, 0)); + TestUtil.AssertException(() => view.WriteBytes(new byte[0], 0, 0, 1)); + + Assert.AreEqual(0UL, view.WriteBytes(new byte[0].AsSpan(), 0, 0, 0)); + TestUtil.AssertException(() => view.WriteBytes(new byte[0].AsSpan(), 1, 0, 0)); + TestUtil.AssertException(() => view.WriteBytes(new byte[0].AsSpan(), 0, 1, 0)); + TestUtil.AssertException(() => view.WriteBytes(new byte[0].AsSpan(), 0, 0, 1)); + + void TestTypedArray(string name) where T : unmanaged + { + var typedArray = (ITypedArray)engine.Evaluate($"new {name}Array(0)"); + + Assert.AreEqual(0UL, typedArray.ReadBytes(0, 0, new byte[0], 0)); + TestUtil.AssertException(() => typedArray.ReadBytes(1, 0, new byte[0], 0)); + TestUtil.AssertException(() => typedArray.ReadBytes(0, 1, new byte[0], 0)); + TestUtil.AssertException(() => typedArray.ReadBytes(0, 0, new byte[0], 1)); + + Assert.AreEqual(0UL, typedArray.ReadBytes(0, 0, new byte[0].AsSpan(), 0)); + TestUtil.AssertException(() => typedArray.ReadBytes(1, 0, new byte[0].AsSpan(), 0)); + TestUtil.AssertException(() => typedArray.ReadBytes(0, 1, new byte[0].AsSpan(), 0)); + TestUtil.AssertException(() => typedArray.ReadBytes(0, 0, new byte[0].AsSpan(), 1)); + + Assert.AreEqual(0UL, typedArray.Read(0, 0, new T[0], 0)); + TestUtil.AssertException(() => typedArray.Read(1, 0, new T[0], 0)); + TestUtil.AssertException(() => typedArray.Read(0, 1, new T[0], 0)); + TestUtil.AssertException(() => typedArray.Read(0, 0, new T[0], 1)); + + Assert.AreEqual(0UL, typedArray.Read(0, 0, new T[0].AsSpan(), 0)); + TestUtil.AssertException(() => typedArray.Read(1, 0, new T[0].AsSpan(), 0)); + TestUtil.AssertException(() => typedArray.Read(0, 1, new T[0].AsSpan(), 0)); + TestUtil.AssertException(() => typedArray.Read(0, 0, new T[0].AsSpan(), 1)); + + Assert.AreEqual(0UL, typedArray.WriteBytes(new byte[0], 0, 0, 0)); + TestUtil.AssertException(() => typedArray.WriteBytes(new byte[0], 1, 0, 0)); + TestUtil.AssertException(() => typedArray.WriteBytes(new byte[0], 0, 1, 0)); + TestUtil.AssertException(() => typedArray.WriteBytes(new byte[0], 0, 0, 1)); + + Assert.AreEqual(0UL, typedArray.WriteBytes(new byte[0].AsSpan(), 0, 0, 0)); + TestUtil.AssertException(() => typedArray.WriteBytes(new byte[0].AsSpan(), 1, 0, 0)); + TestUtil.AssertException(() => typedArray.WriteBytes(new byte[0].AsSpan(), 0, 1, 0)); + TestUtil.AssertException(() => typedArray.WriteBytes(new byte[0].AsSpan(), 0, 0, 1)); + + Assert.AreEqual(0UL, typedArray.Write(new T[0], 0, 0, 0)); + TestUtil.AssertException(() => typedArray.Write(new T[0], 1, 0, 0)); + TestUtil.AssertException(() => typedArray.Write(new T[0], 0, 1, 0)); + TestUtil.AssertException(() => typedArray.Write(new T[0], 0, 0, 1)); + + Assert.AreEqual(0UL, typedArray.Write(new T[0].AsSpan(), 0, 0, 0)); + TestUtil.AssertException(() => typedArray.Write(new T[0].AsSpan(), 1, 0, 0)); + TestUtil.AssertException(() => typedArray.Write(new T[0].AsSpan(), 0, 1, 0)); + TestUtil.AssertException(() => typedArray.Write(new T[0].AsSpan(), 0, 0, 1)); + } + + TestTypedArray("Uint8"); + TestTypedArray("Uint8Clamped"); + TestTypedArray("Int8"); + TestTypedArray("Uint16"); + TestTypedArray("Uint16"); + TestTypedArray("Int16"); + TestTypedArray("Uint32"); + TestTypedArray("Int32"); + TestTypedArray("BigUint64"); + TestTypedArray("BigInt64"); + TestTypedArray("Float32"); + TestTypedArray("Float64"); + } + // ReSharper restore InconsistentNaming #endregion @@ -2024,11 +2174,11 @@ public struct MyDayOfWeek public static implicit operator DayOfWeek(MyDayOfWeek self) => self.day; - public static implicit operator MyDayOfWeek(DayOfWeek day) => new MyDayOfWeek(day); + public static implicit operator MyDayOfWeek(DayOfWeek day) => new(day); public static implicit operator char?(MyDayOfWeek self) => (self.day == DayOfWeek.Sunday) ? null : (char?)self.day; - public static implicit operator MyDayOfWeek(char? value) => new MyDayOfWeek((DayOfWeek)value.GetValueOrDefault()); + public static implicit operator MyDayOfWeek(char? value) => new((DayOfWeek)value.GetValueOrDefault()); } public class ImplicitConversionTest @@ -2292,7 +2442,7 @@ public class RestrictedPrototypeObjectBase : Dictionary public class RestrictedPrototypeObject : RestrictedPrototypeObjectBase, IPropertyBag, IScriptableObject { - private readonly ConditionalWeakTable map = new ConditionalWeakTable(); + private readonly ConditionalWeakTable map = new(); private readonly bool setPrototypeOnExpose; public RestrictedPrototypeObject(bool setPrototypeOnExpose) @@ -2304,12 +2454,12 @@ public bool SetPrototype(ScriptEngine engine) { var entry = map.GetOrCreateValue(engine); - if (entry.Prototype == null) + if (entry.Prototype is null) { entry.Prototype = this.ToRestrictedHostObject(engine); } - if (entry.ProxyHolder == null) + if (entry.ProxyHolder is null) { engine.Script.Object.setPrototypeOf(this, entry.Prototype); entry.ProxyHolder = engine.Script.Object.create(this); @@ -2366,7 +2516,7 @@ public string Format(int a, int b = 456, params int[] args) public class DefaultArgsTestObject { - private readonly Dictionary map = new Dictionary(); + private readonly Dictionary map = new(); public DefaultArgsTestObject(int arg1 = 123, string arg2 = "foo") { @@ -2385,21 +2535,7 @@ public DefaultArgsTestObject(int arg1 = 123, string arg2 = "foo") [DefaultScriptUsage(ScriptAccess.Full)] public class DefaultScriptAccessOverrideTestObject { - public List Values { get; set; } = new List { 123, 456, 789 }; - } - - private void TestV8ScriptItemResurrection() - { - for (var index = 0; index < 256; index++) - { - // ReSharper disable UnusedVariable - - var tempEngine = new V8ScriptEngine(); - var wrapper = new ResurrectionTestWrapper(tempEngine.Script.Math); - GC.Collect(); - - // ReSharper restore UnusedVariable - } + public List Values { get; set; } = new() { 123, 456, 789 }; } #if NET6_0_OR_GREATER diff --git a/ClearScriptTest/DynamicTestObject.cs b/ClearScriptTest/DynamicTestObject.cs index 1804a045..0ed1e7ec 100644 --- a/ClearScriptTest/DynamicTestObject.cs +++ b/ClearScriptTest/DynamicTestObject.cs @@ -12,8 +12,8 @@ namespace Microsoft.ClearScript.Test [SuppressMessage("ReSharper", "StringLiteralTypo", Justification = "Typos in test code are acceptable.")] public sealed class DynamicTestObject : DynamicObject { - private readonly Dictionary memberMap = new Dictionary(); - private readonly Dictionary indexMap = new Dictionary(); + private readonly Dictionary memberMap = new(); + private readonly Dictionary indexMap = new(); public int SomeField = 12345; diff --git a/ClearScriptTest/ExtensionsTest.NetStandard.cs b/ClearScriptTest/ExtensionsTest.NetStandard.cs deleted file mode 100644 index e37ff5ac..00000000 --- a/ClearScriptTest/ExtensionsTest.NetStandard.cs +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.Collections.Generic; -using System.Collections; -using System.Threading.Tasks; -using Microsoft.ClearScript.JavaScript; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace Microsoft.ClearScript.Test -{ - public partial class ExtensionsTest - { - #region test methods - - // ReSharper disable InconsistentNaming - - [TestMethod, TestCategory("Extensions")] - public void Extension_JavaScript_ToAsyncEnumerable_Generator() - { - engine.Execute("foo = (function* () { yield 'This'; yield 'is'; yield 'not'; yield 'a'; yield 'drill!'; })()"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - } - - [TestMethod, TestCategory("Extensions")] - public void Extension_JavaScript_ToAsyncEnumerable_AsyncGenerator() - { - engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); - engine.Execute("foo = (async function* () { await delay(1), yield 'This'; await delay(1), yield 'is'; await delay(1), yield 'not'; await delay(1), yield 'a'; await delay(1), yield 'drill!'; })()"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - } - - [TestMethod, TestCategory("Extensions")] - public void Extension_JavaScript_ToAsyncEnumerable_GenericObject() - { - engine.Execute("foo = { 'This': 1, 'is': 2, 'not': 3, 'a': 4, 'drill!': 5 }"); - TestUtil.AssertException(() => string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - - engine.Execute("foo[Symbol.iterator] = function* () { for (const item of Object.keys(foo)) yield item; }"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - - engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); - engine.Execute("foo[Symbol.asyncIterator] = async function* () { for (const item of Object.keys(foo)) { await delay(1); yield item; } }"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - } - - [TestMethod, TestCategory("Extensions")] - public void Extension_JavaScript_ToAsyncEnumerable_Array() - { - engine.Execute("foo = [ 'This', 'is', 'not', 'a', 'drill!' ]"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - } - - [TestMethod, TestCategory("Extensions")] - public void Extension_JavaScript_ToAsyncEnumerable_Managed_Object() - { - engine.Global["bar"] = new PropertyBag { { "This", 1 }, { "is", 2 }, { "not", 3 }, { "a", 4 }, { "drill!", 5 } }; - TestUtil.AssertException(() => string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); - - engine.Execute("foo = (function* () { for (const item of Object.keys(bar)) yield item; })()"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - - engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); - engine.Execute("foo = (async function* () { for (const item of Object.keys(bar)) { await delay(1); yield item; } })()"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - } - - [TestMethod, TestCategory("Extensions")] - public void Extension_JavaScript_ToAsyncEnumerable_Managed_Array() - { - engine.Global["bar"] = new[] { "This", "is", "not", "a", "drill!" }; - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); - - engine.Global["bar"] = new object[] { "This", "is", "not", "a", "drill!" }; - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); - - engine.Execute("foo = (function* () { for (const item of bar) yield item; })()"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - - engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); - engine.Execute("foo = (async function* () { for (const item of bar) { await delay(1); yield item; } })()"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - } - - [TestMethod, TestCategory("Extensions")] - public void Extension_JavaScript_ToAsyncEnumerable_Managed_List() - { - engine.Global["bar"] = new List { "This", "is", "not", "a", "drill!" }; - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); - - engine.Global["bar"] = new List { "This", "is", "not", "a", "drill!" }; - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); - - engine.Execute("foo = (function* () { for (const item of bar) yield item; })()"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - - engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); - engine.Execute("foo = (async function* () { for (const item of bar) { await delay(1); yield item; } })()"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - } - - [TestMethod, TestCategory("Extensions")] - public void Extension_JavaScript_ToAsyncEnumerable_Managed_ArrayList() - { - engine.Global["bar"] = new ArrayList { "This", "is", "not", "a", "drill!" }; - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); - - engine.Execute("foo = (function* () { for (const item of bar) yield item; })()"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - - engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); - engine.Execute("foo = (async function* () { for (const item of bar) { await delay(1); yield item; } })()"); - Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); - } - - // ReSharper restore InconsistentNaming - - #endregion - - #region miscellaneous - - private static IEnumerable IterateAsyncEnumerable(IAsyncEnumerable asyncEnumerable) - { - var asyncEnumerator = asyncEnumerable.GetAsyncEnumerator(); - while (asyncEnumerator.MoveNextAsync().AsTask().Result) - { - yield return asyncEnumerator.Current; - } - - asyncEnumerator.DisposeAsync().AsTask().Wait(); - } - - #endregion - } -} diff --git a/ClearScriptTest/ExtensionsTest.cs b/ClearScriptTest/ExtensionsTest.cs index 2a33d9d0..3297cc8d 100644 --- a/ClearScriptTest/ExtensionsTest.cs +++ b/ClearScriptTest/ExtensionsTest.cs @@ -233,6 +233,104 @@ public void Extension_JavaScript_ToEnumerable_Managed_ArrayList() Assert.AreEqual("This is not a drill!", string.Join(" ", engine.Global["foo"].ToEnumerable())); } + [TestMethod, TestCategory("Extensions")] + public void Extension_JavaScript_ToAsyncEnumerable_Generator() + { + engine.Execute("foo = (function* () { yield 'This'; yield 'is'; yield 'not'; yield 'a'; yield 'drill!'; })()"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + } + + [TestMethod, TestCategory("Extensions")] + public void Extension_JavaScript_ToAsyncEnumerable_AsyncGenerator() + { + engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); + engine.Execute("foo = (async function* () { await delay(1), yield 'This'; await delay(1), yield 'is'; await delay(1), yield 'not'; await delay(1), yield 'a'; await delay(1), yield 'drill!'; })()"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + } + + [TestMethod, TestCategory("Extensions")] + public void Extension_JavaScript_ToAsyncEnumerable_GenericObject() + { + engine.Execute("foo = { 'This': 1, 'is': 2, 'not': 3, 'a': 4, 'drill!': 5 }"); + TestUtil.AssertException(() => string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + + engine.Execute("foo[Symbol.iterator] = function* () { for (const item of Object.keys(foo)) yield item; }"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + + engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); + engine.Execute("foo[Symbol.asyncIterator] = async function* () { for (const item of Object.keys(foo)) { await delay(1); yield item; } }"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + } + + [TestMethod, TestCategory("Extensions")] + public void Extension_JavaScript_ToAsyncEnumerable_Array() + { + engine.Execute("foo = [ 'This', 'is', 'not', 'a', 'drill!' ]"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + } + + [TestMethod, TestCategory("Extensions")] + public void Extension_JavaScript_ToAsyncEnumerable_Managed_Object() + { + engine.Global["bar"] = new PropertyBag { { "This", 1 }, { "is", 2 }, { "not", 3 }, { "a", 4 }, { "drill!", 5 } }; + TestUtil.AssertException(() => string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); + + engine.Execute("foo = (function* () { for (const item of Object.keys(bar)) yield item; })()"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + + engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); + engine.Execute("foo = (async function* () { for (const item of Object.keys(bar)) { await delay(1); yield item; } })()"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + } + + [TestMethod, TestCategory("Extensions")] + public void Extension_JavaScript_ToAsyncEnumerable_Managed_Array() + { + engine.Global["bar"] = new[] { "This", "is", "not", "a", "drill!" }; + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); + + engine.Global["bar"] = new object[] { "This", "is", "not", "a", "drill!" }; + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); + + engine.Execute("foo = (function* () { for (const item of bar) yield item; })()"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + + engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); + engine.Execute("foo = (async function* () { for (const item of bar) { await delay(1); yield item; } })()"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + } + + [TestMethod, TestCategory("Extensions")] + public void Extension_JavaScript_ToAsyncEnumerable_Managed_List() + { + engine.Global["bar"] = new List { "This", "is", "not", "a", "drill!" }; + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); + + engine.Global["bar"] = new List { "This", "is", "not", "a", "drill!" }; + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); + + engine.Execute("foo = (function* () { for (const item of bar) yield item; })()"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + + engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); + engine.Execute("foo = (async function* () { for (const item of bar) { await delay(1); yield item; } })()"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + } + + [TestMethod, TestCategory("Extensions")] + public void Extension_JavaScript_ToAsyncEnumerable_Managed_ArrayList() + { + engine.Global["bar"] = new ArrayList { "This", "is", "not", "a", "drill!" }; + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["bar"].ToAsyncEnumerable()))); + + engine.Execute("foo = (function* () { for (const item of bar) yield item; })()"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + + engine.Global["delay"] = new Func(ms => Task.Delay(ms).ToPromise()); + engine.Execute("foo = (async function* () { for (const item of bar) { await delay(1); yield item; } })()"); + Assert.AreEqual("This is not a drill!", string.Join(" ", IterateAsyncEnumerable(engine.Global["foo"].ToAsyncEnumerable()))); + } + // ReSharper restore InconsistentNaming #endregion @@ -251,6 +349,17 @@ private async Task EvaluateAsync(string code) return await engine.Evaluate(code).ToTask(); } + private static IEnumerable IterateAsyncEnumerable(IAsyncEnumerable asyncEnumerable) + { + var asyncEnumerator = asyncEnumerable.GetAsyncEnumerator(); + while (asyncEnumerator.MoveNextAsync().AsTask().Result) + { + yield return asyncEnumerator.Current; + } + + asyncEnumerator.DisposeAsync().AsTask().Wait(); + } + #endregion } } diff --git a/ClearScriptTest/HostListTest.cs b/ClearScriptTest/HostListTest.cs index 04a174da..3b1977ca 100644 --- a/ClearScriptTest/HostListTest.cs +++ b/ClearScriptTest/HostListTest.cs @@ -185,6 +185,7 @@ public class BogusCustomListBase : IBogusCustomList public IEnumerator GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return list.GetEnumerator(); } @@ -251,6 +252,7 @@ public class BogusCustomListBase : IBogusCustomList public IEnumerator GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return list.GetEnumerator(); } @@ -321,6 +323,7 @@ public BogusReadOnlyCustomListBase(params T[] items) public IEnumerator GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return list.GetEnumerator(); } diff --git a/ClearScriptTest/HostTypeCollectionTest.cs b/ClearScriptTest/HostTypeCollectionTest.cs index d86a5b39..0d1cadb6 100644 --- a/ClearScriptTest/HostTypeCollectionTest.cs +++ b/ClearScriptTest/HostTypeCollectionTest.cs @@ -76,7 +76,7 @@ internal static void Test(HostTypeCollection typeCollection, string[] assemblyNa } Assert.IsTrue(allNodes.SequenceEqual(visitedNodes.Values)); - if (filter != null) + if (filter is not null) { Assert.IsTrue(allNodes.All(hostType => hostType.Types.All(type => filter(type)))); } @@ -94,7 +94,7 @@ private static IEnumerable GetLeafNodes(PropertyBag container) foreach (var childNode in container.Values) { var childContainer = childNode as PropertyBag; - if (childContainer == null) + if (childContainer is null) { yield return (HostType)childNode; } diff --git a/ClearScriptTest/JScriptCoreEngineTest.cs b/ClearScriptTest/JScriptCoreEngineTest.cs index 0ee8248b..9c2552ae 100644 --- a/ClearScriptTest/JScriptCoreEngineTest.cs +++ b/ClearScriptTest/JScriptCoreEngineTest.cs @@ -691,8 +691,8 @@ public void JScriptCoreEngine_new_GenericNested() public void JScriptCoreEngine_new_Scalar() { engine.AddHostObject("clr", HostItemFlags.GlobalMembers, new HostTypeCollection("mscorlib")); - Assert.AreEqual(default(int), engine.Evaluate("new System.Int32")); - Assert.AreEqual(default(int), engine.Evaluate("new System.Int32()")); + Assert.AreEqual(0, engine.Evaluate("new System.Int32")); + Assert.AreEqual(0, engine.Evaluate("new System.Int32()")); } [TestMethod, TestCategory("JScriptCoreEngine")] @@ -2573,14 +2573,16 @@ public void JScriptCoreEngine_ScriptObject() [TestMethod, TestCategory("JScriptCoreEngine")] public void JScriptCoreEngine_ScriptObject_IDictionary() { + // ReSharper disable UsageOfDefaultStructEquality + var pairs = new List> { - new KeyValuePair("123", 987), - new KeyValuePair("456", 654.321), - new KeyValuePair("abc", 123), - new KeyValuePair("def", 456.789), - new KeyValuePair("ghi", "foo"), - new KeyValuePair("jkl", engine.Evaluate("({ bar: 'baz' })")) + new("123", 987), + new("456", 654.321), + new("abc", 123), + new("def", 456.789), + new("ghi", "foo"), + new("jkl", engine.Evaluate("({ bar: 'baz' })")) }; var dict = (IDictionary)engine.Evaluate("dict = {}"); @@ -2640,6 +2642,8 @@ public void JScriptCoreEngine_ScriptObject_IDictionary() Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("delete dict[789]"))); Assert.IsTrue(pairs.SequenceEqual(dict)); + + // ReSharper restore UsageOfDefaultStructEquality } [TestMethod, TestCategory("JScriptCoreEngine")] @@ -2820,6 +2824,21 @@ public void JScriptCoreEngine_UndefinedImportValue() Assert.AreEqual(123, engine.Evaluate("undefined")); } + [TestMethod, TestCategory("JScriptCoreEngine")] + public void JScriptCoreEngine_NullImportValue() + { + Assert.IsNull(engine.Evaluate("null")); + Assert.IsInstanceOfType(engine.Evaluate("undefined"), typeof(Undefined)); + + engine.NullImportValue = Undefined.Value; + Assert.IsInstanceOfType(engine.Evaluate("null"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("undefined"), typeof(Undefined)); + + engine.NullImportValue = 123; + Assert.AreEqual(123, engine.Evaluate("null")); + Assert.IsInstanceOfType(engine.Evaluate("undefined"), typeof(Undefined)); + } + [TestMethod, TestCategory("JScriptCoreEngine")] public void JScriptCoreEngine_NullExportValue() { diff --git a/ClearScriptTest/JScriptCoreModuleTest.cs b/ClearScriptTest/JScriptCoreModuleTest.cs index 6c6d8725..1107c204 100644 --- a/ClearScriptTest/JScriptCoreModuleTest.cs +++ b/ClearScriptTest/JScriptCoreModuleTest.cs @@ -452,7 +452,7 @@ public override Task LoadDocumentAsync(DocumentSettings settings, Docu private static IDictionary CreateDocumentContext(DocumentInfo info) { - if (info.Uri != null) + if (info.Uri is not null) { var name = Path.GetFileName(info.Uri.AbsolutePath); diff --git a/ClearScriptTest/JScriptEngineTest.cs b/ClearScriptTest/JScriptEngineTest.cs index 5039f45a..70d7784b 100644 --- a/ClearScriptTest/JScriptEngineTest.cs +++ b/ClearScriptTest/JScriptEngineTest.cs @@ -690,8 +690,8 @@ public void JScriptEngine_new_GenericNested() public void JScriptEngine_new_Scalar() { engine.AddHostObject("clr", HostItemFlags.GlobalMembers, new HostTypeCollection("mscorlib")); - Assert.AreEqual(default(int), engine.Evaluate("new System.Int32")); - Assert.AreEqual(default(int), engine.Evaluate("new System.Int32()")); + Assert.AreEqual(0, engine.Evaluate("new System.Int32")); + Assert.AreEqual(0, engine.Evaluate("new System.Int32()")); } [TestMethod, TestCategory("JScriptEngine")] @@ -2633,14 +2633,16 @@ public void JScriptEngine_ScriptObject() [TestMethod, TestCategory("JScriptEngine")] public void JScriptEngine_ScriptObject_IDictionary() { + // ReSharper disable UsageOfDefaultStructEquality + var pairs = new List> { - new KeyValuePair("123", 987), - new KeyValuePair("456", 654.321), - new KeyValuePair("abc", 123), - new KeyValuePair("def", 456.789), - new KeyValuePair("ghi", "foo"), - new KeyValuePair("jkl", engine.Evaluate("({ bar: 'baz' })")) + new("123", 987), + new("456", 654.321), + new("abc", 123), + new("def", 456.789), + new("ghi", "foo"), + new("jkl", engine.Evaluate("({ bar: 'baz' })")) }; var dict = (IDictionary)engine.Evaluate("dict = {}"); @@ -2700,6 +2702,8 @@ public void JScriptEngine_ScriptObject_IDictionary() Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("delete dict[789]"))); Assert.IsTrue(pairs.SequenceEqual(dict)); + + // ReSharper restore UsageOfDefaultStructEquality } [TestMethod, TestCategory("JScriptEngine")] @@ -2880,6 +2884,21 @@ public void JScriptEngine_UndefinedImportValue() Assert.AreEqual(123, engine.Evaluate("undefined")); } + [TestMethod, TestCategory("JScriptEngine")] + public void JScriptEngine_NullImportValue() + { + Assert.IsNull(engine.Evaluate("null")); + Assert.IsInstanceOfType(engine.Evaluate("undefined"), typeof(Undefined)); + + engine.NullImportValue = Undefined.Value; + Assert.IsInstanceOfType(engine.Evaluate("null"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("undefined"), typeof(Undefined)); + + engine.NullImportValue = 123; + Assert.AreEqual(123, engine.Evaluate("null")); + Assert.IsInstanceOfType(engine.Evaluate("undefined"), typeof(Undefined)); + } + [TestMethod, TestCategory("JScriptEngine")] public void JScriptEngine_NullExportValue() { diff --git a/ClearScriptTest/JScriptModuleTest.cs b/ClearScriptTest/JScriptModuleTest.cs index cd090bec..eeffd7e8 100644 --- a/ClearScriptTest/JScriptModuleTest.cs +++ b/ClearScriptTest/JScriptModuleTest.cs @@ -452,7 +452,7 @@ public override Task LoadDocumentAsync(DocumentSettings settings, Docu private static IDictionary CreateDocumentContext(DocumentInfo info) { - if (info.Uri != null) + if (info.Uri is not null) { var name = Path.GetFileName(info.Uri.AbsolutePath); diff --git a/ClearScriptTest/JavaScript/StandardModule/Module.js b/ClearScriptTest/JavaScript/StandardModule/Module.js index 91e83f18..82cfb2fa 100644 --- a/ClearScriptTest/JavaScript/StandardModule/Module.js +++ b/ClearScriptTest/JavaScript/StandardModule/Module.js @@ -3,4 +3,4 @@ import * as Geometry from 'Geometry/Geometry.js'; -new Geometry.Square(25).Area; +import.meta.setResult(new Geometry.Square(25).Area); diff --git a/ClearScriptTest/JavaScript/StandardModule/ModuleWithSideEffects.js b/ClearScriptTest/JavaScript/StandardModule/ModuleWithSideEffects.js index 3a6682e4..d5d4537a 100644 --- a/ClearScriptTest/JavaScript/StandardModule/ModuleWithSideEffects.js +++ b/ClearScriptTest/JavaScript/StandardModule/ModuleWithSideEffects.js @@ -5,4 +5,4 @@ import * as Geometry from 'Geometry/Geometry.js'; foo.bar = new Geometry.Square(25).Area; -foo.bar; +import.meta.setResult(foo.bar); diff --git a/ClearScriptTest/Misc.cs b/ClearScriptTest/Misc.cs index 76be398b..4737ff85 100644 --- a/ClearScriptTest/Misc.cs +++ b/ClearScriptTest/Misc.cs @@ -68,8 +68,8 @@ public Random Method(Random arg) public class DefaultPropertyTestObject { - private readonly Dictionary byName = new Dictionary(); - private readonly Dictionary byDay = new Dictionary(); + private readonly Dictionary byName = new(); + private readonly Dictionary byDay = new(); public object this[string name] { @@ -89,7 +89,7 @@ public object this[DayOfWeek day] public class DefaultPropertyTestContainer { - public readonly DefaultPropertyTestObject Field = new DefaultPropertyTestObject(); + public readonly DefaultPropertyTestObject Field = new(); public DefaultPropertyTestObject Property => Field; @@ -134,7 +134,7 @@ public static double CalcTestValue(Guid callerGuid, params object[] args) return hashCode * Math.E / Math.PI; } - public static void AssertException(Action action, bool checkScriptStackTrace = true) where T : Exception + public static void AssertException(Action action, bool checkScriptStackTrace = true) where TException : Exception { Exception caughtException = null; var gotExpectedException = false; @@ -143,7 +143,7 @@ public static void AssertException(Action action, bool checkScriptStackTrace { action(); } - catch (T exception) + catch (TException exception) { caughtException = exception; gotExpectedException = true; @@ -152,12 +152,12 @@ public static void AssertException(Action action, bool checkScriptStackTrace catch (Exception exception) { caughtException = exception; - gotExpectedException = exception.GetBaseException() is T; + gotExpectedException = exception.GetBaseException() is TException; AssertValidExceptionChain(exception, checkScriptStackTrace); } - var message = "Expected " + typeof(T).Name + " was not thrown."; - if (caughtException != null) + var message = "Expected " + typeof(TException).Name + " was not thrown."; + if (caughtException is not null) { message += " " + caughtException.GetType().Name + " was thrown instead."; } @@ -165,7 +165,75 @@ public static void AssertException(Action action, bool checkScriptStackTrace Assert.IsTrue(gotExpectedException, message); } - public static void AssertException(Action action, bool checkScriptStackTrace = true) where T1 : Exception where T2 : Exception + public static void AssertException(Action action, in TArg arg, bool checkScriptStackTrace = true) where TException : Exception + { + Exception caughtException = null; + var gotExpectedException = false; + + try + { + action(arg); + } + catch (TException exception) + { + caughtException = exception; + gotExpectedException = true; + AssertValidExceptionChain(exception, checkScriptStackTrace); + } + catch (Exception exception) + { + caughtException = exception; + gotExpectedException = exception.GetBaseException() is TException; + AssertValidExceptionChain(exception, checkScriptStackTrace); + } + + var message = "Expected " + typeof(TException).Name + " was not thrown."; + if (caughtException is not null) + { + message += " " + caughtException.GetType().Name + " was thrown instead."; + } + + Assert.IsTrue(gotExpectedException, message); + } + + public static void AssertException(Action action, in TArg arg, bool checkScriptStackTrace = true) where TException1 : Exception where TException2 : Exception + { + Exception caughtException = null; + var gotExpectedException = false; + + try + { + action(arg); + } + catch (TException1 exception) + { + caughtException = exception; + gotExpectedException = true; + AssertValidExceptionChain(exception, checkScriptStackTrace); + } + catch (TException2 exception) + { + caughtException = exception; + gotExpectedException = true; + AssertValidExceptionChain(exception, checkScriptStackTrace); + } + catch (Exception exception) + { + caughtException = exception; + gotExpectedException = (exception.GetBaseException() is TException1) || (exception.GetBaseException() is TException2); + AssertValidExceptionChain(exception, checkScriptStackTrace); + } + + var message = "Expected " + typeof(TException1).Name + " or " + typeof(TException2).Name + " was not thrown."; + if (caughtException is not null) + { + message += " " + caughtException.GetType().Name + " was thrown instead."; + } + + Assert.IsTrue(gotExpectedException, message); + } + + public static void AssertException(Action action, bool checkScriptStackTrace = true) where TException1 : Exception where TException2 : Exception { Exception caughtException = null; var gotExpectedException = false; @@ -174,13 +242,13 @@ public static void AssertException(Action action, bool checkScriptStackT { action(); } - catch (T1 exception) + catch (TException1 exception) { caughtException = exception; gotExpectedException = true; AssertValidExceptionChain(exception, checkScriptStackTrace); } - catch (T2 exception) + catch (TException2 exception) { caughtException = exception; gotExpectedException = true; @@ -189,12 +257,12 @@ public static void AssertException(Action action, bool checkScriptStackT catch (Exception exception) { caughtException = exception; - gotExpectedException = (exception.GetBaseException() is T1) || (exception.GetBaseException() is T2); + gotExpectedException = (exception.GetBaseException() is TException1) || (exception.GetBaseException() is TException2); AssertValidExceptionChain(exception, checkScriptStackTrace); } - var message = "Expected " + typeof(T1).Name + " or " + typeof(T2).Name + " was not thrown."; - if (caughtException != null) + var message = "Expected " + typeof(TException1).Name + " or " + typeof(TException2).Name + " was not thrown."; + if (caughtException is not null) { message += " " + caughtException.GetType().Name + " was thrown instead."; } @@ -213,7 +281,7 @@ public static void AssertValidException(Exception exception) Assert.IsFalse(string.IsNullOrWhiteSpace(exception.StackTrace)); Assert.IsFalse(exception.Message.Contains("COM")); - if (!(exception is IOException)) + if (exception is not IOException) { Assert.IsFalse(exception.Message.Contains("HRESULT")); Assert.IsFalse(exception.Message.Contains("0x")); @@ -241,7 +309,7 @@ public static void AssertValidException(ScriptEngine engine, IScriptEngineExcept private static void AssertValidExceptionChain(Exception exception, bool checkScriptStackTrace) { - while (exception != null) + while (exception is not null) { if (exception is IScriptEngineException scriptError) { @@ -261,7 +329,7 @@ public static string GetCOMObjectTypeName(object obj) if (obj is IDispatch dispatch) { var typeInfo = dispatch.GetTypeInfo(); - if (typeInfo != null) + if (typeInfo is not null) { return typeInfo.GetName(); } @@ -270,4 +338,18 @@ public static string GetCOMObjectTypeName(object obj) return null; } } + + public static class TestUtil where TException : Exception + { + public static void AssertException(Action action, bool checkScriptStackTrace = true) => TestUtil.AssertException(action, checkScriptStackTrace); + + public static void AssertException(Action action, in TArg arg, bool checkScriptStackTrace = true) => TestUtil.AssertException(action, arg, checkScriptStackTrace); + } + + public static class TestUtil where TException1 : Exception where TException2 : Exception + { + public static void AssertException(Action action, bool checkScriptStackTrace = true) => TestUtil.AssertException(action, checkScriptStackTrace); + + public static void AssertException(Action action, in TArg arg, bool checkScriptStackTrace = true) => TestUtil.AssertException(action, arg, checkScriptStackTrace); + } } diff --git a/ClearScriptTest/Properties/AssemblyInfo.cs b/ClearScriptTest/Properties/AssemblyInfo.cs index 25b34ba5..c21b2fa4 100644 --- a/ClearScriptTest/Properties/AssemblyInfo.cs +++ b/ClearScriptTest/Properties/AssemblyInfo.cs @@ -11,6 +11,6 @@ [assembly: AssemblyCopyright("(c) Microsoft Corporation")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("7.4.5")] -[assembly: AssemblyFileVersion("7.4.5")] -[assembly: AssemblyInformationalVersion("7.4.5")] +[assembly: AssemblyVersion("7.5.0")] +[assembly: AssemblyFileVersion("7.5.0")] +[assembly: AssemblyInformationalVersion("7.5.0")] diff --git a/ClearScriptTest/PropertyBagTest.Windows.cs b/ClearScriptTest/PropertyBagTest.Windows.cs index 086b98ba..7fab400f 100644 --- a/ClearScriptTest/PropertyBagTest.Windows.cs +++ b/ClearScriptTest/PropertyBagTest.Windows.cs @@ -151,7 +151,7 @@ public void PropertyBag_MultiEngine_Parallel() // ReSharper restore AccessToDisposedClosure }; - var threads = Enumerable.Range(0, threadCount).Select(index => new Thread(body)).ToArray(); + var threads = Enumerable.Range(0, threadCount).Select(_ => new Thread(body)).ToArray(); threads.ForEach((thread, index) => thread.Start(index)); startEvent.Set(); @@ -215,7 +215,7 @@ public void PropertyBag_Concurrent_JScript() // ReSharper restore AccessToDisposedClosure }; - var threads = Enumerable.Range(0, threadCount).Select(index => new Thread(body)).ToArray(); + var threads = Enumerable.Range(0, threadCount).Select(_ => new Thread(body)).ToArray(); threads.ForEach((thread, index) => thread.Start(index)); startEvent.Set(); diff --git a/ClearScriptTest/PropertyBagTest.cs b/ClearScriptTest/PropertyBagTest.cs index 2ae08adb..d90ba2ea 100644 --- a/ClearScriptTest/PropertyBagTest.cs +++ b/ClearScriptTest/PropertyBagTest.cs @@ -249,7 +249,7 @@ public void PropertyBag_Concurrent() // ReSharper restore AccessToDisposedClosure }; - var threads = Enumerable.Range(0, threadCount).Select(index => new Thread(body)).ToArray(); + var threads = Enumerable.Range(0, threadCount).Select(_ => new Thread(body)).ToArray(); threads.ForEach((thread, index) => thread.Start(index)); startEvent.Set(); diff --git a/ClearScriptTest/ScriptAccessTest.cs b/ClearScriptTest/ScriptAccessTest.cs index df10732b..b3c47749 100644 --- a/ClearScriptTest/ScriptAccessTest.cs +++ b/ClearScriptTest/ScriptAccessTest.cs @@ -535,7 +535,7 @@ private void AssertMemberInternal(string objectName, string memberName, string s Assert.IsNotNull(target); var eventInfo = member as EventInfo; - if (eventInfo != null) + if (eventInfo is not null) { var eventSource = engine.Evaluate(objectName + "." + scriptMemberName) as EventSource; Assert.IsNotNull(eventSource); @@ -545,21 +545,21 @@ private void AssertMemberInternal(string objectName, string memberName, string s } field = member as FieldInfo; - if (field != null) + if (field is not null) { Assert.AreEqual(field.GetValue(target), engine.Evaluate(objectName + "." + scriptMemberName)); return; } var property = member as PropertyInfo; - if (property != null) + if (property is not null) { Assert.AreEqual(property.GetValue(target, ArrayHelpers.GetEmptyArray()), engine.Evaluate(objectName + "." + scriptMemberName)); return; } var method = member as MethodInfo; - if (method != null) + if (method is not null) { switch (method.GetParameters().Length) { diff --git a/ClearScriptTest/TestEnumerable.NetStandard.cs b/ClearScriptTest/TestEnumerable.NetStandard.cs deleted file mode 100644 index a735db6c..00000000 --- a/ClearScriptTest/TestEnumerable.NetStandard.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; - -namespace Microsoft.ClearScript.Test -{ - public static partial class TestEnumerable - { - public static IAsyncEnumerable CreateAsync(params T[] items) - { - return CreateInternal(items); - } - - private partial class TestEnumerableImpl : IAsyncEnumerable - { - IAsyncEnumerator IAsyncEnumerable.GetAsyncEnumerator(CancellationToken cancellationToken) - { - return new Enumerator(this); - } - - private partial class Enumerator : IAsyncEnumerator - { - T IAsyncEnumerator.Current => ((IEnumerator)this).Current; - - ValueTask IAsyncEnumerator.MoveNextAsync() - { - return new ValueTask(((IEnumerator)this).MoveNext()); - } - - ValueTask IAsyncDisposable.DisposeAsync() - { - ((IDisposable)this).Dispose(); - return default; - } - } - } - } -} diff --git a/ClearScriptTest/TestEnumerable.cs b/ClearScriptTest/TestEnumerable.cs index 2d2e8b67..76e22235 100644 --- a/ClearScriptTest/TestEnumerable.cs +++ b/ClearScriptTest/TestEnumerable.cs @@ -1,10 +1,11 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. using System; using System.Collections; using System.Collections.Generic; using System.Threading; +using System.Threading.Tasks; namespace Microsoft.ClearScript.Test { @@ -26,19 +27,22 @@ public static IEnumerable Create(params T[] items) return CreateGeneric(items); } + public static IAsyncEnumerable CreateAsync(params T[] items) + { + return CreateInternal(items); + } + private static TestEnumerableImpl CreateInternal(T[] items) { return new TestEnumerableImpl(items); } // ReSharper disable once PartialTypeWithSinglePart - private partial class TestEnumerableImpl : IEnumerable, IDisposableEnumeratorFactory + private partial class TestEnumerableImpl : IEnumerable, IAsyncEnumerable, IDisposableEnumeratorFactory { private readonly T[] items; private int disposedEnumeratorCount; - int IDisposableEnumeratorFactory.DisposedEnumeratorCount => disposedEnumeratorCount; - public TestEnumerableImpl(T[] items) { this.items = items; @@ -51,11 +55,19 @@ IEnumerator IEnumerable.GetEnumerator() IEnumerator IEnumerable.GetEnumerator() { + // ReSharper disable once NotDisposedResourceIsReturned return ((IEnumerable)this).GetEnumerator(); } + IAsyncEnumerator IAsyncEnumerable.GetAsyncEnumerator(CancellationToken cancellationToken) + { + return new Enumerator(this); + } + + int IDisposableEnumeratorFactory.DisposedEnumeratorCount => disposedEnumeratorCount; + // ReSharper disable once PartialTypeWithSinglePart - private partial class Enumerator : IEnumerator + private partial class Enumerator : IEnumerator, IAsyncEnumerator { private readonly TestEnumerableImpl enumerable; private int index = -1; @@ -83,6 +95,19 @@ void IDisposable.Dispose() { Interlocked.Increment(ref enumerable.disposedEnumeratorCount); } + + T IAsyncEnumerator.Current => ((IEnumerator)this).Current; + + ValueTask IAsyncEnumerator.MoveNextAsync() + { + return new ValueTask(((IEnumerator)this).MoveNext()); + } + + ValueTask IAsyncDisposable.DisposeAsync() + { + ((IDisposable)this).Dispose(); + return default; + } } } } diff --git a/ClearScriptTest/TestObject.cs b/ClearScriptTest/TestObject.cs index be8673c0..ddd7d483 100644 --- a/ClearScriptTest/TestObject.cs +++ b/ClearScriptTest/TestObject.cs @@ -47,7 +47,7 @@ public double BindTestMethod(T arg) return TestUtil.CalcTestValue(new Guid("06407870-c4dc-40f8-95ec-8d743c77c8b2"), this, typeof(T), arg); } - private readonly Dictionary dict = new Dictionary(); + private readonly Dictionary dict = new(); public object this[string key] { diff --git a/ClearScriptTest/TypeRestrictionTest.cs b/ClearScriptTest/TypeRestrictionTest.cs index 224fd758..c5da7bff 100644 --- a/ClearScriptTest/TypeRestrictionTest.cs +++ b/ClearScriptTest/TypeRestrictionTest.cs @@ -90,7 +90,7 @@ public class TestContainer public const int ObjectTestValue = 123456; public const string InterfaceTestValue = "fooBARbazQUX"; - public TestObject Field = new TestObject(); + public TestObject Field = new(); public ITestInterface InterfaceField = new TestObject(); public object ObjectField = new TestObject(); [ScriptMember(ScriptMemberFlags.ExposeRuntimeType)] public ITestInterface UnrestrictedField = new TestObject(); diff --git a/ClearScriptTest/V8ArrayBufferOrViewTest.cs b/ClearScriptTest/V8ArrayBufferOrViewTest.cs index 1f12cd4c..001efa58 100644 --- a/ClearScriptTest/V8ArrayBufferOrViewTest.cs +++ b/ClearScriptTest/V8ArrayBufferOrViewTest.cs @@ -138,6 +138,48 @@ public void V8ArrayBufferOrView_ArrayBuffer_WriteBytes() TestUtil.AssertException(() => ((IArrayBuffer)engine.Script.typedArray.buffer).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_ArrayBuffer_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new Uint8Array(new ArrayBuffer(1024)); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => unchecked((byte)index)).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((IArrayBuffer)engine.Script.typedArray.buffer).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((IArrayBuffer)engine.Script.typedArray.buffer).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((IArrayBuffer)engine.Script.typedArray.buffer).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_ArrayBuffer_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => unchecked((byte)index)).ToArray().AsSpan(); + + engine.Execute("typedArray = new Uint8Array(new ArrayBuffer(1024))"); + Assert.AreEqual(256UL, ((IArrayBuffer)engine.Script.typedArray.buffer).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((IArrayBuffer)engine.Script.typedArray.buffer).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((IArrayBuffer)engine.Script.typedArray.buffer).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((IArrayBuffer)engine.Script.typedArray.buffer).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_DataView() { @@ -232,6 +274,48 @@ public void V8ArrayBufferOrView_DataView_WriteBytes() TestUtil.AssertException(() => ((IDataView)engine.Script.dataView).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_DataView_ReadBytes_Span() + { + engine.Execute(@" + dataView = new DataView(new ArrayBuffer(1024)); + for (var i = 0; i < 1024; i++) { + dataView.setUint8(i, i); + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => unchecked((byte)index)).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((IDataView)engine.Script.dataView).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((IDataView)engine.Script.dataView).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((IDataView)engine.Script.dataView).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_DataView_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => unchecked((byte)index)).ToArray().AsSpan(); + + engine.Execute("dataView = new DataView(new ArrayBuffer(1024))"); + Assert.AreEqual(256UL, ((IDataView)engine.Script.dataView).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((IDataView)engine.Script.dataView).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((IDataView)engine.Script.dataView).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((IDataView)engine.Script.dataView).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Uint8Array() { @@ -327,6 +411,48 @@ public void V8ArrayBufferOrView_Uint8Array_WriteBytes() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint8Array_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new Uint8Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => unchecked((byte)index)).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint8Array_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => unchecked((byte)index)).ToArray().AsSpan(); + + engine.Execute("typedArray = new Uint8Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Uint8Array_ToArray() { @@ -398,6 +524,48 @@ public void V8ArrayBufferOrView_Uint8Array_Write() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).Write(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint8Array_Read_Span() + { + engine.Execute(@" + typedArray = new Uint8Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => unchecked((byte)index)).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint8Array_Write_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => unchecked((byte)index)).ToArray().AsSpan(); + + engine.Execute("typedArray = new Uint8Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Uint8ClampedArray() { @@ -493,6 +661,48 @@ public void V8ArrayBufferOrView_Uint8ClampedArray_WriteBytes() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint8ClampedArray_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new Uint8ClampedArray(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => (byte)(Math.Min(index, 255))).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint8ClampedArray_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => (byte)(Math.Min(index, 255))).ToArray().AsSpan(); + + engine.Execute("typedArray = new Uint8ClampedArray(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Uint8ClampedArray_ToArray() { @@ -564,6 +774,48 @@ public void V8ArrayBufferOrView_Uint8ClampedArray_Write() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).Write(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint8ClampedArray_Read_Span() + { + engine.Execute(@" + typedArray = new Uint8ClampedArray(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => (byte)(Math.Min(index, 255))).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint8ClampedArray_Write_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => (byte)(Math.Min(index, 255))).ToArray().AsSpan(); + + engine.Execute("typedArray = new Uint8ClampedArray(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Int8Array() { @@ -659,6 +911,48 @@ public void V8ArrayBufferOrView_Int8Array_WriteBytes() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int8Array_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new Int8Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => unchecked((byte)(index - 512))).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int8Array_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => (byte)(Math.Min(index, 255))).ToArray().AsSpan(); + + engine.Execute("typedArray = new Int8Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Int8Array_ToArray() { @@ -730,6 +1024,48 @@ public void V8ArrayBufferOrView_Int8Array_Write() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).Write(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int8Array_Read_Span() + { + engine.Execute(@" + typedArray = new Int8Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => unchecked((sbyte)(index - 512))).ToArray().AsSpan(); + + var readValues = new sbyte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int8Array_Write_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => unchecked((sbyte)(index - 512))).ToArray().AsSpan(); + + engine.Execute("typedArray = new Int8Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new sbyte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Uint16Array() { @@ -895,7 +1231,7 @@ public void V8ArrayBufferOrView_Uint16Array_WriteBytes() } [TestMethod, TestCategory("V8ArrayBufferOrView")] - public void V8ArrayBufferOrView_Uint16Array_ToArray() + public unsafe void V8ArrayBufferOrView_Uint16Array_ReadBytes_Span() { engine.Execute(@" typedArray = new Uint16Array(new ArrayBuffer(123456), 128, 1024); @@ -905,41 +1241,116 @@ public void V8ArrayBufferOrView_Uint16Array_ToArray() "); { - var testValues = Enumerable.Range(0, 1024).Select(index => (ushort)index).ToArray(); - Assert.IsTrue(testValues.SequenceEqual(((ITypedArray)engine.Script.typedArray).ToArray())); - using (Scope.Create(() => MiscHelpers.Exchange(ref UnmanagedMemoryHelpers.DisableMarshalCopy, true), value => UnmanagedMemoryHelpers.DisableMarshalCopy = value)) + var testValues = Enumerable.Range(0, 1024).SelectMany(index => BitConverter.GetBytes((ushort)index)).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) { - Assert.IsTrue(testValues.SequenceEqual(((ITypedArray)engine.Script.typedArray).ToArray())); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); } } { - var testValues = Enumerable.Range(0, 1024).Select(index => (char)index).ToArray(); - Assert.IsTrue(testValues.SequenceEqual(((ITypedArray)engine.Script.typedArray).ToArray())); - using (Scope.Create(() => MiscHelpers.Exchange(ref UnmanagedMemoryHelpers.DisableMarshalCopy, true), value => UnmanagedMemoryHelpers.DisableMarshalCopy = value)) + var testValues = Enumerable.Range(0, 1024).SelectMany(index => BitConverter.GetBytes((char)index)).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256).Take(256))); + + fixed (void* pReadValues = readValues) { - Assert.IsTrue(testValues.SequenceEqual(((ITypedArray)engine.Script.typedArray).ToArray())); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); } } } [TestMethod, TestCategory("V8ArrayBufferOrView")] - public void V8ArrayBufferOrView_Uint16Array_Read() + public unsafe void V8ArrayBufferOrView_Uint16Array_WriteBytes_Span() { - engine.Execute(@" - typedArray = new Uint16Array(new ArrayBuffer(123456), 128, 1024); - for (var i = 0; i < 1024; i++) { - typedArray[i] = i; - } - "); - { - var testValues = Enumerable.Range(0, 1024).Select(index => (ushort)index).ToArray(); + var testValues = Enumerable.Range(0, 256).SelectMany(index => BitConverter.GetBytes((ushort)index)).ToArray().AsSpan(); - var readValues = new ushort[512]; - Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); - Assert.IsTrue(testValues.Skip(128).Take(256).SequenceEqual(readValues.Skip(256))); + engine.Execute("typedArray = new Uint16Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); - using (Scope.Create(() => MiscHelpers.Exchange(ref UnmanagedMemoryHelpers.DisableMarshalCopy, true), value => UnmanagedMemoryHelpers.DisableMarshalCopy = value)) + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + { + var testValues = Enumerable.Range(0, 256).SelectMany(index => BitConverter.GetBytes((char)index)).ToArray().AsSpan(); + + engine.Execute("typedArray = new Uint16Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public void V8ArrayBufferOrView_Uint16Array_ToArray() + { + engine.Execute(@" + typedArray = new Uint16Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + { + var testValues = Enumerable.Range(0, 1024).Select(index => (ushort)index).ToArray(); + Assert.IsTrue(testValues.SequenceEqual(((ITypedArray)engine.Script.typedArray).ToArray())); + using (Scope.Create(() => MiscHelpers.Exchange(ref UnmanagedMemoryHelpers.DisableMarshalCopy, true), value => UnmanagedMemoryHelpers.DisableMarshalCopy = value)) + { + Assert.IsTrue(testValues.SequenceEqual(((ITypedArray)engine.Script.typedArray).ToArray())); + } + } + { + var testValues = Enumerable.Range(0, 1024).Select(index => (char)index).ToArray(); + Assert.IsTrue(testValues.SequenceEqual(((ITypedArray)engine.Script.typedArray).ToArray())); + using (Scope.Create(() => MiscHelpers.Exchange(ref UnmanagedMemoryHelpers.DisableMarshalCopy, true), value => UnmanagedMemoryHelpers.DisableMarshalCopy = value)) + { + Assert.IsTrue(testValues.SequenceEqual(((ITypedArray)engine.Script.typedArray).ToArray())); + } + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public void V8ArrayBufferOrView_Uint16Array_Read() + { + engine.Execute(@" + typedArray = new Uint16Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + { + var testValues = Enumerable.Range(0, 1024).Select(index => (ushort)index).ToArray(); + + var readValues = new ushort[512]; + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.Skip(128).Take(256).SequenceEqual(readValues.Skip(256))); + + using (Scope.Create(() => MiscHelpers.Exchange(ref UnmanagedMemoryHelpers.DisableMarshalCopy, true), value => UnmanagedMemoryHelpers.DisableMarshalCopy = value)) { readValues = new ushort[512]; Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); @@ -1019,6 +1430,81 @@ public void V8ArrayBufferOrView_Uint16Array_Write() } } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint16Array_Read_Span() + { + engine.Execute(@" + typedArray = new Uint16Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + { + var testValues = Enumerable.Range(0, 1024).Select(index => (ushort)index).ToArray().AsSpan(); + + var readValues = new ushort[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + { + var testValues = Enumerable.Range(0, 1024).Select(index => (char)index).ToArray().AsSpan(); + + var readValues = new char[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint16Array_Write_Span() + { + { + var testValues = Enumerable.Range(0, 512).Select(index => (ushort)index).ToArray().AsSpan(); + + engine.Execute("typedArray = new Uint16Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new ushort[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + { + var testValues = Enumerable.Range(0, 512).Select(index => (char)index).ToArray().AsSpan(); + + engine.Execute("typedArray = new Uint16Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new char[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Int16Array() { @@ -1114,6 +1600,48 @@ public void V8ArrayBufferOrView_Int16Array_WriteBytes() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int16Array_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new Int16Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i - 512; + } + "); + + var testValues = Enumerable.Range(0, 1024).SelectMany(index => BitConverter.GetBytes((short)(index - 512))).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int16Array_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 256).SelectMany(index => BitConverter.GetBytes((short)(index - 512))).ToArray().AsSpan(); + + engine.Execute("typedArray = new Int16Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Int16Array_ToArray() { @@ -1185,6 +1713,48 @@ public void V8ArrayBufferOrView_Int16Array_Write() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).Write(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int16Array_Read_Span() + { + engine.Execute(@" + typedArray = new Int16Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i - 512; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => (short)(index - 512)).ToArray().AsSpan(); + + var readValues = new short[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int16Array_Write_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => (short)(index - 512)).ToArray().AsSpan(); + + engine.Execute("typedArray = new Int16Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new short[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Uint32Array() { @@ -1280,6 +1850,48 @@ public void V8ArrayBufferOrView_Uint32Array_WriteBytes() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint32Array_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new Uint32Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).SelectMany(index => BitConverter.GetBytes((uint)index)).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint32Array_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 128).SelectMany(index => BitConverter.GetBytes((uint)index)).ToArray().AsSpan(); + + engine.Execute("typedArray = new Uint32Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Uint32Array_ToArray() { @@ -1351,6 +1963,48 @@ public void V8ArrayBufferOrView_Uint32Array_Write() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).Write(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint32Array_Read_Span() + { + engine.Execute(@" + typedArray = new Uint32Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => (uint)index).ToArray().AsSpan(); + + var readValues = new uint[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Uint32Array_Write_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => (uint)index).ToArray().AsSpan(); + + engine.Execute("typedArray = new Uint32Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new uint[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Int32Array() { @@ -1446,6 +2100,48 @@ public void V8ArrayBufferOrView_Int32Array_WriteBytes() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int32Array_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new Int32Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).SelectMany(BitConverter.GetBytes).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int32Array_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 128).SelectMany(BitConverter.GetBytes).ToArray().AsSpan(); + + engine.Execute("typedArray = new Int32Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Int32Array_ToArray() { @@ -1517,6 +2213,48 @@ public void V8ArrayBufferOrView_Int32Array_Write() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).Write(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int32Array_Read_Span() + { + engine.Execute(@" + typedArray = new Int32Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i; + } + "); + + var testValues = Enumerable.Range(0, 1024).ToArray().AsSpan(); + + var readValues = new int[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Int32Array_Write_Span() + { + var testValues = Enumerable.Range(0, 512).ToArray().AsSpan(); + + engine.Execute("typedArray = new Int32Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new int[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_BigUint64Array() { @@ -1612,6 +2350,48 @@ public void V8ArrayBufferOrView_BigUint64Array_WriteBytes() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_BigUint64Array_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new BigUint64Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = BigInt(i); + } + "); + + var testValues = Enumerable.Range(0, 1024).SelectMany(index => BitConverter.GetBytes((ulong)index)).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_BigUint64Array_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 64).SelectMany(index => BitConverter.GetBytes((ulong)index)).ToArray().AsSpan(); + + engine.Execute("typedArray = new BigUint64Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_BigUint64Array_ToArray() { @@ -1683,6 +2463,48 @@ public void V8ArrayBufferOrView_BigUint64Array_Write() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).Write(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_BigUint64Array_Read_Span() + { + engine.Execute(@" + typedArray = new BigUint64Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = BigInt(i); + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => (ulong)index).ToArray().AsSpan(); + + var readValues = new ulong[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_BigUint64Array_Write_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => (ulong)index).ToArray().AsSpan(); + + engine.Execute("typedArray = new BigUint64Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new ulong[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_BigInt64Array() { @@ -1778,6 +2600,48 @@ public void V8ArrayBufferOrView_BigInt64Array_WriteBytes() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_BigInt64Array_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new BigInt64Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = BigInt(i); + } + "); + + var testValues = Enumerable.Range(0, 1024).SelectMany(index => BitConverter.GetBytes((long)index)).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_BigInt64Array_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 64).SelectMany(index => BitConverter.GetBytes((long)index)).ToArray().AsSpan(); + + engine.Execute("typedArray = new BigInt64Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_BigInt64Array_ToArray() { @@ -1849,6 +2713,48 @@ public void V8ArrayBufferOrView_BigInt64Array_Write() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).Write(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_BigInt64Array_Read_Span() + { + engine.Execute(@" + typedArray = new BigInt64Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = BigInt(i); + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => (long)index).ToArray().AsSpan(); + + var readValues = new long[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_BigInt64Array_Write_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => (long)index).ToArray().AsSpan(); + + engine.Execute("typedArray = new BigInt64Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new long[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Float32Array() { @@ -1944,6 +2850,48 @@ public void V8ArrayBufferOrView_Float32Array_WriteBytes() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Float32Array_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new Float32Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i * Math.PI; + } + "); + + var testValues = Enumerable.Range(0, 1024).SelectMany(index => BitConverter.GetBytes(Convert.ToSingle(index * Math.PI))).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Float32Array_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 128).SelectMany(index => BitConverter.GetBytes(Convert.ToSingle(index * Math.PI))).ToArray().AsSpan(); + + engine.Execute("typedArray = new Float32Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Float32Array_ToArray() { @@ -2015,6 +2963,48 @@ public void V8ArrayBufferOrView_Float32Array_Write() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).Write(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Float32Array_Read_Span() + { + engine.Execute(@" + typedArray = new Float32Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i * Math.PI; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => Convert.ToSingle(index * Math.PI)).ToArray().AsSpan(); + + var readValues = new float[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Float32Array_Write_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => Convert.ToSingle(index * Math.PI)).ToArray().AsSpan(); + + engine.Execute("typedArray = new Float32Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new float[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Float64Array() { @@ -2110,6 +3100,48 @@ public void V8ArrayBufferOrView_Float64Array_WriteBytes() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Float64Array_ReadBytes_Span() + { + engine.Execute(@" + typedArray = new Float64Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i * Math.PI; + } + "); + + var testValues = Enumerable.Range(0, 1024).SelectMany(index => BitConverter.GetBytes(index * Math.PI)).ToArray().AsSpan(); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).ReadBytes(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Float64Array_WriteBytes_Span() + { + var testValues = Enumerable.Range(0, 64).SelectMany(index => BitConverter.GetBytes(index * Math.PI)).ToArray().AsSpan(); + + engine.Execute("typedArray = new Float64Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).WriteBytes(testValues, 256, 16384, 128)); + + var readValues = new byte[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).ReadBytes(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).WriteBytes(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + [TestMethod, TestCategory("V8ArrayBufferOrView")] public void V8ArrayBufferOrView_Float64Array_ToArray() { @@ -2181,6 +3213,48 @@ public void V8ArrayBufferOrView_Float64Array_Write() TestUtil.AssertException(() => ((ITypedArray)engine.Script.typedArray).Write(testValues, 16384, 512, 0)); } + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Float64Array_Read_Span() + { + engine.Execute(@" + typedArray = new Float64Array(new ArrayBuffer(123456), 128, 1024); + for (var i = 0; i < 1024; i++) { + typedArray[i] = i * Math.PI; + } + "); + + var testValues = Enumerable.Range(0, 1024).Select(index => index * Math.PI).ToArray().AsSpan(); + + var readValues = new double[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(128).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pReadValues = readValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(16384, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 0), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Read(0, 1024, new Span(ctx.pReadValues.ToPointer(), ctx.readValuesLength), 16384), (pReadValues: (IntPtr)pReadValues, readValuesLength: readValues.Length)); + } + } + + [TestMethod, TestCategory("V8ArrayBufferOrView")] + public unsafe void V8ArrayBufferOrView_Float64Array_Write_Span() + { + var testValues = Enumerable.Range(0, 512).Select(index => index * Math.PI).ToArray().AsSpan(); + + engine.Execute("typedArray = new Float64Array(new ArrayBuffer(123456), 128, 1024)"); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Write(testValues, 256, 16384, 128)); + + var readValues = new double[512].AsSpan(); + Assert.AreEqual(256UL, ((ITypedArray)engine.Script.typedArray).Read(128, 16384, readValues, 256)); + Assert.IsTrue(testValues.ToArray().Skip(256).Take(256).SequenceEqual(readValues.ToArray().Skip(256))); + + fixed (void* pTestValues = testValues) + { + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 0, 512, 16384), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + TestUtil.AssertException(ctx => ((ITypedArray)engine.Script.typedArray).Write(new ReadOnlySpan(ctx.pTestValues.ToPointer(), ctx.testValuesLength), 16384, 512, 0), (pTestValues: (IntPtr)pTestValues, testValuesLength: testValues.Length)); + } + } + // ReSharper restore InconsistentNaming #endregion diff --git a/ClearScriptTest/V8FastProxyTest.cs b/ClearScriptTest/V8FastProxyTest.cs new file mode 100644 index 00000000..46145a77 --- /dev/null +++ b/ClearScriptTest/V8FastProxyTest.cs @@ -0,0 +1,2564 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Numerics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; +using Microsoft.ClearScript.JavaScript; +using Microsoft.ClearScript.Util; +using Microsoft.ClearScript.V8; +using Microsoft.ClearScript.V8.FastProxy; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Microsoft.ClearScript.Test +{ + [TestClass] + [SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = "Test classes use TestCleanupAttribute for deterministic teardown.")] + public class V8FastProxyTest : ClearScriptTest + { + #region setup / teardown + + private V8ScriptEngine engine; + private TestObject testObject; + private FastObject fastObject; + + [TestInitialize] + public void TestInitialize() + { + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging); + PrepareEngine(); + } + + private void PrepareEngine() + { + engine.AddHostType(typeof(Helpers)); + engine.Script.testObject = testObject ?? (testObject = new TestObject()); + engine.Script.fastObject = fastObject ?? (fastObject = new FastObject()); + } + + [TestCleanup] + public void TestCleanup() + { + engine.Dispose(); + BaseTestCleanup(); + } + + #endregion + + #region test methods + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Undefined() + { + testObject.GetProperty = static (in V8FastResult value) => value.SetUndefined(); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === undefined"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(Undefined.Value); + Assert.AreEqual(nameof(Undefined), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === undefined"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(Undefined.Value); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === undefined"))); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Null() + { + testObject.GetProperty = static (in V8FastResult value) => value.SetNull(); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === null"))); + + engine.NullExportValue = 123; + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 123"))); + + engine.NullExportValue = 456; + testObject.GetProperty = static (in V8FastResult value) => value.Set(null); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 456"))); + + engine.EnableNullResultWrapping = true; + testObject.GetProperty = static (in V8FastResult value) => value.Set(null); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.IsNull(engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Boolean() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(true); + Assert.IsTrue((bool)engine.Evaluate("testObject.value === true")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(false); + Assert.IsTrue((bool)engine.Evaluate("testObject.value === false")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(true); + Assert.AreEqual(nameof(Boolean), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.IsTrue((bool)engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(false); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.IsFalse((bool)engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Char() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set('q'); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 'q'.charCodeAt(0)"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set('r'); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 'r'.charCodeAt(0)"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set('s'); + Assert.AreEqual(nameof(Int32), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual((int)'s', engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set('t'); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual('t', engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_SByte() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(sbyte.MaxValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {sbyte.MaxValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(sbyte.MinValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {sbyte.MinValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((sbyte)123); + Assert.AreEqual(nameof(Int32), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(123, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((sbyte)-123); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual((sbyte)-123, engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Byte() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(byte.MaxValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {byte.MaxValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(byte.MinValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {byte.MinValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((byte)124); + Assert.AreEqual(nameof(Int32), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(124, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((byte)253); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual((byte)253, engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Int16() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(short.MaxValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {short.MaxValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(short.MinValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {short.MinValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((short)1234); + Assert.AreEqual(nameof(Int32), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(1234, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((short)4321); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual((short)4321, engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_UInt16() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(ushort.MaxValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {ushort.MaxValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(ushort.MinValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {ushort.MinValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((ushort)2345); + Assert.AreEqual(nameof(Int32), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(2345, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((ushort)5432); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual((ushort)5432, engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Int32() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(int.MaxValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {int.MaxValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(int.MinValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {int.MinValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(12345); + Assert.AreEqual(nameof(Int32), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(12345, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(54321); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(54321, engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_UInt32() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(uint.MaxValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {uint.MaxValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(uint.MinValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {uint.MinValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(uint.MaxValue - 1); + Assert.AreEqual(nameof(Int64), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual((long)uint.MaxValue - 1, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(65432U); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(65432U, engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Int64() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(-MiscHelpers.MaxInt64InDouble); + Assert.AreEqual(nameof(Int64), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(-MiscHelpers.MaxInt64InDouble, engine.Evaluate("testObject.value")); + + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.MarshalUnsafeInt64AsBigInt); + PrepareEngine(); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(MiscHelpers.MaxInt64InDouble); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {MiscHelpers.MaxInt64InDouble}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(-MiscHelpers.MaxInt64InDouble); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {-MiscHelpers.MaxInt64InDouble}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(MiscHelpers.MaxInt64InDouble + 1); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {MiscHelpers.MaxInt64InDouble + 1}n"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(-MiscHelpers.MaxInt64InDouble - 1); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {-MiscHelpers.MaxInt64InDouble - 1}n"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(654321L); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(654321L, engine.Evaluate("testObject.value")); + + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.MarshalAllInt64AsBigInt); + PrepareEngine(); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(12345678L); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 12345678n"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(87654321L); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 87654321n"))); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_UInt64() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set((ulong)MiscHelpers.MaxInt64InDouble); + Assert.AreEqual(nameof(Int64), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(MiscHelpers.MaxInt64InDouble, engine.Evaluate("testObject.value")); + + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.MarshalUnsafeInt64AsBigInt); + PrepareEngine(); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((ulong)MiscHelpers.MaxInt64InDouble); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {MiscHelpers.MaxInt64InDouble}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((ulong)MiscHelpers.MaxInt64InDouble + 1); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {MiscHelpers.MaxInt64InDouble + 1}n"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(765432UL); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(765432UL, engine.Evaluate("testObject.value")); + + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.MarshalAllInt64AsBigInt); + PrepareEngine(); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(12345678UL); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 12345678n"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(87654321UL); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 87654321n"))); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Single() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(float.MaxValue); + Assert.AreEqual((double)float.MaxValue, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(float.MinValue); + Assert.AreEqual((double)float.MinValue, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(123.5F); + Assert.AreEqual(nameof(Single), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(123.5F, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(321.5F); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(321.5F, engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Double() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(double.MaxValue); + Assert.AreEqual(double.MaxValue, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(double.MinValue); + Assert.AreEqual(double.MinValue, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(456.789D); + Assert.AreEqual(nameof(Double), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(456.789D, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(987.654D); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(987.654D, engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Decimal() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(decimal.MaxValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {decimal.MaxValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(decimal.MinValue); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate($"testObject.value === {decimal.MinValue}"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(456.789M); + Assert.AreEqual(nameof(Double), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(456.789D, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(987.654M); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(987.654M, engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_String() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set("bogus"); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 'bogus'"))); + + // ReSharper disable once RedundantCast + testObject.GetProperty = static (in V8FastResult value) => value.Set((string)null); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === null"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set("heinous"); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 'heinous'"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(null); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === null"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set("gnarly"); + Assert.AreEqual(nameof(String), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual("gnarly", engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set("bodacious"); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual("bodacious", engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_CharSpan() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set("bogus".AsSpan()); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 'bogus'"))); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_DateTime() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set(DateTime.MinValue); + Assert.AreEqual(DateTime.MinValue, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(DateTime.MaxValue); + Assert.AreEqual(DateTime.MaxValue, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(new DateTime(2007, 5, 22, 6, 15, 43, DateTimeKind.Utc)); + Assert.AreEqual(nameof(DateTime), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(new DateTime(2007, 5, 22, 6, 15, 43, DateTimeKind.Utc), engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(new DateTime(1968, 6, 4, 17, 23, 48, DateTimeKind.Utc)); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(new DateTime(1968, 6, 4, 17, 23, 48, DateTimeKind.Utc), engine.Evaluate("testObject.value")); + + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableDateTimeConversion); + PrepareEngine(); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(new DateTime(1941, 8, 26, 9, 11, 25, DateTimeKind.Utc)); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value.getTime() === new Date(Date.UTC(1941, 7, 26, 9, 11, 25)).getTime()"))); + Assert.AreEqual(new DateTime(1941, 8, 26, 9, 11, 25, DateTimeKind.Utc), engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(new DateTime(2007, 5, 22, 6, 15, 43, DateTimeKind.Utc)); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value.getTime() === new Date(Date.UTC(2007, 4, 22, 6, 15, 43)).getTime()"))); + Assert.AreEqual(new DateTime(2007, 5, 22, 6, 15, 43, DateTimeKind.Utc), engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(new DateTime(1968, 6, 4, 17, 23, 48, DateTimeKind.Utc)); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual(new DateTime(1968, 6, 4, 17, 23, 48, DateTimeKind.Utc), engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_BigInteger() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set((BigInteger)123); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 123n"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(456); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value === 456n"))); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((BigInteger)789); + Assert.AreEqual(nameof(BigInteger), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual((BigInteger)789, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((BigInteger)987); + Assert.AreEqual(nameof(IComparable), engine.Evaluate("Helpers.GetTypeName(testObject.value)")); + Assert.AreEqual((BigInteger)987, engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_V8Object() + { + { + var testValue = engine.Evaluate("({ foo: 123, bar: 'baz' })"); + testObject.GetProperty = (in V8FastResult value) => value.Set(testValue); + Assert.AreEqual(123, engine.Evaluate("testObject.value.foo")); + Assert.AreEqual("baz", engine.Evaluate("testObject.value.bar")); + + testObject.GetProperty = (in V8FastResult value) => value.Set(null); + Assert.IsNull(engine.Evaluate("testObject.value")); + } + + { + var testValue = (ScriptObject)engine.Evaluate("({ foo: 456, bar: 'qux' })"); + testObject.GetProperty = (in V8FastResult value) => value.Set(testValue); + Assert.AreEqual(456, engine.Evaluate("testObject.value.foo")); + Assert.AreEqual("qux", engine.Evaluate("testObject.value.bar")); + + testObject.GetProperty = (in V8FastResult value) => value.Set(null); + Assert.IsNull(engine.Evaluate("testObject.value")); + } + } + + [TestMethod, TestCategory("V8FastProxy")] + public async Task V8FastProxy_GetProperty_HostObject() + { + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableTaskPromiseConversion); + PrepareEngine(); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(new HostFunctions()); + Assert.IsInstanceOfType(engine.Evaluate("testObject.value")); + + testObject.GetProperty = (in V8FastResult value) => value.Set(null); + Assert.IsNull(engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(Task.FromResult(123)); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("testObject.value.constructor.name === 'Promise'"))); + Assert.AreEqual(123, await (Task)engine.Evaluate("testObject.value")); + + testObject.GetProperty = (in V8FastResult value) => value.Set>(null); + Assert.IsNull(engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_Nullable() + { + testObject.GetProperty = static (in V8FastResult value) => value.Set((int?)123); + Assert.AreEqual(123, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set((int?)null); + Assert.IsNull(engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(123); + Assert.AreEqual(123, engine.Evaluate("testObject.value")); + + testObject.GetProperty = static (in V8FastResult value) => value.Set(null); + Assert.IsNull(engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_GetProperty_ResultAlreadySet() + { + testObject.GetProperty = static (in V8FastResult value) => + { + value.Set(123); + value.Set(456); + }; + + TestUtil.AssertException(() => engine.Evaluate("testObject.value")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Undefined() + { + { + (bool Succeeded, Undefined Value) result = (false, null); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsTrue(value.IsTruthy); + Assert.IsFalse(value.IsFalsy); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsTrue(value.TryGet(out IComparable _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + engine.Execute("testObject.value = 123"); + Assert.IsFalse(result.Succeeded); + + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsTruthy); + Assert.IsTrue(value.IsFalsy); + Assert.IsTrue(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + Assert.IsFalse(value.TryGet(out IComparable _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + engine.Execute("testObject.value = undefined"); + Assert.IsTrue(result.Succeeded); + Assert.IsInstanceOfType(result.Value, typeof(Undefined)); + + engine.Script.value = Undefined.Value.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.IsInstanceOfType(result.Value, typeof(Undefined)); + } + + { + (bool Succeeded, object Value) result = (false, null); + engine.UndefinedImportValue = null; + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsTruthy); + Assert.IsTrue(value.IsFalsy); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + result.Succeeded = value.IsNull; + }; + + engine.Execute("testObject.value = undefined"); + Assert.IsTrue(result.Succeeded); + Assert.IsNull(result.Value); + + engine.UndefinedImportValue = 123; + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsTrue(value.IsTruthy); + Assert.IsFalse(value.IsFalsy); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + engine.Execute("testObject.value = undefined"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(123, result.Value); + } + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Null() + { + (bool Succeeded, object Value) result = (false, null); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsTruthy); + Assert.IsTrue(value.IsFalsy); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + result.Succeeded = value.IsNull; + }; + + engine.Execute("testObject.value = null"); + Assert.IsTrue(result.Succeeded); + Assert.IsNull(result.Value); + + { + engine.NullImportValue = Undefined.Value; + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsTruthy); + Assert.IsTrue(value.IsFalsy); + Assert.IsTrue(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + Assert.IsFalse(value.TryGet(out IComparable _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + engine.Execute("testObject.value = null"); + Assert.IsTrue(result.Succeeded); + Assert.IsInstanceOfType(result.Value, typeof(Undefined)); + + engine.NullImportValue = 123; + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsTrue(value.IsTruthy); + Assert.IsFalse(value.IsFalsy); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + engine.Execute("testObject.value = null"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(123, result.Value); + } + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Boolean() + { + (bool Succeeded, bool Value) result = (false, false); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + Assert.IsTrue(value.TryGet(out IComparable _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual(result.Value, value.IsTruthy); + Assert.AreEqual(!result.Value, value.IsFalsy); + } + }; + + engine.Execute("testObject.value = true"); + Assert.IsTrue(result.Succeeded); + Assert.IsTrue(result.Value); + + engine.Script.value = false.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.IsFalse(result.Value); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Char() => V8FastProxy_SetProperty_Integer(char.MinValue, char.MaxValue, static value => value); + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_SByte() => V8FastProxy_SetProperty_Integer(sbyte.MinValue, sbyte.MaxValue, static value => value); + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Byte() => V8FastProxy_SetProperty_Integer(byte.MinValue, byte.MaxValue, static value => value); + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Int16() => V8FastProxy_SetProperty_Integer(short.MinValue, short.MaxValue, static value => value); + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_UInt16() => V8FastProxy_SetProperty_Integer(ushort.MinValue, ushort.MaxValue, static value => value); + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Int32() => V8FastProxy_SetProperty_Integer(int.MinValue, int.MaxValue, static value => value); + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_UInt32() => V8FastProxy_SetProperty_Integer(uint.MinValue, uint.MaxValue, static value => value); + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Int64() + { + (bool Succeeded, long Value) result = (false, 0); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual(result.Value != 0, value.IsTruthy); + Assert.AreEqual(result.Value == 0, value.IsFalsy); + } + }; + + engine.Script.value = 0.5D; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = -MiscHelpers.MaxInt64InDoubleAsDouble - 1000000; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = -MiscHelpers.MaxInt64InDoubleAsDouble; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxInt64InDouble, result.Value); + + engine.Script.value = MiscHelpers.MaxInt64InDoubleAsDouble; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt64InDouble, result.Value); + + engine.Script.value = MiscHelpers.MaxInt64InDoubleAsDouble + 1000000; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (BigInteger)long.MinValue - 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (BigInteger)long.MinValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MinValue, result.Value); + + engine.Script.value = (BigInteger)long.MaxValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MaxValue, result.Value); + + engine.Script.value = (BigInteger)long.MaxValue + 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = long.MinValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MinValue, result.Value); + + engine.Script.value = long.MaxValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MaxValue, result.Value); + + engine.Script.value = (-MiscHelpers.MaxInt64InDoubleAsDouble - 1000000).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-MiscHelpers.MaxInt64InDoubleAsDouble).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxInt64InDouble, result.Value); + + engine.Script.value = MiscHelpers.MaxInt64InDoubleAsDouble.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt64InDouble, result.Value); + + engine.Script.value = (MiscHelpers.MaxInt64InDoubleAsDouble + 1000000).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((decimal)long.MinValue - 1000000).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + // ReSharper disable once RedundantCast + engine.Script.value = ((decimal)long.MinValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MinValue, result.Value); + + // ReSharper disable once RedundantCast + engine.Script.value = ((decimal)long.MaxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MaxValue, result.Value); + + engine.Script.value = ((decimal)long.MaxValue + 1000000).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((BigInteger)long.MinValue - 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((BigInteger)long.MinValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MinValue, result.Value); + + engine.Script.value = ((BigInteger)long.MaxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MaxValue, result.Value); + + engine.Script.value = ((BigInteger)long.MaxValue + 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_UInt64() + { + (bool Succeeded, ulong Value) result = (false, 0); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual(result.Value != 0, value.IsTruthy); + Assert.AreEqual(result.Value == 0, value.IsFalsy); + } + }; + + engine.Script.value = 0.5D; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = -1.0D; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = 0.0D; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MinValue, result.Value); + + engine.Script.value = MiscHelpers.MaxInt64InDoubleAsDouble; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((ulong)MiscHelpers.MaxInt64InDouble, result.Value); + + engine.Script.value = MiscHelpers.MaxInt64InDoubleAsDouble + 1000000; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = BigInteger.MinusOne; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = BigInteger.Zero; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MinValue, result.Value); + + engine.Script.value = (BigInteger)ulong.MaxValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MaxValue, result.Value); + + engine.Script.value = (BigInteger)ulong.MaxValue + 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = 0UL.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MinValue, result.Value); + + engine.Script.value = ulong.MaxValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MaxValue, result.Value); + + engine.Script.value = (-1.0D).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (0.0D).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MinValue, result.Value); + + engine.Script.value = MiscHelpers.MaxInt64InDoubleAsDouble.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((ulong)MiscHelpers.MaxInt64InDouble, result.Value); + + engine.Script.value = (MiscHelpers.MaxInt64InDoubleAsDouble + 1000000).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-1.0M).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (0.0M).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MinValue, result.Value); + + // ReSharper disable once RedundantCast + engine.Script.value = ((decimal)ulong.MaxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MaxValue, result.Value); + + engine.Script.value = ((decimal)ulong.MaxValue + 1000000).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((BigInteger)ulong.MinValue - 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((BigInteger)ulong.MinValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MinValue, result.Value); + + engine.Script.value = ((BigInteger)ulong.MaxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MaxValue, result.Value); + + engine.Script.value = ((BigInteger)ulong.MaxValue + 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Single() + { + (bool Succeeded, float Value) result = (false, 0); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual((result.Value != 0) && !float.IsNaN(result.Value), value.IsTruthy); + Assert.AreEqual((result.Value == 0) || float.IsNaN(result.Value), value.IsFalsy); + } + }; + + var bump = 1.0E25D; + + engine.Script.value = float.MinValue - bump; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (double)float.MinValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MinValue, result.Value); + + engine.Script.value = (double)float.MaxValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MaxValue, result.Value); + + engine.Script.value = float.MaxValue + bump; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = -(BigInteger)MiscHelpers.MaxInt32InSingle - 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = -(BigInteger)MiscHelpers.MaxInt32InSingle; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxInt32InSingleAsSingle, result.Value); + + engine.Script.value = (BigInteger)MiscHelpers.MaxInt32InSingle; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt32InSingleAsSingle, result.Value); + + engine.Script.value = (BigInteger)MiscHelpers.MaxInt32InSingle + 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-MiscHelpers.MaxInt32InSingle - 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + // ReSharper disable once RedundantCast + engine.Script.value = ((long)-MiscHelpers.MaxInt32InSingle).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxInt32InSingleAsSingle, result.Value); + + // ReSharper disable once RedundantCast + engine.Script.value = ((uint)MiscHelpers.MaxInt32InSingle).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt32InSingleAsSingle, result.Value); + + // ReSharper disable once RedundantCast + engine.Script.value = ((ulong)MiscHelpers.MaxInt32InSingle + 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + // ReSharper disable once RedundantCast + engine.Script.value = ((ulong)MiscHelpers.MaxInt32InSingle).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt32InSingleAsSingle, result.Value); + + engine.Script.value = float.MinValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MinValue, result.Value); + + engine.Script.value = float.MaxValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MaxValue, result.Value); + + engine.Script.value = decimal.MinValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((float)decimal.MinValue, result.Value); + + engine.Script.value = decimal.MaxValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((float)decimal.MaxValue, result.Value); + + engine.Script.value = (float.MinValue - bump).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((double)float.MinValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MinValue, result.Value); + + engine.Script.value = ((double)float.MaxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MaxValue, result.Value); + + engine.Script.value = (float.MaxValue + bump).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-(BigInteger)MiscHelpers.MaxInt32InSingle - 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-(BigInteger)MiscHelpers.MaxInt32InSingle).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxInt32InSingleAsSingle, result.Value); + + engine.Script.value = ((BigInteger)MiscHelpers.MaxInt32InSingle).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt32InSingleAsSingle, result.Value); + + engine.Script.value = ((BigInteger)MiscHelpers.MaxInt32InSingle + 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Double() + { + (bool Succeeded, double Value) result = (false, 0); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual((result.Value != 0) && !double.IsNaN(result.Value), value.IsTruthy); + Assert.AreEqual((result.Value == 0) || double.IsNaN(result.Value), value.IsFalsy); + } + }; + + var bump = 1.0E25D; + + engine.Script.value = float.MinValue - bump; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MinValue - bump, result.Value); + + engine.Script.value = (double)float.MinValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MinValue, result.Value); + + engine.Script.value = (double)float.MaxValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MaxValue, result.Value); + + engine.Script.value = float.MaxValue + bump; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MaxValue + bump, result.Value); + + engine.Script.value = -(BigInteger)MiscHelpers.MaxInt64InDouble - 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = -(BigInteger)MiscHelpers.MaxInt64InDouble; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxInt64InDoubleAsDouble, result.Value); + + engine.Script.value = (BigInteger)MiscHelpers.MaxInt64InDouble; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt64InDoubleAsDouble, result.Value); + + engine.Script.value = (BigInteger)MiscHelpers.MaxInt64InDouble + 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-MiscHelpers.MaxInt64InDouble - 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-MiscHelpers.MaxInt64InDouble).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxInt64InDoubleAsDouble, result.Value); + + // ReSharper disable once RedundantCast + engine.Script.value = ((ulong)MiscHelpers.MaxInt64InDouble).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt64InDoubleAsDouble, result.Value); + + // ReSharper disable once RedundantCast + engine.Script.value = ((ulong)MiscHelpers.MaxInt64InDouble + 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = float.MinValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MinValue, result.Value); + + engine.Script.value = float.MaxValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MaxValue, result.Value); + + engine.Script.value = decimal.MinValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((double)decimal.MinValue, result.Value); + + engine.Script.value = decimal.MaxValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((double)decimal.MaxValue, result.Value); + + engine.Script.value = (float.MinValue - bump).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MinValue - bump, result.Value); + + engine.Script.value = ((double)float.MinValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MinValue, result.Value); + + engine.Script.value = ((double)float.MaxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MaxValue, result.Value); + + engine.Script.value = (float.MaxValue + bump).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(float.MaxValue + bump, result.Value); + + engine.Script.value = (-(BigInteger)MiscHelpers.MaxInt64InDouble - 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-(BigInteger)MiscHelpers.MaxInt64InDouble).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxInt64InDoubleAsDouble, result.Value); + + engine.Script.value = ((BigInteger)MiscHelpers.MaxInt64InDouble).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt64InDoubleAsDouble, result.Value); + + engine.Script.value = ((BigInteger)MiscHelpers.MaxInt64InDouble + 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Decimal() + { + (bool Succeeded, decimal Value) result = (false, 0); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual(result.Value != 0, value.IsTruthy); + Assert.AreEqual(result.Value == 0, value.IsFalsy); + } + }; + + var bump = 1.0E25D; + + engine.Script.value = (double)float.MinValue; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (double)float.MaxValue; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = double.MinValue; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = double.MaxValue; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (double)decimal.MinValue + bump; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((decimal)((double)decimal.MinValue + bump), result.Value); + + engine.Script.value = (double)decimal.MaxValue - bump; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((decimal)((double)decimal.MaxValue - bump), result.Value); + + engine.Script.value = -MiscHelpers.MaxBigIntegerInDecimal - 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = -MiscHelpers.MaxBigIntegerInDecimal; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((decimal)-MiscHelpers.MaxBigIntegerInDecimal, result.Value); + + engine.Script.value = MiscHelpers.MaxBigIntegerInDecimal; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((decimal)MiscHelpers.MaxBigIntegerInDecimal, result.Value); + + engine.Script.value = MiscHelpers.MaxBigIntegerInDecimal + 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = long.MinValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MinValue, result.Value); + + engine.Script.value = long.MaxValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MaxValue, result.Value); + + engine.Script.value = ulong.MaxValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(ulong.MaxValue, result.Value); + + engine.Script.value = decimal.MinValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(decimal.MinValue, result.Value); + + engine.Script.value = decimal.MaxValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(decimal.MaxValue, result.Value); + + engine.Script.value = ((double)float.MinValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((double)float.MaxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = double.MinValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = double.MaxValue.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((double)decimal.MinValue + bump).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((decimal)((double)decimal.MinValue + bump), result.Value); + + engine.Script.value = ((double)decimal.MaxValue - bump).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((decimal)((double)decimal.MaxValue - bump), result.Value); + + engine.Script.value = (-MiscHelpers.MaxBigIntegerInDecimal - 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-MiscHelpers.MaxBigIntegerInDecimal).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((decimal)-MiscHelpers.MaxBigIntegerInDecimal, result.Value); + + engine.Script.value = MiscHelpers.MaxBigIntegerInDecimal.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((decimal)MiscHelpers.MaxBigIntegerInDecimal, result.Value); + + engine.Script.value = (MiscHelpers.MaxBigIntegerInDecimal + 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_String() + { + (bool Succeeded, string Value) result = (false, null); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + Assert.IsTrue(value.TryGet(out IComparable _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual(!string.IsNullOrEmpty(result.Value), value.IsTruthy); + Assert.AreEqual(string.IsNullOrEmpty(result.Value), value.IsFalsy); + } + }; + + engine.Execute("testObject.value = 'foo'"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual("foo", result.Value); + + engine.Script.value = "bar".ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual("bar", result.Value); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_CharSpan() + { + (bool Succeeded, string Value) result = (false, null); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsTrue(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + Assert.IsTrue(value.TryGet(out IComparable _)); + + result.Succeeded = value.TryGet(out ReadOnlySpan span); + if (result.Succeeded) + { + result.Value = span.ToString(); + Assert.AreEqual(!string.IsNullOrEmpty(result.Value), value.IsTruthy); + Assert.AreEqual(string.IsNullOrEmpty(result.Value), value.IsFalsy); + } + }; + + engine.Execute("testObject.value = 'foo'"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual("foo", result.Value); + + engine.Script.value = "bar".ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual("bar", result.Value); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_DateTime() + { + (bool Succeeded, DateTime Value) result = (false, default); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + Assert.IsTrue(value.TryGet(out IComparable _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + var value = DateTime.UtcNow; + + engine.Script.value = value; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(value, result.Value); + + engine.Script.value = value.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(value, result.Value); + + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableDateTimeConversion); + PrepareEngine(); + + value = (DateTime)engine.Evaluate("new Date()"); + + engine.Script.value = value; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(value, result.Value); + + engine.Script.value = value.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(value, result.Value); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_BigInteger() + { + (bool Succeeded, BigInteger Value) result = (false, default); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual(!result.Value.IsZero, value.IsTruthy); + Assert.AreEqual(result.Value.IsZero, value.IsFalsy); + } + }; + + engine.Script.value = 0.5D; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = -MiscHelpers.MaxInt64InDoubleAsDouble - 1000000; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = -MiscHelpers.MaxInt64InDoubleAsDouble; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxInt64InDouble, result.Value); + + engine.Script.value = MiscHelpers.MaxInt64InDoubleAsDouble; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt64InDouble, result.Value); + + engine.Script.value = MiscHelpers.MaxInt64InDoubleAsDouble + 1000000; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (BigInteger)long.MinValue - 1; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((BigInteger)long.MinValue - 1, result.Value); + + engine.Script.value = (BigInteger)long.MinValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MinValue, result.Value); + + engine.Script.value = (BigInteger)long.MaxValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(long.MaxValue, result.Value); + + engine.Script.value = (BigInteger)long.MaxValue + 1; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual((BigInteger)long.MaxValue + 1, result.Value); + + engine.Script.value = (-MiscHelpers.MaxInt64InDoubleAsDouble - 1000000).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-MiscHelpers.MaxInt64InDoubleAsDouble).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxInt64InDouble, result.Value); + + engine.Script.value = MiscHelpers.MaxInt64InDoubleAsDouble.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxInt64InDouble, result.Value); + + engine.Script.value = (MiscHelpers.MaxInt64InDoubleAsDouble + 1000000).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (-MiscHelpers.MaxBigIntegerInDecimalAsDecimal).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxBigIntegerInDecimal, result.Value); + + engine.Script.value = MiscHelpers.MaxBigIntegerInDecimalAsDecimal.ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxBigIntegerInDecimal, result.Value); + + engine.Script.value = (-MiscHelpers.MaxBigIntegerInDecimal - 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(-MiscHelpers.MaxBigIntegerInDecimal - 1, result.Value); + + engine.Script.value = (MiscHelpers.MaxBigIntegerInDecimal + 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(MiscHelpers.MaxBigIntegerInDecimal + 1, result.Value); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_V8Object() + { + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableDateTimeConversion | V8ScriptEngineFlags.EnableTaskPromiseConversion); + PrepareEngine(); + + { + (bool Succeeded, ScriptObject Value) result = (false, null); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsTrue(value.IsTruthy); + Assert.IsFalse(value.IsFalsy); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + engine.Execute("testObject.value = { foo: 123, bar: 'baz' }"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(123, result.Value["foo"]); + Assert.AreEqual("baz", result.Value["bar"]); + } + + { + (bool Succeeded, DateTime Value) result = (false, default); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsTrue(value.IsTruthy); + Assert.IsFalse(value.IsFalsy); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + engine.Execute("testObject.value = new Date()"); + Assert.IsTrue(result.Succeeded); + } + + { + (bool Succeeded, Task Value) result = (false, null); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsTrue(value.IsTruthy); + Assert.IsFalse(value.IsFalsy); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + engine.Execute("testObject.value = Promise.resolve({ foo: 123, bar: 'baz' })"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(123, ((ScriptObject)result.Value.Result)["foo"]); + Assert.AreEqual("baz", ((ScriptObject)result.Value.Result)["bar"]); + } + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_HostObject() + { + { + (bool Succeeded, HostFunctions Value) result = (false, null); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsTrue(value.IsTruthy); + Assert.IsFalse(value.IsFalsy); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + var value = new HostFunctions(); + engine.Script.value = value; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(value, result.Value); + } + + { + (bool Succeeded, TimeSpan Value) result = (false, TimeSpan.Zero); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsTrue(value.IsTruthy); + Assert.IsFalse(value.IsFalsy); + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + result.Succeeded = value.TryGet(out result.Value); + }; + + engine.Script.value = TimeSpan.MaxValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(TimeSpan.MaxValue, result.Value); + } + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Nullable() + { + (bool Succeeded, TimeSpan? Value) result = (false, null); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual(result.Value is not null, value.IsTruthy); + Assert.AreEqual(result.Value is null, value.IsFalsy); + } + }; + + engine.Script.value = default(BindingFlags); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = TimeSpan.MaxValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(TimeSpan.MaxValue, result.Value); + + engine.Execute("testObject.value = null"); + Assert.IsTrue(result.Succeeded); + Assert.IsNull(result.Value); + + engine.Execute("testObject.value = undefined"); + Assert.IsTrue(result.Succeeded); + Assert.IsNull(result.Value); + + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out char _)); + Assert.IsFalse(value.TryGet(out sbyte _)); + Assert.IsFalse(value.TryGet(out byte _)); + Assert.IsFalse(value.TryGet(out short _)); + Assert.IsFalse(value.TryGet(out ushort _)); + Assert.IsFalse(value.TryGet(out int _)); + Assert.IsFalse(value.TryGet(out uint _)); + Assert.IsFalse(value.TryGet(out long _)); + Assert.IsFalse(value.TryGet(out ulong _)); + Assert.IsFalse(value.TryGet(out float _)); + Assert.IsFalse(value.TryGet(out double _)); + Assert.IsFalse(value.TryGet(out decimal _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsFalse(value.TryGet(out BigInteger _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual(result.Value is not null, value.IsTruthy); + Assert.AreEqual(result.Value is null, value.IsFalsy); + } + }; + + engine.Script.value = default(BindingFlags); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = TimeSpan.MaxValue; + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(TimeSpan.MaxValue, result.Value); + + engine.Execute("testObject.value = null"); + Assert.IsTrue(result.Succeeded); + Assert.IsNull(result.Value); + + engine.Execute("testObject.value = undefined"); + Assert.IsTrue(result.Succeeded); + Assert.IsNull(result.Value); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_SetProperty_Misc() + { + testObject.SetProperty = (in V8FastArg value) => Assert.IsTrue(value.GetBoolean()); + engine.Execute("testObject.value = true"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(' ', value.GetChar()); + engine.Execute("testObject.value = 32"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(1, value.GetSByte()); + engine.Execute("testObject.value = 1"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(2, value.GetByte()); + engine.Execute("testObject.value = 2"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(3, value.GetInt16()); + engine.Execute("testObject.value = 3"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(4, value.GetUInt16()); + engine.Execute("testObject.value = 4"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(5, value.GetInt32()); + engine.Execute("testObject.value = 5"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(6U, value.GetUInt32()); + engine.Execute("testObject.value = 6"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(7, value.GetInt64()); + engine.Execute("testObject.value = 7"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(8UL, value.GetUInt64()); + engine.Execute("testObject.value = 8"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(8.125f, value.GetSingle()); + engine.Execute("testObject.value = 8.125"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(9.25d, value.GetDouble()); + engine.Execute("testObject.value = 9.25"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(10.375m, value.GetDecimal()); + engine.Execute("testObject.value = 10.375"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual("blah", value.GetString()); + engine.Execute("testObject.value = 'blah'"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual("shoo", value.GetCharSpan().ToString()); + engine.Execute("testObject.value = 'shoo'"); + + var dateTimeValue = DateTime.UtcNow; + engine.Script.dateTimeValue = dateTimeValue; + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(dateTimeValue, value.GetDateTime()); + engine.Execute("testObject.value = dateTimeValue"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(1234567890, value.GetBigInteger()); + engine.Execute("testObject.value = 1234567890n"); + + testObject.SetProperty = (in V8FastArg value) => Assert.AreEqual(123, value.Get().GetProperty("foo")); + engine.Execute("testObject.value = { foo: 123 }"); + + testObject.SetProperty = (in V8FastArg value) => Assert.IsNotNull(value.Get()); + engine.Execute("testObject.value = testObject"); + + testObject.SetProperty = (in V8FastArg value) => Assert.IsNull(value.GetNullable()); + engine.Execute("testObject.value = null"); + TestUtil.AssertException(() => engine.Execute("testObject.value = 'qux'")); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_Args() + { + var tested = false; + + var dateTimeValue = DateTime.UtcNow; + engine.Script.dateTimeValue = dateTimeValue; + + engine.Script.foo = new V8FastHostFunction(22, (bool asConstructor, in V8FastArgs args, in V8FastResult _) => + { + // ReSharper disable CompareOfFloatsByEqualityOperator + + V8FastHostFunction.VerifyFunctionCall(asConstructor); + + Assert.IsTrue(args.IsUndefined(0) && args.IsFalsy(0)); + Assert.IsTrue(args.IsNull(1) && args.IsFalsy(1)); + Assert.IsTrue(args.TryGet(2, out bool boolValue) && args.IsTruthy(2) && boolValue); + Assert.IsTrue(args.TryGet(3, out char charValue) && args.IsTruthy(3) && (charValue == ' ')); + Assert.IsTrue(args.TryGet(4, out sbyte sbyteValue) && args.IsTruthy(4) && (sbyteValue == 1)); + Assert.IsTrue(args.TryGet(5, out byte byteValue) && args.IsTruthy(5) && (byteValue == 2)); + Assert.IsTrue(args.TryGet(6, out short shortValue) && args.IsTruthy(6) && (shortValue == 3)); + Assert.IsTrue(args.TryGet(7, out ushort ushortValue) && args.IsTruthy(7) && (ushortValue == 4)); + Assert.IsTrue(args.TryGet(8, out int intValue) && args.IsTruthy(8) && (intValue == 5)); + Assert.IsTrue(args.TryGet(9, out uint uintValue) && args.IsTruthy(9) && (uintValue == 6)); + Assert.IsTrue(args.TryGet(10, out long longValue) && args.IsTruthy(10) && (longValue == 7)); + Assert.IsTrue(args.TryGet(11, out ulong ulongValue) && args.IsTruthy(11) && (ulongValue == 8)); + Assert.IsTrue(args.TryGet(12, out float floatValue) && args.IsTruthy(12) && (floatValue == 8.125f)); + Assert.IsTrue(args.TryGet(13, out double doubleValue) && args.IsTruthy(13) && (doubleValue == 9.25d)); + Assert.IsTrue(args.TryGet(14, out decimal decimalValue) && args.IsTruthy(14) && (decimalValue == 10.375m)); + Assert.IsTrue(args.TryGet(15, out string stringValue) && args.IsTruthy(15) && (stringValue == "blah")); + Assert.IsTrue(args.TryGet(16, out ReadOnlySpan charSpanValue) && args.IsTruthy(16) && (charSpanValue.ToString() == "shoo")); + Assert.IsTrue(args.TryGet(17, out DateTime tempDateTimeValue) && args.IsTruthy(17) && (tempDateTimeValue == dateTimeValue)); + Assert.IsTrue(args.TryGet(18, out BigInteger bigIntegerValue) && args.IsTruthy(18) && (bigIntegerValue == 1234567890)); + Assert.IsTrue(args.TryGet(19, out ScriptObject scriptObject) && args.IsTruthy(19) && ((int)scriptObject.GetProperty("foo") == 123)); + Assert.IsTrue(args.TryGet(20, out TestObject _) && args.IsTruthy(20)); + Assert.IsTrue(args.TryGet(21, out int? nullable) && args.IsFalsy(21) && (nullable is null)); + + Assert.IsTrue(args.GetBoolean(2)); + Assert.AreEqual(' ', args.GetChar(3)); + Assert.AreEqual(1, args.GetSByte(4)); + Assert.AreEqual(2, args.GetByte(5)); + Assert.AreEqual(3, args.GetInt16(6)); + Assert.AreEqual(4, args.GetUInt16(7)); + Assert.AreEqual(5, args.GetInt32(8)); + Assert.AreEqual(6U, args.GetUInt32(9)); + Assert.AreEqual(7, args.GetInt64(10)); + Assert.AreEqual(8UL, args.GetUInt64(11)); + Assert.AreEqual(8.125f, args.GetSingle(12)); + Assert.AreEqual(9.25d, args.GetDouble(13)); + Assert.AreEqual(10.375m, args.GetDecimal(14)); + Assert.AreEqual("blah", args.GetString(15)); + Assert.AreEqual("shoo", args.GetCharSpan(16).ToString()); + Assert.AreEqual(dateTimeValue, args.GetDateTime(17)); + Assert.AreEqual(1234567890, args.GetBigInteger(18)); + Assert.AreEqual(123, args.Get(19).GetProperty("foo")); + Assert.IsNotNull(args.Get(20)); + Assert.IsNull(args.GetNullable(21)); + + var failedAsExpected = false; + try + { + args.GetString(0); + } + catch (ArgumentException) + { + failedAsExpected = true; + } + + Assert.IsTrue(failedAsExpected); + + tested = true; + + // ReSharper restore CompareOfFloatsByEqualityOperator + }); + + engine.Execute(@"foo( + undefined, null, + true, + 32, + 1, 2, 3, 4, 5, 6, 7, 8, + 8.125, 9.25, 10.375, + 'blah', 'shoo', + dateTimeValue, + 1234567890n, + { foo: 123 }, + testObject, + null + )"); + + Assert.IsTrue(tested); + } + + [TestMethod, TestCategory("V8FastProxy")] + public void V8FastProxy_FastObject() + { + fastObject.IntField = 123; + fastObject.StringProperty = "foo"; + + Assert.AreEqual(123, engine.Evaluate("fastObject.intFieldRO")); + TestUtil.AssertException(() => engine.Execute("fastObject.intFieldRO = 456")); + Assert.AreEqual(123, engine.Evaluate("fastObject.intFieldRW")); + Assert.AreEqual(456, engine.Evaluate("fastObject.intFieldRW = 456")); + Assert.AreEqual(456, engine.Evaluate("fastObject.intFieldRW")); + Assert.AreEqual(456, engine.Evaluate("fastObject.intFieldRO")); + Assert.AreEqual(456, fastObject.IntField); + Assert.IsFalse(Convert.ToBoolean(engine.Evaluate("delete fastObject.intFieldRO"))); + Assert.IsFalse(Convert.ToBoolean(engine.Evaluate("delete fastObject.intFieldRW"))); + + Assert.AreEqual("foo", engine.Evaluate("fastObject.stringPropertyRO")); + TestUtil.AssertException(() => engine.Execute("fastObject.stringPropertyRO = 'bar'")); + Assert.AreEqual("foo", engine.Evaluate("fastObject.stringPropertyRW")); + Assert.AreEqual("bar", engine.Evaluate("fastObject.stringPropertyRW = 'bar'")); + Assert.AreEqual("bar", engine.Evaluate("fastObject.stringPropertyRW")); + Assert.AreEqual("bar", engine.Evaluate("fastObject.stringPropertyRO")); + Assert.AreEqual("bar", fastObject.StringProperty); + Assert.IsFalse(Convert.ToBoolean(engine.Evaluate("delete fastObject.stringPropertyRO"))); + Assert.IsFalse(Convert.ToBoolean(engine.Evaluate("delete fastObject.stringPropertyRW"))); + + Assert.AreEqual("456 bar 789 baz", engine.Evaluate("fastObject.method(789, 'baz')")); + Assert.AreEqual("456 bar 987 qux", fastObject.Method(987, "qux".AsSpan())); + TestUtil.AssertException(() => engine.Execute("fastObject.method = 789")); + Assert.IsFalse(Convert.ToBoolean(engine.Evaluate("delete fastObject.method"))); + + Assert.IsInstanceOfType(engine.Evaluate("fastObject.baz"), typeof(Undefined)); + Assert.AreEqual(987, engine.Evaluate("fastObject.baz = 987")); + Assert.AreEqual(987, engine.Evaluate("fastObject.baz")); + + Assert.IsInstanceOfType(engine.Evaluate("fastObject[4]"), typeof(Undefined)); + Assert.AreEqual(654, engine.Evaluate("fastObject[4] = 654")); + Assert.AreEqual(654, engine.Evaluate("fastObject[4]")); + + Assert.AreEqual("4:654 intFieldRO:456 stringPropertyRO:bar baz:987 ", engine.Evaluate(@" + let x = ''; + for (let i in fastObject) { + x += `${i}:${fastObject[i]} `; + } + x; + ")); + + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("delete fastObject.baz"))); + Assert.IsInstanceOfType(engine.Evaluate("fastObject.baz"), typeof(Undefined)); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("delete fastObject.qux"))); + Assert.IsInstanceOfType(engine.Evaluate("fastObject.qux"), typeof(Undefined)); + + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("delete fastObject[4]"))); + Assert.IsInstanceOfType(engine.Evaluate("fastObject[4]"), typeof(Undefined)); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("delete fastObject[11]"))); + Assert.IsInstanceOfType(engine.Evaluate("fastObject[11]"), typeof(Undefined)); + + Assert.AreEqual("9 8 7 6 5 4 3 2 1 0 ", engine.Evaluate(@" + x = ''; + for (const i of fastObject) { + x += `${i} `; + } + x; + ")); + + Assert.AreEqual("a:100 a:101 a:102 a:103 a:104 a:105 a:106 a:107 a:108 a:109 ", engine.Evaluate(@" + (async function() { + let x = ''; + for await (const i of fastObject) { + x += `${i} `; + } + return x; + })() + ").ToTask().Result); + } + + #endregion + + #region miscellaneous + + private void V8FastProxy_SetProperty_Integer(T minValue, T maxValue, Func toDouble) where T : struct + { + (bool Succeeded, T Value) result = (false, default); + testObject.SetProperty = (in V8FastArg value) => + { + Assert.IsFalse(value.IsUndefined); + Assert.IsFalse(value.IsNull); + Assert.IsFalse(value.TryGet(out Undefined _)); + Assert.IsFalse(value.TryGet(out bool _)); + Assert.IsFalse(value.TryGet(out string _)); + Assert.IsFalse(value.TryGet(out ReadOnlySpan _)); + Assert.IsFalse(value.TryGet(out DateTime _)); + Assert.IsTrue(value.TryGet(out IComparable _)); + + result.Succeeded = value.TryGet(out result.Value); + if (result.Succeeded) + { + Assert.AreEqual(toDouble(result.Value) != 0, value.IsTruthy); + Assert.AreEqual(toDouble(result.Value) == 0, value.IsFalsy); + } + }; + + engine.Script.value = toDouble(minValue) - 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = toDouble(minValue); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = toDouble(maxValue); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + + engine.Script.value = toDouble(maxValue) + 1; + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (BigInteger)(toDouble(minValue) - 1); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (BigInteger)toDouble(minValue); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = (BigInteger)toDouble(maxValue); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + + engine.Script.value = (BigInteger)(toDouble(maxValue) + 1); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = (toDouble(minValue) - 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = toDouble(minValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = toDouble(maxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + + engine.Script.value = (toDouble(maxValue) + 1).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((decimal)(toDouble(minValue) - 1)).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((decimal)toDouble(minValue)).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = ((decimal)toDouble(maxValue)).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + + engine.Script.value = ((decimal)(toDouble(maxValue) + 1)).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((BigInteger)(toDouble(minValue) - 1)).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + engine.Script.value = ((BigInteger)toDouble(minValue)).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = ((BigInteger)toDouble(maxValue)).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + + engine.Script.value = ((BigInteger)(toDouble(maxValue) + 1)).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsFalse(result.Succeeded); + + if (typeof(T) == typeof(char)) + { + engine.Script.value = Unsafe.As(ref minValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = Unsafe.As(ref maxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + } + else if (typeof(T) == typeof(sbyte)) + { + engine.Script.value = Unsafe.As(ref minValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = Unsafe.As(ref maxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + } + else if (typeof(T) == typeof(byte)) + { + engine.Script.value = Unsafe.As(ref minValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = Unsafe.As(ref maxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + } + else if (typeof(T) == typeof(short)) + { + engine.Script.value = Unsafe.As(ref minValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = Unsafe.As(ref maxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + } + else if (typeof(T) == typeof(ushort)) + { + engine.Script.value = Unsafe.As(ref minValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = Unsafe.As(ref maxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + } + else if (typeof(T) == typeof(int)) + { + engine.Script.value = Unsafe.As(ref minValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = Unsafe.As(ref maxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + } + else if (typeof(T) == typeof(uint)) + { + engine.Script.value = Unsafe.As(ref minValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(minValue, result.Value); + + engine.Script.value = Unsafe.As(ref maxValue).ToRestrictedHostObject(engine); + engine.Execute("testObject.value = value"); + Assert.IsTrue(result.Succeeded); + Assert.AreEqual(maxValue, result.Value); + } + } + + public static class Helpers + { + public static string GetTypeName(T _) => typeof(T).Name; + } + + private sealed class TestObject : IV8FastHostObject + { + public delegate void RawGetProperty(in V8FastResult value); + + public delegate void RawSetProperty(in V8FastArg value); + + public RawGetProperty GetProperty { get; set; } + + public RawSetProperty SetProperty { get; set; } + + #region IV8FastHostObject implementation + + private static readonly Operations operations = new(); + + IV8FastHostObjectOperations IV8FastHostObject.Operations => operations; + + #endregion + + #region Nested type: Operations + + private sealed class Operations : IV8FastHostObjectOperations + { + string IV8FastHostObjectOperations.GetFriendlyName(IV8FastHostObject instance) => null; + + void IV8FastHostObjectOperations.GetProperty(IV8FastHostObject instance, string name, in V8FastResult value, out bool isCacheable) + { + isCacheable = false; + ((TestObject)instance).GetProperty?.Invoke(value); + } + + void IV8FastHostObjectOperations.SetProperty(IV8FastHostObject instance, string name, in V8FastArg value) + { + ((TestObject)instance).SetProperty?.Invoke(value); + } + + V8FastHostPropertyFlags IV8FastHostObjectOperations.QueryProperty(IV8FastHostObject instance, string name) + { + throw new NotImplementedException(); + } + + bool IV8FastHostObjectOperations.DeleteProperty(IV8FastHostObject instance, string name) + { + throw new NotImplementedException(); + } + + IEnumerable IV8FastHostObjectOperations.GetPropertyNames(IV8FastHostObject instance) + { + throw new NotImplementedException(); + } + + void IV8FastHostObjectOperations.GetProperty(IV8FastHostObject instance, int index, in V8FastResult value) + { + throw new NotImplementedException(); + } + + void IV8FastHostObjectOperations.SetProperty(IV8FastHostObject instance, int index, in V8FastArg value) + { + throw new NotImplementedException(); + } + + V8FastHostPropertyFlags IV8FastHostObjectOperations.QueryProperty(IV8FastHostObject instance, int index) + { + throw new NotImplementedException(); + } + + bool IV8FastHostObjectOperations.DeleteProperty(IV8FastHostObject instance, int index) + { + throw new NotImplementedException(); + } + + IEnumerable IV8FastHostObjectOperations.GetPropertyIndices(IV8FastHostObject instance) + { + throw new NotImplementedException(); + } + + IV8FastEnumerator IV8FastHostObjectOperations.CreateEnumerator(IV8FastHostObject instance) + { + throw new NotImplementedException(); + } + + IV8FastAsyncEnumerator IV8FastHostObjectOperations.CreateAsyncEnumerator(IV8FastHostObject instance) + { + throw new NotImplementedException(); + } + } + + #endregion + } + + private sealed class FastObject : V8FastHostDynamicObject + { + public int IntField; + + public string StringProperty { get; set; } + + private readonly int[] contents = Enumerable.Range(0, 10).Reverse().ToArray(); + + private readonly string[] asyncContents = Enumerable.Range(100, 10).Select(static value => $"a:{value}").ToArray(); + + public string Method(BigInteger intArg, in ReadOnlySpan stringArg) => $"{IntField} {StringProperty} {intArg} {stringArg.ToString()}"; + + static FastObject() + { + Configure(static configuration => + { + configuration.AddPropertyGetter("intFieldRO", static instance => ref instance.IntField, V8FastHostPropertyFlags.Enumerable); + configuration.AddPropertyAccessors("intFieldRW", static instance => ref instance.IntField); + + configuration.AddPropertyGetter("stringPropertyRO", + static (FastObject instance, in V8FastResult value) => value.Set(instance.StringProperty), V8FastHostPropertyFlags.Enumerable); + configuration.AddPropertyAccessors("stringPropertyRW", + static (FastObject instance, in V8FastResult value) => value.Set(instance.StringProperty), + static (FastObject instance, in V8FastArg value) => instance.StringProperty = value.GetString()); + + configuration.AddMethodGetter("method", 2, + static (FastObject instance, in V8FastArgs args, in V8FastResult result) => result.Set(instance.Method( + args.GetBigInteger(0, "intArg"), + args.GetCharSpan(1, "stringArg") + )) + ); + + configuration.EnumerateIndexedProperties = true; + + configuration.SetEnumeratorFactory(static instance => instance.contents.GetEnumerator()); + configuration.SetAsyncEnumeratorFactory(static instance => instance.asyncContents.AsAsyncEnumerable().GetAsyncEnumerator()); + }); + } + } + + #endregion + } +} diff --git a/ClearScriptTest/V8ModuleTest.cs b/ClearScriptTest/V8ModuleTest.cs index bd63bcec..5a3449f4 100644 --- a/ClearScriptTest/V8ModuleTest.cs +++ b/ClearScriptTest/V8ModuleTest.cs @@ -44,7 +44,7 @@ public void V8Module_Standard_File() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; Assert.AreEqual(123 + 456, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Arithmetic from 'JavaScript/StandardModule/Arithmetic/Arithmetic.js'; - Arithmetic.Add(123, 456); + import.meta.setResult(Arithmetic.Add(123, 456)); ")); } @@ -54,7 +54,7 @@ public void V8Module_Standard_File_ForeignExtension() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; Assert.AreEqual(123 + 456, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Arithmetic from 'JavaScript/StandardModule/Arithmetic/Arithmetic.bogus'; - Arithmetic.BogusAdd(123, 456); + import.meta.setResult(Arithmetic.BogusAdd(123, 456)); ")); } @@ -64,7 +64,7 @@ public void V8Module_Standard_File_MixedImport() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/GeometryWithDynamicImport.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -74,7 +74,7 @@ public void V8Module_Standard_File_Nested() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -98,7 +98,7 @@ public void V8Module_Standard_File_PathlessImport() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; Assert.AreEqual(123 + 456, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Arithmetic from 'Arithmetic.js'; - Arithmetic.Add(123, 456); + import.meta.setResult(Arithmetic.Add(123, 456)); ")); } @@ -113,7 +113,7 @@ public void V8Module_Standard_File_PathlessImport_MixedImport() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'GeometryWithDynamicImport.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -128,7 +128,7 @@ public void V8Module_Standard_File_PathlessImport_Nested() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'GeometryWithPathlessImport.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -231,7 +231,7 @@ public void V8Module_Standard_File_FileNameExtensions() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -241,7 +241,7 @@ public void V8Module_Standard_Web() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableWebLoading; Assert.AreEqual(123 + 456, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Arithmetic from 'https://raw.githubusercontent.com/microsoft/ClearScript/master/ClearScriptTest/JavaScript/StandardModule/Arithmetic/Arithmetic.js'; - Arithmetic.Add(123, 456); + import.meta.setResult(Arithmetic.Add(123, 456)); ")); } @@ -251,7 +251,7 @@ public void V8Module_Standard_Web_MixedImport() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableWebLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'https://raw.githubusercontent.com/microsoft/ClearScript/master/ClearScriptTest/JavaScript/StandardModule/Geometry/GeometryWithDynamicImport.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -261,7 +261,7 @@ public void V8Module_Standard_Web_Nested() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableWebLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'https://raw.githubusercontent.com/microsoft/ClearScript/master/ClearScriptTest/JavaScript/StandardModule/Geometry/Geometry.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -285,7 +285,7 @@ public void V8Module_Standard_Web_PathlessImport() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableWebLoading; Assert.AreEqual(123 + 456, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Arithmetic from 'Arithmetic.js'; - Arithmetic.Add(123, 456); + import.meta.setResult(Arithmetic.Add(123, 456)); ")); } @@ -300,7 +300,7 @@ public void V8Module_Standard_Web_PathlessImport_MixedImport() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableWebLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'GeometryWithDynamicImport.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -315,7 +315,7 @@ public void V8Module_Standard_Web_PathlessImport_Nested() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableWebLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'GeometryWithPathlessImport.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -418,7 +418,7 @@ public void V8Module_Standard_Web_FileNameExtensions() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableWebLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'https://raw.githubusercontent.com/microsoft/ClearScript/master/ClearScriptTest/JavaScript/StandardModule/Geometry/Geometry'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -427,7 +427,7 @@ public void V8Module_Standard_Compilation() { var module = engine.Compile(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); "); using (module) @@ -445,7 +445,7 @@ public void V8Module_Standard_Compilation_CodeCache() { var code = @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); "; byte[] cacheBytes; @@ -481,7 +481,7 @@ public void V8Module_Standard_Compilation_Runtime() { var module = runtime.Compile(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); "); using (module) @@ -502,7 +502,7 @@ public void V8Module_Standard_Compilation_Runtime_CodeCache() { var code = @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); "; byte[] cacheBytes; @@ -572,18 +572,18 @@ public void V8Module_Standard_Caching() var info = new DocumentInfo { Category = ModuleCategory.Standard }; - Assert.AreEqual(Math.PI, engine.Evaluate(info, "Math.PI")); - Assert.AreEqual(Math.PI, engine.Evaluate(info, "Math.PI")); + Assert.AreEqual(Math.PI, engine.Evaluate(info, "import.meta.setResult(Math.PI)")); + Assert.AreEqual(Math.PI, engine.Evaluate(info, "import.meta.setResult(Math.PI)")); Assert.AreEqual(2UL, engine.GetRuntimeStatistics().ModuleCount); info = new DocumentInfo("Test") { Category = ModuleCategory.Standard }; - Assert.AreEqual(Math.E, engine.Evaluate(info, "Math.E")); - Assert.IsInstanceOfType(engine.Evaluate(info, "Math.E"), typeof(Undefined)); + Assert.AreEqual(Math.E, engine.Evaluate(info, "import.meta.setResult(Math.E)")); + Assert.IsInstanceOfType(engine.Evaluate(info, "import.meta.setResult(Math.E)"), typeof(Undefined)); Assert.AreEqual(3UL, engine.GetRuntimeStatistics().ModuleCount); - Assert.AreEqual(Math.PI, engine.Evaluate(info, "Math.PI")); - Assert.IsInstanceOfType(engine.Evaluate(info, "Math.PI"), typeof(Undefined)); + Assert.AreEqual(Math.PI, engine.Evaluate(info, "import.meta.setResult(Math.PI)")); + Assert.IsInstanceOfType(engine.Evaluate(info, "import.meta.setResult(Math.PI)"), typeof(Undefined)); Assert.AreEqual(4UL, engine.GetRuntimeStatistics().ModuleCount); using (var runtime = new V8Runtime()) @@ -592,8 +592,8 @@ public void V8Module_Standard_Caching() { using (var testEngine = runtime.CreateScriptEngine()) { - Assert.AreEqual(Math.PI, testEngine.Evaluate(info, "Math.PI")); - Assert.AreEqual(Math.E, testEngine.Evaluate(info, "Math.E")); + Assert.AreEqual(Math.PI, testEngine.Evaluate(info, "import.meta.setResult(Math.PI)")); + Assert.AreEqual(Math.E, testEngine.Evaluate(info, "import.meta.setResult(Math.E)")); Assert.AreEqual(2UL, testEngine.GetStatistics().ModuleCount); } } @@ -607,8 +607,8 @@ public void V8Module_Standard_Caching() { using (var testEngine = runtime.CreateScriptEngine()) { - Assert.AreEqual(Math.PI, testEngine.Evaluate(info, "Math.PI")); - Assert.IsInstanceOfType(testEngine.Evaluate(info, "Math.PI"), typeof(Undefined)); + Assert.AreEqual(Math.PI, testEngine.Evaluate(info, "import.meta.setResult(Math.PI)")); + Assert.IsInstanceOfType(testEngine.Evaluate(info, "import.meta.setResult(Math.PI)"), typeof(Undefined)); } } @@ -621,7 +621,7 @@ public void V8Module_Standard_Caching() { for (var i = 0; i < 300; i++) { - Assert.AreEqual(Math.PI + i, testEngine.Evaluate(info, "Math.PI" + "+" + i)); + Assert.AreEqual(Math.PI + i, testEngine.Evaluate(info, "import.meta.setResult(Math.PI" + "+" + i + ")")); } Assert.AreEqual(300UL, testEngine.GetStatistics().ModuleCount); @@ -640,42 +640,42 @@ public void V8Module_Standard_Context() Assert.AreEqual(123, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry.js'; - Geometry.Meta.foo + import.meta.setResult(Geometry.Meta.foo) ")); Assert.AreEqual(456.789, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry.js'; - Geometry.Meta.bar + import.meta.setResult(Geometry.Meta.bar) ")); Assert.AreEqual("bogus", engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry.js'; - Geometry.Meta.baz + import.meta.setResult(Geometry.Meta.baz) ")); Assert.IsInstanceOfType(engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry.js'; - new Geometry.Meta.qux() + import.meta.setResult(new Geometry.Meta.qux()) "), typeof(Random)); Assert.IsInstanceOfType(engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/Geometry.js'; - Geometry.Meta.quux + import.meta.setResult(Geometry.Meta.quux) "), typeof(Undefined)); Assert.AreEqual(Math.PI, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Arithmetic from 'JavaScript/StandardModule/Arithmetic/Arithmetic.js'; - Arithmetic.Meta.foo + import.meta.setResult(Arithmetic.Meta.foo) ")); Assert.IsInstanceOfType(engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Arithmetic from 'JavaScript/StandardModule/Arithmetic/Arithmetic.js'; - Arithmetic.Meta.bar + import.meta.setResult(Arithmetic.Meta.bar) "), typeof(Undefined)); Assert.AreEqual(0, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModule/Geometry/GeometryWithDynamicImport.js'; - Object.keys(Geometry.Meta).length; + import.meta.setResult(Object.keys(Geometry.Meta).length); ")); } @@ -690,7 +690,7 @@ export function Add(a, b) { dynamic add = engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Test from 'test'; - Test.Add + import.meta.setResult(Test.Add) "); Assert.AreEqual(579, add(123, 456)); @@ -702,7 +702,7 @@ public void V8Module_Standard_CircularReference() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModuleWithCycles/Geometry/Geometry.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -712,7 +712,7 @@ public void V8Module_Standard_CircularReference_MixedImport() engine.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; Assert.AreEqual(25 * 25, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import * as Geometry from 'JavaScript/StandardModuleWithCycles/Geometry/GeometryWithDynamicImport.js'; - new Geometry.Square(25).Area; + import.meta.setResult(new Geometry.Square(25).Area); ")); } @@ -738,13 +738,13 @@ void OnDocumentLoad(ref DocumentInfo info) Assert.AreEqual(12, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import { Rectangle } from 'JavaScript/CommonJS/Geometry/Geometry'; globalThis.Rectangle1 = Rectangle; - new Rectangle(3, 4).Area; + import.meta.setResult(new Rectangle(3, 4).Area); ")); Assert.AreEqual(30, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import { Rectangle } from 'JavaScript/CommonJS/Geometry/Geometry'; globalThis.Rectangle2 = Rectangle; - new Rectangle(5, 6).Area; + import.meta.setResult(new Rectangle(5, 6).Area); ")); Assert.AreEqual(56, engine.Evaluate(@" @@ -783,13 +783,13 @@ async Task OnDocumentLoadAsync(ValueRef info, Stream contents) Assert.AreEqual(12, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import { Rectangle } from 'JavaScript/CommonJS/Geometry/Geometry'; globalThis.Rectangle1 = Rectangle; - new Rectangle(3, 4).Area; + import.meta.setResult(new Rectangle(3, 4).Area); ")); Assert.AreEqual(30, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import { Rectangle } from 'JavaScript/CommonJS/Geometry/Geometry'; globalThis.Rectangle2 = Rectangle; - new Rectangle(5, 6).Area; + import.meta.setResult(new Rectangle(5, 6).Area); ")); Assert.AreEqual(56, engine.Evaluate(@" @@ -823,13 +823,13 @@ get Area() { Assert.AreEqual(12, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import { Rectangle } from 'Geometry'; globalThis.Rectangle1 = Rectangle; - new Rectangle(3, 4).Area; + import.meta.setResult(new Rectangle(3, 4).Area); ")); Assert.AreEqual(30, engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" import { Rectangle } from 'Geometry'; globalThis.Rectangle2 = Rectangle; - new Rectangle(5, 6).Area; + import.meta.setResult(new Rectangle(5, 6).Area); ")); Assert.AreEqual(56, engine.Evaluate(@" @@ -906,6 +906,45 @@ public void V8Module_Standard_Json_Malformed() TestUtil.AssertException(() => engine.Execute(new DocumentInfo { Category = ModuleCategory.Standard }, "import result from 'JavaScript/Malformed.json'; globalThis.result = result;")); } + [TestMethod, TestCategory("V8Module")] + public async Task V8Module_Standard_TopLevelAwait_Result() + { + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableTaskPromiseConversion); + + engine.AddHostType(typeof(Task)); + Assert.AreEqual(123, await (Task)engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" + await Task.Delay(500); + import.meta.setResult(123); + ")); + } + + [TestMethod, TestCategory("V8Module")] + public async Task V8Module_Standard_TopLevelAwait_Exception() + { + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableTaskPromiseConversion); + + engine.AddHostType(typeof(Task)); + ScriptEngineException scriptEngineException = null; + + try + { + await (Task)engine.Evaluate(new DocumentInfo { Category = ModuleCategory.Standard }, @" + await Task.Delay(500); + await Task.BogusMethod(); + "); + } + catch (ScriptEngineException exception) + { + scriptEngineException = exception; + Console.WriteLine(exception); + } + + Assert.IsNotNull(scriptEngineException); + Assert.AreEqual("TypeError: Task.BogusMethod is not a function", scriptEngineException.Message); + } + [TestMethod, TestCategory("V8Module")] public void V8Module_CommonJS_File() { @@ -1397,7 +1436,6 @@ public void V8Module_CommonJS_Json_Array() TestUtil.AssertException(() => engine.Evaluate(new DocumentInfo { Category = ModuleCategory.CommonJS }, "return require('ArrayWithFunction.json')")); } - [TestMethod, TestCategory("V8Module")] public void V8Module_CommonJS_Json_Malformed() { @@ -1427,7 +1465,7 @@ public override Task LoadDocumentAsync(DocumentSettings settings, Docu public static IDictionary CreateDocumentContext(DocumentInfo info) { - if (info.Uri != null) + if (info.Uri is not null) { var name = Path.GetFileName(info.Uri.AbsolutePath); diff --git a/ClearScriptTest/V8ScriptEngineTest.NetStandard.cs b/ClearScriptTest/V8ScriptEngineTest.NetStandard.cs deleted file mode 100644 index 0470717c..00000000 --- a/ClearScriptTest/V8ScriptEngineTest.NetStandard.cs +++ /dev/null @@ -1,398 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -using System; -using System.Collections.Generic; -using System.Runtime; -using System.Threading; -using Microsoft.ClearScript.V8; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System.Threading.Tasks; -using Microsoft.ClearScript.Util; - -namespace Microsoft.ClearScript.Test -{ - // ReSharper disable once PartialTypeWithSinglePart - - public partial class V8ScriptEngineTest - { - #region test methods - - // ReSharper disable InconsistentNaming - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_ValueTaskPromiseConversion() - { - engine.Script.value = new ValueTask("foo"); - Assert.AreEqual("HostObject", engine.Evaluate("value.constructor.name")); - Assert.IsInstanceOfType(engine.Evaluate("Promise.resolve(123)"), typeof(ScriptObject)); - - engine.Dispose(); - engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableTaskPromiseConversion | V8ScriptEngineFlags.EnableValueTaskPromiseConversion); - - engine.Script.value = new ValueTask("bar"); - Assert.AreEqual("Promise", engine.Evaluate("value.constructor.name")); - Assert.IsInstanceOfType(engine.Evaluate("Promise.resolve(123)"), typeof(Task)); - - var task = new Func>(async () => await (Task)engine.Evaluate("Promise.resolve(123)"))(); - Assert.AreEqual(123, task.Result); - - engine.Script.promise = new ValueTask(456); - engine.Execute("promise.then(value => result = value);"); - Assert.AreEqual(456, engine.Script.result); - - var cancelSource = new CancellationTokenSource(); - cancelSource.Cancel(); - engine.Script.promise = new ValueTask(Task.Factory.StartNew(() => "baz", cancelSource.Token)); - Thread.Sleep(250); - engine.Execute("promise.then(value => result = value, value => error = value);"); - Assert.IsInstanceOfType(engine.Script.error.hostException.GetBaseException(), typeof(TaskCanceledException)); - - cancelSource = new CancellationTokenSource(); - engine.Script.promise = new ValueTask(Task.Factory.StartNew(() => throw new AmbiguousImplementationException(), cancelSource.Token)); - Thread.Sleep(250); - engine.Execute("promise.then(value => result = value, value => error = value);"); - Assert.IsInstanceOfType(engine.Script.error.hostException.GetBaseException(), typeof(AmbiguousImplementationException)); - } - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_ValueTaskPromiseConversion_NoResult() - { - engine.Script.value = new ValueTask(Task.CompletedTask); - Assert.AreEqual("HostObject", engine.Evaluate("value.constructor.name")); - Assert.IsInstanceOfType(engine.Evaluate("Promise.resolve(123)"), typeof(ScriptObject)); - - engine.Dispose(); - engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableTaskPromiseConversion | V8ScriptEngineFlags.EnableValueTaskPromiseConversion); - - engine.Script.value = new ValueTask(Task.CompletedTask); - Assert.AreEqual("Promise", engine.Evaluate("value.constructor.name")); - Assert.IsInstanceOfType(engine.Evaluate("Promise.resolve(123)"), typeof(Task)); - - var task = new Func>(async () => await (Task)engine.Evaluate("Promise.resolve(123)"))(); - Assert.AreEqual(123, task.Result); - - engine.Script.promise = new ValueTask(Task.CompletedTask); - engine.Execute("promise.then(value => result = value);"); - Assert.IsInstanceOfType(engine.Script.result, typeof(Undefined)); - - var cancelSource = new CancellationTokenSource(); - cancelSource.Cancel(); - engine.Script.promise = new ValueTask(Task.Factory.StartNew(() => {}, cancelSource.Token)); - Thread.Sleep(250); - engine.Execute("promise.then(value => result = value, value => error = value);"); - Assert.IsInstanceOfType(engine.Script.error.hostException.GetBaseException(), typeof(TaskCanceledException)); - - cancelSource = new CancellationTokenSource(); - engine.Script.promise = new ValueTask(Task.Factory.StartNew(() => throw new AmbiguousImplementationException(), cancelSource.Token)); - Thread.Sleep(250); - engine.Execute("promise.then(value => result = value, value => error = value);"); - Assert.IsInstanceOfType(engine.Script.error.hostException.GetBaseException(), typeof(AmbiguousImplementationException)); - } - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_Iteration_Disposal_AsyncSource() - { - var source = TestEnumerable.CreateAsync("foo", "bar", "baz"); - - engine.Script.done = new ManualResetEventSlim(); - engine.AddRestrictedHostObject("source", source); - engine.Execute(@" - result = ''; - (async function () { - for await (let item of source) { - result += item; - } - done.Set(); - })(); - "); - engine.Script.done.Wait(); - - Assert.AreEqual("foobarbaz", engine.Script.result); - Assert.AreEqual(1, ((TestEnumerable.IDisposableEnumeratorFactory)source).DisposedEnumeratorCount); - } - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_Iteration_Disposal_AsyncSource_GlobalRenaming() - { - using (Scope.Create(() => HostSettings.CustomAttributeLoader, loader => HostSettings.CustomAttributeLoader = loader)) - { - HostSettings.CustomAttributeLoader = new CamelCaseAttributeLoader(); - - var source = TestEnumerable.CreateAsync("foo", "bar", "baz"); - - engine.Script.done = new ManualResetEventSlim(); - engine.AddRestrictedHostObject("source", source); - engine.Execute(@" - result = ''; - (async function () { - for await (let item of source) { - result += item; - } - done.set(); - })(); - "); - engine.Script.done.Wait(); - - Assert.AreEqual("foobarbaz", engine.Script.result); - Assert.AreEqual(1, ((TestEnumerable.IDisposableEnumeratorFactory)source).DisposedEnumeratorCount); - } - } - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_Iteration_Disposal_AsyncSource_DisableTypeRestriction() - { - engine.DisableTypeRestriction = true; - - var source = TestEnumerable.CreateAsync("foo", "bar", "baz"); - - engine.Script.done = new ManualResetEventSlim(); - engine.AddRestrictedHostObject("source", source); - engine.Execute(@" - result = ''; - (async function () { - for await (let item of source) { - result += item; - } - done.Set(); - })(); - "); - engine.Script.done.Wait(); - - Assert.AreEqual("foobarbaz", engine.Script.result); - Assert.AreEqual(1, ((TestEnumerable.IDisposableEnumeratorFactory)source).DisposedEnumeratorCount); - } - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_AsyncIteration_AsyncEnumerable() - { - static async IAsyncEnumerable GetItems() - { - await Task.Delay(10); - yield return 123; - await Task.Delay(10); - yield return "blah"; - } - - engine.Script.done = new ManualResetEventSlim(); - engine.Script.enumerable = GetItems(); - engine.Execute(@" - result = ''; - (async function () { - for await (var item of enumerable) { - result += item; - } - done.Set(); - })(); - "); - engine.Script.done.Wait(); - - var result = (string)engine.Script.result; - Assert.AreEqual(7, result.Length); - Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); - Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); - } - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_AsyncIteration_AsyncEnumerable_GlobalRenaming() - { - using (Scope.Create(() => HostSettings.CustomAttributeLoader, loader => HostSettings.CustomAttributeLoader = loader)) - { - HostSettings.CustomAttributeLoader = new CamelCaseAttributeLoader(); - - static async IAsyncEnumerable GetItems() - { - await Task.Delay(10); - yield return 123; - await Task.Delay(10); - yield return "blah"; - } - - engine.Script.done = new ManualResetEventSlim(); - engine.Script.enumerable = GetItems(); - engine.Execute(@" - result = ''; - (async function () { - for await (var item of enumerable) { - result += item; - } - done.set(); - })(); - "); - engine.Script.done.Wait(); - - var result = (string)engine.Script.result; - Assert.AreEqual(7, result.Length); - Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); - Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); - } - } - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_AsyncIteration_AsyncEnumerable_DisableTypeRestriction() - { - engine.DisableTypeRestriction = true; - - static async IAsyncEnumerable GetItems() - { - await Task.Delay(10); - yield return 123; - await Task.Delay(10); - yield return "blah"; - } - - engine.Script.done = new ManualResetEventSlim(); - engine.Script.enumerable = GetItems(); - engine.Execute(@" - result = ''; - (async function () { - for await (var item of enumerable) { - result += item; - } - done.Set(); - })(); - "); - engine.Script.done.Wait(); - - var result = (string)engine.Script.result; - Assert.AreEqual(7, result.Length); - Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); - Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); - } - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_AsyncIteration_AsyncEnumerable_Exception() - { - const string errorMessage = "Well, this is bogus!"; - static async IAsyncEnumerable GetItems() - { - await Task.Delay(10); - yield return 123; - await Task.Delay(10); - yield return "blah"; - throw new InvalidOperationException(errorMessage); - } - - engine.Script.done = new ManualResetEventSlim(); - engine.Script.enumerable = GetItems(); - engine.Execute(@" - result = ''; - (async function () { - try { - for await (var item of enumerable) { - result += item; - } - } - catch (error) { - errorMessage = error.message; - throw error; - } - finally { - done.Set(); - } - })(); - "); - engine.Script.done.Wait(); - - var result = (string)engine.Script.result; - Assert.AreEqual(7, result.Length); - Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); - Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); - Assert.AreEqual(errorMessage, engine.Script.errorMessage); - } - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_AsyncIteration_AsyncEnumerable_Exception_GlobalRenaming() - { - using (Scope.Create(() => HostSettings.CustomAttributeLoader, loader => HostSettings.CustomAttributeLoader = loader)) - { - HostSettings.CustomAttributeLoader = new CamelCaseAttributeLoader(); - - const string errorMessage = "Well, this is bogus!"; - static async IAsyncEnumerable GetItems() - { - await Task.Delay(10); - yield return 123; - await Task.Delay(10); - yield return "blah"; - throw new InvalidOperationException(errorMessage); - } - - engine.Script.done = new ManualResetEventSlim(); - engine.Script.enumerable = GetItems(); - engine.Execute(@" - result = ''; - (async function () { - try { - for await (var item of enumerable) { - result += item; - } - } - catch (error) { - errorMessage = error.message; - throw error; - } - finally { - done.set(); - } - })(); - "); - engine.Script.done.Wait(); - - var result = (string)engine.Script.result; - Assert.AreEqual(7, result.Length); - Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); - Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); - Assert.AreEqual(errorMessage, engine.Script.errorMessage); - } - } - - [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_AsyncIteration_AsyncEnumerable_Exception_DisableTypeRestriction() - { - engine.DisableTypeRestriction = true; - - const string errorMessage = "Well, this is bogus!"; - - static async IAsyncEnumerable GetItems() - { - await Task.Delay(10); - yield return 123; - await Task.Delay(10); - yield return "blah"; - throw new InvalidOperationException(errorMessage); - } - - engine.Script.done = new ManualResetEventSlim(); - engine.Script.enumerable = GetItems(); - engine.Execute(@" - result = ''; - (async function () { - try { - for await (var item of enumerable) { - result += item; - } - } - catch (error) { - errorMessage = error.message; - throw error; - } - finally { - done.Set(); - } - })(); - "); - engine.Script.done.Wait(); - - var result = (string)engine.Script.result; - Assert.AreEqual(7, result.Length); - Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); - Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); - Assert.AreEqual(errorMessage, engine.Script.errorMessage); - } - - // ReSharper restore InconsistentNaming - - #endregion - } -} diff --git a/ClearScriptTest/V8ScriptEngineTest.cs b/ClearScriptTest/V8ScriptEngineTest.cs index f49e586e..cf560bfc 100644 --- a/ClearScriptTest/V8ScriptEngineTest.cs +++ b/ClearScriptTest/V8ScriptEngineTest.cs @@ -6,6 +6,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.Specialized; +using System.Data; using System.Diagnostics.CodeAnalysis; using System.Dynamic; using System.Globalization; @@ -857,8 +858,8 @@ public void V8ScriptEngine_new_GenericNested() public void V8ScriptEngine_new_Scalar() { engine.AddHostObject("clr", HostItemFlags.GlobalMembers, new HostTypeCollection("mscorlib")); - Assert.AreEqual(default(int), engine.Evaluate("new System.Int32")); - Assert.AreEqual(default(int), engine.Evaluate("new System.Int32()")); + Assert.AreEqual(0, engine.Evaluate("new System.Int32")); + Assert.AreEqual(0, engine.Evaluate("new System.Int32()")); } [TestMethod, TestCategory("V8ScriptEngine")] @@ -1969,6 +1970,7 @@ public void V8ScriptEngine_MaxRuntimeHeapSize_Plumbing() Assert.AreEqual(UIntPtr.Zero, engine2.MaxRuntimeStackUsage); Assert.AreEqual(UIntPtr.Zero, runtime.MaxStackUsage); + // ReSharper disable once RedundantCast value = (UIntPtr)654321; runtime.MaxHeapSize = value; Assert.AreEqual(value, engine1.MaxRuntimeHeapSize); @@ -2025,6 +2027,7 @@ public void V8ScriptEngine_MaxRuntimeStackUsage_Plumbing() Assert.AreEqual(UIntPtr.Zero, engine2.MaxRuntimeHeapSize); Assert.AreEqual(UIntPtr.Zero, runtime.MaxHeapSize); + // ReSharper disable once RedundantCast value = (UIntPtr)654321; runtime.MaxStackUsage = value; Assert.AreEqual(value, engine1.MaxRuntimeStackUsage); @@ -2929,6 +2932,79 @@ public void V8ScriptEngine_Iteration_Disposal_GenericSource_DisableTypeRestricti Assert.AreEqual(2, ((TestEnumerable.IDisposableEnumeratorFactory)source).DisposedEnumeratorCount); } + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_Iteration_Disposal_AsyncSource() + { + var source = TestEnumerable.CreateAsync("foo", "bar", "baz"); + + engine.Script.done = new ManualResetEventSlim(); + engine.AddRestrictedHostObject("source", source); + engine.Execute(@" + result = ''; + (async function () { + for await (let item of source) { + result += item; + } + done.Set(); + })(); + "); + engine.Script.done.Wait(); + + Assert.AreEqual("foobarbaz", engine.Script.result); + Assert.AreEqual(1, ((TestEnumerable.IDisposableEnumeratorFactory)source).DisposedEnumeratorCount); + } + + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_Iteration_Disposal_AsyncSource_GlobalRenaming() + { + using (Scope.Create(() => HostSettings.CustomAttributeLoader, loader => HostSettings.CustomAttributeLoader = loader)) + { + HostSettings.CustomAttributeLoader = new CamelCaseAttributeLoader(); + + var source = TestEnumerable.CreateAsync("foo", "bar", "baz"); + + engine.Script.done = new ManualResetEventSlim(); + engine.AddRestrictedHostObject("source", source); + engine.Execute(@" + result = ''; + (async function () { + for await (let item of source) { + result += item; + } + done.set(); + })(); + "); + engine.Script.done.Wait(); + + Assert.AreEqual("foobarbaz", engine.Script.result); + Assert.AreEqual(1, ((TestEnumerable.IDisposableEnumeratorFactory)source).DisposedEnumeratorCount); + } + } + + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_Iteration_Disposal_AsyncSource_DisableTypeRestriction() + { + engine.DisableTypeRestriction = true; + + var source = TestEnumerable.CreateAsync("foo", "bar", "baz"); + + engine.Script.done = new ManualResetEventSlim(); + engine.AddRestrictedHostObject("source", source); + engine.Execute(@" + result = ''; + (async function () { + for await (let item of source) { + result += item; + } + done.Set(); + })(); + "); + engine.Script.done.Wait(); + + Assert.AreEqual("foobarbaz", engine.Script.result); + Assert.AreEqual(1, ((TestEnumerable.IDisposableEnumeratorFactory)source).DisposedEnumeratorCount); + } + [TestMethod, TestCategory("V8ScriptEngine")] public void V8ScriptEngine_AsyncIteration_PropertyBag() { @@ -3221,6 +3297,234 @@ public void V8ScriptEngine_AsyncIteration_Array_DisableTypeRestriction() Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); } + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_AsyncIteration_AsyncEnumerable() + { + static async IAsyncEnumerable GetItems() + { + await Task.Delay(10); + yield return 123; + await Task.Delay(10); + yield return "blah"; + } + + engine.Script.done = new ManualResetEventSlim(); + engine.Script.enumerable = GetItems(); + engine.Execute(@" + result = ''; + (async function () { + for await (var item of enumerable) { + result += item; + } + done.Set(); + })(); + "); + engine.Script.done.Wait(); + + var result = (string)engine.Script.result; + Assert.AreEqual(7, result.Length); + Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); + Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); + } + + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_AsyncIteration_AsyncEnumerable_GlobalRenaming() + { + using (Scope.Create(() => HostSettings.CustomAttributeLoader, loader => HostSettings.CustomAttributeLoader = loader)) + { + HostSettings.CustomAttributeLoader = new CamelCaseAttributeLoader(); + + static async IAsyncEnumerable GetItems() + { + await Task.Delay(10); + yield return 123; + await Task.Delay(10); + yield return "blah"; + } + + engine.Script.done = new ManualResetEventSlim(); + engine.Script.enumerable = GetItems(); + engine.Execute(@" + result = ''; + (async function () { + for await (var item of enumerable) { + result += item; + } + done.set(); + })(); + "); + engine.Script.done.Wait(); + + var result = (string)engine.Script.result; + Assert.AreEqual(7, result.Length); + Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); + Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); + } + } + + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_AsyncIteration_AsyncEnumerable_DisableTypeRestriction() + { + engine.DisableTypeRestriction = true; + + static async IAsyncEnumerable GetItems() + { + await Task.Delay(10); + yield return 123; + await Task.Delay(10); + yield return "blah"; + } + + engine.Script.done = new ManualResetEventSlim(); + engine.Script.enumerable = GetItems(); + engine.Execute(@" + result = ''; + (async function () { + for await (var item of enumerable) { + result += item; + } + done.Set(); + })(); + "); + engine.Script.done.Wait(); + + var result = (string)engine.Script.result; + Assert.AreEqual(7, result.Length); + Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); + Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); + } + + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_AsyncIteration_AsyncEnumerable_Exception() + { + const string errorMessage = "Well, this is bogus!"; + static async IAsyncEnumerable GetItems() + { + await Task.Delay(10); + yield return 123; + await Task.Delay(10); + yield return "blah"; + throw new InvalidOperationException(errorMessage); + } + + engine.Script.done = new ManualResetEventSlim(); + engine.Script.enumerable = GetItems(); + engine.Execute(@" + result = ''; + (async function () { + try { + for await (var item of enumerable) { + result += item; + } + } + catch (error) { + errorMessage = error.message; + throw error; + } + finally { + done.Set(); + } + })(); + "); + engine.Script.done.Wait(); + + var result = (string)engine.Script.result; + Assert.AreEqual(7, result.Length); + Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); + Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); + Assert.AreEqual(errorMessage, engine.Script.errorMessage); + } + + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_AsyncIteration_AsyncEnumerable_Exception_GlobalRenaming() + { + using (Scope.Create(() => HostSettings.CustomAttributeLoader, loader => HostSettings.CustomAttributeLoader = loader)) + { + HostSettings.CustomAttributeLoader = new CamelCaseAttributeLoader(); + + const string errorMessage = "Well, this is bogus!"; + static async IAsyncEnumerable GetItems() + { + await Task.Delay(10); + yield return 123; + await Task.Delay(10); + yield return "blah"; + throw new InvalidOperationException(errorMessage); + } + + engine.Script.done = new ManualResetEventSlim(); + engine.Script.enumerable = GetItems(); + engine.Execute(@" + result = ''; + (async function () { + try { + for await (var item of enumerable) { + result += item; + } + } + catch (error) { + errorMessage = error.message; + throw error; + } + finally { + done.set(); + } + })(); + "); + engine.Script.done.Wait(); + + var result = (string)engine.Script.result; + Assert.AreEqual(7, result.Length); + Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); + Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); + Assert.AreEqual(errorMessage, engine.Script.errorMessage); + } + } + + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_AsyncIteration_AsyncEnumerable_Exception_DisableTypeRestriction() + { + engine.DisableTypeRestriction = true; + + const string errorMessage = "Well, this is bogus!"; + + static async IAsyncEnumerable GetItems() + { + await Task.Delay(10); + yield return 123; + await Task.Delay(10); + yield return "blah"; + throw new InvalidOperationException(errorMessage); + } + + engine.Script.done = new ManualResetEventSlim(); + engine.Script.enumerable = GetItems(); + engine.Execute(@" + result = ''; + (async function () { + try { + for await (var item of enumerable) { + result += item; + } + } + catch (error) { + errorMessage = error.message; + throw error; + } + finally { + done.Set(); + } + })(); + "); + engine.Script.done.Wait(); + + var result = (string)engine.Script.result; + Assert.AreEqual(7, result.Length); + Assert.IsTrue(result.IndexOf("123", StringComparison.Ordinal) >= 0); + Assert.IsTrue(result.IndexOf("blah", StringComparison.Ordinal) >= 0); + Assert.AreEqual(errorMessage, engine.Script.errorMessage); + } + [TestMethod, TestCategory("V8ScriptEngine")] public void V8ScriptEngine_SuppressInstanceMethodEnumeration() { @@ -3311,6 +3615,197 @@ public void V8ScriptEngine_TaskPromiseConversion() Assert.AreEqual(456, engine.Script.result); } + [TestMethod, TestCategory("V8ScriptEngine")] + public async Task V8ScriptEngine_TaskPromiseConversion_TaskOptimizations() + { + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableTaskPromiseConversion); + engine.AddHostType(typeof(Task)); + + var task = (Task)engine.Evaluate("(async function () { await Task.Delay(500); return 'foo'; })()"); + Assert.IsFalse(task.IsCompleted); + Assert.AreEqual("foo", await task); + + task = (Task)engine.Evaluate("(async function () { await Task.Delay(500); throw new Error('Huh?'); })()"); + Assert.IsFalse(task.IsCompleted); + + var gotException = false; + try + { + await task; + } + catch (Exception exception) + { + Assert.IsTrue(exception.Message.Contains("Huh?")); + gotException = true; + } + Assert.IsTrue(gotException); + + task = (Task)engine.Evaluate("(async function () { return 'bar'; })()"); + Assert.AreEqual(TaskStatus.RanToCompletion, task.Status); + Assert.AreEqual("bar", await task); + + task = (Task)engine.Evaluate("(async function () { throw new Error('Blah!'); })()"); + Assert.IsTrue(task.IsFaulted); + + gotException = false; + try + { + await task; + } + catch (Exception exception) + { + Assert.IsTrue(exception.Message.Contains("Blah!")); + gotException = true; + } + Assert.IsTrue(gotException); + } + + [TestMethod, TestCategory("V8ScriptEngine")] + public async Task V8ScriptEngine_TaskPromiseConversion_PromiseOptimizations() + { + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableTaskPromiseConversion); + + engine.Script.promise = Task.Delay(500); + Assert.AreEqual(0, engine.Evaluate("EngineInternal.getPromiseState(promise)")); + Assert.IsInstanceOfType(engine.Evaluate("EngineInternal.getPromiseResult(promise)"), typeof(Undefined)); + Assert.AreEqual(123, await (Task)engine.Evaluate("(async function () { await promise; return 123; })()")); + + engine.Script.promise = Task.Run(async () => { await Task.Delay(500); throw new InvalidOperationException("Boom!"); }); + Assert.AreEqual(0, engine.Evaluate("EngineInternal.getPromiseState(promise)")); + Assert.IsInstanceOfType(engine.Evaluate("EngineInternal.getPromiseResult(promise)"), typeof(Undefined)); + + var gotException = false; + try + { + await (Task)engine.Evaluate("(async function () { await promise; })()"); + } + catch (Exception exception) + { + Assert.IsTrue(exception.Message.Contains("Boom!")); + gotException = true; + } + Assert.IsTrue(gotException); + + engine.Script.promise = Task.CompletedTask; + Assert.AreEqual(1, engine.Evaluate("EngineInternal.getPromiseState(promise)")); + Assert.IsInstanceOfType(engine.Evaluate("EngineInternal.getPromiseResult(promise)"), typeof(Undefined)); + Assert.AreEqual(456, await (Task)engine.Evaluate("(async function () { await promise; return 456; })()")); + + engine.Script.promise = Task.FromException(new InvalidOperationException("Meh?!")); + Assert.AreEqual(2, engine.Evaluate("EngineInternal.getPromiseState(promise)")); + Assert.IsTrue((engine.Evaluate("EngineInternal.getPromiseResult(promise)") is ScriptObject error1) && ((string)error1["message"]).Contains("Meh?!")); + + gotException = false; + try + { + await (Task)engine.Evaluate("(async function () { await promise; })()"); + } + catch (Exception exception) + { + Assert.IsTrue(exception.Message.Contains("Meh?!")); + gotException = true; + } + Assert.IsTrue(gotException); + + engine.Script.promise = Task.Run(async () => { await Task.Delay(500); return 789; }); + Assert.AreEqual(0, engine.Evaluate("EngineInternal.getPromiseState(promise)")); + Assert.IsInstanceOfType(engine.Evaluate("EngineInternal.getPromiseResult(promise)"), typeof(Undefined)); + Assert.AreEqual(789, await (Task)engine.Evaluate("(async function () { return await promise; })()")); + + engine.Script.promise = Task.FromResult(987); + Assert.AreEqual(1, engine.Evaluate("EngineInternal.getPromiseState(promise)")); + Assert.AreEqual(987, engine.Evaluate("EngineInternal.getPromiseResult(promise)")); + Assert.AreEqual(987, await (Task)engine.Evaluate("(async function () { return await promise; })()")); + + engine.Script.promise = Task.FromException(new InvalidOperationException("Yuck!?")); + Assert.AreEqual(2, engine.Evaluate("EngineInternal.getPromiseState(promise)")); + Assert.IsTrue((engine.Evaluate("EngineInternal.getPromiseResult(promise)") is ScriptObject error2) && ((string)error2["message"]).Contains("Yuck!?")); + + gotException = false; + try + { + await (Task)engine.Evaluate("(async function () { await promise; })()"); + } + catch (Exception exception) + { + Assert.IsTrue(exception.Message.Contains("Yuck!?")); + gotException = true; + } + Assert.IsTrue(gotException); + } + + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_ValueTaskPromiseConversion() + { + engine.Script.value = new ValueTask("foo"); + Assert.AreEqual("HostObject", engine.Evaluate("value.constructor.name")); + Assert.IsInstanceOfType(engine.Evaluate("Promise.resolve(123)"), typeof(ScriptObject)); + + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableTaskPromiseConversion | V8ScriptEngineFlags.EnableValueTaskPromiseConversion); + + engine.Script.value = new ValueTask("bar"); + Assert.AreEqual("Promise", engine.Evaluate("value.constructor.name")); + Assert.IsInstanceOfType(engine.Evaluate("Promise.resolve(123)"), typeof(Task)); + + var task = new Func>(async () => await (Task)engine.Evaluate("Promise.resolve(123)"))(); + Assert.AreEqual(123, task.Result); + + engine.Script.promise = new ValueTask(456); + engine.Execute("promise.then(value => result = value);"); + Assert.AreEqual(456, engine.Script.result); + + var cancelSource = new CancellationTokenSource(); + cancelSource.Cancel(); + engine.Script.promise = new ValueTask(Task.Factory.StartNew(() => "baz", cancelSource.Token)); + Thread.Sleep(250); + engine.Execute("promise.then(value => result = value, value => error = value);"); + Assert.IsInstanceOfType(engine.Script.error.hostException.GetBaseException(), typeof(TaskCanceledException)); + + cancelSource = new CancellationTokenSource(); + engine.Script.promise = new ValueTask(Task.Factory.StartNew(() => throw new ConstraintException(), cancelSource.Token)); + Thread.Sleep(250); + engine.Execute("promise.then(value => result = value, value => error = value);"); + Assert.IsInstanceOfType(engine.Script.error.hostException.GetBaseException(), typeof(ConstraintException)); + } + + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_ValueTaskPromiseConversion_NoResult() + { + engine.Script.value = new ValueTask(Task.CompletedTask); + Assert.AreEqual("HostObject", engine.Evaluate("value.constructor.name")); + Assert.IsInstanceOfType(engine.Evaluate("Promise.resolve(123)"), typeof(ScriptObject)); + + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableTaskPromiseConversion | V8ScriptEngineFlags.EnableValueTaskPromiseConversion); + + engine.Script.value = new ValueTask(Task.CompletedTask); + Assert.AreEqual("Promise", engine.Evaluate("value.constructor.name")); + Assert.IsInstanceOfType(engine.Evaluate("Promise.resolve(123)"), typeof(Task)); + + var task = new Func>(async () => await (Task)engine.Evaluate("Promise.resolve(123)"))(); + Assert.AreEqual(123, task.Result); + + engine.Script.promise = new ValueTask(Task.CompletedTask); + engine.Execute("promise.then(value => result = value);"); + Assert.IsInstanceOfType(engine.Script.result, typeof(Undefined)); + + var cancelSource = new CancellationTokenSource(); + cancelSource.Cancel(); + engine.Script.promise = new ValueTask(Task.Factory.StartNew(() => {}, cancelSource.Token)); + Thread.Sleep(250); + engine.Execute("promise.then(value => result = value, value => error = value);"); + Assert.IsInstanceOfType(engine.Script.error.hostException.GetBaseException(), typeof(TaskCanceledException)); + + cancelSource = new CancellationTokenSource(); + engine.Script.promise = new ValueTask(Task.Factory.StartNew(() => throw new ConstraintException(), cancelSource.Token)); + Thread.Sleep(250); + engine.Execute("promise.then(value => result = value, value => error = value);"); + Assert.IsInstanceOfType(engine.Script.error.hostException.GetBaseException(), typeof(ConstraintException)); + } + [TestMethod, TestCategory("V8ScriptEngine")] public void V8ScriptEngine_DateTimeConversion_FromScript() { @@ -3723,14 +4218,16 @@ public void V8ScriptEngine_ScriptArray_IList() [TestMethod, TestCategory("V8ScriptEngine")] public void V8ScriptEngine_ScriptObject_IDictionary() { + // ReSharper disable UsageOfDefaultStructEquality + var pairs = new List> { - new KeyValuePair("123", 987), - new KeyValuePair("456", 654.321), - new KeyValuePair("abc", 123), - new KeyValuePair("def", 456.789), - new KeyValuePair("ghi", "foo"), - new KeyValuePair("jkl", engine.Evaluate("({ bar: 'baz' })")) + new("123", 987), + new("456", 654.321), + new("abc", 123), + new("def", 456.789), + new("ghi", "foo"), + new("jkl", engine.Evaluate("({ bar: 'baz' })")) }; var dict = (IDictionary)engine.Evaluate("dict = {}"); @@ -3790,6 +4287,8 @@ public void V8ScriptEngine_ScriptObject_IDictionary() Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("delete dict[789]"))); Assert.IsTrue(pairs.SequenceEqual(dict)); + + // ReSharper restore UsageOfDefaultStructEquality } [TestMethod, TestCategory("V8ScriptEngine")] @@ -3807,6 +4306,21 @@ public void V8ScriptEngine_UndefinedImportValue() Assert.AreEqual(123, engine.Evaluate("undefined")); } + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_NullImportValue() + { + Assert.IsNull(engine.Evaluate("null")); + Assert.IsInstanceOfType(engine.Evaluate("undefined"), typeof(Undefined)); + + engine.NullImportValue = Undefined.Value; + Assert.IsInstanceOfType(engine.Evaluate("null"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("undefined"), typeof(Undefined)); + + engine.NullImportValue = 123; + Assert.AreEqual(123, engine.Evaluate("null")); + Assert.IsInstanceOfType(engine.Evaluate("undefined"), typeof(Undefined)); + } + [TestMethod, TestCategory("V8ScriptEngine")] public void V8ScriptEngine_NullExportValue() { @@ -3889,23 +4403,21 @@ public void V8ScriptEngine_BigInt() } [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_BigInt_NoLongConversion() + public void V8ScriptEngine_BigInt_NoInt64Conversion() { - const long maxIntInDouble = (1L << 53) - 1; - - engine.Script.value = maxIntInDouble; + engine.Script.value = MiscHelpers.MaxInt64InDouble; Assert.AreEqual("number", engine.Evaluate("typeof value")); - engine.Script.value = maxIntInDouble + 1; + engine.Script.value = MiscHelpers.MaxInt64InDouble + 1; Assert.AreEqual("number", engine.Evaluate("typeof value")); - engine.Script.value = -maxIntInDouble; + engine.Script.value = -MiscHelpers.MaxInt64InDouble; Assert.AreEqual("number", engine.Evaluate("typeof value")); - engine.Script.value = -maxIntInDouble - 1; + engine.Script.value = -MiscHelpers.MaxInt64InDouble - 1; Assert.AreEqual("number", engine.Evaluate("typeof value")); - engine.Script.value = (ulong)maxIntInDouble; + engine.Script.value = (ulong)MiscHelpers.MaxInt64InDouble; Assert.AreEqual("number", engine.Evaluate("typeof value")); - engine.Script.value = (ulong)maxIntInDouble + 1; + engine.Script.value = (ulong)MiscHelpers.MaxInt64InDouble + 1; Assert.AreEqual("number", engine.Evaluate("typeof value")); engine.Script.value = int.MinValue; @@ -3915,26 +4427,24 @@ public void V8ScriptEngine_BigInt_NoLongConversion() } [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_BigInt_UnsafeLongConversion() + public void V8ScriptEngine_BigInt_UnsafeInt64Conversion() { - const long maxIntInDouble = (1L << 53) - 1; - engine.Dispose(); - engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.MarshalUnsafeLongAsBigInt); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.MarshalUnsafeInt64AsBigInt); - engine.Script.value = maxIntInDouble; + engine.Script.value = MiscHelpers.MaxInt64InDouble; Assert.AreEqual("number", engine.Evaluate("typeof value")); - engine.Script.value = maxIntInDouble + 1; + engine.Script.value = MiscHelpers.MaxInt64InDouble + 1; Assert.AreEqual("bigint", engine.Evaluate("typeof value")); - engine.Script.value = -maxIntInDouble; + engine.Script.value = -MiscHelpers.MaxInt64InDouble; Assert.AreEqual("number", engine.Evaluate("typeof value")); - engine.Script.value = -maxIntInDouble - 1; + engine.Script.value = -MiscHelpers.MaxInt64InDouble - 1; Assert.AreEqual("bigint", engine.Evaluate("typeof value")); - engine.Script.value = (ulong)maxIntInDouble; + engine.Script.value = (ulong)MiscHelpers.MaxInt64InDouble; Assert.AreEqual("number", engine.Evaluate("typeof value")); - engine.Script.value = (ulong)maxIntInDouble + 1; + engine.Script.value = (ulong)MiscHelpers.MaxInt64InDouble + 1; Assert.AreEqual("bigint", engine.Evaluate("typeof value")); engine.Script.value = int.MinValue; @@ -3944,26 +4454,24 @@ public void V8ScriptEngine_BigInt_UnsafeLongConversion() } [TestMethod, TestCategory("V8ScriptEngine")] - public void V8ScriptEngine_BigInt_AllLongConversion() + public void V8ScriptEngine_BigInt_AllInt64Conversion() { - const long maxIntInDouble = (1L << 53) - 1; - engine.Dispose(); - engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.MarshalAllLongAsBigInt); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.MarshalAllInt64AsBigInt); - engine.Script.value = maxIntInDouble; + engine.Script.value = MiscHelpers.MaxInt64InDouble; Assert.AreEqual("bigint", engine.Evaluate("typeof value")); - engine.Script.value = maxIntInDouble + 1; + engine.Script.value = MiscHelpers.MaxInt64InDouble + 1; Assert.AreEqual("bigint", engine.Evaluate("typeof value")); - engine.Script.value = -maxIntInDouble; + engine.Script.value = -MiscHelpers.MaxInt64InDouble; Assert.AreEqual("bigint", engine.Evaluate("typeof value")); - engine.Script.value = -maxIntInDouble - 1; + engine.Script.value = -MiscHelpers.MaxInt64InDouble - 1; Assert.AreEqual("bigint", engine.Evaluate("typeof value")); - engine.Script.value = (ulong)maxIntInDouble; + engine.Script.value = (ulong)MiscHelpers.MaxInt64InDouble; Assert.AreEqual("bigint", engine.Evaluate("typeof value")); - engine.Script.value = (ulong)maxIntInDouble + 1; + engine.Script.value = (ulong)MiscHelpers.MaxInt64InDouble + 1; Assert.AreEqual("bigint", engine.Evaluate("typeof value")); engine.Script.value = int.MinValue; @@ -4810,7 +5318,7 @@ public void V8ScriptEngine_Compilation_CacheResult_Module() engine.Dispose(); engine = runtime.CreateScriptEngine(); // default engine enables debugging, which disables caching (in older V8 versions) - const string code = "let obj = { foo: 123, bar: 'baz', qux: 456.789 }; let count = 0; for (let name in obj) count += 1; Math.PI"; + const string code = "let obj = { foo: 123, bar: 'baz', qux: 456.789 }; let count = 0; for (let name in obj) count += 1; import.meta.setResult(Math.PI)"; var info = new DocumentInfo("foo.js") { Category = ModuleCategory.Standard }; byte[] goodCacheBytes; @@ -5069,7 +5577,7 @@ public void V8ScriptEngine_DocumentCompilation_CacheResult_Module() engine.Dispose(); engine = runtime.CreateScriptEngine(); // default engine enables debugging, which disables caching (in older V8 versions) - const string code = "let obj = { foo: 123, bar: 'baz', qux: 456.789 }; let count = 0; for (let name in obj) count += 1; Math.PI"; + const string code = "let obj = { foo: 123, bar: 'baz', qux: 456.789 }; let count = 0; for (let name in obj) count += 1; import.meta.setResult(Math.PI)"; byte[] goodCacheBytes; runtime.DocumentSettings.AccessFlags = DocumentAccessFlags.EnableFileLoading; @@ -5273,7 +5781,7 @@ public void V8ScriptEngine_PerformanceObject() return (Performance.now() - start) / 1000; })()")); - Assert.IsTrue((average >= 5) && (average < 5.5)); + Assert.IsTrue((average >= 5) && (average < 7.5)); var delta = Convert.ToDouble(engine.Evaluate(@" Math.abs(Performance.timeOrigin + Performance.now() - Date.now()); @@ -5282,6 +5790,56 @@ public void V8ScriptEngine_PerformanceObject() Assert.IsTrue(delta < 5); } + [TestMethod, TestCategory("V8ScriptEngine")] + public void V8ScriptEngine_ArrayConversion() + { + engine.Script.array = new object[0]; + var array = engine.Script.array as object[]; + Assert.IsNotNull(array); + + var scriptArray = engine.Evaluate("([])") as IJavaScriptObject; + Assert.IsNotNull(scriptArray); + Assert.IsTrue(scriptArray.Kind == JavaScriptObjectKind.Array); + + engine.Dispose(); + engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging | V8ScriptEngineFlags.EnableArrayConversion | V8ScriptEngineFlags.EnableDateTimeConversion); + + engine.Execute(@" + array = [ 123, 'foo' ]; + array.push(new Date(), [ 456, 'bar', array ]); + "); + + array = engine.Script.array as object[]; + Assert.IsNotNull(array); + Assert.AreEqual(4, array.Length); + Assert.AreEqual(123, array[0]); + Assert.AreEqual("foo", array[1]); + Assert.IsInstanceOfType(array[2], typeof(DateTime)); + + var innerArray = array[3] as object[]; + Assert.IsNotNull(innerArray); + Assert.AreEqual(3, innerArray.Length); + Assert.AreEqual(456, innerArray[0]); + Assert.AreEqual("bar", innerArray[1]); + Assert.AreEqual(array, innerArray[2]); + + array = new object[] { 789, "baz", DateTime.Now, null }; + array[3] = new object[] { 987, "qux", array }; + engine.Script.array = array; + + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("Array.isArray(array)"))); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("array.length === 4"))); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("array[0] === 789"))); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("array[1] === 'baz'"))); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("array[2] instanceof Date"))); + + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("Array.isArray(array[3])"))); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("array[3].length === 3"))); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("array[3][0] === 987"))); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("array[3][1] === 'qux'"))); + Assert.IsTrue(Convert.ToBoolean(engine.Evaluate("array[3][2] === array"))); + } + // ReSharper restore InconsistentNaming #endregion @@ -5651,7 +6209,7 @@ public ConstructorBindingTest(double c, int a = 789, string b = "bar") public class SingleThreadSynchronizationContext : SynchronizationContext { - private readonly BlockingCollection<(SendOrPostCallback, object)> queue = new BlockingCollection<(SendOrPostCallback, object)>(); + private readonly BlockingCollection<(SendOrPostCallback, object)> queue = new(); private readonly Thread thread; private SingleThreadSynchronizationContext() diff --git a/ClearScriptTest/VBScriptCoreEngineTest.cs b/ClearScriptTest/VBScriptCoreEngineTest.cs index a1d468f0..fc4d052e 100644 --- a/ClearScriptTest/VBScriptCoreEngineTest.cs +++ b/ClearScriptTest/VBScriptCoreEngineTest.cs @@ -2974,6 +2974,24 @@ public void VBScriptCoreEngine_UndefinedImportValue() Assert.AreEqual(123, engine.Evaluate("nothing")); } + [TestMethod, TestCategory("VBScriptCoreEngine")] + public void VBScriptCoreEngine_NullImportValue() + { + Assert.IsNull(engine.Evaluate("null")); + Assert.IsInstanceOfType(engine.Evaluate("empty"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("nothing"), typeof(Undefined)); + + engine.NullImportValue = Undefined.Value; + Assert.IsInstanceOfType(engine.Evaluate("null"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("empty"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("nothing"), typeof(Undefined)); + + engine.NullImportValue = 123; + Assert.AreEqual(123, engine.Evaluate("null")); + Assert.IsInstanceOfType(engine.Evaluate("empty"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("nothing"), typeof(Undefined)); + } + [TestMethod, TestCategory("VBScriptCoreEngine")] public void VBScriptCoreEngine_NullExportValue() { diff --git a/ClearScriptTest/VBScriptEngineTest.cs b/ClearScriptTest/VBScriptEngineTest.cs index ddc06b0e..3556dc1b 100644 --- a/ClearScriptTest/VBScriptEngineTest.cs +++ b/ClearScriptTest/VBScriptEngineTest.cs @@ -3043,6 +3043,24 @@ public void VBScriptEngine_UndefinedImportValue() Assert.AreEqual(123, engine.Evaluate("nothing")); } + [TestMethod, TestCategory("VBScriptEngine")] + public void VBScriptEngine_NullImportValue() + { + Assert.IsNull(engine.Evaluate("null")); + Assert.IsInstanceOfType(engine.Evaluate("empty"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("nothing"), typeof(Undefined)); + + engine.NullImportValue = Undefined.Value; + Assert.IsInstanceOfType(engine.Evaluate("null"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("empty"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("nothing"), typeof(Undefined)); + + engine.NullImportValue = 123; + Assert.AreEqual(123, engine.Evaluate("null")); + Assert.IsInstanceOfType(engine.Evaluate("empty"), typeof(Undefined)); + Assert.IsInstanceOfType(engine.Evaluate("nothing"), typeof(Undefined)); + } + [TestMethod, TestCategory("VBScriptEngine")] public void VBScriptEngine_NullExportValue() { diff --git a/ClearScriptV8/ClearScriptV8Native.h b/ClearScriptV8/ClearScriptV8Native.h index 15fe2331..d12afc57 100644 --- a/ClearScriptV8/ClearScriptV8Native.h +++ b/ClearScriptV8/ClearScriptV8Native.h @@ -34,3 +34,4 @@ #include "V8ScriptHolderImpl.h" #include "V8SplitProxyNative.h" #include "V8SplitProxyManaged.h" +#include "V8ValueWireData.h" diff --git a/ClearScriptV8/CommonPlatform.h b/ClearScriptV8/CommonPlatform.h index ca50a2cb..78469e85 100644 --- a/ClearScriptV8/CommonPlatform.h +++ b/ClearScriptV8/CommonPlatform.h @@ -95,53 +95,74 @@ // global helper functions //----------------------------------------------------------------------------- +template +inline std::underlying_type_t ToUnderlyingType(T value) +{ + return static_cast>(value); +} + +//----------------------------------------------------------------------------- + +template +inline T ToEnum(std::underlying_type_t value) +{ + return static_cast(value); +} + +//----------------------------------------------------------------------------- + template -inline bool HasFlag(TFlag mask, TFlag flag) +inline TFlag CombineFlags(TFlag flag1, TFlag flag2) { - using TUnderlying = std::underlying_type_t; - return (static_cast(mask) & static_cast(flag)) != 0; + return ::ToEnum(::ToUnderlyingType(flag1) | ::ToUnderlyingType(flag2)); } //----------------------------------------------------------------------------- template -inline bool HasFlag(TFlag mask, TOthers... others) +inline TFlag CombineFlags(TFlag flag1, TFlag flag2, TOthers... others) { - return HasFlag(mask, CombineFlags(others...)); + return ::CombineFlags(flag1, ::CombineFlags(flag2, others...)); } //----------------------------------------------------------------------------- template -inline bool HasFlags(TFlag mask, TFlag flags) +inline bool HasFlag(TFlag mask, TFlag flag) +{ + return (::ToUnderlyingType(mask) & ::ToUnderlyingType(flag)) != 0; +} + +//----------------------------------------------------------------------------- + +template +inline bool HasAnyFlag(TFlag mask, TFlag flag) { - using TUnderlying = std::underlying_type_t; - return (static_cast(mask) & static_cast(flags)) == static_cast(flags); + return ::HasFlag(mask, flag); } //----------------------------------------------------------------------------- template -inline bool HasFlags(TFlag mask, TOthers... others) +inline bool HasAnyFlag(TFlag mask, TFlag flag1, TOthers... others) { - return HasFlags(mask, CombineFlags(others...)); + return ::HasAnyFlag(mask, ::CombineFlags(flag1, others...)); } //----------------------------------------------------------------------------- template -inline TFlag CombineFlags(TFlag flag1, TFlag flag2) +inline bool HasAllFlags(TFlag mask, TFlag flags) { - using TUnderlying = std::underlying_type_t; - return static_cast(static_cast(flag1) | static_cast(flag2)); + return (::ToUnderlyingType(mask) & ::ToUnderlyingType(flags)) == ::ToUnderlyingType(flags); } //----------------------------------------------------------------------------- template -inline TFlag CombineFlags(TFlag flag1, TFlag flag2, TOthers... others) +inline bool HasAllFlags(TFlag mask, TFlag flag1, TOthers... others) { - return CombineFlags(flag1, CombineFlags(flag2, others...)); + return ::HasAllFlags(mask, ::CombineFlags(flag1, others...)); } //----------------------------------------------------------------------------- @@ -249,3 +270,12 @@ class PulseValueScope final //----------------------------------------------------------------------------- using StdBool = int8_t; + +//----------------------------------------------------------------------------- +// Constants +//----------------------------------------------------------------------------- + +struct Constants final: StaticBase +{ + static const size_t MaxInlineArgCount = 16; +}; diff --git a/ClearScriptV8/HighResolutionClock.cpp b/ClearScriptV8/HighResolutionClock.cpp index e915430b..b52e5cc3 100644 --- a/ClearScriptV8/HighResolutionClock.cpp +++ b/ClearScriptV8/HighResolutionClock.cpp @@ -7,18 +7,23 @@ // HighResolutionClock implementation //----------------------------------------------------------------------------- -void HighResolutionClock::SleepMilliseconds(double delay, bool precise) +double HighResolutionClock::SleepMilliseconds(double delay, bool precise) { + auto start = std::chrono::high_resolution_clock::now(); + auto end = start + std::chrono::duration(delay); + std::chrono::high_resolution_clock::time_point final; + if (!precise) { std::this_thread::sleep_for(std::chrono::duration(delay)); + final = std::chrono::high_resolution_clock::now(); } else { - auto start = std::chrono::high_resolution_clock::now(); - auto end = start + std::chrono::duration(delay); - while (std::chrono::high_resolution_clock::now() < end) std::this_thread::yield(); + while ((final = std::chrono::high_resolution_clock::now()) < end) std::this_thread::yield(); } + + return std::chrono::duration(final - end).count(); } //----------------------------------------------------------------------------- diff --git a/ClearScriptV8/HighResolutionClock.h b/ClearScriptV8/HighResolutionClock.h index 7cb1da1a..761751c3 100644 --- a/ClearScriptV8/HighResolutionClock.h +++ b/ClearScriptV8/HighResolutionClock.h @@ -11,7 +11,7 @@ struct HighResolutionClock final: StaticBase { static bool SetTimerResolution(); static void RestoreTimerResolution(); - static void SleepMilliseconds(double delay, bool precise); + static double SleepMilliseconds(double delay, bool precise); static double GetMillisecondsSinceUnixEpoch(); static double GetRelativeMilliseconds(); static double GetRelativeSeconds(); diff --git a/ClearScriptV8/HostObjectHolder.h b/ClearScriptV8/HostObjectHolder.h index 159add58..b2e3b83f 100644 --- a/ClearScriptV8/HostObjectHolder.h +++ b/ClearScriptV8/HostObjectHolder.h @@ -12,7 +12,10 @@ class HostObjectHolder public: virtual HostObjectHolder* Clone() const = 0; + virtual void* GetObject() const = 0; + virtual uint8_t GetSubtype() const = 0; + virtual uint16_t GetFlags() const = 0; virtual ~HostObjectHolder() {} }; diff --git a/ClearScriptV8/HostObjectHolderImpl.cpp b/ClearScriptV8/HostObjectHolderImpl.cpp index bfb8a8e8..e08672d5 100644 --- a/ClearScriptV8/HostObjectHolderImpl.cpp +++ b/ClearScriptV8/HostObjectHolderImpl.cpp @@ -7,8 +7,10 @@ // HostObjectHolderImpl implementation //----------------------------------------------------------------------------- -HostObjectHolderImpl::HostObjectHolderImpl(void* pvObject): - m_pvObject(pvObject) +HostObjectHolderImpl::HostObjectHolderImpl(void* pvObject, uint8_t subtype, uint16_t flags): + m_pvObject(pvObject), + m_Subtype(subtype), + m_Flags(flags) { } @@ -16,7 +18,21 @@ HostObjectHolderImpl::HostObjectHolderImpl(void* pvObject): HostObjectHolderImpl* HostObjectHolderImpl::Clone() const { - return new HostObjectHolderImpl(HostObjectUtil::GetInstance().AddRef(m_pvObject)); + return new HostObjectHolderImpl(HostObjectUtil::AddRef(m_pvObject), m_Subtype, m_Flags); +} + +//----------------------------------------------------------------------------- + +uint8_t HostObjectHolderImpl::GetSubtype() const +{ + return m_Subtype; +} + +//----------------------------------------------------------------------------- + +uint16_t HostObjectHolderImpl::GetFlags() const +{ + return m_Flags; } //----------------------------------------------------------------------------- @@ -30,5 +46,5 @@ void* HostObjectHolderImpl::GetObject() const HostObjectHolderImpl::~HostObjectHolderImpl() { - HostObjectUtil::GetInstance().Release(m_pvObject); + HostObjectUtil::Release(m_pvObject); } diff --git a/ClearScriptV8/HostObjectHolderImpl.h b/ClearScriptV8/HostObjectHolderImpl.h index c3b96e82..cdbf4701 100644 --- a/ClearScriptV8/HostObjectHolderImpl.h +++ b/ClearScriptV8/HostObjectHolderImpl.h @@ -13,14 +13,19 @@ class HostObjectHolderImpl final: public HostObjectHolder public: - explicit HostObjectHolderImpl(void* pvObject); + HostObjectHolderImpl(void* pvObject, uint8_t subtype, uint16_t flags); virtual HostObjectHolderImpl* Clone() const override; + virtual void* GetObject() const override; + virtual uint8_t GetSubtype() const override; + virtual uint16_t GetFlags() const override; ~HostObjectHolderImpl(); private: void* m_pvObject; + uint8_t m_Subtype; + uint16_t m_Flags; }; diff --git a/ClearScriptV8/HostObjectUtil.cpp b/ClearScriptV8/HostObjectUtil.cpp index 5d1f5ef3..2205eb8f 100644 --- a/ClearScriptV8/HostObjectUtil.cpp +++ b/ClearScriptV8/HostObjectUtil.cpp @@ -4,284 +4,452 @@ #include "ClearScriptV8Native.h" //----------------------------------------------------------------------------- -// HostObjectUtilNativeImpl +// HostObjectUtil implementation //----------------------------------------------------------------------------- -class HostObjectUtilNativeImpl: public IHostObjectUtil +void* HostObjectUtil::AddRef(void* pvObject) { - PROHIBIT_COPY(HostObjectUtilNativeImpl) - PROHIBIT_HEAP(HostObjectUtilNativeImpl) + return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, AddRefHostObject, pvObject); +} -public: +//----------------------------------------------------------------------------- - static IHostObjectUtil& GetInstance() noexcept - { - return s_Instance; - } +void HostObjectUtil::Release(void* pvObject) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(ReleaseHostObject, pvObject); +} - virtual void* AddRef(void* pvObject) override - { - return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, AddRefHostObject, pvObject); - } +//----------------------------------------------------------------------------- - virtual void Release(void* pvObject) override - { - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(ReleaseHostObject, pvObject); - } +HostObjectUtil::Invocability HostObjectUtil::GetInvocability(void* pvObject) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE(Invocability, GetHostObjectInvocability, pvObject); +} - virtual V8Value GetProperty(void* pvObject, const StdString& name) override - { - V8Value value(V8Value::Nonexistent); - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectNamedProperty, pvObject, name, value); - return value; - } +//----------------------------------------------------------------------------- - virtual V8Value GetProperty(void* pvObject, const StdString& name, bool& isCacheable) override - { - V8Value value(V8Value::Nonexistent); - StdBool tempIsCacheable; - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectNamedPropertyWithCacheability, pvObject, name, value, tempIsCacheable); - isCacheable = (tempIsCacheable != 0); - return value; - } +V8Value HostObjectUtil::GetProperty(void* pvObject, const StdString& name, bool& isCacheable) +{ + V8Value value(V8Value::Nonexistent); + StdBool tempIsCacheable; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectNamedProperty, pvObject, name, value, tempIsCacheable); + isCacheable = (tempIsCacheable != 0); + return value; +} - virtual void SetProperty(void* pvObject, const StdString& name, const V8Value& value) override - { - V8Value::Decoded decodedValue; - value.Decode(decodedValue); - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(SetHostObjectNamedProperty, pvObject, name, decodedValue); - } +//----------------------------------------------------------------------------- - virtual bool DeleteProperty(void* pvObject, const StdString& name) override - { - return V8_SPLIT_PROXY_MANAGED_INVOKE(StdBool, DeleteHostObjectNamedProperty, pvObject, name); - } +void HostObjectUtil::SetProperty(void* pvObject, const StdString& name, const V8Value& value) +{ + V8Value::Decoded decodedValue; + value.Decode(decodedValue); + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(SetHostObjectNamedProperty, pvObject, name, decodedValue); +} - virtual void GetPropertyNames(void* pvObject, std::vector& names) override - { - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectPropertyNames, pvObject, names); - } +//----------------------------------------------------------------------------- - virtual V8Value GetProperty(void* pvObject, int32_t index) override - { - V8Value value(V8Value::Nonexistent); - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectIndexedProperty, pvObject, index, value); - return value; - } +bool HostObjectUtil::DeleteProperty(void* pvObject, const StdString& name) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE(StdBool, DeleteHostObjectNamedProperty, pvObject, name); +} - virtual void SetProperty(void* pvObject, int32_t index, const V8Value& value) override - { - V8Value::Decoded decodedValue; - value.Decode(decodedValue); - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(SetHostObjectIndexedProperty, pvObject, index, decodedValue); - } +//----------------------------------------------------------------------------- - virtual bool DeleteProperty(void* pvObject, int32_t index) override - { - return V8_SPLIT_PROXY_MANAGED_INVOKE(StdBool, DeleteHostObjectIndexedProperty, pvObject, index); - } +void HostObjectUtil::GetPropertyNames(void* pvObject, std::vector& names) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectPropertyNames, pvObject, names); +} + +//----------------------------------------------------------------------------- + +V8Value HostObjectUtil::GetProperty(void* pvObject, int32_t index) +{ + V8Value value(V8Value::Nonexistent); + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectIndexedProperty, pvObject, index, value); + return value; +} + +//----------------------------------------------------------------------------- + +void HostObjectUtil::SetProperty(void* pvObject, int32_t index, const V8Value& value) +{ + V8Value::Decoded decodedValue; + value.Decode(decodedValue); + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(SetHostObjectIndexedProperty, pvObject, index, decodedValue); +} + +//----------------------------------------------------------------------------- + +bool HostObjectUtil::DeleteProperty(void* pvObject, int32_t index) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE(StdBool, DeleteHostObjectIndexedProperty, pvObject, index); +} + +//----------------------------------------------------------------------------- + +void HostObjectUtil::GetPropertyIndices(void* pvObject, std::vector& indices) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectPropertyIndices, pvObject, indices); +} + +//----------------------------------------------------------------------------- + +V8Value HostObjectUtil::Invoke(void* pvObject, bool asConstructor, size_t argCount, const V8Value* pArgs) +{ + V8Value result(V8Value::Nonexistent); - virtual void GetPropertyIndices(void* pvObject, std::vector& indices) override + if (argCount < 1) { - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectPropertyIndices, pvObject, indices); + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObject, pvObject, asConstructor, 0, nullptr, result); } - - virtual V8Value Invoke(void* pvObject, bool asConstructor, const std::vector& args) override + else if (argCount <= Constants::MaxInlineArgCount) { - V8Value result(V8Value::Nonexistent); + V8Value::Decoded decodedArgs[argCount]; - auto argCount = args.size(); - if (argCount < 1) + for (size_t index = 0; index < argCount; index++) { - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObject, pvObject, asConstructor, 0, nullptr, result); + pArgs[index].Decode(decodedArgs[index]); } - else - { - auto pArgs = args.data(); - - auto upDecodedArgs = std::make_unique(argCount); - auto pDecodedArgs = upDecodedArgs.get(); - for (size_t index = 0; index < argCount; index++) - { - pArgs[index].Decode(pDecodedArgs[index]); - } + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObject, pvObject, asConstructor, static_cast(argCount), decodedArgs, result); + } + else + { + auto upDecodedArgs = std::make_unique(argCount); + auto pDecodedArgs = upDecodedArgs.get(); - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObject, pvObject, asConstructor, static_cast(argCount), pDecodedArgs, result); + for (size_t index = 0; index < argCount; index++) + { + pArgs[index].Decode(pDecodedArgs[index]); } - return result; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObject, pvObject, asConstructor, static_cast(argCount), pDecodedArgs, result); } - virtual V8Value InvokeMethod(void* pvObject, const StdString& name, const std::vector& args) override + return result; +} + +//----------------------------------------------------------------------------- + +V8Value HostObjectUtil::InvokeMethod(void* pvObject, const StdString& name, size_t argCount, const V8Value* pArgs) +{ + V8Value result(V8Value::Nonexistent); + + if (argCount < 1) + { + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObjectMethod, pvObject, name, 0, nullptr, result); + } + else if (argCount <= Constants::MaxInlineArgCount) { - V8Value result(V8Value::Nonexistent); + V8Value::Decoded decodedArgs[argCount]; - auto argCount = args.size(); - if (argCount < 1) + for (size_t index = 0; index < argCount; index++) { - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObjectMethod, pvObject, name, 0, nullptr, result); + pArgs[index].Decode(decodedArgs[index]); } - else - { - auto pArgs = args.data(); - auto upDecodedArgs = std::make_unique(argCount); - auto pDecodedArgs = upDecodedArgs.get(); - - for (size_t index = 0; index < argCount; index++) - { - pArgs[index].Decode(pDecodedArgs[index]); - } + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObjectMethod, pvObject, name, static_cast(argCount), decodedArgs, result); + } + else + { + auto upDecodedArgs = std::make_unique(argCount); + auto pDecodedArgs = upDecodedArgs.get(); - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObjectMethod, pvObject, name, static_cast(argCount), pDecodedArgs, result); + for (size_t index = 0; index < argCount; index++) + { + pArgs[index].Decode(pDecodedArgs[index]); } - return result; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostObjectMethod, pvObject, name, static_cast(argCount), pDecodedArgs, result); } - virtual Invocability GetInvocability(void* pvObject) override - { - return V8_SPLIT_PROXY_MANAGED_INVOKE(Invocability, GetHostObjectInvocability, pvObject); - } + return result; +} - virtual V8Value GetEnumerator(void* pvObject) override - { - V8Value result(V8Value::Nonexistent); - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectEnumerator, pvObject, result); - return result; - } +//----------------------------------------------------------------------------- - virtual V8Value GetAsyncEnumerator(void* pvObject) override - { - V8Value result(V8Value::Nonexistent); - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectAsyncEnumerator, pvObject, result); - return result; - } +V8Value HostObjectUtil::GetEnumerator(void* pvObject) +{ + V8Value result(V8Value::Nonexistent); + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectEnumerator, pvObject, result); + return result; +} - virtual void* CreateV8ObjectCache() override - { - return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, CreateV8ObjectCache); - } +//----------------------------------------------------------------------------- - virtual void CacheV8Object(void* pvCache, void* pvObject, void* pvV8Object) override - { - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(CacheV8Object, pvCache, pvObject, pvV8Object); - } +V8Value HostObjectUtil::GetAsyncEnumerator(void* pvObject) +{ + V8Value result(V8Value::Nonexistent); + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetHostObjectAsyncEnumerator, pvObject, result); + return result; +} - virtual void* GetCachedV8Object(void* pvCache, void* pvObject) override - { - return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, GetCachedV8Object, pvCache, pvObject); - } +//----------------------------------------------------------------------------- - virtual void GetAllCachedV8Objects(void* pvCache, std::vector& v8ObjectPtrs) override - { - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(GetAllCachedV8Objects, pvCache, v8ObjectPtrs); - } +void* HostObjectUtil::CreateV8ObjectCache() +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, CreateV8ObjectCache); +} - virtual bool RemoveV8ObjectCacheEntry(void* pvCache, void* pvObject) override - { - return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(StdBool, RemoveV8ObjectCacheEntry, pvCache, pvObject); - } +//----------------------------------------------------------------------------- - virtual void* CreateDebugAgent(const StdString& name, const StdString& version, int32_t port, bool remote, DebugCallback&& callback) override - { - return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, CreateDebugAgent, name, version, port, remote, new V8DebugCallbackHandle(new DebugCallback(std::move(callback)))); - } +void HostObjectUtil::CacheV8Object(void* pvCache, void* pvObject, void* pvV8Object) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(CacheV8Object, pvCache, pvObject, pvV8Object); +} - virtual void SendDebugMessage(void* pvAgent, const StdString& content) override - { - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(SendDebugMessage, pvAgent, content); - } +//----------------------------------------------------------------------------- - virtual void DestroyDebugAgent(void* pvAgent) override - { - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(DestroyDebugAgent, pvAgent); - } +void* HostObjectUtil::GetCachedV8Object(void* pvCache, void* pvObject) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, GetCachedV8Object, pvCache, pvObject); +} - virtual void QueueNativeCallback(NativeCallback&& callback) override - { - BEGIN_V8_RWX_HOST_SCOPE - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(QueueNativeCallback, new NativeCallbackHandle(new NativeCallback(std::move(callback)))); - END_V8_RWX_HOST_SCOPE - } +//----------------------------------------------------------------------------- - virtual void* CreateNativeCallbackTimer(int32_t dueTime, int32_t period, NativeCallback&& callback) override - { - BEGIN_V8_RWX_HOST_SCOPE - return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, CreateNativeCallbackTimer, dueTime, period, new NativeCallbackHandle(new NativeCallback(std::move(callback)))); - END_V8_RWX_HOST_SCOPE - } +void HostObjectUtil::GetAllCachedV8Objects(void* pvCache, std::vector& v8ObjectPtrs) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(GetAllCachedV8Objects, pvCache, v8ObjectPtrs); +} - virtual bool ChangeNativeCallbackTimer(void* pvTimer, int32_t dueTime, int32_t period) override - { - BEGIN_V8_RWX_HOST_SCOPE - return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(StdBool, ChangeNativeCallbackTimer, pvTimer, dueTime, period); - END_V8_RWX_HOST_SCOPE - } +//----------------------------------------------------------------------------- + +bool HostObjectUtil::RemoveV8ObjectCacheEntry(void* pvCache, void* pvObject) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(StdBool, RemoveV8ObjectCacheEntry, pvCache, pvObject); +} + +//----------------------------------------------------------------------------- + +void* HostObjectUtil::CreateDebugAgent(const StdString& name, const StdString& version, int32_t port, bool remote, DebugCallback&& callback) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, CreateDebugAgent, name, version, port, remote, new V8DebugCallbackHandle(new DebugCallback(std::move(callback)))); +} + +//----------------------------------------------------------------------------- + +void HostObjectUtil::SendDebugMessage(void* pvAgent, const StdString& content) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(SendDebugMessage, pvAgent, content); +} + +//----------------------------------------------------------------------------- + +void HostObjectUtil::DestroyDebugAgent(void* pvAgent) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(DestroyDebugAgent, pvAgent); +} + +//----------------------------------------------------------------------------- + +void HostObjectUtil::QueueNativeCallback(NativeCallback&& callback) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(QueueNativeCallback, new NativeCallbackHandle(new NativeCallback(std::move(callback)))); +} + +//----------------------------------------------------------------------------- + +void* HostObjectUtil::CreateNativeCallbackTimer(int32_t dueTime, int32_t period, NativeCallback&& callback) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(void*, CreateNativeCallbackTimer, dueTime, period, new NativeCallbackHandle(new NativeCallback(std::move(callback)))); +} + +//----------------------------------------------------------------------------- + +bool HostObjectUtil::ChangeNativeCallbackTimer(void* pvTimer, int32_t dueTime, int32_t period) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(StdBool, ChangeNativeCallbackTimer, pvTimer, dueTime, period); +} + +//----------------------------------------------------------------------------- + +void HostObjectUtil::DestroyNativeCallbackTimer(void* pvTimer) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(DestroyNativeCallbackTimer, pvTimer); +} + +//----------------------------------------------------------------------------- - virtual void DestroyNativeCallbackTimer(void* pvTimer) override +StdString HostObjectUtil::LoadModule(const V8DocumentInfo& sourceDocumentInfo, const StdString& specifier, V8DocumentInfo& documentInfo, V8Value& exports) +{ + StdString resourceName; + StdString sourceMapUrl; + uint64_t uniqueId; + DocumentKind documentKind; + StdString code; + void* pvDocumentInfo; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(LoadModule, sourceDocumentInfo.GetDocumentInfo(), specifier, resourceName, sourceMapUrl, uniqueId, documentKind, code, pvDocumentInfo, exports); + + documentInfo = V8DocumentInfo(std::move(resourceName), std::move(sourceMapUrl), uniqueId, documentKind, pvDocumentInfo); + return code; +} + +//----------------------------------------------------------------------------- + +std::vector> HostObjectUtil::CreateModuleContext(const V8DocumentInfo& documentInfo) +{ + std::vector names; + std::vector values; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(CreateModuleContext, documentInfo.GetDocumentInfo(), names, values); + auto count = std::min(names.size(), values.size()); + + std::vector> context; + context.reserve(count); + for (size_t index = 0; index < count; index++) { - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID_NOTHROW(DestroyNativeCallbackTimer, pvTimer); + context.emplace_back(names[index], values[index]); } - virtual StdString LoadModule(const V8DocumentInfo& sourceDocumentInfo, const StdString& specifier, V8DocumentInfo& documentInfo, V8Value& exports) override + return context; +} + +//----------------------------------------------------------------------------- + +size_t HostObjectUtil::GetMaxScriptCacheSize() +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(int32_t, GetMaxScriptCacheSize); +} + +//----------------------------------------------------------------------------- + +size_t HostObjectUtil::GetMaxModuleCacheSize() +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(int32_t, GetMaxModuleCacheSize); +} + +//----------------------------------------------------------------------------- +// FastHostObjectUtil implementation +//----------------------------------------------------------------------------- + +V8Value FastHostObjectUtil::GetProperty(void* pvObject, const StdString& name, bool& isCacheable) +{ + V8Value::FastResult value; + StdBool tempIsCacheable; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetFastHostObjectNamedProperty, pvObject, name, value, tempIsCacheable); + isCacheable = (tempIsCacheable != 0); + return V8Value(value); +} + +//----------------------------------------------------------------------------- + +void FastHostObjectUtil::SetProperty(void* pvObject, const StdString& name, const V8Value& value) +{ + V8Value::FastArg fastValue; + value.Decode(fastValue); + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(SetFastHostObjectNamedProperty, pvObject, name, fastValue); +} + +//----------------------------------------------------------------------------- + +FastHostObjectUtil::PropertyFlags FastHostObjectUtil::QueryProperty(void* pvObject, const StdString& name) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE(PropertyFlags, QueryFastHostObjectNamedProperty, pvObject, name); +} + +//----------------------------------------------------------------------------- + +bool FastHostObjectUtil::DeleteProperty(void* pvObject, const StdString& name) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE(StdBool, DeleteFastHostObjectNamedProperty, pvObject, name); +} + +//----------------------------------------------------------------------------- + +void FastHostObjectUtil::GetPropertyNames(void* pvObject, std::vector& names) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetFastHostObjectPropertyNames, pvObject, names); +} + +//----------------------------------------------------------------------------- + +V8Value FastHostObjectUtil::GetProperty(void* pvObject, int32_t index) +{ + V8Value::FastResult value; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetFastHostObjectIndexedProperty, pvObject, index, value); + return V8Value(value); +} + +//----------------------------------------------------------------------------- + +void FastHostObjectUtil::SetProperty(void* pvObject, int32_t index, const V8Value& value) +{ + V8Value::FastArg fastValue; + value.Decode(fastValue); + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(SetFastHostObjectIndexedProperty, pvObject, index, fastValue); +} + +//----------------------------------------------------------------------------- + +FastHostObjectUtil::PropertyFlags FastHostObjectUtil::QueryProperty(void* pvObject, int32_t index) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE(PropertyFlags, QueryFastHostObjectIndexedProperty, pvObject, index); +} + +//----------------------------------------------------------------------------- + +bool FastHostObjectUtil::DeleteProperty(void* pvObject, int32_t index) +{ + return V8_SPLIT_PROXY_MANAGED_INVOKE(StdBool, DeleteFastHostObjectIndexedProperty, pvObject, index); +} + +//----------------------------------------------------------------------------- + +void FastHostObjectUtil::GetPropertyIndices(void* pvObject, std::vector& indices) +{ + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetFastHostObjectPropertyIndices, pvObject, indices); +} + +//----------------------------------------------------------------------------- + +V8Value FastHostObjectUtil::Invoke(void* pvObject, bool asConstructor, size_t argCount, const V8Value* pArgs) +{ + V8Value::FastResult result; + + if (argCount < 1) { - StdString resourceName; - StdString sourceMapUrl; - uint64_t uniqueId; - DocumentKind documentKind; - StdString code; - void* pvDocumentInfo; - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(LoadModule, sourceDocumentInfo.GetDocumentInfo(), specifier, resourceName, sourceMapUrl, uniqueId, documentKind, code, pvDocumentInfo, exports); - - documentInfo = V8DocumentInfo(std::move(resourceName), std::move(sourceMapUrl), uniqueId, documentKind, pvDocumentInfo); - return code; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeFastHostObject, pvObject, asConstructor, 0, nullptr, result); } - - virtual std::vector> CreateModuleContext(const V8DocumentInfo& documentInfo) override + else if (argCount <= Constants::MaxInlineArgCount) { - std::vector names; - std::vector values; - V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(CreateModuleContext, documentInfo.GetDocumentInfo(), names, values); - auto count = std::min(names.size(), values.size()); - - std::vector> context; - context.reserve(count); - for (size_t index = 0; index < count; index++) + V8Value::FastArg fastArgs[argCount]; + + for (size_t index = 0; index < argCount; index++) { - context.emplace_back(names[index], values[index]); + pArgs[index].Decode(fastArgs[index]); } - return context; - } - - virtual size_t GetMaxScriptCacheSize() override - { - return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(int32_t, GetMaxScriptCacheSize); + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeFastHostObject, pvObject, asConstructor, static_cast(argCount), fastArgs, result); } - - virtual size_t GetMaxModuleCacheSize() override + else { - return V8_SPLIT_PROXY_MANAGED_INVOKE_NOTHROW(int32_t, GetMaxModuleCacheSize); - } + auto upFastArgs = std::make_unique(argCount); + auto pFastArgs = upFastArgs.get(); -private: + for (size_t index = 0; index < argCount; index++) + { + pArgs[index].Decode(pFastArgs[index]); + } - HostObjectUtilNativeImpl() noexcept = default; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeFastHostObject, pvObject, asConstructor, static_cast(argCount), pFastArgs, result); + } - static HostObjectUtilNativeImpl s_Instance; -}; + return V8Value(result); +} //----------------------------------------------------------------------------- -HostObjectUtilNativeImpl HostObjectUtilNativeImpl::s_Instance; +V8Value FastHostObjectUtil::GetEnumerator(void* pvObject) +{ + V8Value::FastResult result; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetFastHostObjectEnumerator, pvObject, result); + return V8Value(result); +} -//----------------------------------------------------------------------------- -// HostObjectUtil implementation //----------------------------------------------------------------------------- -IHostObjectUtil& HostObjectUtil::GetInstance() noexcept +V8Value FastHostObjectUtil::GetAsyncEnumerator(void* pvObject) { - return HostObjectUtilNativeImpl::GetInstance(); + V8Value::FastResult result; + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(GetFastHostObjectAsyncEnumerator, pvObject, result); + return V8Value(result); } diff --git a/ClearScriptV8/HostObjectUtil.h b/ClearScriptV8/HostObjectUtil.h index 3fdbe321..228f33af 100644 --- a/ClearScriptV8/HostObjectUtil.h +++ b/ClearScriptV8/HostObjectUtil.h @@ -10,27 +10,13 @@ struct V8DocumentInfo; //----------------------------------------------------------------------------- -// IHostObjectUtil +// HostObjectUtil //----------------------------------------------------------------------------- -struct IHostObjectUtil +struct HostObjectUtil final: StaticBase { - virtual void* AddRef(void* pvObject) = 0; - virtual void Release(void* pvObject) = 0; - - virtual V8Value GetProperty(void* pvObject, const StdString& name) = 0; - virtual V8Value GetProperty(void* pvObject, const StdString& name, bool& isCacheable) = 0; - virtual void SetProperty(void* pvObject, const StdString& name, const V8Value& value) = 0; - virtual bool DeleteProperty(void* pvObject, const StdString& name) = 0; - virtual void GetPropertyNames(void* pvObject, std::vector& names) = 0; - - virtual V8Value GetProperty(void* pvObject, int32_t index) = 0; - virtual void SetProperty(void* pvObject, int32_t index, const V8Value& value) = 0; - virtual bool DeleteProperty(void* pvObject, int32_t index) = 0; - virtual void GetPropertyIndices(void* pvObject, std::vector& indices) = 0; - - virtual V8Value Invoke(void* pvObject, bool asConstructor, const std::vector& args) = 0; - virtual V8Value InvokeMethod(void* pvObject, const StdString& name, const std::vector& args) = 0; + static void* AddRef(void* pvObject); + static void Release(void* pvObject); enum class Invocability : int32_t { @@ -41,16 +27,29 @@ struct IHostObjectUtil DefaultProperty }; - virtual Invocability GetInvocability(void* pvObject) = 0; + static Invocability GetInvocability(void* pvObject); + + static V8Value GetProperty(void* pvObject, const StdString& name, bool& isCacheable); + static void SetProperty(void* pvObject, const StdString& name, const V8Value& value); + static bool DeleteProperty(void* pvObject, const StdString& name); + static void GetPropertyNames(void* pvObject, std::vector& names); + + static V8Value GetProperty(void* pvObject, int32_t index); + static void SetProperty(void* pvObject, int32_t index, const V8Value& value); + static bool DeleteProperty(void* pvObject, int32_t index); + static void GetPropertyIndices(void* pvObject, std::vector& indices); + + static V8Value Invoke(void* pvObject, bool asConstructor, size_t argCount, const V8Value* pArgs); + static V8Value InvokeMethod(void* pvObject, const StdString& name, size_t argCount, const V8Value* pArgs); - virtual V8Value GetEnumerator(void* pvObject) = 0; - virtual V8Value GetAsyncEnumerator(void* pvObject) = 0; + static V8Value GetEnumerator(void* pvObject); + static V8Value GetAsyncEnumerator(void* pvObject); - virtual void* CreateV8ObjectCache() = 0; - virtual void CacheV8Object(void* pvCache, void* pvObject, void* pvV8Object) = 0; - virtual void* GetCachedV8Object(void* pvCache, void* pvObject) = 0; - virtual void GetAllCachedV8Objects(void* pvCache, std::vector& v8ObjectPtrs) = 0; - virtual bool RemoveV8ObjectCacheEntry(void* pvCache, void* pvObject) = 0; + static void* CreateV8ObjectCache(); + static void CacheV8Object(void* pvCache, void* pvObject, void* pvV8Object); + static void* GetCachedV8Object(void* pvCache, void* pvObject); + static void GetAllCachedV8Objects(void* pvCache, std::vector& v8ObjectPtrs); + static bool RemoveV8ObjectCacheEntry(void* pvCache, void* pvObject); enum class DebugDirective { @@ -60,28 +59,54 @@ struct IHostObjectUtil }; using DebugCallback = std::function; - virtual void* CreateDebugAgent(const StdString& name, const StdString& version, int32_t port, bool remote, DebugCallback&& callback) = 0; - virtual void SendDebugMessage(void* pvAgent, const StdString& content) = 0; - virtual void DestroyDebugAgent(void* pvAgent) = 0; + static void* CreateDebugAgent(const StdString& name, const StdString& version, int32_t port, bool remote, DebugCallback&& callback); + static void SendDebugMessage(void* pvAgent, const StdString& content); + static void DestroyDebugAgent(void* pvAgent); using NativeCallback = std::function; - virtual void QueueNativeCallback(NativeCallback&& callback) = 0; - virtual void* CreateNativeCallbackTimer(int32_t dueTime, int32_t period, NativeCallback&& callback) = 0; - virtual bool ChangeNativeCallbackTimer(void* pvTimer, int32_t dueTime, int32_t period) = 0; - virtual void DestroyNativeCallbackTimer(void* pvTimer) = 0; + static void QueueNativeCallback(NativeCallback&& callback); + static void* CreateNativeCallbackTimer(int32_t dueTime, int32_t period, NativeCallback&& callback); + static bool ChangeNativeCallbackTimer(void* pvTimer, int32_t dueTime, int32_t period); + static void DestroyNativeCallbackTimer(void* pvTimer); - virtual StdString LoadModule(const V8DocumentInfo& sourceDocumentInfo, const StdString& specifier, V8DocumentInfo& documentInfo, V8Value& exports) = 0; - virtual std::vector> CreateModuleContext(const V8DocumentInfo& documentInfo) = 0; + static StdString LoadModule(const V8DocumentInfo& sourceDocumentInfo, const StdString& specifier, V8DocumentInfo& documentInfo, V8Value& exports); + static std::vector> CreateModuleContext(const V8DocumentInfo& documentInfo); - virtual size_t GetMaxScriptCacheSize() = 0; - virtual size_t GetMaxModuleCacheSize() = 0; + static size_t GetMaxScriptCacheSize(); + static size_t GetMaxModuleCacheSize(); }; //----------------------------------------------------------------------------- -// HostObjectUtil +// FastHostObjectUtil //----------------------------------------------------------------------------- -struct HostObjectUtil final: StaticBase +struct FastHostObjectUtil final: StaticBase { - static IHostObjectUtil& GetInstance() noexcept; + enum class PropertyFlags : int32_t + { + // IMPORTANT: maintain bitwise equivalence with managed enum V8.FastProxy.V8FastHostPropertyFlags + None = 0, + Available = 0x00000001, + Cacheable = 0x00000002, + Enumerable = 0x00000004, + Writable = 0x00000008, + Deletable = 0x00000010 + }; + + static V8Value GetProperty(void* pvObject, const StdString& name, bool& isCacheable); + static void SetProperty(void* pvObject, const StdString& name, const V8Value& value); + static PropertyFlags QueryProperty(void* pvObject, const StdString& name); + static bool DeleteProperty(void* pvObject, const StdString& name); + static void GetPropertyNames(void* pvObject, std::vector& names); + + static V8Value GetProperty(void* pvObject, int32_t index); + static void SetProperty(void* pvObject, int32_t index, const V8Value& value); + static PropertyFlags QueryProperty(void* pvObject, int32_t index); + static bool DeleteProperty(void* pvObject, int32_t index); + static void GetPropertyIndices(void* pvObject, std::vector& indices); + + static V8Value Invoke(void* pvObject, bool asConstructor, size_t argCount, const V8Value* pArgs); + + static V8Value GetEnumerator(void* pvObject); + static V8Value GetAsyncEnumerator(void* pvObject); }; diff --git a/ClearScriptV8/StdString.h b/ClearScriptV8/StdString.h index fccf8283..983e09ce 100644 --- a/ClearScriptV8/StdString.h +++ b/ClearScriptV8/StdString.h @@ -221,8 +221,27 @@ class StdString final static Value GetValue(v8::Isolate* pIsolate, v8::Local hValue) { - v8::String::Value value(pIsolate, hValue); - return Value(EnsureNonNull(reinterpret_cast(*value)), value.length()); + Value value; + if (hValue.IsEmpty()) + { + return value; + } + + v8::Local hString; + if (hValue->IsString()) + { + hString = hValue.As(); + } + else if (!hValue->ToString(pIsolate->GetCurrentContext()).ToLocal(&hString)) + { + return value; + } + + auto length = hString->Length(); + value.resize(length); + + hString->WriteV2(pIsolate, 0, length, reinterpret_cast(value.data())); + return value; } static Value GetValue(const v8_inspector::StringView& stringView); diff --git a/ClearScriptV8/Timer.h b/ClearScriptV8/Timer.h index 403c5c2c..00d9688f 100644 --- a/ClearScriptV8/Timer.h +++ b/ClearScriptV8/Timer.h @@ -17,7 +17,7 @@ class Timer final: public WeakRefTarget m_Func(std::move(func)) { auto wrTimer = CreateWeakRef(); - IHostObjectUtil::NativeCallback callback = [wrTimer] () + HostObjectUtil::NativeCallback callback = [wrTimer] () { auto spTimer = wrTimer.GetTarget(); if (!spTimer.IsEmpty()) @@ -26,17 +26,17 @@ class Timer final: public WeakRefTarget } }; - m_pvTimer = HostObjectUtil::GetInstance().CreateNativeCallbackTimer(-1, -1, std::move(callback)); + m_pvTimer = HostObjectUtil::CreateNativeCallbackTimer(-1, -1, std::move(callback)); } void Start() { - HostObjectUtil::GetInstance().ChangeNativeCallbackTimer(m_pvTimer, m_DueTime, m_Period); + HostObjectUtil::ChangeNativeCallbackTimer(m_pvTimer, m_DueTime, m_Period); } ~Timer() { - HostObjectUtil::GetInstance().DestroyNativeCallbackTimer(m_pvTimer); + HostObjectUtil::DestroyNativeCallbackTimer(m_pvTimer); } private: diff --git a/ClearScriptV8/V8Context.h b/ClearScriptV8/V8Context.h index 7e688b5f..949cbca1 100644 --- a/ClearScriptV8/V8Context.h +++ b/ClearScriptV8/V8Context.h @@ -21,8 +21,8 @@ class V8Context: public WeakRefTarget, public IV8Entity AwaitDebuggerAndPauseOnStart = 0x00000008, EnableDateTimeConversion = 0x00000010, EnableDynamicModuleImports = 0x00000020, - MarshalUnsafeLongAsBigInt = 0x00000040, - MarshalAllLongAsBigInt = 0x00000080, + MarshalUnsafeInt64AsBigInt = 0x00000040, + MarshalAllInt64AsBigInt = 0x00000080, EnableTaskPromiseConversion = 0x00000100, EnableValueTaskPromiseConversion = 0x00000200, UseCaseInsensitiveMemberBinding = 0x00000400, @@ -30,7 +30,8 @@ class V8Context: public WeakRefTarget, public IV8Entity HideHostExceptions = 0x00001000, UseSynchronizationContexts = 0x00002000, AddPerformanceObject = 0x00004000, - SetTimerResolution = 0x00008000 + SetTimerResolution = 0x00008000, + EnableArrayConversion = 0x00010000 }; struct Options final @@ -57,8 +58,11 @@ class V8Context: public WeakRefTarget, public IV8Entity virtual size_t GetMaxIsolateStackUsage() = 0; virtual void SetMaxIsolateStackUsage(size_t value) = 0; - typedef void CallWithLockCallback(void* pvArg); - virtual void CallWithLock(CallWithLockCallback* pCallback, void* pvArg) = 0; + typedef void CallWithLockCallback(void* pvAction); + virtual void CallWithLock(CallWithLockCallback* pCallback, void* pvAction) = 0; + + typedef void CallWithLockWithArgCallback(void* pvAction, void* pvArg); + virtual void CallWithLockWithArg(CallWithLockWithArgCallback* pCallback, void* pvAction, void* pvArg) = 0; virtual V8Value GetRootObject() = 0; virtual void SetGlobalProperty(const StdString& name, const V8Value& value, bool globalMembers) = 0; diff --git a/ClearScriptV8/V8ContextImpl.cpp b/ClearScriptV8/V8ContextImpl.cpp index e96472f2..0256a53b 100644 --- a/ClearScriptV8/V8ContextImpl.cpp +++ b/ClearScriptV8/V8ContextImpl.cpp @@ -206,38 +206,10 @@ inline bool TryGetValueAsNumber(v8::Local hContext, const v8::Local //----------------------------------------------------------------------------- -inline bool TryGetValueAsAnyNumber(v8::Local hContext, const v8::Local& hValue, double& value) -{ - if (hValue.IsEmpty()) - { - return false; - } - - FROM_MAYBE_TRY - - if (hValue->IsInt32()) - { - value = FROM_MAYBE(hValue->Int32Value(hContext)); - return true; - } - - if (hValue->IsUint32()) - { - value = FROM_MAYBE(hValue->Uint32Value(hContext)); - return true; - } - - FROM_MAYBE_CATCH_CONSUME - - return TryGetValueAsNumber(hContext, hValue, value); -} - -//----------------------------------------------------------------------------- - template -static V8ContextImpl* GetContextImplFromHolder(const TInfo& info) +inline V8ContextImpl* GetContextImplFromHolder(const TInfo& info) { - auto hHolder = info.Holder(); + auto hHolder = info.HolderV2(); if (!hHolder.IsEmpty() && hHolder->InternalFieldCount() > 0) { auto hField = hHolder->GetInternalField(0); @@ -253,12 +225,61 @@ static V8ContextImpl* GetContextImplFromHolder(const TInfo& info) //----------------------------------------------------------------------------- template -static V8ContextImpl* GetContextImplFromData(const TInfo& info) +inline V8ContextImpl* GetContextImplFromData(const TInfo& info) { auto hContextImpl = ::ValueAsExternal(info.Data()); return !hContextImpl.IsEmpty() ? static_cast(hContextImpl->Value()) : nullptr; } +//----------------------------------------------------------------------------- + +template +inline void SetIfSameType(TVariable& /*variable*/, TValue /*value*/) +{ +} + +//----------------------------------------------------------------------------- + +template +inline void SetIfSameType(TVariable& variable, TVariable value) +{ + variable = value; +} + +//----------------------------------------------------------------------------- + +template +inline v8::Intercepted GetCallbackStatus(const T& /*value*/) +{ + return v8::Intercepted::kYes; +} + +//----------------------------------------------------------------------------- + +template +inline v8::Intercepted GetCallbackStatus(const v8::Local& hValue) +{ + return hValue.IsEmpty() ? v8::Intercepted::kNo : v8::Intercepted::kYes; +} + +//----------------------------------------------------------------------------- + +template +inline void ProcessCallbackResult(const TResult& result, const TInfo& info, TStatus& status) +{ + ::SetIfSameType(status, ::GetCallbackStatus(result)); + info.GetReturnValue().Set(result); +} + +//----------------------------------------------------------------------------- + +template +inline void ProcessVoidCallbackResult(const TInfo& info, TStatus& status) +{ + IGNORE_UNUSED(info); + ::SetIfSameType(status, v8::Intercepted::kYes); +} + //----------------------------------------------------------------------------- // V8ContextImpl implementation //----------------------------------------------------------------------------- @@ -319,10 +340,28 @@ static V8ContextImpl* GetContextImplFromData(const TInfo& info) #define CALLBACK_RETURN(RESULT) \ BEGIN_COMPOUND_MACRO \ - info.GetReturnValue().Set(RESULT); \ + ::ProcessCallbackResult(RESULT, info, t_CallbackStatus); \ + return; \ + END_COMPOUND_MACRO + +#define CALLBACK_RETURN_VOID() \ + BEGIN_COMPOUND_MACRO \ + ::ProcessVoidCallbackResult(info, t_CallbackStatus); \ return; \ END_COMPOUND_MACRO +#define CALLBACK_ENTER \ + auto t_CallbackStatus = v8::Intercepted::kNo; \ + ([&] () noexcept -> void \ + { \ + +#define CALLBACK_EXIT \ + } \ + )(); \ + return t_CallbackStatus; + +constexpr enum class DummyCallbackStatus {} t_CallbackStatus {}; + //----------------------------------------------------------------------------- static std::atomic s_InstanceCount(0); @@ -339,15 +378,15 @@ V8ContextImpl::V8ContextImpl(V8IsolateImpl* pIsolateImpl, const StdString& name) V8ContextImpl::V8ContextImpl(SharedPtr&& spIsolateImpl, const StdString& name, const Options& options): m_Name(name), m_spIsolateImpl(std::move(spIsolateImpl)), - m_DateTimeConversionEnabled(HasFlag(options.Flags, Flags::EnableDateTimeConversion)), - m_HideHostExceptions(HasFlag(options.Flags, Flags::HideHostExceptions)), + m_DateTimeConversionEnabled(::HasFlag(options.Flags, Flags::EnableDateTimeConversion)), + m_HideHostExceptions(::HasFlag(options.Flags, Flags::HideHostExceptions)), m_AllowHostObjectConstructorCall(false), m_ChangedTimerResolution(false), m_pvV8ObjectCache(nullptr) { VerifyNotOutOfMemory(); - if (HasFlags(options.Flags, Flags::AddPerformanceObject, Flags::SetTimerResolution)) + if (::HasAllFlags(options.Flags, Flags::AddPerformanceObject, Flags::SetTimerResolution)) { m_ChangedTimerResolution = HighResolutionClock::SetTimerResolution(); } @@ -358,7 +397,7 @@ V8ContextImpl::V8ContextImpl(SharedPtr&& spIsolateImpl, const Std BEGIN_ISOLATE_SCOPE FROM_MAYBE_TRY - if (HasFlag(options.Flags, Flags::DisableGlobalMembers)) + if (::HasFlag(options.Flags, Flags::DisableGlobalMembers)) { m_hContext = CreatePersistent(CreateContext()); } @@ -372,14 +411,10 @@ V8ContextImpl::V8ContextImpl(SharedPtr&& spIsolateImpl, const Std m_hContext = CreatePersistent(CreateContext(nullptr, hGlobalTemplate)); if (!m_hContext.IsEmpty()) { - auto hGlobalProxy = m_hContext->Global(); - if (!hGlobalProxy.IsEmpty()) + auto hGlobal = m_hContext->Global(); + if (!hGlobal.IsEmpty() && (hGlobal->InternalFieldCount() > 0)) { - auto hGlobal = ::ValueAsObject(hGlobalProxy->GetPrototype()); - if (!hGlobal.IsEmpty() && (hGlobal->InternalFieldCount() > 0)) - { - hGlobal->SetAlignedPointerInInternalField(0, this); - } + hGlobal->SetAlignedPointerInInternalField(0, this); } } } @@ -391,10 +426,12 @@ V8ContextImpl::V8ContextImpl(SharedPtr&& spIsolateImpl, const Std auto hContextImpl = CreateExternal(this); - v8::Local hGetIteratorFunction; - v8::Local hGetAsyncIteratorFunction; - v8::Local hGetJsonFunction; - v8::Local hToFunctionFunction; + v8::Local hGetHostObjectIteratorFunction; + v8::Local hGetHostObjectAsyncIteratorFunction; + v8::Local hGetFastHostObjectIteratorFunction; + v8::Local hGetFastHostObjectAsyncIteratorFunction; + v8::Local hGetHostObjectJsonFunction; + v8::Local hHostDelegateToFunctionFunction; BEGIN_CONTEXT_SCOPE @@ -403,6 +440,13 @@ V8ContextImpl::V8ContextImpl(SharedPtr&& spIsolateImpl, const Std m_hIsHostObjectKey = CreatePersistent(CreateSymbol()); ASSERT_EVAL(FROM_MAYBE(m_hContext->Global()->Set(m_hContext, CreateString("isHostObjectKey"), m_hIsHostObjectKey))); + m_hModuleResultKey = CreatePersistent(CreateSymbol()); + ASSERT_EVAL(FROM_MAYBE(m_hContext->Global()->Set(m_hContext, CreateString("moduleResultKey"), m_hModuleResultKey))); + + ASSERT_EVAL(FROM_MAYBE(m_hContext->Global()->Set(m_hContext, CreateString("getPromiseState"), FROM_MAYBE(v8::Function::New(m_hContext, GetPromiseStateCallback, hContextImpl))))); + ASSERT_EVAL(FROM_MAYBE(m_hContext->Global()->Set(m_hContext, CreateString("getPromiseResult"), FROM_MAYBE(v8::Function::New(m_hContext, GetPromiseResultCallback, hContextImpl))))); + + m_hMissingPropertyValue = CreatePersistent(CreateSymbol()); m_hHostExceptionKey = CreatePersistent(CreateString("hostException")); m_hCacheKey = CreatePersistent(CreatePrivate()); m_hAccessTokenKey = CreatePersistent(CreatePrivate()); @@ -413,22 +457,25 @@ V8ContextImpl::V8ContextImpl(SharedPtr&& spIsolateImpl, const Std m_hPropertyValueNotInvocable = CreatePersistent(CreateString("The property value does not support invocation")); m_hInvalidModuleRequest = CreatePersistent(CreateString("Invalid module load request")); m_hConstructorKey = CreatePersistent(CreateString("constructor")); + m_hSetModuleResultKey = CreatePersistent(CreateString("setResult")); - hGetIteratorFunction = CreateFunctionTemplate(GetHostObjectIterator, hContextImpl); - hGetAsyncIteratorFunction = CreateFunctionTemplate(GetHostObjectAsyncIterator, hContextImpl); - hGetJsonFunction = CreateFunctionTemplate(GetHostObjectJson, hContextImpl); - hToFunctionFunction = CreateFunctionTemplate(CreateFunctionForHostDelegate, hContextImpl); + hGetHostObjectIteratorFunction = CreateFunctionTemplate(GetHostObjectIterator, hContextImpl); + hGetHostObjectAsyncIteratorFunction = CreateFunctionTemplate(GetHostObjectAsyncIterator, hContextImpl); + hGetFastHostObjectIteratorFunction = CreateFunctionTemplate(GetFastHostObjectIterator, hContextImpl); + hGetFastHostObjectAsyncIteratorFunction = CreateFunctionTemplate(GetFastHostObjectAsyncIterator, hContextImpl); + hGetHostObjectJsonFunction = CreateFunctionTemplate(GetHostObjectJson, hContextImpl); + hHostDelegateToFunctionFunction = CreateFunctionTemplate(CreateFunctionForHostDelegate, hContextImpl); m_hAccessToken = CreatePersistent(CreateObject()); m_hFlushFunction = CreatePersistent(FROM_MAYBE(v8::Function::New(m_hContext, FlushCallback))); m_hTerminationException = CreatePersistent(v8::Exception::Error(CreateString("Script execution was interrupted"))); - if (HasFlag(options.Flags, Flags::AddPerformanceObject)) + if (::HasFlag(options.Flags, Flags::AddPerformanceObject)) { auto hPerformance = CreateObject(); - ASSERT_EVAL(FROM_MAYBE(hPerformance->DefineOwnProperty(m_hContext, CreateString("timeOrigin"), CreateNumber(timeOrigin), CombineFlags(v8::ReadOnly, v8::DontDelete)))); - ASSERT_EVAL(FROM_MAYBE(hPerformance->DefineOwnProperty(m_hContext, CreateString("now"), FROM_MAYBE(v8::Function::New(m_hContext, PerformanceNowCallback, hContextImpl)), CombineFlags(v8::ReadOnly, v8::DontDelete)))); - ASSERT_EVAL(FROM_MAYBE(hPerformance->DefineOwnProperty(m_hContext, CreateString("sleep"), FROM_MAYBE(v8::Function::New(m_hContext, PerformanceSleepCallback, hContextImpl)), CombineFlags(v8::ReadOnly, v8::DontDelete)))); + ASSERT_EVAL(FROM_MAYBE(hPerformance->DefineOwnProperty(m_hContext, CreateString("timeOrigin"), CreateNumber(timeOrigin), ::CombineFlags(v8::ReadOnly, v8::DontDelete)))); + ASSERT_EVAL(FROM_MAYBE(hPerformance->DefineOwnProperty(m_hContext, CreateString("now"), FROM_MAYBE(v8::Function::New(m_hContext, PerformanceNowCallback, hContextImpl)), ::CombineFlags(v8::ReadOnly, v8::DontDelete)))); + ASSERT_EVAL(FROM_MAYBE(hPerformance->DefineOwnProperty(m_hContext, CreateString("sleep"), FROM_MAYBE(v8::Function::New(m_hContext, PerformanceSleepCallback, hContextImpl)), ::CombineFlags(v8::ReadOnly, v8::DontDelete)))); ASSERT_EVAL(FROM_MAYBE(m_hContext->Global()->DefineOwnProperty(m_hContext, CreateString("Performance"), hPerformance, v8::DontEnum))); } @@ -441,18 +488,18 @@ V8ContextImpl::V8ContextImpl(SharedPtr&& spIsolateImpl, const Std m_hHostObjectTemplate->SetCallHandler(HostObjectConstructorCallHandler, hContextImpl); m_hHostObjectTemplate->InstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyNames, hContextImpl, v8::PropertyHandlerFlags::kNone)); m_hHostObjectTemplate->InstanceTemplate()->SetHandler(v8::IndexedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyIndices, hContextImpl)); - m_hHostObjectTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetIteratorFunction); - m_hHostObjectTemplate->PrototypeTemplate()->Set(GetAsyncIteratorSymbol(), hGetAsyncIteratorFunction); - m_hHostObjectTemplate->PrototypeTemplate()->Set(hToJSON, hGetJsonFunction, CombineFlags(v8::ReadOnly, v8::DontDelete, v8::DontEnum)); + m_hHostObjectTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetHostObjectIteratorFunction); + m_hHostObjectTemplate->PrototypeTemplate()->Set(GetAsyncIteratorSymbol(), hGetHostObjectAsyncIteratorFunction); + m_hHostObjectTemplate->PrototypeTemplate()->Set(hToJSON, hGetHostObjectJsonFunction, ::CombineFlags(v8::ReadOnly, v8::DontDelete, v8::DontEnum)); m_hHostInvocableTemplate = CreatePersistent(CreateFunctionTemplate()); m_hHostInvocableTemplate->SetClassName(CreateString("HostInvocable")); m_hHostInvocableTemplate->SetCallHandler(HostObjectConstructorCallHandler, hContextImpl); m_hHostInvocableTemplate->InstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyNames, hContextImpl, v8::PropertyHandlerFlags::kNone)); m_hHostInvocableTemplate->InstanceTemplate()->SetHandler(v8::IndexedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyIndices, hContextImpl)); - m_hHostInvocableTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetIteratorFunction); - m_hHostInvocableTemplate->PrototypeTemplate()->Set(GetAsyncIteratorSymbol(), hGetAsyncIteratorFunction); - m_hHostInvocableTemplate->PrototypeTemplate()->Set(hToJSON, hGetJsonFunction, CombineFlags(v8::ReadOnly, v8::DontDelete, v8::DontEnum)); + m_hHostInvocableTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetHostObjectIteratorFunction); + m_hHostInvocableTemplate->PrototypeTemplate()->Set(GetAsyncIteratorSymbol(), hGetHostObjectAsyncIteratorFunction); + m_hHostInvocableTemplate->PrototypeTemplate()->Set(hToJSON, hGetHostObjectJsonFunction, ::CombineFlags(v8::ReadOnly, v8::DontDelete, v8::DontEnum)); m_hHostInvocableTemplate->InstanceTemplate()->SetCallAsFunctionHandler(InvokeHostObject, hContextImpl); m_hHostDelegateTemplate = CreatePersistent(CreateFunctionTemplate()); @@ -460,20 +507,39 @@ V8ContextImpl::V8ContextImpl(SharedPtr&& spIsolateImpl, const Std m_hHostDelegateTemplate->SetCallHandler(HostObjectConstructorCallHandler, hContextImpl); m_hHostDelegateTemplate->InstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyNames, hContextImpl, v8::PropertyHandlerFlags::kNone)); m_hHostDelegateTemplate->InstanceTemplate()->SetHandler(v8::IndexedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyIndices, hContextImpl)); - m_hHostDelegateTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetIteratorFunction); - m_hHostDelegateTemplate->PrototypeTemplate()->Set(GetAsyncIteratorSymbol(), hGetAsyncIteratorFunction); - m_hHostDelegateTemplate->PrototypeTemplate()->Set(hToJSON, hGetJsonFunction, CombineFlags(v8::ReadOnly, v8::DontDelete, v8::DontEnum)); + m_hHostDelegateTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetHostObjectIteratorFunction); + m_hHostDelegateTemplate->PrototypeTemplate()->Set(GetAsyncIteratorSymbol(), hGetHostObjectAsyncIteratorFunction); + m_hHostDelegateTemplate->PrototypeTemplate()->Set(hToJSON, hGetHostObjectJsonFunction, ::CombineFlags(v8::ReadOnly, v8::DontDelete, v8::DontEnum)); m_hHostDelegateTemplate->InstanceTemplate()->SetCallAsFunctionHandler(InvokeHostObject, hContextImpl); m_hHostDelegateTemplate->InstanceTemplate()->SetHostDelegate(); // instructs our patched V8 typeof implementation to return "function" - m_hHostDelegateTemplate->PrototypeTemplate()->Set(CreateString("toFunction"), hToFunctionFunction); - - m_pvV8ObjectCache = HostObjectUtil::GetInstance().CreateV8ObjectCache(); + m_hHostDelegateTemplate->PrototypeTemplate()->Set(CreateString("toFunction"), hHostDelegateToFunctionFunction); + + m_hFastHostObjectTemplate = CreatePersistent(CreateFunctionTemplate()); + m_hFastHostObjectTemplate->SetClassName(CreateString("FastHostObject")); + m_hFastHostObjectTemplate->SetCallHandler(HostObjectConstructorCallHandler, hContextImpl); + m_hFastHostObjectTemplate->InstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration(GetFastHostObjectProperty, SetFastHostObjectProperty, QueryFastHostObjectProperty, DeleteFastHostObjectProperty, GetFastHostObjectPropertyNames, hContextImpl, v8::PropertyHandlerFlags::kNone)); + m_hFastHostObjectTemplate->InstanceTemplate()->SetHandler(v8::IndexedPropertyHandlerConfiguration(GetFastHostObjectProperty, SetFastHostObjectProperty, QueryFastHostObjectProperty, DeleteFastHostObjectProperty, GetFastHostObjectPropertyIndices, hContextImpl)); + m_hFastHostObjectTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetFastHostObjectIteratorFunction); + m_hFastHostObjectTemplate->PrototypeTemplate()->Set(GetAsyncIteratorSymbol(), hGetFastHostObjectAsyncIteratorFunction); + + m_hFastHostFunctionTemplate = CreatePersistent(CreateFunctionTemplate()); + m_hFastHostFunctionTemplate->SetClassName(CreateString("FastHostFunction")); + m_hFastHostFunctionTemplate->SetCallHandler(HostObjectConstructorCallHandler, hContextImpl); + m_hFastHostFunctionTemplate->InstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration(GetFastHostObjectProperty, SetFastHostObjectProperty, QueryFastHostObjectProperty, DeleteFastHostObjectProperty, GetFastHostObjectPropertyNames, hContextImpl, v8::PropertyHandlerFlags::kNone)); + m_hFastHostFunctionTemplate->InstanceTemplate()->SetHandler(v8::IndexedPropertyHandlerConfiguration(GetFastHostObjectProperty, SetFastHostObjectProperty, QueryFastHostObjectProperty, DeleteFastHostObjectProperty, GetFastHostObjectPropertyIndices, hContextImpl)); + m_hFastHostFunctionTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetFastHostObjectIteratorFunction); + m_hFastHostFunctionTemplate->PrototypeTemplate()->Set(GetAsyncIteratorSymbol(), hGetFastHostObjectAsyncIteratorFunction); + m_hFastHostFunctionTemplate->InstanceTemplate()->SetCallAsFunctionHandler(InvokeFastHostObject, hContextImpl); + m_hFastHostFunctionTemplate->InstanceTemplate()->SetHostDelegate(); // instructs our patched V8 typeof implementation to return "function" + m_hFastHostFunctionTemplate->PrototypeTemplate()->Set(CreateString("toFunction"), hHostDelegateToFunctionFunction); + + m_pvV8ObjectCache = HostObjectUtil::CreateV8ObjectCache(); m_spIsolateImpl->AddContext(this, options); FROM_MAYBE_CATCH Teardown(); - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The V8 runtime cannot initialize the script engine because a script exception is pending")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The V8 runtime cannot initialize the script engine because a script exception is pending")), false); FROM_MAYBE_END END_ISOLATE_SCOPE @@ -532,13 +598,26 @@ void V8ContextImpl::SetMaxIsolateStackUsage(size_t value) //----------------------------------------------------------------------------- -void V8ContextImpl::CallWithLock(CallWithLockCallback* pCallback, void* pvArg) +void V8ContextImpl::CallWithLock(CallWithLockCallback* pCallback, void* pvAction) +{ + VerifyNotOutOfMemory(); + + BEGIN_ISOLATE_SCOPE + + (*pCallback)(pvAction); + + END_ISOLATE_SCOPE +} + +//----------------------------------------------------------------------------- + +void V8ContextImpl::CallWithLockWithArg(CallWithLockWithArgCallback* pCallback, void* pvAction, void* pvArg) { VerifyNotOutOfMemory(); BEGIN_ISOLATE_SCOPE - (*pCallback)(pvArg); + (*pCallback)(pvAction, pvArg); END_ISOLATE_SCOPE } @@ -591,7 +670,7 @@ void V8ContextImpl::SetGlobalProperty(const StdString& name, const V8Value& valu FROM_MAYBE_CATCH - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The V8 runtime cannot perform the requested operation because a script exception is pending")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The V8 runtime cannot perform the requested operation because a script exception is pending")), false); FROM_MAYBE_END END_CONTEXT_SCOPE @@ -632,7 +711,7 @@ V8Value V8ContextImpl::Execute(const V8DocumentInfo& documentInfo, const StdStri hModule = VERIFY_MAYBE(CompileModule(&source)); if (hModule.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false); } CacheModule(documentInfo, codeDigest, hModule); @@ -646,12 +725,39 @@ V8Value V8ContextImpl::Execute(const V8DocumentInfo& documentInfo, const StdStri if (hModule->GetStatus() == v8::Module::kInstantiated) { hResult = VERIFY_MAYBE(hModule->Evaluate(m_hContext)); - if (!hModule->IsGraphAsync() && hResult->IsPromise()) + if (hResult->IsPromise()) { auto hPromise = hResult.As(); - if (hPromise->State() == v8::Promise::PromiseState::kFulfilled) + if (hModule->IsGraphAsync() || (hPromise->State() == v8::Promise::PromiseState::kPending)) + { + v8::Local hMetaHolder; + if (TryGetCachedModuleMetaHolder(hModule, hMetaHolder)) + { + if (m_hGetModuleResultFunction.IsEmpty()) + { + auto hEngineInternal = FROM_MAYBE(m_hContext->Global()->Get(m_hContext, CreateString("EngineInternal"))).As(); + m_hGetModuleResultFunction = CreatePersistent(FROM_MAYBE(hEngineInternal->Get(m_hContext, CreateString("getModuleResult"))).As()); + } + + v8::Local args[] = { hResult, hMetaHolder }; + hResult = FROM_MAYBE(m_hGetModuleResultFunction->Call(m_hContext, GetUndefined(), 2, args)); + } + } + else if (hPromise->State() == v8::Promise::PromiseState::kFulfilled) { hResult = hPromise->Result(); + if (evaluate && (hResult.IsEmpty() || hResult->IsUndefined())) + { + v8::Local hMetaHolder; + if (TryGetCachedModuleMetaHolder(hModule, hMetaHolder)) + { + auto hMeta = ::ValueAsObject(FROM_MAYBE(hMetaHolder->Get(m_hContext, 0))); + if (!hMeta.IsEmpty()) + { + hResult = FROM_MAYBE(hMeta->Get(m_hContext, m_hModuleResultKey)); + } + } + } } else if (hPromise->State() == v8::Promise::PromiseState::kRejected) { @@ -681,7 +787,7 @@ V8Value V8ContextImpl::Execute(const V8DocumentInfo& documentInfo, const StdStri hScript = VERIFY_MAYBE(CompileUnboundScript(&source)); if (hScript.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Script compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Script compilation failed; no additional information was provided by the V8 runtime")), false); } CacheScript(documentInfo, codeDigest, hScript); @@ -728,7 +834,7 @@ V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, StdSt hModule = VERIFY_MAYBE(CompileModule(&source)); if (hModule.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false); } CacheModule(documentInfo, codeDigest, hModule); @@ -744,7 +850,7 @@ V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, StdSt hScript = VERIFY_MAYBE(CompileUnboundScript(&source)); if (hScript.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Script compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Script compilation failed; no additional information was provided by the V8 runtime")), false); } CacheScript(documentInfo, codeDigest, hScript); @@ -792,7 +898,7 @@ V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, StdSt hModule = VERIFY_MAYBE(CompileModule(&source)); if (hModule.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false); } std::unique_ptr upCachedData(v8::ScriptCompiler::CreateCodeCache(hModule->GetUnboundModuleScript())); @@ -825,7 +931,7 @@ V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, StdSt hScript = VERIFY_MAYBE(CompileUnboundScript(&source)); if (hScript.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Script compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Script compilation failed; no additional information was provided by the V8 runtime")), false); } std::unique_ptr upCachedData(v8::ScriptCompiler::CreateCodeCache(hScript)); @@ -897,7 +1003,7 @@ V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, StdSt hModule = VERIFY_MAYBE(CompileModule(&source, v8::ScriptCompiler::kConsumeCodeCache)); if (hModule.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false); } cacheAccepted = !pCachedData->rejected; @@ -914,7 +1020,7 @@ V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, StdSt hScript = VERIFY_MAYBE(CompileUnboundScript(&source, v8::ScriptCompiler::kConsumeCodeCache)); if (hScript.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Script compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Script compilation failed; no additional information was provided by the V8 runtime")), false); } cacheAccepted = !pCachedData->rejected; @@ -977,7 +1083,7 @@ V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, StdSt hModule = VERIFY_MAYBE(CompileModule(&source, v8::ScriptCompiler::kConsumeCodeCache)); if (hModule.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false); } if (!pCachedData->rejected) @@ -1036,7 +1142,7 @@ V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, StdSt hScript = VERIFY_MAYBE(CompileUnboundScript(&source, v8::ScriptCompiler::kConsumeCodeCache)); if (hScript.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Script compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Script compilation failed; no additional information was provided by the V8 runtime")), false); } if (!pCachedData->rejected) @@ -1123,7 +1229,7 @@ V8Value V8ContextImpl::Execute(const SharedPtr& spHolder, bool e if (!CanExecute(spHolder)) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Invalid compiled script")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Invalid compiled script")), false); } v8::Local hResult; @@ -1149,7 +1255,7 @@ V8Value V8ContextImpl::Execute(const SharedPtr& spHolder, bool e if (hModule.IsEmpty()) { - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("Module compilation failed; no additional information was provided by the V8 runtime")), false); } CacheModule(spHolder->GetDocumentInfo(), codeDigest, hModule); @@ -1163,12 +1269,39 @@ V8Value V8ContextImpl::Execute(const SharedPtr& spHolder, bool e if (hModule->GetStatus() == v8::Module::kInstantiated) { hResult = VERIFY_MAYBE(hModule->Evaluate(m_hContext)); - if (!hModule->IsGraphAsync() && hResult->IsPromise()) + if (hResult->IsPromise()) { auto hPromise = hResult.As(); - if (hPromise->State() == v8::Promise::PromiseState::kFulfilled) + if (hModule->IsGraphAsync() || (hPromise->State() == v8::Promise::PromiseState::kPending)) + { + v8::Local hMetaHolder; + if (TryGetCachedModuleMetaHolder(hModule, hMetaHolder)) + { + if (m_hGetModuleResultFunction.IsEmpty()) + { + auto hEngineInternal = FROM_MAYBE(m_hContext->Global()->Get(m_hContext, CreateString("EngineInternal"))).As(); + m_hGetModuleResultFunction = CreatePersistent(FROM_MAYBE(hEngineInternal->Get(m_hContext, CreateString("getModuleResult"))).As()); + } + + v8::Local args[] = { hResult, hMetaHolder }; + hResult = FROM_MAYBE(m_hGetModuleResultFunction->Call(m_hContext, GetUndefined(), 2, args)); + } + } + else if (hPromise->State() == v8::Promise::PromiseState::kFulfilled) { hResult = hPromise->Result(); + if (evaluate && (hResult.IsEmpty() || hResult->IsUndefined())) + { + v8::Local hMetaHolder; + if (TryGetCachedModuleMetaHolder(hModule, hMetaHolder)) + { + auto hMeta = ::ValueAsObject(FROM_MAYBE(hMetaHolder->Get(m_hContext, 0))); + if (!hMeta.IsEmpty()) + { + hResult = FROM_MAYBE(hMeta->Get(m_hContext, m_hModuleResultKey)); + } + } + } } else if (hPromise->State() == v8::Promise::PromiseState::kRejected) { @@ -1217,7 +1350,7 @@ V8Value V8ContextImpl::Execute(const SharedPtr& spHolder, bool e void V8ContextImpl::Interrupt() { - TerminateExecution(); + TerminateExecution(false); } //----------------------------------------------------------------------------- @@ -1358,7 +1491,7 @@ void V8ContextImpl::Flush() void V8ContextImpl::Destroy() { - m_spIsolateImpl->CallWithLockNoWait(true /*allowNesting*/, [this] (V8IsolateImpl* /*pIsolateImpl*/) + m_spIsolateImpl->CallWithLockNoWait(true, [this] (V8IsolateImpl* /*pIsolateImpl*/) { delete this; }); @@ -1441,7 +1574,7 @@ bool V8ContextImpl::DeleteV8ObjectProperty(void* pvObject, const StdString& name FROM_MAYBE_CATCH - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The V8 runtime cannot perform the requested operation because a script exception is pending")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The V8 runtime cannot perform the requested operation because a script exception is pending")), false); FROM_MAYBE_END END_CONTEXT_SCOPE @@ -1507,7 +1640,7 @@ bool V8ContextImpl::DeleteV8ObjectProperty(void* pvObject, int index) FROM_MAYBE_CATCH - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The V8 runtime cannot perform the requested operation because a script exception is pending")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The V8 runtime cannot perform the requested operation because a script exception is pending")), false); FROM_MAYBE_END END_CONTEXT_SCOPE @@ -1661,7 +1794,7 @@ void V8ContextImpl::GetV8ObjectArrayBufferOrViewInfo(void* pvObject, V8Value& ar return; } - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The object is not a V8 array buffer or view")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The object is not a V8 array buffer or view")), false); END_CONTEXT_SCOPE } @@ -1706,27 +1839,33 @@ void V8ContextImpl::InvokeWithV8ObjectArrayBufferOrViewData(void* pvObject, V8Ob return; } - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The object is not a V8 array buffer or view")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The object is not a V8 array buffer or view")), false); END_CONTEXT_SCOPE } //----------------------------------------------------------------------------- -void V8ContextImpl::InitializeImportMeta(v8::Local /*hContext*/, v8::Local hModule, v8::Local hMeta) +void V8ContextImpl::InitializeImportMeta(v8::Local hContext, v8::Local hModule, v8::Local hMeta) { BEGIN_CONTEXT_SCOPE + FROM_MAYBE_TRY try { - for (const auto& entry : m_ModuleCache) + for (auto& entry : m_ModuleCache) { if (entry.hModule == hModule) { - for (const auto& pair : HostObjectUtil::GetInstance().CreateModuleContext(entry.DocumentInfo)) + ASSERT_EVAL(FROM_MAYBE(entry.hMetaHolder->Set(hContext, 0, hMeta))); + + auto hSetModuleResultFunction = FROM_MAYBE(v8::Function::New(m_hContext, SetModuleResultCallback, hMeta)); + ASSERT_EVAL(FROM_MAYBE(hMeta->DefineOwnProperty(m_hContext, m_hSetModuleResultKey, hSetModuleResultFunction, v8::DontEnum))); + + for (const auto& pair : HostObjectUtil::CreateModuleContext(entry.DocumentInfo)) { - (void)hMeta->Set(m_hContext, FROM_MAYBE(CreateString(pair.first)), ImportValue(pair.second)); + ASSERT_EVAL(FROM_MAYBE(hMeta->Set(m_hContext, FROM_MAYBE(CreateString(pair.first)), ImportValue(pair.second)))); } return; @@ -1739,6 +1878,7 @@ void V8ContextImpl::InitializeImportMeta(v8::Local /*hContext*/, v8 } FROM_MAYBE_CATCH_CONSUME + END_CONTEXT_SCOPE } @@ -1807,7 +1947,7 @@ v8::MaybeLocal V8ContextImpl::ImportModule(const V8DocumentInfo* pS if (innerHasCaught) { - (void)hResolver->Reject(m_hContext, innerTryCatch.Exception()); + ASSERT_EVAL(FROM_MAYBE(hResolver->Reject(m_hContext, innerTryCatch.Exception()))); } return hResolver->GetPromise(); @@ -1867,7 +2007,7 @@ v8::MaybeLocal V8ContextImpl::ResolveModule(v8::Local hS { V8DocumentInfo documentInfo; V8Value exportsValue(V8Value::Undefined); - auto code = HostObjectUtil::GetInstance().LoadModule(*pSourceDocumentInfo, CreateStdString(hSpecifier), documentInfo, exportsValue); + auto code = HostObjectUtil::LoadModule(*pSourceDocumentInfo, CreateStdString(hSpecifier), documentInfo, exportsValue); auto codeDigest = code.GetDigest(); auto hModule = GetCachedModule(documentInfo.GetUniqueId(), codeDigest); @@ -1963,7 +2103,7 @@ v8::MaybeLocal V8ContextImpl::PopulateSyntheticModule(v8::LocalGetNumberOfEmbedderDataFields() > 1) { - auto pContextImpl = reinterpret_cast(hContext->GetAlignedPointerFromEmbedderData(1)); + auto pContextImpl = static_cast(hContext->GetAlignedPointerFromEmbedderData(1)); if (pContextImpl != nullptr) { return pContextImpl->PopulateSyntheticModule(hModule); @@ -2019,7 +2159,7 @@ void V8ContextImpl::Teardown() if (m_pvV8ObjectCache != nullptr) { std::vector v8ObjectPtrs; - HostObjectUtil::GetInstance().GetAllCachedV8Objects(m_pvV8ObjectCache, v8ObjectPtrs); + HostObjectUtil::GetAllCachedV8Objects(m_pvV8ObjectCache, v8ObjectPtrs); for (auto pvV8Object : v8ObjectPtrs) { auto hObject = ::HandleFromPtr(pvV8Object); @@ -2034,7 +2174,7 @@ void V8ContextImpl::Teardown() Dispose(hObject); } - HostObjectUtil::GetInstance().Release(m_pvV8ObjectCache); + HostObjectUtil::Release(m_pvV8ObjectCache); m_pvV8ObjectCache = nullptr; } @@ -2056,14 +2196,18 @@ void V8ContextImpl::Teardown() } Dispose(m_hAsyncGeneratorConstructor); + Dispose(m_hGetModuleResultFunction); Dispose(m_hToJsonFunction); Dispose(m_hToAsyncIteratorFunction); Dispose(m_hToIteratorFunction); + Dispose(m_hFastHostFunctionTemplate); + Dispose(m_hFastHostObjectTemplate); Dispose(m_hHostDelegateTemplate); Dispose(m_hHostInvocableTemplate); Dispose(m_hHostObjectTemplate); Dispose(m_hTerminationException); Dispose(m_hFlushFunction); + Dispose(m_hSetModuleResultKey); Dispose(m_hConstructorKey); Dispose(m_hInvalidModuleRequest); Dispose(m_hPropertyValueNotInvocable); @@ -2075,6 +2219,8 @@ void V8ContextImpl::Teardown() Dispose(m_hAccessTokenKey); Dispose(m_hCacheKey); Dispose(m_hHostExceptionKey); + Dispose(m_hMissingPropertyValue); + Dispose(m_hModuleResultKey); Dispose(m_hIsHostObjectKey); // As of V8 3.16.0, the global property getter for a disposed context @@ -2082,14 +2228,10 @@ void V8ContextImpl::Teardown() if (!m_hContext.IsEmpty()) { - auto hGlobalProxy = m_hContext->Global(); - if (!hGlobalProxy.IsEmpty()) + auto hGlobal = m_hContext->Global(); + if (!hGlobal.IsEmpty() && (hGlobal->InternalFieldCount() > 0)) { - auto hGlobal = ::ValueAsObject(hGlobalProxy->GetPrototype()); - if (!hGlobal.IsEmpty() && (hGlobal->InternalFieldCount() > 0)) - { - hGlobal->SetAlignedPointerInInternalField(0, nullptr); - } + hGlobal->SetAlignedPointerInInternalField(0, nullptr); } if (m_hContext->GetNumberOfEmbedderDataFields() > 1) @@ -2274,8 +2416,10 @@ void V8ContextImpl::GetV8ObjectPropertyIndices(v8::Local hObject, st //----------------------------------------------------------------------------- -void V8ContextImpl::GetGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::GetGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto hName = ::ValueAsString(hKey); if (hName.IsEmpty()) { @@ -2301,12 +2445,16 @@ void V8ContextImpl::GetGlobalProperty(v8::Local hKey, const v8::Proper } FROM_MAYBE_CATCH_CONSUME + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::SetGlobalProperty(v8::Local hKey, v8::Local hValue, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::SetGlobalProperty(v8::Local hKey, v8::Local hValue, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto hName = ::ValueAsString(hKey); if (hName.IsEmpty()) { @@ -2325,20 +2473,24 @@ void V8ContextImpl::SetGlobalProperty(v8::Local hKey, v8::Localsecond->HasOwnProperty(pContextImpl->m_hContext, hName))) { - (void)it->second->Set(pContextImpl->m_hContext, hName, hValue); - CALLBACK_RETURN(hValue); + ASSERT_EVAL(FROM_MAYBE(it->second->Set(pContextImpl->m_hContext, hName, hValue))); + CALLBACK_RETURN_VOID(); } } } } FROM_MAYBE_CATCH_CONSUME + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::QueryGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::QueryGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto hName = ::ValueAsString(hKey); if (hName.IsEmpty()) { @@ -2364,12 +2516,16 @@ void V8ContextImpl::QueryGlobalProperty(v8::Local hKey, const v8::Prop } FROM_MAYBE_CATCH_CONSUME + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::DeleteGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::DeleteGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto hName = ::ValueAsString(hKey); if (hName.IsEmpty()) { @@ -2397,7 +2553,7 @@ void V8ContextImpl::DeleteGlobalProperty(v8::Local hKey, const v8::Pro { try { - CALLBACK_RETURN(HostObjectUtil::GetInstance().DeleteProperty(pvObject, pContextImpl->CreateStdString(hName))); + CALLBACK_RETURN(HostObjectUtil::DeleteProperty(pvObject, pContextImpl->CreateStdString(hName))); } catch (const HostException&) { @@ -2412,6 +2568,8 @@ void V8ContextImpl::DeleteGlobalProperty(v8::Local hKey, const v8::Pro } FROM_MAYBE_CATCH_CONSUME + + CALLBACK_EXIT } //----------------------------------------------------------------------------- @@ -2436,7 +2594,7 @@ void V8ContextImpl::GetGlobalPropertyNames(const v8::PropertyCallbackInfoGetHostObject(it->second); if (pvObject != nullptr) { - HostObjectUtil::GetInstance().GetPropertyNames(pvObject, tempNames); + HostObjectUtil::GetPropertyNames(pvObject, tempNames); } else { @@ -2470,8 +2628,10 @@ void V8ContextImpl::GetGlobalPropertyNames(const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::GetGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + FROM_MAYBE_TRY auto pContextImpl = ::GetContextImplFromHolder(info); @@ -2492,12 +2652,16 @@ void V8ContextImpl::GetGlobalProperty(uint32_t index, const v8::PropertyCallback } FROM_MAYBE_CATCH_CONSUME + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::SetGlobalProperty(uint32_t index, v8::Local hValue, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::SetGlobalProperty(uint32_t index, v8::Local hValue, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + FROM_MAYBE_TRY auto pContextImpl = ::GetContextImplFromHolder(info); @@ -2511,20 +2675,24 @@ void V8ContextImpl::SetGlobalProperty(uint32_t index, v8::Local hValu { if (FROM_MAYBE(it->second->HasOwnProperty(pContextImpl->m_hContext, hName))) { - (void)it->second->Set(pContextImpl->m_hContext, index, hValue); - CALLBACK_RETURN(hValue); + ASSERT_EVAL(FROM_MAYBE(it->second->Set(pContextImpl->m_hContext, index, hValue))); + CALLBACK_RETURN_VOID(); } } } } FROM_MAYBE_CATCH_CONSUME + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::QueryGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::QueryGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + FROM_MAYBE_TRY auto pContextImpl = ::GetContextImplFromHolder(info); @@ -2546,12 +2714,16 @@ void V8ContextImpl::QueryGlobalProperty(uint32_t index, const v8::PropertyCallba } FROM_MAYBE_CATCH_CONSUME + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::DeleteGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::DeleteGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + FROM_MAYBE_TRY auto pContextImpl = ::GetContextImplFromHolder(info); @@ -2572,6 +2744,8 @@ void V8ContextImpl::DeleteGlobalProperty(uint32_t index, const v8::PropertyCallb } FROM_MAYBE_CATCH_CONSUME + + CALLBACK_EXIT } //----------------------------------------------------------------------------- @@ -2596,7 +2770,7 @@ void V8ContextImpl::GetGlobalPropertyIndices(const v8::PropertyCallbackInfoGetHostObject(it->second); if (pvObject != nullptr) { - HostObjectUtil::GetInstance().GetPropertyIndices(pvObject, tempIndices); + HostObjectUtil::GetPropertyIndices(pvObject, tempIndices); } else { @@ -2648,7 +2822,7 @@ void V8ContextImpl::GetHostObjectIterator(const v8::FunctionCallbackInfoGetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.This()); if (pvObject != nullptr) { try @@ -2659,7 +2833,7 @@ void V8ContextImpl::GetHostObjectIterator(const v8::FunctionCallbackInfom_hToIteratorFunction = pContextImpl->CreatePersistent(FROM_MAYBE(hEngineInternal->Get(pContextImpl->m_hContext, pContextImpl->CreateString("toIterator"))).As()); } - v8::Local args[] = { pContextImpl->ImportValue(HostObjectUtil::GetInstance().GetEnumerator(pvObject)) }; + v8::Local args[] = { pContextImpl->ImportValue(HostObjectUtil::GetEnumerator(pvObject)) }; CALLBACK_RETURN(FROM_MAYBE(pContextImpl->m_hToIteratorFunction->Call(pContextImpl->m_hContext, pContextImpl->GetUndefined(), 1, args))); } catch (const HostException& exception) @@ -2681,7 +2855,73 @@ void V8ContextImpl::GetHostObjectAsyncIterator(const v8::FunctionCallbackInfoGetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.This()); + if (pvObject != nullptr) + { + try + { + if (pContextImpl->m_hToAsyncIteratorFunction.IsEmpty()) + { + auto hEngineInternal = FROM_MAYBE(pContextImpl->m_hContext->Global()->Get(pContextImpl->m_hContext, pContextImpl->CreateString("EngineInternal"))).As(); + pContextImpl->m_hToAsyncIteratorFunction = pContextImpl->CreatePersistent(FROM_MAYBE(hEngineInternal->Get(pContextImpl->m_hContext, pContextImpl->CreateString("toAsyncIterator"))).As()); + } + + v8::Local args[] = { pContextImpl->ImportValue(HostObjectUtil::GetAsyncEnumerator(pvObject)) }; + CALLBACK_RETURN(FROM_MAYBE(pContextImpl->m_hToAsyncIteratorFunction->Call(pContextImpl->m_hContext, pContextImpl->GetUndefined(), 1, args))); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + FROM_MAYBE_CATCH_CONSUME +} + +//----------------------------------------------------------------------------- + +void V8ContextImpl::GetFastHostObjectIterator(const v8::FunctionCallbackInfo& info) +{ + FROM_MAYBE_TRY + + auto pContextImpl = ::GetContextImplFromData(info); + if (pContextImpl != nullptr) + { + auto pvObject = pContextImpl->GetHostObject(info.This()); + if (pvObject != nullptr) + { + try + { + if (pContextImpl->m_hToIteratorFunction.IsEmpty()) + { + auto hEngineInternal = FROM_MAYBE(pContextImpl->m_hContext->Global()->Get(pContextImpl->m_hContext, pContextImpl->CreateString("EngineInternal"))).As(); + pContextImpl->m_hToIteratorFunction = pContextImpl->CreatePersistent(FROM_MAYBE(hEngineInternal->Get(pContextImpl->m_hContext, pContextImpl->CreateString("toIterator"))).As()); + } + + v8::Local args[] = { pContextImpl->ImportValue(FastHostObjectUtil::GetEnumerator(pvObject)) }; + CALLBACK_RETURN(FROM_MAYBE(pContextImpl->m_hToIteratorFunction->Call(pContextImpl->m_hContext, pContextImpl->GetUndefined(), 1, args))); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + FROM_MAYBE_CATCH_CONSUME +} + +//----------------------------------------------------------------------------- + +void V8ContextImpl::GetFastHostObjectAsyncIterator(const v8::FunctionCallbackInfo& info) +{ + FROM_MAYBE_TRY + + auto pContextImpl = ::GetContextImplFromData(info); + if (pContextImpl != nullptr) + { + auto pvObject = pContextImpl->GetHostObject(info.This()); if (pvObject != nullptr) { try @@ -2692,7 +2932,7 @@ void V8ContextImpl::GetHostObjectAsyncIterator(const v8::FunctionCallbackInfom_hToAsyncIteratorFunction = pContextImpl->CreatePersistent(FROM_MAYBE(hEngineInternal->Get(pContextImpl->m_hContext, pContextImpl->CreateString("toAsyncIterator"))).As()); } - v8::Local args[] = { pContextImpl->ImportValue(HostObjectUtil::GetInstance().GetAsyncEnumerator(pvObject)) }; + v8::Local args[] = { pContextImpl->ImportValue(FastHostObjectUtil::GetAsyncEnumerator(pvObject)) }; CALLBACK_RETURN(FROM_MAYBE(pContextImpl->m_hToAsyncIteratorFunction->Call(pContextImpl->m_hContext, pContextImpl->GetUndefined(), 1, args))); } catch (const HostException& exception) @@ -2714,7 +2954,7 @@ void V8ContextImpl::GetHostObjectJson(const v8::FunctionCallbackInfo& auto pContextImpl = ::GetContextImplFromData(info); if (pContextImpl != nullptr) { - auto hObject = info.Holder(); + auto hObject = info.This(); if (pContextImpl->GetHostObject(hObject) != nullptr) { try @@ -2749,7 +2989,7 @@ void V8ContextImpl::CreateFunctionForHostDelegate(const v8::FunctionCallbackInfo auto pContextImpl = ::GetContextImplFromData(info); if (pContextImpl != nullptr) { - CALLBACK_RETURN(FROM_MAYBE(v8::Function::New(pContextImpl->m_hContext, InvokeHostDelegate, info.Holder()))); + CALLBACK_RETURN(FROM_MAYBE(v8::Function::New(pContextImpl->m_hContext, InvokeHostDelegate, info.This()))); } FROM_MAYBE_CATCH_CONSUME @@ -2762,7 +3002,8 @@ void V8ContextImpl::InvokeHostDelegate(const v8::FunctionCallbackInfo auto hTarget = ::ValueAsObject(info.Data()); if (!hTarget.IsEmpty()) { - auto argCount = info.Length(); + auto argCount = static_cast(info.Length()); + if (argCount < 1) { if (info.IsConstructCall()) @@ -2773,10 +3014,27 @@ void V8ContextImpl::InvokeHostDelegate(const v8::FunctionCallbackInfo CALLBACK_RETURN(FROM_MAYBE_DEFAULT(hTarget->CallAsFunction(info.GetIsolate()->GetCurrentContext(), hTarget, 0, nullptr))); } + if (argCount <= Constants::MaxInlineArgCount) + { + v8::Local args[argCount]; + + for (size_t index = 0; index < argCount; index++) + { + args[index] = info[index]; + } + + if (info.IsConstructCall()) + { + CALLBACK_RETURN(FROM_MAYBE_DEFAULT(hTarget->CallAsConstructor(info.GetIsolate()->GetCurrentContext(), argCount, args))); + } + + CALLBACK_RETURN(FROM_MAYBE_DEFAULT(hTarget->CallAsFunction(info.GetIsolate()->GetCurrentContext(), hTarget, argCount, args))); + } + std::vector> args; args.reserve(argCount); - for (auto index = 0; index < argCount; index++) + for (size_t index = 0; index < argCount; index++) { args.push_back(info[index]); } @@ -2792,14 +3050,16 @@ void V8ContextImpl::InvokeHostDelegate(const v8::FunctionCallbackInfo //----------------------------------------------------------------------------- -void V8ContextImpl::GetHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::GetHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + FROM_MAYBE_TRY auto pContextImpl = ::GetContextImplFromData(info); if (CheckContextImplForHostObjectCallback(pContextImpl)) { - auto hHolder = info.Holder(); + auto hHolder = info.HolderV2(); auto pvObject = pContextImpl->GetHostObject(hHolder); auto hName = ::ValueAsString(hKey); @@ -2809,11 +3069,8 @@ void V8ContextImpl::GetHostObjectProperty(v8::Local hKey, const v8::Pr { CALLBACK_RETURN((pvObject != nullptr) ? pContextImpl->GetTrue() : pContextImpl->GetFalse()); } - - return; } - - if (pvObject != nullptr) + else if (pvObject != nullptr) { try { @@ -2828,13 +3085,14 @@ void V8ContextImpl::GetHostObjectProperty(v8::Local hKey, const v8::Pr auto hCache = ::ValueAsObject(FROM_MAYBE(hHolder->GetPrivate(pContextImpl->m_hContext, pContextImpl->m_hCacheKey))); if (!hCache.IsEmpty() && FROM_MAYBE(hCache->HasOwnProperty(pContextImpl->m_hContext, hName))) { - CALLBACK_RETURN(FROM_MAYBE(hCache->Get(pContextImpl->m_hContext, hName))); + auto hValue = FROM_MAYBE(hCache->Get(pContextImpl->m_hContext, hName)); + CALLBACK_RETURN(!hValue->StrictEquals(pContextImpl->m_hMissingPropertyValue) ? hValue : v8::Local()); } } bool isCacheable; - auto hResult = pContextImpl->ImportValue(HostObjectUtil::GetInstance().GetProperty(pvObject, pContextImpl->CreateStdString(hName), isCacheable)); - if (isCacheable && !hResult.IsEmpty()) + auto hResult = pContextImpl->ImportValue(HostObjectUtil::GetProperty(pvObject, pContextImpl->CreateStdString(hName), isCacheable)); + if (isCacheable) { auto hCache = ::ValueAsObject(FROM_MAYBE(hHolder->GetPrivate(pContextImpl->m_hContext, pContextImpl->m_hCacheKey))); if (hCache.IsEmpty()) @@ -2843,7 +3101,7 @@ void V8ContextImpl::GetHostObjectProperty(v8::Local hKey, const v8::Pr ASSERT_EVAL(FROM_MAYBE(hHolder->SetPrivate(pContextImpl->m_hContext, pContextImpl->m_hCacheKey, hCache))); } - ASSERT_EVAL(FROM_MAYBE(hCache->Set(pContextImpl->m_hContext, hName, hResult))); + ASSERT_EVAL(FROM_MAYBE(hCache->Set(pContextImpl->m_hContext, hName, !hResult.IsEmpty() ? hResult : pContextImpl->m_hMissingPropertyValue))); } CALLBACK_RETURN(hResult); @@ -2856,12 +3114,16 @@ void V8ContextImpl::GetHostObjectProperty(v8::Local hKey, const v8::Pr } FROM_MAYBE_CATCH_CONSUME + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::SetHostObjectProperty(v8::Local hKey, v8::Local hValue, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::SetHostObjectProperty(v8::Local hKey, v8::Local hValue, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto hName = ::ValueAsString(hKey); if (hName.IsEmpty()) { @@ -2871,13 +3133,13 @@ void V8ContextImpl::SetHostObjectProperty(v8::Local hKey, v8::LocalGetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); if (pvObject != nullptr) { try { - HostObjectUtil::GetInstance().SetProperty(pvObject, pContextImpl->CreateStdString(hName), pContextImpl->ExportValue(hValue)); - CALLBACK_RETURN(hValue); + HostObjectUtil::SetProperty(pvObject, pContextImpl->CreateStdString(hName), pContextImpl->ExportValue(hValue)); + CALLBACK_RETURN_VOID(); } catch (const HostException& exception) { @@ -2885,12 +3147,16 @@ void V8ContextImpl::SetHostObjectProperty(v8::Local hKey, v8::Local hKey, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::QueryHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto hName = ::ValueAsString(hKey); if (hName.IsEmpty()) { @@ -2900,13 +3166,13 @@ void V8ContextImpl::QueryHostObjectProperty(v8::Local hKey, const v8:: auto pContextImpl = ::GetContextImplFromData(info); if (CheckContextImplForHostObjectCallback(pContextImpl)) { - auto pvObject = pContextImpl->GetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); if (pvObject != nullptr) { try { std::vector names; - HostObjectUtil::GetInstance().GetPropertyNames(pvObject, names); + HostObjectUtil::GetPropertyNames(pvObject, names); auto name = pContextImpl->CreateStdString(hName); for (auto it = names.begin(); it != names.end(); it++) @@ -2923,12 +3189,16 @@ void V8ContextImpl::QueryHostObjectProperty(v8::Local hKey, const v8:: } } } + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::DeleteHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::DeleteHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto hName = ::ValueAsString(hKey); if (hName.IsEmpty()) { @@ -2938,12 +3208,12 @@ void V8ContextImpl::DeleteHostObjectProperty(v8::Local hKey, const v8: auto pContextImpl = ::GetContextImplFromData(info); if (CheckContextImplForHostObjectCallback(pContextImpl)) { - auto pvObject = pContextImpl->GetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); if (pvObject != nullptr) { try { - CALLBACK_RETURN(HostObjectUtil::GetInstance().DeleteProperty(pvObject, pContextImpl->CreateStdString(hName))); + CALLBACK_RETURN(HostObjectUtil::DeleteProperty(pvObject, pContextImpl->CreateStdString(hName))); } catch (const HostException& exception) { @@ -2951,6 +3221,8 @@ void V8ContextImpl::DeleteHostObjectProperty(v8::Local hKey, const v8: } } } + + CALLBACK_EXIT } //----------------------------------------------------------------------------- @@ -2962,13 +3234,13 @@ void V8ContextImpl::GetHostObjectPropertyNames(const v8::PropertyCallbackInfoGetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); if (pvObject != nullptr) { try { std::vector names; - HostObjectUtil::GetInstance().GetPropertyNames(pvObject, names); + HostObjectUtil::GetPropertyNames(pvObject, names); auto nameCount = static_cast(names.size()); auto hImportedNames = pContextImpl->CreateArray(nameCount); @@ -2991,17 +3263,19 @@ void V8ContextImpl::GetHostObjectPropertyNames(const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::GetHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto pContextImpl = ::GetContextImplFromData(info); if (CheckContextImplForHostObjectCallback(pContextImpl)) { - auto pvObject = pContextImpl->GetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); if (pvObject != nullptr) { try { - CALLBACK_RETURN(pContextImpl->ImportValue(HostObjectUtil::GetInstance().GetProperty(pvObject, index))); + CALLBACK_RETURN(pContextImpl->ImportValue(HostObjectUtil::GetProperty(pvObject, index))); } catch (const HostException& exception) { @@ -3009,22 +3283,26 @@ void V8ContextImpl::GetHostObjectProperty(uint32_t index, const v8::PropertyCall } } } + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::SetHostObjectProperty(uint32_t index, v8::Local hValue, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::SetHostObjectProperty(uint32_t index, v8::Local hValue, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto pContextImpl = ::GetContextImplFromData(info); if (CheckContextImplForHostObjectCallback(pContextImpl)) { - auto pvObject = pContextImpl->GetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); if (pvObject != nullptr) { try { - HostObjectUtil::GetInstance().SetProperty(pvObject, index, pContextImpl->ExportValue(hValue)); - CALLBACK_RETURN(hValue); + HostObjectUtil::SetProperty(pvObject, index, pContextImpl->ExportValue(hValue)); + CALLBACK_RETURN_VOID(); } catch (const HostException& exception) { @@ -3032,22 +3310,26 @@ void V8ContextImpl::SetHostObjectProperty(uint32_t index, v8::Local h } } } + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::QueryHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::QueryHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto pContextImpl = ::GetContextImplFromData(info); if (CheckContextImplForHostObjectCallback(pContextImpl)) { - auto pvObject = pContextImpl->GetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); if (pvObject != nullptr) { try { std::vector indices; - HostObjectUtil::GetInstance().GetPropertyIndices(pvObject, indices); + HostObjectUtil::GetPropertyIndices(pvObject, indices); for (auto it = indices.begin(); it < indices.end(); it++) { @@ -3063,21 +3345,25 @@ void V8ContextImpl::QueryHostObjectProperty(uint32_t index, const v8::PropertyCa } } } + + CALLBACK_EXIT } //----------------------------------------------------------------------------- -void V8ContextImpl::DeleteHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info) +v8::Intercepted V8ContextImpl::DeleteHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info) { + CALLBACK_ENTER + auto pContextImpl = ::GetContextImplFromData(info); if (CheckContextImplForHostObjectCallback(pContextImpl)) { - auto pvObject = pContextImpl->GetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); if (pvObject != nullptr) { try { - CALLBACK_RETURN(HostObjectUtil::GetInstance().DeleteProperty(pvObject, index)); + CALLBACK_RETURN(HostObjectUtil::DeleteProperty(pvObject, index)); } catch (const HostException& exception) { @@ -3085,6 +3371,8 @@ void V8ContextImpl::DeleteHostObjectProperty(uint32_t index, const v8::PropertyC } } } + + CALLBACK_EXIT } //----------------------------------------------------------------------------- @@ -3096,13 +3384,13 @@ void V8ContextImpl::GetHostObjectPropertyIndices(const v8::PropertyCallbackInfo< auto pContextImpl = ::GetContextImplFromData(info); if (CheckContextImplForHostObjectCallback(pContextImpl)) { - auto pvObject = pContextImpl->GetHostObject(info.Holder()); + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); if (pvObject != nullptr) { try { std::vector indices; - HostObjectUtil::GetInstance().GetPropertyIndices(pvObject, indices); + HostObjectUtil::GetPropertyIndices(pvObject, indices); auto indexCount = static_cast(indices.size()); auto hImportedIndices = pContextImpl->CreateArray(indexCount); @@ -3125,41 +3413,484 @@ void V8ContextImpl::GetHostObjectPropertyIndices(const v8::PropertyCallbackInfo< //----------------------------------------------------------------------------- -void V8ContextImpl::InvokeHostObject(const v8::FunctionCallbackInfo& info) +v8::Intercepted V8ContextImpl::GetFastHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) { - auto pContextImpl = ::GetContextImplFromData(info); - if (CheckContextImplForHostObjectCallback(pContextImpl)) - { - auto pvObject = pContextImpl->GetHostObject(info.Holder()); - if (pvObject != nullptr) - { - try - { - auto argCount = info.Length(); + CALLBACK_ENTER - std::vector exportedArgs; - exportedArgs.reserve(argCount); + FROM_MAYBE_TRY + + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto hHolder = info.HolderV2(); + auto pvObject = pContextImpl->GetHostObject(hHolder); - for (auto index = 0; index < argCount; index++) + auto hName = ::ValueAsString(hKey); + if (hName.IsEmpty()) + { + if (!hKey.IsEmpty() && hKey->StrictEquals(pContextImpl->m_hIsHostObjectKey)) { - exportedArgs.push_back(pContextImpl->ExportValue(info[index])); + CALLBACK_RETURN((pvObject != nullptr) ? pContextImpl->GetTrue() : pContextImpl->GetFalse()); } - - CALLBACK_RETURN(pContextImpl->ImportValue(HostObjectUtil::GetInstance().Invoke(pvObject, info.IsConstructCall(), exportedArgs))); } - catch (const HostException& exception) + else if (pvObject != nullptr) { - pContextImpl->ThrowScriptException(exception); - } - } - } -} - -//----------------------------------------------------------------------------- + try + { + auto hCache = ::ValueAsObject(FROM_MAYBE(hHolder->GetPrivate(pContextImpl->m_hContext, pContextImpl->m_hCacheKey))); + if (!hCache.IsEmpty() && FROM_MAYBE(hCache->HasOwnProperty(pContextImpl->m_hContext, hName))) + { + auto hValue = FROM_MAYBE(hCache->Get(pContextImpl->m_hContext, hName)); + CALLBACK_RETURN(!hValue->StrictEquals(pContextImpl->m_hMissingPropertyValue) ? hValue : v8::Local()); + } -void V8ContextImpl::FlushCallback(const v8::FunctionCallbackInfo& /*info*/) -{ -} + bool isCacheable; + auto hResult = pContextImpl->ImportValue(FastHostObjectUtil::GetProperty(pvObject, pContextImpl->CreateStdString(hName), isCacheable)); + if (isCacheable) + { + auto hCache = ::ValueAsObject(FROM_MAYBE(hHolder->GetPrivate(pContextImpl->m_hContext, pContextImpl->m_hCacheKey))); + if (hCache.IsEmpty()) + { + hCache = pContextImpl->CreateObject(); + ASSERT_EVAL(FROM_MAYBE(hHolder->SetPrivate(pContextImpl->m_hContext, pContextImpl->m_hCacheKey, hCache))); + } + + ASSERT_EVAL(FROM_MAYBE(hCache->Set(pContextImpl->m_hContext, hName, !hResult.IsEmpty() ? hResult : pContextImpl->m_hMissingPropertyValue))); + } + + CALLBACK_RETURN(hResult); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + FROM_MAYBE_CATCH_CONSUME + + CALLBACK_EXIT +} + +//----------------------------------------------------------------------------- + +v8::Intercepted V8ContextImpl::SetFastHostObjectProperty(v8::Local hKey, v8::Local hValue, const v8::PropertyCallbackInfo& info) +{ + CALLBACK_ENTER + + auto hName = ::ValueAsString(hKey); + if (hName.IsEmpty()) + { + return; + } + + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); + if (pvObject != nullptr) + { + try + { + FastHostObjectUtil::SetProperty(pvObject, pContextImpl->CreateStdString(hName), pContextImpl->ExportValue(hValue)); + CALLBACK_RETURN_VOID(); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + CALLBACK_EXIT +} + +//----------------------------------------------------------------------------- + +v8::Intercepted V8ContextImpl::QueryFastHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) +{ + CALLBACK_ENTER + + auto hName = ::ValueAsString(hKey); + if (hName.IsEmpty()) + { + return; + } + + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); + if (pvObject != nullptr) + { + try + { + auto flags = FastHostObjectUtil::QueryProperty(pvObject, pContextImpl->CreateStdString(hName)); + if (::HasFlag(flags, FastHostObjectUtil::PropertyFlags::Available)) + { + auto attrs = v8::None; + + if (!::HasFlag(flags, FastHostObjectUtil::PropertyFlags::Writable)) + { + attrs = ::CombineFlags(attrs, v8::ReadOnly); + } + + if (!::HasFlag(flags, FastHostObjectUtil::PropertyFlags::Enumerable)) + { + attrs = ::CombineFlags(attrs, v8::DontEnum); + } + + if (!::HasFlag(flags, FastHostObjectUtil::PropertyFlags::Deletable)) + { + attrs = ::CombineFlags(attrs, v8::DontDelete); + } + + CALLBACK_RETURN(attrs); + } + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + CALLBACK_EXIT +} + +//----------------------------------------------------------------------------- + +v8::Intercepted V8ContextImpl::DeleteFastHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info) +{ + CALLBACK_ENTER + + auto hName = ::ValueAsString(hKey); + if (hName.IsEmpty()) + { + return; + } + + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); + if (pvObject != nullptr) + { + try + { + CALLBACK_RETURN(FastHostObjectUtil::DeleteProperty(pvObject, pContextImpl->CreateStdString(hName))); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + CALLBACK_EXIT +} + +//----------------------------------------------------------------------------- + +void V8ContextImpl::GetFastHostObjectPropertyNames(const v8::PropertyCallbackInfo& info) +{ + FROM_MAYBE_TRY + + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); + if (pvObject != nullptr) + { + try + { + std::vector names; + FastHostObjectUtil::GetPropertyNames(pvObject, names); + auto nameCount = static_cast(names.size()); + + auto hImportedNames = pContextImpl->CreateArray(nameCount); + for (auto index = 0; index < nameCount; index++) + { + ASSERT_EVAL(FROM_MAYBE(hImportedNames->Set(pContextImpl->m_hContext, index, FROM_MAYBE(pContextImpl->CreateString(names[index]))))); + } + + CALLBACK_RETURN(hImportedNames); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + FROM_MAYBE_CATCH_CONSUME +} + +//----------------------------------------------------------------------------- + +v8::Intercepted V8ContextImpl::GetFastHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info) +{ + CALLBACK_ENTER + + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); + if (pvObject != nullptr) + { + try + { + CALLBACK_RETURN(pContextImpl->ImportValue(FastHostObjectUtil::GetProperty(pvObject, index))); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + CALLBACK_EXIT +} + +//----------------------------------------------------------------------------- + +v8::Intercepted V8ContextImpl::SetFastHostObjectProperty(uint32_t index, v8::Local hValue, const v8::PropertyCallbackInfo& info) +{ + CALLBACK_ENTER + + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); + if (pvObject != nullptr) + { + try + { + FastHostObjectUtil::SetProperty(pvObject, index, pContextImpl->ExportValue(hValue)); + CALLBACK_RETURN_VOID(); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + CALLBACK_EXIT +} + +//----------------------------------------------------------------------------- + +v8::Intercepted V8ContextImpl::QueryFastHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info) +{ + CALLBACK_ENTER + + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); + if (pvObject != nullptr) + { + try + { + auto flags = FastHostObjectUtil::QueryProperty(pvObject, index); + if (::HasFlag(flags, FastHostObjectUtil::PropertyFlags::Available)) + { + auto attrs = v8::None; + + if (!::HasFlag(flags, FastHostObjectUtil::PropertyFlags::Writable)) + { + attrs = ::CombineFlags(attrs, v8::ReadOnly); + } + + if (!::HasFlag(flags, FastHostObjectUtil::PropertyFlags::Enumerable)) + { + attrs = ::CombineFlags(attrs, v8::DontEnum); + } + + if (!::HasFlag(flags, FastHostObjectUtil::PropertyFlags::Deletable)) + { + attrs = ::CombineFlags(attrs, v8::DontDelete); + } + + CALLBACK_RETURN(attrs); + } + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + CALLBACK_EXIT +} + +//----------------------------------------------------------------------------- + +v8::Intercepted V8ContextImpl::DeleteFastHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info) +{ + CALLBACK_ENTER + + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); + if (pvObject != nullptr) + { + try + { + CALLBACK_RETURN(FastHostObjectUtil::DeleteProperty(pvObject, index)); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + CALLBACK_EXIT +} + +//----------------------------------------------------------------------------- + +void V8ContextImpl::GetFastHostObjectPropertyIndices(const v8::PropertyCallbackInfo& info) +{ + FROM_MAYBE_TRY + + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.HolderV2()); + if (pvObject != nullptr) + { + try + { + std::vector indices; + FastHostObjectUtil::GetPropertyIndices(pvObject, indices); + auto indexCount = static_cast(indices.size()); + + auto hImportedIndices = pContextImpl->CreateArray(indexCount); + for (auto index = 0; index < indexCount; index++) + { + ASSERT_EVAL(FROM_MAYBE(hImportedIndices->Set(pContextImpl->m_hContext, index, pContextImpl->CreateInteger(indices[index])))); + } + + CALLBACK_RETURN(hImportedIndices); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } + + FROM_MAYBE_CATCH_CONSUME +} + +//----------------------------------------------------------------------------- + +void V8ContextImpl::InvokeHostObject(const v8::FunctionCallbackInfo& info) +{ + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.This()); + if (pvObject != nullptr) + { + try + { + auto argCount = static_cast(info.Length()); + + if (argCount < 1) + { + CALLBACK_RETURN(pContextImpl->ImportValue(HostObjectUtil::Invoke(pvObject, info.IsConstructCall(), 0, nullptr))); + } + + if (argCount <= Constants::MaxInlineArgCount) + { + NonexistentV8Value exportedArgs[argCount]; + + for (size_t index = 0; index < argCount; index++) + { + exportedArgs[index] = pContextImpl->ExportValue(info[index]); + } + + CALLBACK_RETURN(pContextImpl->ImportValue(HostObjectUtil::Invoke(pvObject, info.IsConstructCall(), argCount, exportedArgs))); + } + + std::vector exportedArgs; + exportedArgs.reserve(argCount); + + for (size_t index = 0; index < argCount; index++) + { + exportedArgs.push_back(pContextImpl->ExportValue(info[index])); + } + + CALLBACK_RETURN(pContextImpl->ImportValue(HostObjectUtil::Invoke(pvObject, info.IsConstructCall(), argCount, exportedArgs.data()))); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } +} + +//----------------------------------------------------------------------------- + +void V8ContextImpl::InvokeFastHostObject(const v8::FunctionCallbackInfo& info) +{ + auto pContextImpl = ::GetContextImplFromData(info); + if (CheckContextImplForHostObjectCallback(pContextImpl)) + { + auto pvObject = pContextImpl->GetHostObject(info.This()); + if (pvObject != nullptr) + { + try + { + auto argCount = static_cast(info.Length()); + + if (argCount < 1) + { + CALLBACK_RETURN(pContextImpl->ImportValue(FastHostObjectUtil::Invoke(pvObject, info.IsConstructCall(), 0, nullptr))); + } + + if (argCount <= Constants::MaxInlineArgCount) + { + NonexistentV8Value exportedArgs[argCount]; + + for (size_t index = 0; index < argCount; index++) + { + exportedArgs[index] = pContextImpl->ExportValue(info[index]); + } + + CALLBACK_RETURN(pContextImpl->ImportValue(FastHostObjectUtil::Invoke(pvObject, info.IsConstructCall(), argCount, exportedArgs))); + } + + std::vector exportedArgs; + exportedArgs.reserve(argCount); + + for (size_t index = 0; index < argCount; index++) + { + exportedArgs.push_back(pContextImpl->ExportValue(info[index])); + } + + CALLBACK_RETURN(pContextImpl->ImportValue(FastHostObjectUtil::Invoke(pvObject, info.IsConstructCall(), argCount, exportedArgs.data()))); + } + catch (const HostException& exception) + { + pContextImpl->ThrowScriptException(exception); + } + } + } +} + +//----------------------------------------------------------------------------- + +void V8ContextImpl::FlushCallback(const v8::FunctionCallbackInfo& /*info*/) +{ +} //----------------------------------------------------------------------------- @@ -3181,31 +3912,100 @@ void V8ContextImpl::PerformanceNowCallback(const v8::FunctionCallbackInfo& info) { auto pContextImpl = ::GetContextImplFromData(info); - if (pContextImpl == nullptr) + if (pContextImpl != nullptr) { - return; - } + double delay; + if ((info.Length() < 1) || !::TryGetValueAsNumber(pContextImpl->m_hContext, info[0], delay)) + { + pContextImpl->ThrowException(v8::Exception::TypeError(pContextImpl->CreateString("Invalid argument: 'delay' must be a number"))); + } + else + { + auto precise = false; + if (info.Length() > 1) + { + auto hArg = info[1]; + if (!hArg.IsEmpty()) + { + precise = hArg->BooleanValue(info.GetIsolate()); + } + } - double delay; - if ((info.Length() < 1) || !::TryGetValueAsAnyNumber(pContextImpl->m_hContext, info[0], delay)) - { - pContextImpl->ThrowException(v8::Exception::TypeError(pContextImpl->CreateString("Invalid argument: 'delay' must be a number"))); - return; + if (delay > 0) + { + CALLBACK_RETURN(HighResolutionClock::SleepMilliseconds(delay, precise)); + } + } } +} + +//----------------------------------------------------------------------------- + +void V8ContextImpl::SetModuleResultCallback(const v8::FunctionCallbackInfo& info) +{ + FROM_MAYBE_TRY + + auto hMeta = ::ValueAsObject(info.Data()); + if (!hMeta.IsEmpty()) + { + auto pIsolate = info.GetIsolate(); + if (pIsolate != nullptr) + { + auto pIsolateImpl = V8IsolateImpl::GetInstanceFromIsolate(pIsolate); + if (pIsolateImpl != nullptr) + { + auto pContextImpl = pIsolateImpl->FindContext(FROM_MAYBE(hMeta->GetCreationContext(pIsolate))); + if (pContextImpl != nullptr) + { + auto hValue = (info.Length() > 0) ? info[0] : v8::Local(pContextImpl->GetUndefined()); + auto value = pContextImpl->ExportValue(hValue); + ASSERT_EVAL(FROM_MAYBE(hMeta->Set(pContextImpl->m_hContext, pContextImpl->m_hModuleResultKey, hValue))); + } + } + } + } + + FROM_MAYBE_CATCH_CONSUME +} + +//----------------------------------------------------------------------------- - auto precise = false; - if (info.Length() > 1) +void V8ContextImpl::GetPromiseStateCallback(const v8::FunctionCallbackInfo& info) +{ + auto pContextImpl = ::GetContextImplFromData(info); + if (pContextImpl != nullptr) { - auto hArg = info[1]; - if (!hArg.IsEmpty()) + if (info.Length() > 0) { - precise = hArg->BooleanValue(info.GetIsolate()); + auto hArg = info[0]; + if (!hArg.IsEmpty() && hArg->IsPromise()) + { + auto hPromise = hArg.As(); + CALLBACK_RETURN(hPromise->State()); + } } } +} - if (delay > 0) +//----------------------------------------------------------------------------- + +void V8ContextImpl::GetPromiseResultCallback(const v8::FunctionCallbackInfo& info) +{ + auto pContextImpl = ::GetContextImplFromData(info); + if (pContextImpl != nullptr) { - HighResolutionClock::SleepMilliseconds(delay, precise); + if (info.Length() > 0) + { + auto hArg = info[0]; + if (!hArg.IsEmpty() && hArg->IsPromise()) + { + auto hPromise = hArg.As(); + if (hPromise->State() != v8::Promise::PromiseState::kPending) + { + CALLBACK_RETURN(hPromise->Result()); + } + } + } } } @@ -3215,7 +4015,7 @@ void V8ContextImpl::DisposeWeakHandle(v8::Isolate* pIsolate, PersistentGetObject())); + ASSERT_EVAL(HostObjectUtil::RemoveV8ObjectCacheEntry(pvV8ObjectCache, pHolder->GetObject())); delete pHolder; phObject->Dispose(); @@ -3261,6 +4061,42 @@ bool V8ContextImpl::TryGetCachedModuleInfo(uint64_t uniqueId, V8DocumentInfo& do //----------------------------------------------------------------------------- +bool V8ContextImpl::TryGetCachedModuleMetaHolder(v8::Local hModule, v8::Local& hMetaHolder) +{ + _ASSERTE(m_spIsolateImpl->IsCurrent() && m_spIsolateImpl->IsLocked()); + + for (auto it = m_ModuleCache.begin(); it != m_ModuleCache.end(); it++) + { + if (it->hModule == hModule) + { + hMetaHolder = it->hMetaHolder; + return true; + } + } + + return false; +} + +//----------------------------------------------------------------------------- + +bool V8ContextImpl::TryGetCachedModuleMetaHolder(uint64_t uniqueId, v8::Local& hMetaHolder) +{ + _ASSERTE(m_spIsolateImpl->IsCurrent() && m_spIsolateImpl->IsLocked()); + + for (auto it = m_ModuleCache.begin(); it != m_ModuleCache.end(); it++) + { + if (it->DocumentInfo.GetUniqueId() == uniqueId) + { + hMetaHolder = it->hMetaHolder; + return true; + } + } + + return false; +} + +//----------------------------------------------------------------------------- + v8::Local V8ContextImpl::GetCachedModule(uint64_t uniqueId, size_t codeDigest) { _ASSERTE(m_spIsolateImpl->IsCurrent() && m_spIsolateImpl->IsLocked()); @@ -3310,10 +4146,12 @@ void V8ContextImpl::CacheModule(const V8DocumentInfo& documentInfo, size_t codeD { _ASSERTE(m_spIsolateImpl->IsCurrent() && m_spIsolateImpl->IsLocked()); - auto maxModuleCacheSize = HostObjectUtil::GetInstance().GetMaxModuleCacheSize(); + auto maxModuleCacheSize = HostObjectUtil::GetMaxModuleCacheSize(); while (m_ModuleCache.size() >= maxModuleCacheSize) { - Dispose(m_ModuleCache.back().hModule); + const auto& entry = m_ModuleCache.back(); + Dispose(entry.hMetaHolder); + Dispose(entry.hModule); m_ModuleCache.pop_back(); } @@ -3323,7 +4161,7 @@ void V8ContextImpl::CacheModule(const V8DocumentInfo& documentInfo, size_t codeD return (entry.DocumentInfo.GetUniqueId() == documentInfo.GetUniqueId()) && (entry.CodeDigest == codeDigest); })); - ModuleCacheEntry entry { documentInfo, codeDigest, CreatePersistent(hModule), cacheBytes }; + ModuleCacheEntry entry { documentInfo, codeDigest, CreatePersistent(hModule), cacheBytes, CreatePersistent(CreateObject()) }; m_ModuleCache.push_front(std::move(entry)); m_Statistics.ModuleCacheSize = m_ModuleCache.size(); @@ -3354,7 +4192,9 @@ void V8ContextImpl::ClearModuleCache() while (!m_ModuleCache.empty()) { - Dispose(m_ModuleCache.front().hModule); + const auto& entry = m_ModuleCache.front(); + Dispose(entry.hMetaHolder); + Dispose(entry.hModule); m_ModuleCache.pop_front(); } @@ -3438,22 +4278,6 @@ v8::Local V8ContextImpl::ImportValue(const V8Value& value) } } - { - int32_t result; - if (value.AsInt32(result)) - { - return CreateInteger(result); - } - } - - { - uint32_t result; - if (value.AsUInt32(result)) - { - return CreateInteger(result); - } - } - { const StdString* pString; if (value.AsString(pString)) @@ -3464,9 +4288,11 @@ v8::Local V8ContextImpl::ImportValue(const V8Value& value) { HostObjectHolder* pHolder; - if (value.AsHostObject(pHolder)) + V8Value::Subtype subtype; + V8Value::Flags flags; + if (value.AsHostObject(pHolder, subtype, flags)) { - auto pvV8Object = HostObjectUtil::GetInstance().GetCachedV8Object(m_pvV8ObjectCache, pHolder->GetObject()); + auto pvV8Object = HostObjectUtil::GetCachedV8Object(m_pvV8ObjectCache, pHolder->GetObject()); if (pvV8Object != nullptr) { return CreateLocal(::HandleFromPtr(pvV8Object)); @@ -3474,30 +4300,48 @@ v8::Local V8ContextImpl::ImportValue(const V8Value& value) v8::Local hObject; - auto invocability = HostObjectUtil::GetInstance().GetInvocability(pHolder->GetObject()); - if (invocability == IHostObjectUtil::Invocability::None) - { - BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true) - hObject = FROM_MAYBE(m_hHostObjectTemplate->InstanceTemplate()->NewInstance(m_hContext)); - END_PULSE_VALUE_SCOPE - } - else if (invocability == IHostObjectUtil::Invocability::Delegate) + if (::HasFlag(flags, V8Value::Flags::Fast)) { - BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true) - hObject = FROM_MAYBE(m_hHostDelegateTemplate->InstanceTemplate()->NewInstance(m_hContext)); - END_PULSE_VALUE_SCOPE + if (subtype == V8Value::Subtype::Function) + { + BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true) + hObject = FROM_MAYBE(m_hFastHostFunctionTemplate->InstanceTemplate()->NewInstance(m_hContext)); + END_PULSE_VALUE_SCOPE + } + else + { + BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true) + hObject = FROM_MAYBE(m_hFastHostObjectTemplate->InstanceTemplate()->NewInstance(m_hContext)); + END_PULSE_VALUE_SCOPE + } } else { - BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true) - hObject = FROM_MAYBE(m_hHostInvocableTemplate->InstanceTemplate()->NewInstance(m_hContext)); - END_PULSE_VALUE_SCOPE + auto invocability = HostObjectUtil::GetInvocability(pHolder->GetObject()); + if (invocability == HostObjectUtil::Invocability::None) + { + BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true) + hObject = FROM_MAYBE(m_hHostObjectTemplate->InstanceTemplate()->NewInstance(m_hContext)); + END_PULSE_VALUE_SCOPE + } + else if (invocability == HostObjectUtil::Invocability::Delegate) + { + BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true) + hObject = FROM_MAYBE(m_hHostDelegateTemplate->InstanceTemplate()->NewInstance(m_hContext)); + END_PULSE_VALUE_SCOPE + } + else + { + BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true) + hObject = FROM_MAYBE(m_hHostInvocableTemplate->InstanceTemplate()->NewInstance(m_hContext)); + END_PULSE_VALUE_SCOPE + } } ASSERT_EVAL(SetHostObjectHolder(hObject, pHolder = pHolder->Clone())); ASSERT_EVAL(FROM_MAYBE(hObject->SetPrivate(m_hContext, m_hAccessTokenKey, m_hAccessToken))); pvV8Object = ::PtrFromHandle(MakeWeak(CreatePersistent(hObject), pHolder, m_pvV8ObjectCache, DisposeWeakHandle)); - HostObjectUtil::GetInstance().CacheV8Object(m_pvV8ObjectCache, pHolder->GetObject(), pvV8Object); + HostObjectUtil::CacheV8Object(m_pvV8ObjectCache, pHolder->GetObject(), pvV8Object); return hObject; } @@ -3514,7 +4358,7 @@ v8::Local V8ContextImpl::ImportValue(const V8Value& value) return CreateLocal(::HandleFromPtr(pHolder->GetObject())); } - if (HasFlag(flags, V8Value::Flags::Shared)) + if (::HasFlag(flags, V8Value::Flags::Shared)) { const auto& spSharedObjectInfo = pHolder->GetSharedObjectInfo(); if (!spSharedObjectInfo.IsEmpty()) @@ -3630,16 +4474,6 @@ V8Value V8ContextImpl::ExportValue(v8::Local hValue) } } - if (hValue->IsInt32()) - { - return V8Value(FROM_MAYBE(hValue->Int32Value(m_hContext))); - } - - if (hValue->IsUint32()) - { - return V8Value(FROM_MAYBE(hValue->Uint32Value(m_hContext))); - } - auto hString = ::ValueAsString(hValue); if (!hString.IsEmpty()) { @@ -3686,12 +4520,12 @@ V8Value V8ContextImpl::ExportValue(v8::Local hValue) if (hObject->IsAsyncFunction()) { - flags = CombineFlags(flags, V8Value::Flags::Async); + flags = ::CombineFlags(flags, V8Value::Flags::Async); } if (hObject->IsGeneratorFunction()) { - flags = CombineFlags(flags, V8Value::Flags::Generator); + flags = ::CombineFlags(flags, V8Value::Flags::Generator); } } else if (hObject->IsGeneratorObject()) @@ -3706,7 +4540,7 @@ V8Value V8ContextImpl::ExportValue(v8::Local hValue) if (FROM_MAYBE(hObject->Get(m_hContext, m_hConstructorKey))->StrictEquals(m_hAsyncGeneratorConstructor)) { - flags = CombineFlags(flags, V8Value::Flags::Async); + flags = ::CombineFlags(flags, V8Value::Flags::Async); } } else if (hObject->IsMapIterator() || hObject->IsSetIterator()) @@ -3716,6 +4550,21 @@ V8Value V8ContextImpl::ExportValue(v8::Local hValue) else if (hObject->IsPromise()) { subtype = V8Value::Subtype::Promise; + + auto hPromise = hObject.As(); + switch (hPromise->State()) + { + case v8::Promise::PromiseState::kFulfilled: + break; + + case v8::Promise::PromiseState::kRejected: + flags = ::CombineFlags(flags, V8Value::Flags::Rejected); + break; + + default: + flags = ::CombineFlags(flags, V8Value::Flags::Pending); + break; + } } else if (hObject->IsArray()) { @@ -3728,7 +4577,7 @@ V8Value V8ContextImpl::ExportValue(v8::Local hValue) else if (hObject->IsSharedArrayBuffer()) { subtype = V8Value::Subtype::ArrayBuffer; - flags = CombineFlags(flags, V8Value::Flags::Shared); + flags = ::CombineFlags(flags, V8Value::Flags::Shared); auto hSharedArrayBuffer = hObject.As(); auto size = hSharedArrayBuffer->ByteLength(); @@ -3743,13 +4592,13 @@ V8Value V8ContextImpl::ExportValue(v8::Local hValue) auto spBackingStore = hArrayBufferView->Buffer()->GetBackingStore(); if (spBackingStore->IsShared()) { - flags = CombineFlags(flags, V8Value::Flags::Shared); + flags = ::CombineFlags(flags, V8Value::Flags::Shared); } if (hObject->IsDataView()) { subtype = V8Value::Subtype::DataView; - if (HasFlag(flags, V8Value::Flags::Shared)) + if (::HasFlag(flags, V8Value::Flags::Shared)) { spSharedObjectInfo = new V8SharedObjectInfo(std::move(spBackingStore), offset, size, size); } @@ -3801,7 +4650,7 @@ V8Value V8ContextImpl::ExportValue(v8::Local hValue) subtype = V8Value::Subtype::Float64Array; } - if (HasFlag(flags, V8Value::Flags::Shared) && (subtype != V8Value::Subtype::None)) + if (::HasFlag(flags, V8Value::Flags::Shared) && (subtype != V8Value::Subtype::None)) { auto hTypedArray = hObject.As(); spSharedObjectInfo = new V8SharedObjectInfo(std::move(spBackingStore), offset, size, hTypedArray->Length()); diff --git a/ClearScriptV8/V8ContextImpl.h b/ClearScriptV8/V8ContextImpl.h index 644ee710..fa4efb35 100644 --- a/ClearScriptV8/V8ContextImpl.h +++ b/ClearScriptV8/V8ContextImpl.h @@ -34,7 +34,8 @@ class V8ContextImpl final: public V8Context virtual size_t GetMaxIsolateStackUsage() override; virtual void SetMaxIsolateStackUsage(size_t value) override; - virtual void CallWithLock(CallWithLockCallback* pCallback, void* pvArg) override; + virtual void CallWithLock(CallWithLockCallback* pCallback, void* pvAction) override; + virtual void CallWithLockWithArg(CallWithLockWithArgCallback* pCallback, void* pvAction, void* pvArg) override; virtual V8Value GetRootObject() override; virtual void SetGlobalProperty(const StdString& name, const V8Value& value, bool globalMembers) override; @@ -122,6 +123,7 @@ class V8ContextImpl final: public V8Context size_t CodeDigest; Persistent hModule; std::vector CacheBytes; + Persistent hMetaHolder; }; struct SyntheticModuleExport final @@ -363,9 +365,9 @@ class V8ContextImpl final: public V8Context return m_spIsolateImpl->ThrowException(hException); } - void TerminateExecution() + void TerminateExecution(bool force) { - return m_spIsolateImpl->TerminateExecution(); + return m_spIsolateImpl->TerminateExecution(force); } bool IsExecutionTerminating() @@ -425,41 +427,61 @@ class V8ContextImpl final: public V8Context void GetV8ObjectPropertyNames(v8::Local hObject, std::vector& names, v8::PropertyFilter filter, v8::IndexFilter indexFilter); void GetV8ObjectPropertyIndices(v8::Local hObject, std::vector& indices, v8::PropertyFilter filter); - static void GetGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); - static void SetGlobalProperty(v8::Local hKey, v8::Local hValue, const v8::PropertyCallbackInfo& info); - static void QueryGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); - static void DeleteGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); + static v8::Intercepted GetGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); + static v8::Intercepted SetGlobalProperty(v8::Local hKey, v8::Local hValue, const v8::PropertyCallbackInfo& info); + static v8::Intercepted QueryGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); + static v8::Intercepted DeleteGlobalProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); static void GetGlobalPropertyNames(const v8::PropertyCallbackInfo& info); - static void GetGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info); - static void SetGlobalProperty(uint32_t index, v8::Local hValue, const v8::PropertyCallbackInfo& info); - static void QueryGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info); - static void DeleteGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info); + static v8::Intercepted GetGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info); + static v8::Intercepted SetGlobalProperty(uint32_t index, v8::Local hValue, const v8::PropertyCallbackInfo& info); + static v8::Intercepted QueryGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info); + static v8::Intercepted DeleteGlobalProperty(uint32_t index, const v8::PropertyCallbackInfo& info); static void GetGlobalPropertyIndices(const v8::PropertyCallbackInfo& info); static void HostObjectConstructorCallHandler(const v8::FunctionCallbackInfo& info); static void GetHostObjectIterator(const v8::FunctionCallbackInfo& info); static void GetHostObjectAsyncIterator(const v8::FunctionCallbackInfo& info); + static void GetFastHostObjectIterator(const v8::FunctionCallbackInfo& info); + static void GetFastHostObjectAsyncIterator(const v8::FunctionCallbackInfo& info); static void GetHostObjectJson(const v8::FunctionCallbackInfo& info); static void CreateFunctionForHostDelegate(const v8::FunctionCallbackInfo& info); static void InvokeHostDelegate(const v8::FunctionCallbackInfo& info); - static void GetHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); - static void SetHostObjectProperty(v8::Local hKey, v8::Local hValue, const v8::PropertyCallbackInfo& info); - static void QueryHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); - static void DeleteHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); + static v8::Intercepted GetHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); + static v8::Intercepted SetHostObjectProperty(v8::Local hKey, v8::Local hValue, const v8::PropertyCallbackInfo& info); + static v8::Intercepted QueryHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); + static v8::Intercepted DeleteHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); static void GetHostObjectPropertyNames(const v8::PropertyCallbackInfo& info); - static void GetHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info); - static void SetHostObjectProperty(uint32_t index, v8::Local hValue, const v8::PropertyCallbackInfo& info); - static void QueryHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info); - static void DeleteHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info); + static v8::Intercepted GetHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info); + static v8::Intercepted SetHostObjectProperty(uint32_t index, v8::Local hValue, const v8::PropertyCallbackInfo& info); + static v8::Intercepted QueryHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info); + static v8::Intercepted DeleteHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info); static void GetHostObjectPropertyIndices(const v8::PropertyCallbackInfo& info); + static v8::Intercepted GetFastHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); + static v8::Intercepted SetFastHostObjectProperty(v8::Local hKey, v8::Local hValue, const v8::PropertyCallbackInfo& info); + static v8::Intercepted QueryFastHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); + static v8::Intercepted DeleteFastHostObjectProperty(v8::Local hKey, const v8::PropertyCallbackInfo& info); + static void GetFastHostObjectPropertyNames(const v8::PropertyCallbackInfo& info); + + static v8::Intercepted GetFastHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info); + static v8::Intercepted SetFastHostObjectProperty(uint32_t index, v8::Local hValue, const v8::PropertyCallbackInfo& info); + static v8::Intercepted QueryFastHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info); + static v8::Intercepted DeleteFastHostObjectProperty(uint32_t index, const v8::PropertyCallbackInfo& info); + static void GetFastHostObjectPropertyIndices(const v8::PropertyCallbackInfo& info); + static void InvokeHostObject(const v8::FunctionCallbackInfo& info); + static void InvokeFastHostObject(const v8::FunctionCallbackInfo& info); + static void FlushCallback(const v8::FunctionCallbackInfo& info); static void PerformanceNowCallback(const v8::FunctionCallbackInfo& info); static void PerformanceSleepCallback(const v8::FunctionCallbackInfo& info); + static void SetModuleResultCallback(const v8::FunctionCallbackInfo& info); + + static void GetPromiseStateCallback(const v8::FunctionCallbackInfo& info); + static void GetPromiseResultCallback(const v8::FunctionCallbackInfo& info); v8::MaybeLocal ImportModule(const V8DocumentInfo* pSourceDocumentInfo, v8::Local hSpecifier); v8::MaybeLocal ResolveModule(v8::Local hSpecifier, const V8DocumentInfo* pSourceDocumentInfo); @@ -470,6 +492,8 @@ class V8ContextImpl final: public V8Context bool TryGetCachedModuleInfo(uint64_t uniqueId, V8DocumentInfo& documentInfo); bool TryGetCachedModuleInfo(v8::Local hModule, V8DocumentInfo& documentInfo); + bool TryGetCachedModuleMetaHolder(v8::Local hModule, v8::Local& hMetaHolder); + bool TryGetCachedModuleMetaHolder(uint64_t uniqueId, v8::Local& hMetaHolder); v8::Local GetCachedModule(uint64_t uniqueId, size_t codeDigest); v8::Local GetCachedModule(uint64_t uniqueId, size_t codeDigest, std::vector& cacheBytes); void CacheModule(const V8DocumentInfo& documentInfo, size_t codeDigest, v8::Local hModule); @@ -498,6 +522,8 @@ class V8ContextImpl final: public V8Context Persistent m_hContext; std::vector>> m_GlobalMembersStack; Persistent m_hIsHostObjectKey; + Persistent m_hModuleResultKey; + Persistent m_hMissingPropertyValue; Persistent m_hHostExceptionKey; Persistent m_hCacheKey; Persistent m_hAccessTokenKey; @@ -509,13 +535,17 @@ class V8ContextImpl final: public V8Context Persistent m_hPropertyValueNotInvocable; Persistent m_hInvalidModuleRequest; Persistent m_hConstructorKey; + Persistent m_hSetModuleResultKey; Persistent m_hHostObjectTemplate; Persistent m_hHostInvocableTemplate; Persistent m_hHostDelegateTemplate; + Persistent m_hFastHostObjectTemplate; + Persistent m_hFastHostFunctionTemplate; Persistent m_hToIteratorFunction; Persistent m_hToAsyncIteratorFunction; Persistent m_hToJsonFunction; Persistent m_hFlushFunction; + Persistent m_hGetModuleResultFunction; Persistent m_hAsyncGeneratorConstructor; Persistent m_hTerminationException; SharedPtr m_spWeakBinding; diff --git a/ClearScriptV8/V8DocumentInfo.h b/ClearScriptV8/V8DocumentInfo.h index d1d118a3..6a8404fd 100644 --- a/ClearScriptV8/V8DocumentInfo.h +++ b/ClearScriptV8/V8DocumentInfo.h @@ -45,7 +45,7 @@ struct V8DocumentInfo final m_SourceMapUrl(that.m_SourceMapUrl), m_UniqueId(that.m_UniqueId), m_Kind(that.m_Kind), - m_pvDocumentInfo((that.m_pvDocumentInfo != nullptr) ? HostObjectUtil::GetInstance().AddRef(that.m_pvDocumentInfo) : nullptr) + m_pvDocumentInfo((that.m_pvDocumentInfo != nullptr) ? HostObjectUtil::AddRef(that.m_pvDocumentInfo) : nullptr) { } @@ -66,7 +66,7 @@ struct V8DocumentInfo final m_SourceMapUrl = that.m_SourceMapUrl; m_UniqueId = that.m_UniqueId; m_Kind = that.m_Kind; - m_pvDocumentInfo = (that.m_pvDocumentInfo != nullptr) ? HostObjectUtil::GetInstance().AddRef(that.m_pvDocumentInfo) : nullptr; + m_pvDocumentInfo = (that.m_pvDocumentInfo != nullptr) ? HostObjectUtil::AddRef(that.m_pvDocumentInfo) : nullptr; return *this; } @@ -86,7 +86,7 @@ struct V8DocumentInfo final { if (m_pvDocumentInfo != nullptr) { - HostObjectUtil::GetInstance().Release(m_pvDocumentInfo); + HostObjectUtil::Release(m_pvDocumentInfo); } } diff --git a/ClearScriptV8/V8IsolateImpl.cpp b/ClearScriptV8/V8IsolateImpl.cpp index 8f8cb2c6..6c840818 100644 --- a/ClearScriptV8/V8IsolateImpl.cpp +++ b/ClearScriptV8/V8IsolateImpl.cpp @@ -67,19 +67,19 @@ void V8Platform::EnsureInitialized() #ifdef CLEARSCRIPT_TOP_LEVEL_AWAIT_CONTROL - if (!HasFlag(globalFlags, V8GlobalFlags::EnableTopLevelAwait)) + if (!::HasFlag(globalFlags, V8GlobalFlags::EnableTopLevelAwait)) { flagStrings.push_back("--no_harmony_top_level_await"); } #endif // CLEARSCRIPT_TOP_LEVEL_AWAIT_CONTROL - if (HasFlag(m_GlobalFlags, V8GlobalFlags::DisableJITCompilation)) + if (::HasFlag(m_GlobalFlags, V8GlobalFlags::DisableJITCompilation)) { flagStrings.push_back("--jitless"); } - if (HasFlag(m_GlobalFlags, V8GlobalFlags::DisableBackgroundWork)) + if (::HasFlag(m_GlobalFlags, V8GlobalFlags::DisableBackgroundWork)) { flagStrings.push_back("--single_threaded"); } @@ -199,15 +199,18 @@ class V8ForegroundTaskRunner final: public v8::TaskRunner V8ForegroundTaskRunner(V8IsolateImpl& isolateImpl); - virtual void PostTask(std::unique_ptr upTask) override; - virtual void PostNonNestableTask(std::unique_ptr upTask) override; - virtual void PostDelayedTask(std::unique_ptr upTask, double delayInSeconds) override; - virtual void PostNonNestableDelayedTask(std::unique_ptr upTask, double delayInSeconds) override; - virtual void PostIdleTask(std::unique_ptr upTask) override; virtual bool IdleTasksEnabled() override; virtual bool NonNestableTasksEnabled() const override; virtual bool NonNestableDelayedTasksEnabled() const override; +protected: + + virtual void PostTaskImpl(std::unique_ptr upTask, const v8::SourceLocation& location) override; + virtual void PostNonNestableTaskImpl(std::unique_ptr upTask, const v8::SourceLocation& location) override; + virtual void PostDelayedTaskImpl(std::unique_ptr upTask, double delayInSeconds, const v8::SourceLocation& location) override; + virtual void PostNonNestableDelayedTaskImpl(std::unique_ptr upTask, double delayInSeconds, const v8::SourceLocation& location) override; + virtual void PostIdleTaskImpl(std::unique_ptr upTask, const v8::SourceLocation& location) override; + private: V8IsolateImpl& m_IsolateImpl; @@ -224,7 +227,28 @@ V8ForegroundTaskRunner::V8ForegroundTaskRunner(V8IsolateImpl& isolateImpl): //----------------------------------------------------------------------------- -void V8ForegroundTaskRunner::PostTask(std::unique_ptr upTask) +bool V8ForegroundTaskRunner::IdleTasksEnabled() +{ + return false; +} + +//----------------------------------------------------------------------------- + +bool V8ForegroundTaskRunner::NonNestableTasksEnabled() const +{ + return true; +} + +//----------------------------------------------------------------------------- + +bool V8ForegroundTaskRunner::NonNestableDelayedTasksEnabled() const +{ + return true; +} + +//----------------------------------------------------------------------------- + +void V8ForegroundTaskRunner::PostTaskImpl(std::unique_ptr upTask, const v8::SourceLocation& /*location*/) { auto spIsolate = m_wrIsolate.GetTarget(); if (spIsolate.IsEmpty()) @@ -233,72 +257,51 @@ void V8ForegroundTaskRunner::PostTask(std::unique_ptr upTask) } else { - m_IsolateImpl.RunTaskWithLockAsync(true /*allowNesting*/, std::move(upTask)); + m_IsolateImpl.RunTaskWithLockAsync(true, std::move(upTask)); } } //----------------------------------------------------------------------------- -void V8ForegroundTaskRunner::PostNonNestableTask(std::unique_ptr upTask) +void V8ForegroundTaskRunner::PostNonNestableTaskImpl(std::unique_ptr upTask, const v8::SourceLocation& /*location*/) { auto spIsolate = m_wrIsolate.GetTarget(); if (!spIsolate.IsEmpty()) { - m_IsolateImpl.RunTaskWithLockAsync(false /*allowNesting*/, std::move(upTask)); + m_IsolateImpl.RunTaskWithLockAsync(false, std::move(upTask)); } } //----------------------------------------------------------------------------- -void V8ForegroundTaskRunner::PostDelayedTask(std::unique_ptr upTask, double delayInSeconds) +void V8ForegroundTaskRunner::PostDelayedTaskImpl(std::unique_ptr upTask, double delayInSeconds, const v8::SourceLocation& /*location*/) { auto spIsolate = m_wrIsolate.GetTarget(); if (!spIsolate.IsEmpty()) { - m_IsolateImpl.RunTaskWithLockDelayed(true /*allowNesting*/, std::move(upTask), delayInSeconds); + m_IsolateImpl.RunTaskWithLockDelayed(true, std::move(upTask), delayInSeconds); } } //----------------------------------------------------------------------------- -void V8ForegroundTaskRunner::PostNonNestableDelayedTask(std::unique_ptr upTask, double delayInSeconds) +void V8ForegroundTaskRunner::PostNonNestableDelayedTaskImpl(std::unique_ptr upTask, double delayInSeconds, const v8::SourceLocation& /*location*/) { auto spIsolate = m_wrIsolate.GetTarget(); if (!spIsolate.IsEmpty()) { - m_IsolateImpl.RunTaskWithLockDelayed(false /*allowNesting*/, std::move(upTask), delayInSeconds); + m_IsolateImpl.RunTaskWithLockDelayed(false, std::move(upTask), delayInSeconds); } } //----------------------------------------------------------------------------- -void V8ForegroundTaskRunner::PostIdleTask(std::unique_ptr /*upTask*/) +void V8ForegroundTaskRunner::PostIdleTaskImpl(std::unique_ptr /*upTask*/, const v8::SourceLocation& /*location*/) { // unexpected call to unsupported method std::terminate(); } -//----------------------------------------------------------------------------- - -bool V8ForegroundTaskRunner::IdleTasksEnabled() -{ - return false; -} - -//----------------------------------------------------------------------------- - -bool V8ForegroundTaskRunner::NonNestableTasksEnabled() const -{ - return true; -} - -//----------------------------------------------------------------------------- - -bool V8ForegroundTaskRunner::NonNestableDelayedTasksEnabled() const -{ - return true; -} - //----------------------------------------------------------------------------- // V8ArrayBufferAllocator //----------------------------------------------------------------------------- @@ -512,13 +515,13 @@ V8IsolateImpl::V8IsolateImpl(const StdString& name, const v8::ResourceConstraint m_hHostObjectHolderKey = CreatePersistent(CreatePrivate()); - if (HasFlag(options.Flags, Flags::EnableDebugging)) + if (::HasFlag(options.Flags, Flags::EnableDebugging)) { - EnableDebugging(options.DebugPort, HasFlag(options.Flags, Flags::EnableRemoteDebugging)); + EnableDebugging(options.DebugPort, ::HasFlag(options.Flags, Flags::EnableRemoteDebugging)); } m_upIsolate->SetHostInitializeImportMetaObjectCallback(ImportMetaInitializeCallback); - if (HasFlag(options.Flags, Flags::EnableDynamicModuleImports)) + if (::HasFlag(options.Flags, Flags::EnableDynamicModuleImports)) { m_upIsolate->SetHostImportModuleDynamicallyCallback(ModuleImportCallback); } @@ -551,17 +554,17 @@ void V8IsolateImpl::AddContext(V8ContextImpl* pContextImpl, const V8Context::Opt { _ASSERTE(IsCurrent() && IsLocked()); - if (!HasFlag(options.Flags, V8Context::Flags::EnableDebugging)) + if (!::HasFlag(options.Flags, V8Context::Flags::EnableDebugging)) { m_ContextEntries.emplace_back(pContextImpl); } else { m_ContextEntries.emplace_front(pContextImpl); - EnableDebugging(options.DebugPort, HasFlag(options.Flags, V8Context::Flags::EnableRemoteDebugging)); + EnableDebugging(options.DebugPort, ::HasFlag(options.Flags, V8Context::Flags::EnableRemoteDebugging)); } - if (HasFlag(options.Flags, V8Context::Flags::EnableDynamicModuleImports)) + if (::HasFlag(options.Flags, V8Context::Flags::EnableDynamicModuleImports)) { m_upIsolate->SetHostImportModuleDynamicallyCallback(ModuleImportCallback); } @@ -623,20 +626,20 @@ void V8IsolateImpl::EnableDebugging(int port, bool remote) } auto wrIsolate = CreateWeakRef(); - m_pvDebugAgent = HostObjectUtil::GetInstance().CreateDebugAgent(m_Name, version, port, remote, [this, wrIsolate] (IHostObjectUtil::DebugDirective directive, const StdString* pCommand) + m_pvDebugAgent = HostObjectUtil::CreateDebugAgent(m_Name, version, port, remote, [this, wrIsolate] (HostObjectUtil::DebugDirective directive, const StdString* pCommand) { auto spIsolate = wrIsolate.GetTarget(); if (!spIsolate.IsEmpty()) { - if (directive == IHostObjectUtil::DebugDirective::ConnectClient) + if (directive == HostObjectUtil::DebugDirective::ConnectClient) { ConnectDebugClient(); } - else if ((directive == IHostObjectUtil::DebugDirective::SendCommand) && pCommand) + else if ((directive == HostObjectUtil::DebugDirective::SendCommand) && pCommand) { SendDebugCommand(*pCommand); } - else if (directive == IHostObjectUtil::DebugDirective::DisconnectClient) + else if (directive == HostObjectUtil::DebugDirective::DisconnectClient) { DisconnectDebugClient(); } @@ -661,7 +664,7 @@ void V8IsolateImpl::DisableDebugging() m_upInspectorSession.reset(); m_upInspector.reset(); - HostObjectUtil::GetInstance().DestroyDebugAgent(m_pvDebugAgent); + HostObjectUtil::DestroyDebugAgent(m_pvDebugAgent); m_DebuggingEnabled = false; } } @@ -1041,7 +1044,7 @@ void V8IsolateImpl::sendResponse(int /*callId*/, std::unique_ptrstring())); + HostObjectUtil::SendDebugMessage(m_pvDebugAgent, StdString(upMessage->string())); } } @@ -1073,7 +1076,7 @@ void* V8IsolateImpl::AddRefV8Object(void* pvObject) void V8IsolateImpl::ReleaseV8Object(void* pvObject) { - CallWithLockNoWait(true /*allowNesting*/, [pvObject] (V8IsolateImpl* pIsolateImpl) + CallWithLockNoWait(true, [pvObject] (V8IsolateImpl* pIsolateImpl) { pIsolateImpl->Dispose(::HandleFromPtr(pvObject)); }); @@ -1094,7 +1097,7 @@ void* V8IsolateImpl::AddRefV8Script(void* pvScript) void V8IsolateImpl::ReleaseV8Script(void* pvScript) { - CallWithLockNoWait(true /*allowNesting*/, [pvScript] (V8IsolateImpl* pIsolateImpl) + CallWithLockNoWait(true, [pvScript] (V8IsolateImpl* pIsolateImpl) { pIsolateImpl->Dispose(::HandleFromPtr(pvScript)); }); @@ -1121,7 +1124,7 @@ void V8IsolateImpl::RunTaskAsync(std::unique_ptr upTask) END_MUTEX_SCOPE auto wrIsolate = CreateWeakRef(); - HostObjectUtil::GetInstance().QueueNativeCallback([this, wrIsolate, wpTask] () + HostObjectUtil::QueueNativeCallback([this, wrIsolate, wpTask] () { auto spIsolate = wrIsolate.GetTarget(); if (!spIsolate.IsEmpty()) @@ -1542,7 +1545,7 @@ void V8IsolateImpl::CacheScript(const V8DocumentInfo& documentInfo, size_t codeD { _ASSERTE(IsCurrent() && IsLocked()); - auto maxScriptCacheSize = HostObjectUtil::GetInstance().GetMaxScriptCacheSize(); + auto maxScriptCacheSize = HostObjectUtil::GetMaxScriptCacheSize(); while (m_ScriptCache.size() >= maxScriptCacheSize) { Dispose(m_ScriptCache.back().hScript); @@ -1716,7 +1719,7 @@ void V8IsolateImpl::CallWithLockAsync(bool allowNesting, CallWithLockCallback&& // trigger asynchronous queue processing auto wrIsolate = CreateWeakRef(); - HostObjectUtil::GetInstance().QueueNativeCallback([this, wrIsolate] () + HostObjectUtil::QueueNativeCallback([this, wrIsolate] () { auto spIsolate = wrIsolate.GetTarget(); if (!spIsolate.IsEmpty()) @@ -1833,7 +1836,7 @@ V8IsolateImpl::CallWithLockQueue V8IsolateImpl::PopCallWithLockQueue(const std:: void V8IsolateImpl::ConnectDebugClient() { - CallWithLockNoWait(true /*allowNesting*/, [] (V8IsolateImpl* pIsolateImpl) + CallWithLockNoWait(true, [] (V8IsolateImpl* pIsolateImpl) { if (pIsolateImpl->m_upInspector && !pIsolateImpl->m_upInspectorSession) { @@ -1846,7 +1849,7 @@ void V8IsolateImpl::ConnectDebugClient() void V8IsolateImpl::SendDebugCommand(const StdString& command) { - CallWithLockNoWait(true /*allowNesting*/, [command] (V8IsolateImpl* pIsolateImpl) + CallWithLockNoWait(true, [command] (V8IsolateImpl* pIsolateImpl) { if (pIsolateImpl->m_upInspectorSession) { @@ -1859,7 +1862,7 @@ void V8IsolateImpl::SendDebugCommand(const StdString& command) void V8IsolateImpl::DisconnectDebugClient() { - CallWithLockNoWait(true /*allowNesting*/, [] (V8IsolateImpl* pIsolateImpl) + CallWithLockNoWait(true, [] (V8IsolateImpl* pIsolateImpl) { pIsolateImpl->m_upInspectorSession.reset(); }); @@ -1882,7 +1885,7 @@ V8IsolateImpl::ExecutionScope* V8IsolateImpl::EnterExecutionScope(ExecutionScope if (maxHeapSize > 0) { // yes; perform initial check and set up heap watch timer - CheckHeapSize(maxHeapSize, false /*timerTriggered*/); + CheckHeapSize(maxHeapSize, false); // enter outermost heap size monitoring scope m_HeapWatchLevel = 1; @@ -1934,7 +1937,7 @@ V8IsolateImpl::ExecutionScope* V8IsolateImpl::EnterExecutionScope(ExecutionScope if ((m_pStackLimit != nullptr) && (pStackMarker < m_pStackLimit)) { // stack usage limit exceeded (host-side detection) - throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The V8 runtime has exceeded its stack usage limit")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_Name, StdString(SL("The V8 runtime has exceeded its stack usage limit")), false); } // enter nested stack usage monitoring scope @@ -2059,14 +2062,14 @@ void V8IsolateImpl::SetUpHeapWatchTimer(bool forceMinInterval) { // yes; request callback on execution thread auto wrTimer = pTimer->CreateWeakRef(); - CallWithLockAsync(true /*allowNesting*/, [wrTimer] (V8IsolateImpl* pIsolateImpl) + CallWithLockAsync(true, [wrTimer] (V8IsolateImpl* pIsolateImpl) { // execution thread callback; is the timer still alive? auto spTimer = wrTimer.GetTarget(); if (!spTimer.IsEmpty()) { // yes; check heap size - pIsolateImpl->CheckHeapSize(std::nullopt, true /*timerTriggered*/); + pIsolateImpl->CheckHeapSize(std::nullopt, true); } }); } @@ -2105,8 +2108,10 @@ void V8IsolateImpl::CheckHeapSize(const std::optional& optMaxHeapSize, b // yes; the isolate is out of memory; act based on policy if (m_DisableHeapSizeViolationInterrupt) { + // exception policy; are we executing script code? if (InExecutionScope()) { + // yes; schedule script exception now m_MaxHeapSize = 0; m_upIsolate->ThrowError("The V8 runtime has exceeded its memory limit"); return; @@ -2117,8 +2122,9 @@ void V8IsolateImpl::CheckHeapSize(const std::optional& optMaxHeapSize, b } else { + // termination policy; mark state and request termination m_IsOutOfMemory = true; - TerminateExecution(); + TerminateExecution(!timerTriggered); return; } } @@ -2154,7 +2160,7 @@ void V8IsolateImpl::PromiseHook(v8::PromiseHookType type, v8::Local { if ((type == v8::PromiseHookType::kResolve) && !hPromise.IsEmpty()) { - auto hContext = hPromise->GetCreationContext().FromMaybe(v8::Local()); + auto hContext = hPromise->GetCreationContext(v8::Isolate::GetCurrent()).FromMaybe(v8::Local()); if (!hContext.IsEmpty()) { GetInstanceFromIsolate(hContext->GetIsolate())->FlushContextAsync(hContext); @@ -2186,7 +2192,7 @@ void V8IsolateImpl::FlushContextAsync(ContextEntry& contextEntry) if (contextEntry.FlushPending.compare_exchange_strong(expected, true)) { auto wrContext = contextEntry.pContextImpl->CreateWeakRef(); - CallWithLockAsync(true /*allowNesting*/, [wrContext] (V8IsolateImpl* pIsolateImpl) + CallWithLockAsync(true, [wrContext] (V8IsolateImpl* pIsolateImpl) { auto spContext = wrContext.GetTarget(); if (!spContext.IsEmpty()) diff --git a/ClearScriptV8/V8IsolateImpl.h b/ClearScriptV8/V8IsolateImpl.h index 38805806..b693717b 100644 --- a/ClearScriptV8/V8IsolateImpl.h +++ b/ClearScriptV8/V8IsolateImpl.h @@ -384,7 +384,7 @@ class V8IsolateImpl final: public V8Isolate, public v8_inspector::V8InspectorCli return m_DebuggingEnabled; } - void TerminateExecution() + void TerminateExecution(bool force) { BEGIN_MUTEX_SCOPE(m_DataMutex) @@ -399,7 +399,7 @@ class V8IsolateImpl final: public V8Isolate, public v8_inspector::V8InspectorCli BEGIN_MUTEX_SCOPE(m_TerminateExecutionMutex) - if (m_pExecutionScope != nullptr) + if (force || (m_pExecutionScope != nullptr)) { TerminateExecutionInternal(); } diff --git a/ClearScriptV8/V8ObjectHelpers.cpp b/ClearScriptV8/V8ObjectHelpers.cpp index eb5ce4e2..bf161257 100644 --- a/ClearScriptV8/V8ObjectHelpers.cpp +++ b/ClearScriptV8/V8ObjectHelpers.cpp @@ -86,12 +86,12 @@ V8Value V8ObjectHelpers::InvokeMethod(const SharedPtr& spHolder, void V8ObjectHelpers::GetArrayBufferOrViewInfo(const SharedPtr& spHolder, V8Value& arrayBuffer, size_t& offset, size_t& size, size_t& length) { - return spHolder.DerefAs().GetArrayBufferOrViewInfo(arrayBuffer, offset, size, length); + spHolder.DerefAs().GetArrayBufferOrViewInfo(arrayBuffer, offset, size, length); } //----------------------------------------------------------------------------- void V8ObjectHelpers::InvokeWithArrayBufferOrViewData(const SharedPtr& spHolder, ArrayBufferOrViewDataCallback* pCallback, void* pvArg) { - return spHolder.DerefAs().InvokeWithArrayBufferOrViewData(pCallback, pvArg); + spHolder.DerefAs().InvokeWithArrayBufferOrViewData(pCallback, pvArg); } diff --git a/ClearScriptV8/V8ObjectHolder.h b/ClearScriptV8/V8ObjectHolder.h index 92d8bbe6..bb972189 100644 --- a/ClearScriptV8/V8ObjectHolder.h +++ b/ClearScriptV8/V8ObjectHolder.h @@ -13,7 +13,7 @@ class V8IsolateImpl; // V8SharedObjectInfo //----------------------------------------------------------------------------- -class V8SharedObjectInfo final : public SharedPtrTarget +class V8SharedObjectInfo final: public SharedPtrTarget { public: diff --git a/ClearScriptV8/V8Platform.h b/ClearScriptV8/V8Platform.h index ed636725..b58ab637 100644 --- a/ClearScriptV8/V8Platform.h +++ b/ClearScriptV8/V8Platform.h @@ -14,7 +14,7 @@ #define V8_IMMINENT_DEPRECATION_WARNINGS #ifdef _DEBUG - #define V8_ENABLE_CHECKS + #define V8_ENABLE_CHECKS 1 #endif // _DEBUG // #define CLEARSCRIPT_V8_POINTER_COMPRESSION_ENABLED @@ -417,44 +417,6 @@ const v8::Persistent V8SafePersistent::ms_EmptyImpl; template using Persistent = V8FastPersistent; -//----------------------------------------------------------------------------- -// V8 host scope -//----------------------------------------------------------------------------- - -class V8RwxHostScope final -{ - PROHIBIT_COPY(V8RwxHostScope) - PROHIBIT_HEAP(V8RwxHostScope) - -public: - - V8RwxHostScope(): - m_CodeSpaceWriteNestingLevel(v8::V8::EnterRwxHostScope()) - { - } - - ~V8RwxHostScope() - { - v8::V8::ExitRwxHostScope(m_CodeSpaceWriteNestingLevel); - } - -private: - - int m_CodeSpaceWriteNestingLevel; -}; - -//----------------------------------------------------------------------------- - -#define BEGIN_V8_RWX_HOST_SCOPE \ - { \ - DISABLE_WARNING(4456) /* declaration hides previous local declaration */ \ - V8RwxHostScope t_HostScope; \ - DEFAULT_WARNING(4456) - -#define END_V8_RWX_HOST_SCOPE \ - IGNORE_UNUSED(t_HostScope); \ - } - //----------------------------------------------------------------------------- // helper functions //----------------------------------------------------------------------------- diff --git a/ClearScriptV8/V8SplitProxyManaged.h b/ClearScriptV8/V8SplitProxyManaged.h index 5ba7faef..1744f2e7 100644 --- a/ClearScriptV8/V8SplitProxyManaged.h +++ b/ClearScriptV8/V8SplitProxyManaged.h @@ -19,7 +19,9 @@ V8_SPLIT_PROXY_MANAGED_METHOD(void, ScheduleScriptInterruptedException, const StdString& engineName, const StdString& message, const StdString& stackTrace, StdBool isFatal, StdBool executionStarted, const V8Value& scriptException, const V8Value& innerException) \ \ V8_SPLIT_PROXY_MANAGED_METHOD(void, InvokeHostAction, void* pvAction) \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, InvokeHostActionWithArg, void* pvAction, void* pvArg) \ V8_SPLIT_PROXY_MANAGED_METHOD(void, ProcessArrayBufferOrViewData, void* pvData, void* pvAction) \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, ProcessArrayBufferOrViewDataWithArg, void* pvData, void* pvAction, void* pvArg) \ V8_SPLIT_PROXY_MANAGED_METHOD(void, ProcessCpuProfile, const v8::CpuProfile& profile, void* pvAction) \ \ V8_SPLIT_PROXY_MANAGED_METHOD(void*, CreateV8ObjectCache) \ @@ -37,10 +39,9 @@ \ V8_SPLIT_PROXY_MANAGED_METHOD(void*, AddRefHostObject, void* pvObject) \ V8_SPLIT_PROXY_MANAGED_METHOD(void, ReleaseHostObject, void* pvObject) \ - V8_SPLIT_PROXY_MANAGED_METHOD(IHostObjectUtil::Invocability, GetHostObjectInvocability, void* pvObject) \ + V8_SPLIT_PROXY_MANAGED_METHOD(HostObjectUtil::Invocability, GetHostObjectInvocability, void* pvObject) \ \ - V8_SPLIT_PROXY_MANAGED_METHOD(void, GetHostObjectNamedProperty, void* pvObject, const StdString& name, V8Value& value) \ - V8_SPLIT_PROXY_MANAGED_METHOD(void, GetHostObjectNamedPropertyWithCacheability, void* pvObject, const StdString& name, V8Value& value, StdBool& isCacheable) \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, GetHostObjectNamedProperty, void* pvObject, const StdString& name, V8Value& value, StdBool& isCacheable) \ V8_SPLIT_PROXY_MANAGED_METHOD(void, SetHostObjectNamedProperty, void* pvObject, const StdString& name, const V8Value::Decoded& value) \ V8_SPLIT_PROXY_MANAGED_METHOD(StdBool, DeleteHostObjectNamedProperty, void* pvObject, const StdString& name) \ V8_SPLIT_PROXY_MANAGED_METHOD(void, GetHostObjectPropertyNames, void* pvObject, std::vector& names) \ @@ -56,6 +57,23 @@ V8_SPLIT_PROXY_MANAGED_METHOD(void, GetHostObjectEnumerator, void* pvObject, V8Value& result) \ V8_SPLIT_PROXY_MANAGED_METHOD(void, GetHostObjectAsyncEnumerator, void* pvObject, V8Value& result) \ \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, GetFastHostObjectNamedProperty, void* pvObject, const StdString& name, V8Value::FastResult& value, StdBool& isCacheable) \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, SetFastHostObjectNamedProperty, void* pvObject, const StdString& name, const V8Value::FastArg& value) \ + V8_SPLIT_PROXY_MANAGED_METHOD(FastHostObjectUtil::PropertyFlags, QueryFastHostObjectNamedProperty, void* pvObject, const StdString& name) \ + V8_SPLIT_PROXY_MANAGED_METHOD(StdBool, DeleteFastHostObjectNamedProperty, void* pvObject, const StdString& name) \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, GetFastHostObjectPropertyNames, void* pvObject, std::vector& names) \ + \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, GetFastHostObjectIndexedProperty, void* pvObject, int32_t index, V8Value::FastResult& value) \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, SetFastHostObjectIndexedProperty, void* pvObject, int32_t index, const V8Value::FastArg& value) \ + V8_SPLIT_PROXY_MANAGED_METHOD(FastHostObjectUtil::PropertyFlags, QueryFastHostObjectIndexedProperty, void* pvObject, int32_t index) \ + V8_SPLIT_PROXY_MANAGED_METHOD(StdBool, DeleteFastHostObjectIndexedProperty, void* pvObject, int32_t index) \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, GetFastHostObjectPropertyIndices, void* pvObject, std::vector& indices) \ + \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, InvokeFastHostObject, void* pvObject, StdBool asConstructor, int32_t argCount, const V8Value::FastArg* pArgs, V8Value::FastResult& result) \ + \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, GetFastHostObjectEnumerator, void* pvObject, V8Value::FastResult& result) \ + V8_SPLIT_PROXY_MANAGED_METHOD(void, GetFastHostObjectAsyncEnumerator, void* pvObject, V8Value::FastResult& result) \ + \ V8_SPLIT_PROXY_MANAGED_METHOD(void, QueueNativeCallback, NativeCallbackHandle* pCallbackHandle) \ \ V8_SPLIT_PROXY_MANAGED_METHOD(void*, CreateNativeCallbackTimer, int32_t dueTime, int32_t period, NativeCallbackHandle* pCallbackHandle) \ @@ -143,7 +161,7 @@ class V8SplitProxyManaged final: StaticBase //----------------------------------------------------------------------------- #define V8_SPLIT_PROXY_MANAGED_CALL(TABLE, NAME, ...) \ - reinterpret_cast((TABLE)[static_cast>(V8SplitProxyManaged::MethodSlot::NAME)])(__VA_ARGS__) + reinterpret_cast((TABLE)[::ToUnderlyingType(V8SplitProxyManaged::MethodSlot::NAME)])(__VA_ARGS__) #define V8_SPLIT_PROXY_MANAGED_INVOKE(TYPE, NAME, ...) \ V8SplitProxyManaged::Invoke([&] (void** pMethodTable) noexcept { return V8_SPLIT_PROXY_MANAGED_CALL(pMethodTable, NAME, __VA_ARGS__); }) diff --git a/ClearScriptV8/V8SplitProxyNative.cpp b/ClearScriptV8/V8SplitProxyNative.cpp index c6ab6823..5d48014d 100644 --- a/ClearScriptV8/V8SplitProxyNative.cpp +++ b/ClearScriptV8/V8SplitProxyNative.cpp @@ -39,6 +39,20 @@ static void InvokeHostAction(void* pvAction) noexcept //------------------------------------------------------------------------- +static void InvokeHostActionWithArg(void* pvAction, void* pvArg) noexcept +{ + try + { + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(InvokeHostActionWithArg, pvAction, pvArg); + } + catch (const HostException& exception) + { + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(ScheduleForwardingException, exception.GetException()); + } +} + +//------------------------------------------------------------------------- + static void ProcessArrayBufferOrViewData(void* pvData, void* pvAction) { try @@ -51,6 +65,22 @@ static void ProcessArrayBufferOrViewData(void* pvData, void* pvAction) } } +//------------------------------------------------------------------------- + +static void ProcessArrayBufferOrViewDataWithArg(void* pvData, void* pvArgs) +{ + const auto& args = *reinterpret_cast*>(pvArgs); + + try + { + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(ProcessArrayBufferOrViewDataWithArg, pvData, args.first, args.second); + } + catch (const HostException& exception) + { + V8_SPLIT_PROXY_MANAGED_INVOKE_VOID(ScheduleForwardingException, exception.GetException()); + } +} + //----------------------------------------------------------------------------- static void ProcessCpuProfile(const v8::CpuProfile& profile, void* pvAction) @@ -88,7 +118,7 @@ void V8Exception::ScheduleScriptEngineException() const noexcept } //----------------------------------------------------------------------------- -// V8EntityHandleBase (implementation) +// V8EntityHandleBase implementation //----------------------------------------------------------------------------- StdString V8EntityHandleBase::GetEntityReleasedMessage(const StdChar* pName) noexcept @@ -107,7 +137,7 @@ void V8EntityHandleBase::ScheduleInvalidOperationException(const StdString& mess } //----------------------------------------------------------------------------- -// V8Value (implementation) +// V8Value implementation //----------------------------------------------------------------------------- void V8Value::Decode(Decoded& decoded) const @@ -121,17 +151,9 @@ void V8Value::Decode(Decoded& decoded) const { decoded.DoubleValue = m_Data.DoubleValue; } - else if (m_Type == Type::Int32) - { - decoded.Int32Value = m_Data.Int32Value; - } - else if (m_Type == Type::UInt32) - { - decoded.UInt32Value = m_Data.UInt32Value; - } else if (m_Type == Type::String) { - decoded.pvData = m_Data.pString->ToCString(); + decoded.pStringData = m_Data.pString->ToCString(); decoded.Length = static_cast(m_Data.pString->GetLength()); } else if (m_Type == Type::DateTime) @@ -140,25 +162,76 @@ void V8Value::Decode(Decoded& decoded) const } else if (m_Type == Type::BigInt) { - decoded.pvData = m_Data.pBigInt->GetWords().data(); + decoded.pBigIntData = m_Data.pBigInt->GetWords().data(); decoded.Length = static_cast(m_Data.pBigInt->GetWords().size()); decoded.SignBit = static_cast(m_Data.pBigInt->GetSignBit()); } else if (m_Type == Type::V8Object) { - decoded.pvData = new V8ObjectHandle(m_Data.pV8ObjectHolder->Clone()); + decoded.pV8ObjectHandle = new V8ObjectHandle(m_Data.pV8ObjectHolder->Clone()); decoded.Subtype = m_Subtype; decoded.Flags = m_Flags; decoded.IdentityHash = m_Data.pV8ObjectHolder->GetIdentityHash(); } else if (m_Type == Type::HostObject) { - decoded.pvData = m_Data.pHostObjectHolder->GetObject(); + decoded.pvHostObject = m_Data.pHostObjectHolder->GetObject(); + decoded.Subtype = m_Subtype; + decoded.Flags = m_Flags; } } //----------------------------------------------------------------------------- -// V8 split proxy native entry points (implementation) + +void V8Value::InitializeFromFastResult(const FastResult& result) +{ + m_Type = result.Type; + if (m_Type == Type::Boolean) + { + m_Data.BooleanValue = result.Int32Value; + } + else if (m_Type == Type::Number) + { + m_Data.DoubleValue = result.DoubleValue; + } + else if (m_Type == Type::String) + { + m_Data.pString = new StdString(result.pStringData, result.Length); + } + else if (m_Type == Type::DateTime) + { + m_Data.DoubleValue = result.DoubleValue; + } + else if (m_Type == Type::BigInt) + { + std::vector words(result.pBigIntData, result.pBigIntData + result.Length); + m_Data.pBigInt = new V8BigInt(result.SignBit, std::move(words)); + } + else if (m_Type == Type::V8Object) + { + SharedPtr spHolder; + if (!result.pV8ObjectHandle->TryGetEntity(spHolder)) + { + m_Type = Type::Undefined; + } + else + { + m_Type = Type::V8Object; + m_Subtype = result.Subtype; + m_Flags = result.Flags; + m_Data.pV8ObjectHolder = spHolder->Clone(); + } + } + else if (m_Type == Type::HostObject) + { + m_Subtype = result.Subtype; + m_Flags = result.Flags; + m_Data.pHostObjectHolder = new HostObjectHolderImpl(result.pvHostObject, ::ToUnderlyingType(m_Subtype), ::ToUnderlyingType(m_Flags)); + } +} + +//----------------------------------------------------------------------------- +// V8 split proxy native entry points implementation //----------------------------------------------------------------------------- NATIVE_ENTRY_POINT(void**) V8SplitProxyManaged_SetMethodTable(void** pMethodTable) noexcept @@ -175,6 +248,27 @@ NATIVE_ENTRY_POINT(const StdChar*) V8SplitProxyNative_GetVersion() noexcept //----------------------------------------------------------------------------- +NATIVE_ENTRY_POINT(void*) Memory_Allocate(size_t size) noexcept +{ + return ::malloc(size); +} + +//----------------------------------------------------------------------------- + +NATIVE_ENTRY_POINT(void*) Memory_AllocateZeroed(size_t size) noexcept +{ + return ::calloc(1, size); +} + +//----------------------------------------------------------------------------- + +NATIVE_ENTRY_POINT(void) Memory_Free(const void* pMemory) noexcept +{ + ::free(const_cast(pMemory)); +} + +//----------------------------------------------------------------------------- + NATIVE_ENTRY_POINT(void) V8Environment_InitializeICU(const char* pICUData, uint32_t size) noexcept { ASSERT_EVAL(v8::V8::InitializeICU(pICUData, size)); @@ -506,20 +600,6 @@ NATIVE_ENTRY_POINT(void) V8Value_SetNumber(V8Value* pV8Value, double value) noex //----------------------------------------------------------------------------- -NATIVE_ENTRY_POINT(void) V8Value_SetInt32(V8Value* pV8Value, int32_t value) noexcept -{ - *pV8Value = V8Value(value); -} - -//----------------------------------------------------------------------------- - -NATIVE_ENTRY_POINT(void) V8Value_SetUInt32(V8Value* pV8Value, uint32_t value) noexcept -{ - *pV8Value = V8Value(value); -} - -//----------------------------------------------------------------------------- - NATIVE_ENTRY_POINT(void) V8Value_SetString(V8Value* pV8Value, const StdChar* pValue, int32_t length) noexcept { *pV8Value = V8Value(new StdString(pValue, length)); @@ -559,9 +639,9 @@ NATIVE_ENTRY_POINT(void) V8Value_SetV8Object(V8Value* pV8Value, const V8ObjectHa //----------------------------------------------------------------------------- -NATIVE_ENTRY_POINT(void) V8Value_SetHostObject(V8Value* pV8Value, void* pvObject) noexcept +NATIVE_ENTRY_POINT(void) V8Value_SetHostObject(V8Value* pV8Value, void* pvObject, V8Value::Subtype subtype, V8Value::Flags flags) noexcept { - *pV8Value = V8Value(new HostObjectHolderImpl(pvObject)); + *pV8Value = V8Value(new HostObjectHolderImpl(pvObject, ::ToUnderlyingType(subtype), ::ToUnderlyingType(flags))); } //----------------------------------------------------------------------------- @@ -1160,6 +1240,24 @@ NATIVE_ENTRY_POINT(void) V8Context_InvokeWithLock(const V8ContextHandle& handle, //----------------------------------------------------------------------------- +NATIVE_ENTRY_POINT(void) V8Context_InvokeWithLockWithArg(const V8ContextHandle& handle, void* pvAction, void* pvArg) noexcept +{ + auto spContext = handle.GetEntity(); + if (!spContext.IsEmpty()) + { + try + { + spContext->CallWithLockWithArg(InvokeHostActionWithArg, pvAction, pvArg); + } + catch (const V8Exception& exception) + { + exception.ScheduleScriptEngineException(); + } + } +} + +//----------------------------------------------------------------------------- + NATIVE_ENTRY_POINT(void) V8Context_GetRootItem(const V8ContextHandle& handle, V8Value& item) noexcept { auto spContext = handle.GetEntity(); @@ -1852,12 +1950,31 @@ NATIVE_ENTRY_POINT(void) V8Object_InvokeWithArrayBufferOrViewData(const V8Object //----------------------------------------------------------------------------- +NATIVE_ENTRY_POINT(void) V8Object_InvokeWithArrayBufferOrViewDataWithArg(const V8ObjectHandle& handle, void* pvAction, void* pvArg) noexcept +{ + auto spV8ObjectHolder = handle.GetEntity(); + if (!spV8ObjectHolder.IsEmpty()) + { + try + { + auto args = std::make_pair(pvAction, pvArg); + V8ObjectHelpers::InvokeWithArrayBufferOrViewData(spV8ObjectHolder, ProcessArrayBufferOrViewDataWithArg, &args); + } + catch (const V8Exception& exception) + { + exception.ScheduleScriptEngineException(); + } + } +} + +//----------------------------------------------------------------------------- + NATIVE_ENTRY_POINT(void) V8DebugCallback_ConnectClient(const V8DebugCallbackHandle& handle) noexcept { - SharedPtr spCallback; + SharedPtr spCallback; if (handle.TryGetEntity(spCallback)) { - (*spCallback)(IHostObjectUtil::DebugDirective::ConnectClient, nullptr /*pCommand*/); + (*spCallback)(HostObjectUtil::DebugDirective::ConnectClient, nullptr); } } @@ -1865,10 +1982,10 @@ NATIVE_ENTRY_POINT(void) V8DebugCallback_ConnectClient(const V8DebugCallbackHand NATIVE_ENTRY_POINT(void) V8DebugCallback_SendCommand(const V8DebugCallbackHandle& handle, const StdString& command) noexcept { - SharedPtr spCallback; + SharedPtr spCallback; if (handle.TryGetEntity(spCallback)) { - (*spCallback)(IHostObjectUtil::DebugDirective::SendCommand, &command); + (*spCallback)(HostObjectUtil::DebugDirective::SendCommand, &command); } } @@ -1876,10 +1993,10 @@ NATIVE_ENTRY_POINT(void) V8DebugCallback_SendCommand(const V8DebugCallbackHandle NATIVE_ENTRY_POINT(void) V8DebugCallback_DisconnectClient(const V8DebugCallbackHandle& handle) noexcept { - SharedPtr spCallback; + SharedPtr spCallback; if (handle.TryGetEntity(spCallback)) { - (*spCallback)(IHostObjectUtil::DebugDirective::DisconnectClient, nullptr /*pCommand*/); + (*spCallback)(HostObjectUtil::DebugDirective::DisconnectClient, nullptr); } } @@ -1887,7 +2004,7 @@ NATIVE_ENTRY_POINT(void) V8DebugCallback_DisconnectClient(const V8DebugCallbackH NATIVE_ENTRY_POINT(void) NativeCallback_Invoke(const NativeCallbackHandle& handle) noexcept { - SharedPtr spCallback; + SharedPtr spCallback; if (handle.TryGetEntity(spCallback)) { try @@ -1912,6 +2029,13 @@ NATIVE_ENTRY_POINT(void) V8Entity_Release(V8EntityHandleBase& handle) noexcept //----------------------------------------------------------------------------- +NATIVE_ENTRY_POINT(V8EntityHandleBase*) V8Entity_CloneHandle(V8EntityHandleBase& handle) noexcept +{ + return handle.Clone(); +} + +//----------------------------------------------------------------------------- + NATIVE_ENTRY_POINT(void) V8Entity_DestroyHandle(V8EntityHandleBase* pHandle) noexcept { delete pHandle; diff --git a/ClearScriptV8/V8SplitProxyNative.h b/ClearScriptV8/V8SplitProxyNative.h index f9e90363..ec7cdb9b 100644 --- a/ClearScriptV8/V8SplitProxyNative.h +++ b/ClearScriptV8/V8SplitProxyNative.h @@ -3,12 +3,6 @@ #pragma once -//----------------------------------------------------------------------------- -// forward declarations -//----------------------------------------------------------------------------- - -struct IV8SplitProxyManaged; - //----------------------------------------------------------------------------- // V8EntityName //----------------------------------------------------------------------------- @@ -61,6 +55,7 @@ class V8EntityHandleBase { public: + virtual V8EntityHandleBase* Clone() const noexcept = 0; virtual StdString CreateStdString(v8::Local hValue) const noexcept = 0; virtual void ReleaseEntity() noexcept = 0; virtual ~V8EntityHandleBase() noexcept {} @@ -82,7 +77,7 @@ class V8EntityHandle final: public V8EntityHandleBase public: - V8EntityHandle(T* pEntity) noexcept: + explicit V8EntityHandle(T* pEntity) noexcept: m_spEntity(pEntity) { } @@ -118,6 +113,17 @@ class V8EntityHandle final: public V8EntityHandleBase END_MUTEX_SCOPE } + V8EntityHandleBase* Clone() const noexcept override + { + SharedPtr spEntity; + + BEGIN_MUTEX_SCOPE(m_Mutex) + spEntity = m_spEntity; + END_MUTEX_SCOPE + + return new V8EntityHandle(std::move(spEntity)); + } + StdString CreateStdString(v8::Local hValue) const noexcept override { SharedPtr spEntity; @@ -135,6 +141,11 @@ class V8EntityHandle final: public V8EntityHandleBase private: + explicit V8EntityHandle(SharedPtr&& spEntity) noexcept : + m_spEntity(std::move(spEntity)) + { + } + mutable SimpleMutex m_Mutex; SharedPtr m_spEntity; }; @@ -149,8 +160,8 @@ DEFINE_V8_ENTITY_HANDLE(V8IsolateHandle, V8Isolate, SL("V8 runtime")) DEFINE_V8_ENTITY_HANDLE(V8ContextHandle, V8Context, SL("V8 script engine")) DEFINE_V8_ENTITY_HANDLE(V8ObjectHandle, V8ObjectHolder, SL("V8 object")) DEFINE_V8_ENTITY_HANDLE(V8ScriptHandle, V8ScriptHolder, SL("V8 script")) -DEFINE_V8_ENTITY_HANDLE(V8DebugCallbackHandle, IHostObjectUtil::DebugCallback, SL("V8 debug callback")) -DEFINE_V8_ENTITY_HANDLE(NativeCallbackHandle, IHostObjectUtil::NativeCallback, SL("native callback")) +DEFINE_V8_ENTITY_HANDLE(V8DebugCallbackHandle, HostObjectUtil::DebugCallback, SL("V8 debug callback")) +DEFINE_V8_ENTITY_HANDLE(NativeCallbackHandle, HostObjectUtil::NativeCallback, SL("native callback")) //----------------------------------------------------------------------------- // V8 split proxy native entry points @@ -160,6 +171,10 @@ NATIVE_ENTRY_POINT(void**) V8SplitProxyManaged_SetMethodTable(void** pMethodTabl NATIVE_ENTRY_POINT(const StdChar*) V8SplitProxyNative_GetVersion() noexcept; NATIVE_ENTRY_POINT(void) V8Environment_InitializeICU(const char* pICUData, uint32_t size) noexcept; +NATIVE_ENTRY_POINT(void*) Memory_Allocate(size_t size) noexcept; +NATIVE_ENTRY_POINT(void*) Memory_AllocateZeroed(size_t size) noexcept; +NATIVE_ENTRY_POINT(void) Memory_Free(const void* pMemory) noexcept; + NATIVE_ENTRY_POINT(StdString*) StdString_New(const StdChar* pValue, int32_t length) noexcept; NATIVE_ENTRY_POINT(const StdChar*) StdString_GetValue(const StdString& string, int32_t& length) noexcept; NATIVE_ENTRY_POINT(void) StdString_SetValue(StdString& string, const StdChar* pValue, int32_t length) noexcept; @@ -214,13 +229,11 @@ NATIVE_ENTRY_POINT(void) V8Value_SetUndefined(V8Value* pV8Value) noexcept; NATIVE_ENTRY_POINT(void) V8Value_SetNull(V8Value* pV8Value) noexcept; NATIVE_ENTRY_POINT(void) V8Value_SetBoolean(V8Value* pV8Value, StdBool value) noexcept; NATIVE_ENTRY_POINT(void) V8Value_SetNumber(V8Value* pV8Value, double value) noexcept; -NATIVE_ENTRY_POINT(void) V8Value_SetInt32(V8Value* pV8Value, int32_t value) noexcept; -NATIVE_ENTRY_POINT(void) V8Value_SetUInt32(V8Value* pV8Value, uint32_t value) noexcept; NATIVE_ENTRY_POINT(void) V8Value_SetString(V8Value* pV8Value, const StdChar* pValue, int32_t length) noexcept; NATIVE_ENTRY_POINT(void) V8Value_SetDateTime(V8Value* pV8Value, double value) noexcept; NATIVE_ENTRY_POINT(void) V8Value_SetBigInt(V8Value* pV8Value, int32_t signBit, const uint8_t* pBytes, int32_t length) noexcept; NATIVE_ENTRY_POINT(void) V8Value_SetV8Object(V8Value* pV8Value, const V8ObjectHandle& handle, V8Value::Subtype subtype, V8Value::Flags flags) noexcept; -NATIVE_ENTRY_POINT(void) V8Value_SetHostObject(V8Value* pV8Value, void* pvObject) noexcept; +NATIVE_ENTRY_POINT(void) V8Value_SetHostObject(V8Value* pV8Value, void* pvObject, V8Value::Subtype subtype, V8Value::Flags flags) noexcept; NATIVE_ENTRY_POINT(void) V8Value_Decode(const V8Value& value, V8Value::Decoded& decoded) noexcept; NATIVE_ENTRY_POINT(void) V8Value_Delete(V8Value* pV8Value) noexcept; @@ -265,6 +278,7 @@ NATIVE_ENTRY_POINT(void) V8Context_SetIsolateHeapSizeSampleInterval(const V8Cont NATIVE_ENTRY_POINT(size_t) V8Context_GetMaxIsolateStackUsage(const V8ContextHandle& handle) noexcept; NATIVE_ENTRY_POINT(void) V8Context_SetMaxIsolateStackUsage(const V8ContextHandle& handle, size_t size) noexcept; NATIVE_ENTRY_POINT(void) V8Context_InvokeWithLock(const V8ContextHandle& handle, void* pvAction) noexcept; +NATIVE_ENTRY_POINT(void) V8Context_InvokeWithLockWithArg(const V8ContextHandle& handle, void* pvAction, void* pvArg) noexcept; NATIVE_ENTRY_POINT(void) V8Context_GetRootItem(const V8ContextHandle& handle, V8Value& item) noexcept; NATIVE_ENTRY_POINT(void) V8Context_AddGlobalItem(const V8ContextHandle& handle, const StdString& name, const V8Value& value, StdBool globalMembers) noexcept; NATIVE_ENTRY_POINT(void) V8Context_AwaitDebuggerAndPause(const V8ContextHandle& handle) noexcept; @@ -306,6 +320,7 @@ NATIVE_ENTRY_POINT(void) V8Object_Invoke(const V8ObjectHandle& handle, StdBool a NATIVE_ENTRY_POINT(void) V8Object_InvokeMethod(const V8ObjectHandle& handle, const StdString& name, const std::vector& args, V8Value& result) noexcept; NATIVE_ENTRY_POINT(void) V8Object_GetArrayBufferOrViewInfo(const V8ObjectHandle& handle, V8Value& arrayBuffer, uint64_t& offset, uint64_t& size, uint64_t& length) noexcept; NATIVE_ENTRY_POINT(void) V8Object_InvokeWithArrayBufferOrViewData(const V8ObjectHandle& handle, void* pvAction) noexcept; +NATIVE_ENTRY_POINT(void) V8Object_InvokeWithArrayBufferOrViewDataWithArg(const V8ObjectHandle& handle, void* pvAction, void* pvArg) noexcept; NATIVE_ENTRY_POINT(void) V8DebugCallback_ConnectClient(const V8DebugCallbackHandle& handle) noexcept; NATIVE_ENTRY_POINT(void) V8DebugCallback_SendCommand(const V8DebugCallbackHandle& handle, const StdString& command) noexcept; @@ -314,6 +329,7 @@ NATIVE_ENTRY_POINT(void) V8DebugCallback_DisconnectClient(const V8DebugCallbackH NATIVE_ENTRY_POINT(void) NativeCallback_Invoke(const NativeCallbackHandle& handle) noexcept; NATIVE_ENTRY_POINT(void) V8Entity_Release(V8EntityHandleBase& handle) noexcept; +NATIVE_ENTRY_POINT(V8EntityHandleBase*) V8Entity_CloneHandle(V8EntityHandleBase& handle) noexcept; NATIVE_ENTRY_POINT(void) V8Entity_DestroyHandle(V8EntityHandleBase* pHandle) noexcept; NATIVE_ENTRY_POINT(void) HostException_Schedule(StdString&& message, V8Value&& exception) noexcept; diff --git a/ClearScriptV8/V8Value.h b/ClearScriptV8/V8Value.h index 92a6e71a..992d6b27 100644 --- a/ClearScriptV8/V8Value.h +++ b/ClearScriptV8/V8Value.h @@ -71,7 +71,7 @@ class V8BigInt final // V8Value //----------------------------------------------------------------------------- -class V8Value final +class V8Value { public: @@ -103,8 +103,6 @@ class V8Value final Null, Boolean, Number, - Int32, - UInt32, String, DateTime, BigInt, @@ -140,45 +138,17 @@ class V8Value final // IMPORTANT: maintain bitwise equivalence with managed enum V8.SplitProxy.V8Value.Flags None = 0, Shared = 0x0001, + Fast = 0x0001, Async = 0x0002, - Generator = 0x0004 + Generator = 0x0004, + Pending = 0x0008, + Rejected = 0x0010 }; - struct Decoded - { - // IMPORTANT: maintain bitwise equivalence with managed struct V8.SplitProxy.V8Value.Decoded - Type Type; - Subtype Subtype; - union - { - Flags Flags; - int16_t SignBit; - }; - union - { - int32_t Length; - int32_t IdentityHash; - }; - union - { - int32_t Int32Value; - uint32_t UInt32Value; - double DoubleValue; - const void* pvData; - }; - }; - - static_assert(sizeof(Decoded) == 16, "The managed SplitProxy code assumes that sizeof(Decoded) is 16 on all platforms."); - static_assert(offsetof(Decoded, Type) == 0, "The managed SplitProxy code assumes that offsetof(Decoded, Type) is 0 on all platforms."); - static_assert(offsetof(Decoded, Subtype) == 1, "The managed SplitProxy code assumes that offsetof(Decoded, Subtype) is 1 on all platforms."); - static_assert(offsetof(Decoded, Flags) == 2, "The managed SplitProxy code assumes that offsetof(Decoded, Flags) is 2 on all platforms."); - static_assert(offsetof(Decoded, SignBit) == 2, "The managed SplitProxy code assumes that offsetof(Decoded, SignBit) is 2 on all platforms."); - static_assert(offsetof(Decoded, Length) == 4, "The managed SplitProxy code assumes that offsetof(Decoded, Length) is 4 on all platforms."); - static_assert(offsetof(Decoded, IdentityHash) == 4, "The managed SplitProxy code assumes that offsetof(Decoded, IdentityHash) is 4 on all platforms."); - static_assert(offsetof(Decoded, Int32Value) == 8, "The managed SplitProxy code assumes that offsetof(Decoded, Int32Value) is 8 on all platforms."); - static_assert(offsetof(Decoded, UInt32Value) == 8, "The managed SplitProxy code assumes that offsetof(Decoded, UInt32Value) is 8 on all platforms."); - static_assert(offsetof(Decoded, DoubleValue) == 8, "The managed SplitProxy code assumes that offsetof(Decoded, DoubleValue) is 8 on all platforms."); - static_assert(offsetof(Decoded, pvData) == 8, "The managed SplitProxy code assumes that offsetof(Decoded, pvData) is 8 on all platforms."); + struct WireData; + struct Decoded; + struct FastArg; + struct FastResult; explicit V8Value(NonexistentInitializer): m_Type(Type::Nonexistent) @@ -207,18 +177,6 @@ class V8Value final m_Data.DoubleValue = value; } - explicit V8Value(int32_t value): - m_Type(Type::Int32) - { - m_Data.Int32Value = value; - } - - explicit V8Value(uint32_t value): - m_Type(Type::UInt32) - { - m_Data.UInt32Value = value; - } - explicit V8Value(const StdString* pString): m_Type(Type::String) { @@ -231,7 +189,7 @@ class V8Value final m_Data.DoubleValue = value; } - V8Value(const V8BigInt* pBigInt): + explicit V8Value(const V8BigInt* pBigInt): m_Type(Type::BigInt) { m_Data.pBigInt = pBigInt; @@ -246,7 +204,9 @@ class V8Value final } explicit V8Value(HostObjectHolder* pHostObjectHolder): - m_Type(Type::HostObject) + m_Type(Type::HostObject), + m_Subtype(::ToEnum(pHostObjectHolder->GetSubtype())), + m_Flags(::ToEnum(pHostObjectHolder->GetFlags())) { m_Data.pHostObjectHolder = pHostObjectHolder; } @@ -261,6 +221,13 @@ class V8Value final Move(that); } + explicit V8Value(const FastResult& result) + { + InitializeFromFastResult(result); + } + + explicit V8Value(void*) = delete; + const V8Value& operator=(const V8Value& that) { Dispose(); @@ -312,28 +279,6 @@ class V8Value final return false; } - bool AsInt32(int32_t& result) const - { - if (m_Type == Type::Int32) - { - result = m_Data.Int32Value; - return true; - } - - return false; - } - - bool AsUInt32(uint32_t& result) const - { - if (m_Type == Type::UInt32) - { - result = m_Data.UInt32Value; - return true; - } - - return false; - } - bool AsString(const StdString*& pString) const { if (m_Type == Type::String) @@ -380,11 +325,13 @@ class V8Value final return false; } - bool AsHostObject(HostObjectHolder*& pHostObjectHolder) const + bool AsHostObject(HostObjectHolder*& pHostObjectHolder, Subtype& subtype, Flags& flags) const { if (m_Type == Type::HostObject) { pHostObjectHolder = m_Data.pHostObjectHolder; + subtype = m_Subtype; + flags = m_Flags; return true; } @@ -409,8 +356,6 @@ class V8Value final { bool BooleanValue; double DoubleValue; - int32_t Int32Value; - uint32_t UInt32Value; const StdString* pString; V8ObjectHolder* pV8ObjectHolder; HostObjectHolder* pHostObjectHolder; @@ -431,14 +376,6 @@ class V8Value final { m_Data.DoubleValue = that.m_Data.DoubleValue; } - else if (m_Type == Type::Int32) - { - m_Data.Int32Value = that.m_Data.Int32Value; - } - else if (m_Type == Type::UInt32) - { - m_Data.UInt32Value = that.m_Data.UInt32Value; - } else if (m_Type == Type::String) { m_Data.pString = new StdString(*that.m_Data.pString); @@ -467,9 +404,11 @@ class V8Value final m_Subtype = that.m_Subtype; m_Flags = that.m_Flags; m_Data = that.m_Data; - that.m_Type = Type::Undefined; + that.m_Type = Type::Nonexistent; } + void InitializeFromFastResult(const FastResult& result); + void Dispose() { if (m_Type == Type::String) @@ -498,3 +437,31 @@ class V8Value final }; static_assert(sizeof(V8Value) == 16, "The managed SplitProxy code assumes that sizeof(V8Value) is 16 on all platforms."); + +//----------------------------------------------------------------------------- +// DefaultInitializedV8Value +//----------------------------------------------------------------------------- + +template +class DefaultInitializedV8Value final: public V8Value +{ +public: + + using V8Value::V8Value; + + DefaultInitializedV8Value(): + V8Value(ms_Initializer) + { + static_assert(sizeof(DefaultInitializedV8Value) == sizeof(V8Value)); + } + + using V8Value::operator=; + +private: + + static const TInitializer ms_Initializer {}; +}; + +using NonexistentV8Value = DefaultInitializedV8Value; +using UndefinedV8Value = DefaultInitializedV8Value; +using NullV8Value = DefaultInitializedV8Value; diff --git a/ClearScriptV8/V8ValueWireData.h b/ClearScriptV8/V8ValueWireData.h new file mode 100644 index 00000000..99d281c3 --- /dev/null +++ b/ClearScriptV8/V8ValueWireData.h @@ -0,0 +1,132 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +#pragma once + +//----------------------------------------------------------------------------- +// V8Value::WireData +//----------------------------------------------------------------------------- + +struct V8Value::WireData +{ + // IMPORTANT: maintain bitwise equivalence with managed struct V8.SplitProxy.V8Value.WireData + + Type Type; + Subtype Subtype; + + union + { + Flags Flags; + int16_t SignBit; + }; + + union + { + int32_t Length; + int32_t IdentityHash; + }; + + union + { + int32_t Int32Value; + double DoubleValue; + const StdChar* pStringData; + const uint64_t* pBigIntData; + const V8ObjectHandle* pV8ObjectHandle; + void* pvHostObject; + }; +}; + +//----------------------------------------------------------------------------- + +static_assert(sizeof(V8Value::WireData) == 16, "The managed SplitProxy code assumes that sizeof(V8Value::WireData) is 16 on all platforms."); +static_assert(offsetof(V8Value::WireData, Type) == 0, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, Type) is 0 on all platforms."); +static_assert(offsetof(V8Value::WireData, Subtype) == 1, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, Subtype) is 1 on all platforms."); +static_assert(offsetof(V8Value::WireData, Flags) == 2, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, Flags) is 2 on all platforms."); +static_assert(offsetof(V8Value::WireData, SignBit) == 2, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, SignBit) is 2 on all platforms."); +static_assert(offsetof(V8Value::WireData, Length) == 4, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, Length) is 4 on all platforms."); +static_assert(offsetof(V8Value::WireData, IdentityHash) == 4, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, IdentityHash) is 4 on all platforms."); +static_assert(offsetof(V8Value::WireData, Int32Value) == 8, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, Int32Value) is 8 on all platforms."); +static_assert(offsetof(V8Value::WireData, DoubleValue) == 8, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, DoubleValue) is 8 on all platforms."); +static_assert(offsetof(V8Value::WireData, pStringData) == 8, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, pStringData) is 8 on all platforms."); +static_assert(offsetof(V8Value::WireData, pBigIntData) == 8, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, pBigIntData) is 8 on all platforms."); +static_assert(offsetof(V8Value::WireData, pV8ObjectHandle) == 8, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, pV8ObjectHandle) is 8 on all platforms."); +static_assert(offsetof(V8Value::WireData, pvHostObject) == 8, "The managed SplitProxy code assumes that offsetof(V8Value::WireData, pvHostObject) is 8 on all platforms."); + +//----------------------------------------------------------------------------- +// V8Value::Decoded +//----------------------------------------------------------------------------- + +struct V8Value::Decoded: WireData +{ + // IMPORTANT: maintain bitwise equivalence with managed struct V8.SplitProxy.V8Value.Decoded +}; + +//----------------------------------------------------------------------------- + +static_assert(sizeof(V8Value::Decoded) == sizeof(V8Value::WireData)); + +//----------------------------------------------------------------------------- +// V8Value::FastArg +//----------------------------------------------------------------------------- + +struct V8Value::FastArg final: Decoded +{ + // IMPORTANT: maintain bitwise equivalence with managed struct V8.SplitProxy.V8Value.FastArg + + ~FastArg() + { + switch (Type) + { + case Type::V8Object: + delete pV8ObjectHandle; + break; + + default: + break; + } + } +}; + +//----------------------------------------------------------------------------- + +static_assert(sizeof(V8Value::FastArg) == sizeof(V8Value::Decoded)); + +//----------------------------------------------------------------------------- +// V8Value::FastResult +//----------------------------------------------------------------------------- + +struct V8Value::FastResult final: WireData +{ + // IMPORTANT: maintain bitwise equivalence with managed struct V8.SplitProxy.V8Value.FastResult + + FastResult() + { + Type = Type::Nonexistent; + } + + ~FastResult() + { + switch (Type) + { + case Type::String: + ::Memory_Free(pStringData); + break; + + case Type::BigInt: + ::Memory_Free(pBigIntData); + break; + + case Type::V8Object: + delete pV8ObjectHandle; + break; + + default: + break; + } + } +}; + +//----------------------------------------------------------------------------- + +static_assert(sizeof(V8Value::FastResult) == sizeof(V8Value::WireData)); diff --git a/ClearScriptV8/V8WeakContextBinding.h b/ClearScriptV8/V8WeakContextBinding.h index 07071d3b..4c65af13 100644 --- a/ClearScriptV8/V8WeakContextBinding.h +++ b/ClearScriptV8/V8WeakContextBinding.h @@ -27,7 +27,7 @@ class V8WeakContextBinding final: public SharedPtrTarget return spIsolateImpl; } - throw V8Exception(V8Exception::Type::General, m_IsolateName, StdString(SL("The V8 runtime has been destroyed")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_IsolateName, StdString(SL("The V8 runtime has been destroyed")), false); } bool TryGetIsolateImpl(SharedPtr& spIsolateImpl) const @@ -50,7 +50,7 @@ class V8WeakContextBinding final: public SharedPtrTarget return spContextImpl; } - throw V8Exception(V8Exception::Type::General, m_ContextName, StdString(SL("The V8 script engine has been destroyed")), false /*executionStarted*/); + throw V8Exception(V8Exception::Type::General, m_ContextName, StdString(SL("The V8 script engine has been destroyed")), false); } bool TryGetContextImpl(SharedPtr& spContextImpl) const diff --git a/ClearScriptV8/win-arm64/ClearScriptV8.win-arm64.vcxproj b/ClearScriptV8/win-arm64/ClearScriptV8.win-arm64.vcxproj index 7b65ee4f..88d313de 100644 --- a/ClearScriptV8/win-arm64/ClearScriptV8.win-arm64.vcxproj +++ b/ClearScriptV8/win-arm64/ClearScriptV8.win-arm64.vcxproj @@ -86,7 +86,7 @@ true stdcpp20 MultiThreadedDebug - -Wno-unused-parameter -Wno-unused-private-field + -Wno-unused-parameter -Wno-unused-private-field -Wno-vla-cxx-extension -Wno-cast-function-type-mismatch DebugFull @@ -124,7 +124,7 @@ true stdcpp20 MultiThreaded - -Wno-unused-parameter -Wno-unused-private-field + -Wno-unused-parameter -Wno-unused-private-field -Wno-vla-cxx-extension -Wno-cast-function-type-mismatch DebugFull @@ -194,13 +194,10 @@ + - - - - diff --git a/ClearScriptV8/win-arm64/ClearScriptV8.win-arm64.vcxproj.filters b/ClearScriptV8/win-arm64/ClearScriptV8.win-arm64.vcxproj.filters index 3b5a4043..eb83d7cf 100644 --- a/ClearScriptV8/win-arm64/ClearScriptV8.win-arm64.vcxproj.filters +++ b/ClearScriptV8/win-arm64/ClearScriptV8.win-arm64.vcxproj.filters @@ -123,6 +123,9 @@ Header Files + + Header Files + Header Files diff --git a/ClearScriptV8/win-x64/ClearScriptV8.win-x64.vcxproj b/ClearScriptV8/win-x64/ClearScriptV8.win-x64.vcxproj index 13c4689e..48d3a744 100644 --- a/ClearScriptV8/win-x64/ClearScriptV8.win-x64.vcxproj +++ b/ClearScriptV8/win-x64/ClearScriptV8.win-x64.vcxproj @@ -86,7 +86,7 @@ true stdcpp20 MultiThreadedDebug - -Wno-unused-parameter -Wno-unused-private-field + -Wno-unused-parameter -Wno-unused-private-field -Wno-vla-cxx-extension -Wno-cast-function-type-mismatch DebugFull @@ -124,7 +124,7 @@ true stdcpp20 MultiThreaded - -Wno-unused-parameter -Wno-unused-private-field + -Wno-unused-parameter -Wno-unused-private-field -Wno-vla-cxx-extension -Wno-cast-function-type-mismatch DebugFull @@ -194,13 +194,10 @@ + - - - - diff --git a/ClearScriptV8/win-x64/ClearScriptV8.win-x64.vcxproj.filters b/ClearScriptV8/win-x64/ClearScriptV8.win-x64.vcxproj.filters index 3b5a4043..eb83d7cf 100644 --- a/ClearScriptV8/win-x64/ClearScriptV8.win-x64.vcxproj.filters +++ b/ClearScriptV8/win-x64/ClearScriptV8.win-x64.vcxproj.filters @@ -123,6 +123,9 @@ Header Files + + Header Files + Header Files diff --git a/ClearScriptV8/win-x86/ClearScriptV8.win-x86.vcxproj b/ClearScriptV8/win-x86/ClearScriptV8.win-x86.vcxproj index bea532ab..6b19ed84 100644 --- a/ClearScriptV8/win-x86/ClearScriptV8.win-x86.vcxproj +++ b/ClearScriptV8/win-x86/ClearScriptV8.win-x86.vcxproj @@ -85,7 +85,7 @@ true stdcpp20 MultiThreadedDebug - -Wno-unused-parameter -Wno-unused-private-field + -Wno-unused-parameter -Wno-unused-private-field -Wno-vla-cxx-extension -Wno-cast-function-type-mismatch DebugFull @@ -123,7 +123,7 @@ true stdcpp20 MultiThreaded - -Wno-unused-parameter -Wno-unused-private-field + -Wno-unused-parameter -Wno-unused-private-field -Wno-vla-cxx-extension -Wno-cast-function-type-mismatch DebugFull @@ -193,13 +193,10 @@ + - - - - diff --git a/ClearScriptV8/win-x86/ClearScriptV8.win-x86.vcxproj.filters b/ClearScriptV8/win-x86/ClearScriptV8.win-x86.vcxproj.filters index d77cf6d3..f15dec8f 100644 --- a/ClearScriptV8/win-x86/ClearScriptV8.win-x86.vcxproj.filters +++ b/ClearScriptV8/win-x86/ClearScriptV8.win-x86.vcxproj.filters @@ -123,6 +123,9 @@ Header Files + + Header Files + Header Files diff --git a/Misc/JScriptReplacement/DisableJScriptReplacement_CurrentUser.reg b/Misc/JScriptReplacement/DisableJScriptReplacement_CurrentUser.reg new file mode 100644 index 0000000000000000000000000000000000000000..f16c73cdabceba08ae6177a6f886bf819b65e83c GIT binary patch literal 300 zcmXw!(Q3j_5Jb;&q5mL$K@!8YQ4nl7Q{cw>@{ETsAi|b9Z+3 z_h(5-#f~#q8aiYY9ON2WYQAL#s-@^G?yyj=RZDRt?s3Px=a!qO70-((mt&zS_OZ literal 0 HcmV?d00001 diff --git a/Misc/JScriptReplacement/DisableJScriptReplacement_LocalMachine.reg b/Misc/JScriptReplacement/DisableJScriptReplacement_LocalMachine.reg new file mode 100644 index 0000000000000000000000000000000000000000..4c71e34ffad61fc5fd0a43a0a8199a6045006a9a GIT binary patch literal 302 zcmXw!QA+|r6otR%p#LELfas-{pa&77vQjjZXl0RHW1&XbT`>Q=_T7OP?p)3}bI#m* zJ}s$9Y}j$2rN@klFS(YEhNH|#wHEEfJr?SXYAsIU8?LzaTyl}?g9pZX-YI!z!jOTz zujML!tVry0=bne0vf(!G6np)j*zXTnGBhIq literal 0 HcmV?d00001 diff --git a/Misc/ProcessDebugManager/CLSID_ProcessDebugManager.reg b/Misc/ProcessDebugManager/CLSID_ProcessDebugManager.reg index 632b2c0abbb314049e0bfb70f936e925d1ec9ab0..dc7c346bdcaa0bef6e989a87bfec7f28a2202632 100644 GIT binary patch delta 125 zcmeyxzJ+hYFXqV-jA|3_s7<_(2PDN~7@Qe=7=jr*8C)1*8F(4E7#tXE8I&g5Gy6{F qV>AFN;RPuvWhi0@V@PEvnt0xL60-?VcoH)U#0Ve*pDAogU{e9z5Fbqd delta 7 OcmdnO_lteQFJ=G^OapNM diff --git a/Misc/macOS/GitConfiguration.txt b/Misc/macOS/GitConfiguration.txt new file mode 100644 index 00000000..8c94bcb9 --- /dev/null +++ b/Misc/macOS/GitConfiguration.txt @@ -0,0 +1,3 @@ +The "gclient sync" command fails, indicating "HTTP 500". + +Possible fix: git config --global http.postBuffer 524288000 diff --git a/NetCore/ClearScript.Core/ClearScript.Core.csproj b/NetCore/ClearScript.Core/ClearScript.Core.csproj index 03600f15..1a7cfb97 100644 --- a/NetCore/ClearScript.Core/ClearScript.Core.csproj +++ b/NetCore/ClearScript.Core/ClearScript.Core.csproj @@ -5,6 +5,7 @@ Microsoft.ClearScript false false + 9.0 @@ -95,11 +96,9 @@ - - @@ -141,13 +140,14 @@ + - + @@ -167,12 +167,14 @@ + + diff --git a/NetCore/ClearScript.V8/ClearScript.V8.csproj b/NetCore/ClearScript.V8/ClearScript.V8.csproj index 43cd7140..c44cee06 100644 --- a/NetCore/ClearScript.V8/ClearScript.V8.csproj +++ b/NetCore/ClearScript.V8/ClearScript.V8.csproj @@ -5,6 +5,7 @@ Microsoft.ClearScript.V8 false false + 9.0 @@ -37,6 +38,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -49,8 +76,7 @@ - - + @@ -77,7 +103,6 @@ - @@ -145,8 +170,6 @@ - - diff --git a/NetCore/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj b/NetCore/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj index 2eb5c3e4..ebe72224 100644 --- a/NetCore/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj +++ b/NetCore/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj @@ -5,6 +5,7 @@ Microsoft.ClearScript.Windows false false + 9.0 @@ -48,7 +49,6 @@ - diff --git a/NetCore/ClearScript.Windows/ClearScript.Windows.csproj b/NetCore/ClearScript.Windows/ClearScript.Windows.csproj index a3149a31..da87f267 100644 --- a/NetCore/ClearScript.Windows/ClearScript.Windows.csproj +++ b/NetCore/ClearScript.Windows/ClearScript.Windows.csproj @@ -6,6 +6,7 @@ Microsoft.ClearScript.Windows false false + 9.0 @@ -43,12 +44,10 @@ - - diff --git a/NetCore/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj b/NetCore/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj index 294460cb..d482ec1f 100644 --- a/NetCore/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj +++ b/NetCore/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj @@ -3,10 +3,11 @@ Exe - netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows + netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows;net9.0-windows Microsoft.ClearScript.Test false false + 9.0 diff --git a/NetCore/ClearScriptConsole/ClearScriptConsole.csproj b/NetCore/ClearScriptConsole/ClearScriptConsole.csproj index 08b531fb..f95d05aa 100644 --- a/NetCore/ClearScriptConsole/ClearScriptConsole.csproj +++ b/NetCore/ClearScriptConsole/ClearScriptConsole.csproj @@ -1,12 +1,13 @@ - + Exe - netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows + netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows;net9.0-windows Microsoft.ClearScript.Test false false + 9.0 @@ -39,7 +40,7 @@ - + diff --git a/NetCore/ClearScriptTest/ClearScriptTest.csproj b/NetCore/ClearScriptTest/ClearScriptTest.csproj index 90806daf..159aeda1 100644 --- a/NetCore/ClearScriptTest/ClearScriptTest.csproj +++ b/NetCore/ClearScriptTest/ClearScriptTest.csproj @@ -1,8 +1,14 @@ - + + + + true + 9.0 + true + - netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows + netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows;net9.0-windows Microsoft.ClearScript.Test false false @@ -18,6 +24,7 @@ DEBUG;TRACE + true CA1416 true ..\..\bin\Debug @@ -25,6 +32,7 @@ TRACE + true CA1416 true ..\..\bin\Release @@ -57,7 +65,6 @@ - @@ -83,13 +90,12 @@ - + - @@ -125,18 +131,26 @@ false false + + tlbimp + 0 + 6 + f5078f18-c551-11d3-89b9-0000f81fe221 + 0 + false + false + - - - - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + diff --git a/NetFramework/ClearScript.Core/ClearScript.Core.csproj b/NetFramework/ClearScript.Core/ClearScript.Core.csproj index f5ffe380..b5c6f3b6 100644 --- a/NetFramework/ClearScript.Core/ClearScript.Core.csproj +++ b/NetFramework/ClearScript.Core/ClearScript.Core.csproj @@ -1,9 +1,10 @@ - + - net45;net471 + net462;net471 Microsoft.ClearScript false + 9.0 @@ -144,12 +145,13 @@ + - + @@ -169,12 +171,14 @@ + + @@ -205,17 +209,16 @@ - + - - - - - + + + + diff --git a/NetFramework/ClearScript.V8/ClearScript.V8.csproj b/NetFramework/ClearScript.V8/ClearScript.V8.csproj index ea73290b..a43d80a5 100644 --- a/NetFramework/ClearScript.V8/ClearScript.V8.csproj +++ b/NetFramework/ClearScript.V8/ClearScript.V8.csproj @@ -1,9 +1,10 @@ - + - net45;net471 + net462;net471 Microsoft.ClearScript.V8 false + 9.0 @@ -40,6 +41,32 @@ True AssemblyInfo.V8.tt + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -101,12 +128,12 @@ TextTemplatingFileGenerator V8ScriptEngine.InitScript.cs - + TextTemplatingFileGenerator V8SplitProxyNative.Generated.cs - + @@ -168,15 +195,8 @@ - - - - - - - @@ -184,10 +204,6 @@ - - - - diff --git a/NetFramework/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj b/NetFramework/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj index 02aaad07..d9d28b5b 100644 --- a/NetFramework/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj +++ b/NetFramework/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj @@ -1,9 +1,10 @@  - net45 + net462 Microsoft.ClearScript.Windows false + 9.0 @@ -11,7 +12,7 @@ true true ..\..\bin\Debug - ..\..\bin\Debug\net45\ClearScript.Windows.Core.xml + ..\..\bin\Debug\$(TargetFramework)\ClearScript.Windows.Core.xml @@ -19,7 +20,7 @@ true true ..\..\bin\Release - ..\..\bin\Release\net45\ClearScript.Windows.Core.xml + ..\..\bin\Release\$(TargetFramework)\ClearScript.Windows.Core.xml @@ -69,17 +70,13 @@ TextTemplatingFileGenerator JScriptEngine.InitScript.cs - + - - - - diff --git a/NetFramework/ClearScript.Windows/ClearScript.Windows.csproj b/NetFramework/ClearScript.Windows/ClearScript.Windows.csproj index af707a86..9cef203c 100644 --- a/NetFramework/ClearScript.Windows/ClearScript.Windows.csproj +++ b/NetFramework/ClearScript.Windows/ClearScript.Windows.csproj @@ -1,10 +1,11 @@ - net45 + net462 true Microsoft.ClearScript.Windows false + 9.0 @@ -55,14 +56,9 @@ - - - - - diff --git a/NetFramework/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj b/NetFramework/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj index b4fa8655..d35df162 100644 --- a/NetFramework/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj +++ b/NetFramework/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj @@ -5,6 +5,7 @@ net471 Microsoft.ClearScript.Test false + 9.0 @@ -44,10 +45,6 @@ - - - - diff --git a/NetFramework/ClearScriptConsole/ClearScriptConsole.csproj b/NetFramework/ClearScriptConsole/ClearScriptConsole.csproj index 14b98fe3..c9846205 100644 --- a/NetFramework/ClearScriptConsole/ClearScriptConsole.csproj +++ b/NetFramework/ClearScriptConsole/ClearScriptConsole.csproj @@ -5,6 +5,7 @@ net471 Microsoft.ClearScript.Test false + 9.0 @@ -53,10 +54,6 @@ - - - - diff --git a/NetFramework/ClearScriptTest/ClearScriptTest.csproj b/NetFramework/ClearScriptTest/ClearScriptTest.csproj index abdb720e..8ea09876 100644 --- a/NetFramework/ClearScriptTest/ClearScriptTest.csproj +++ b/NetFramework/ClearScriptTest/ClearScriptTest.csproj @@ -1,20 +1,24 @@ - + net471 true Microsoft.ClearScript.Test false + 9.0 + true TRACE;DEBUG;NETFRAMEWORK + true true ..\..\bin\Debug TRACE;NETFRAMEWORK + true true ..\..\bin\Release @@ -23,6 +27,7 @@ true $(SolutionDir)ClearScript.snk + true $(SolutionDir)ClearScript.DelaySign.snk @@ -79,6 +84,7 @@ + @@ -116,18 +122,26 @@ false false + + tlbimp + 0 + 6 + f5078f18-c551-11d3-89b9-0000f81fe221 + 0 + false + false + - - - all runtime; build; native; contentfiles; analyzers; buildtransitive + + + - @@ -279,10 +293,6 @@ - - - - diff --git a/NetStandard/ClearScript.Core/ClearScript.Core.csproj b/NetStandard/ClearScript.Core/ClearScript.Core.csproj index b75f631c..25aa8982 100644 --- a/NetStandard/ClearScript.Core/ClearScript.Core.csproj +++ b/NetStandard/ClearScript.Core/ClearScript.Core.csproj @@ -1,9 +1,10 @@ - + netstandard2.1 Microsoft.ClearScript false + 9.0 @@ -94,11 +95,9 @@ - - @@ -140,13 +139,14 @@ + - + @@ -166,12 +166,14 @@ + + @@ -185,6 +187,7 @@ + diff --git a/NetStandard/ClearScript.V8.ICUData/ClearScript.V8.ICUData.csproj b/NetStandard/ClearScript.V8.ICUData/ClearScript.V8.ICUData.csproj index 1d5c8d50..af63bde0 100644 --- a/NetStandard/ClearScript.V8.ICUData/ClearScript.V8.ICUData.csproj +++ b/NetStandard/ClearScript.V8.ICUData/ClearScript.V8.ICUData.csproj @@ -1,9 +1,11 @@ - + netstandard1.0 Microsoft.ClearScript.V8.ICUData false + 9.0 + NETSDK1215 @@ -52,8 +54,11 @@ - - + + + + + diff --git a/NetStandard/ClearScript.V8/ClearScript.V8.csproj b/NetStandard/ClearScript.V8/ClearScript.V8.csproj index 11e14a78..e9c7d974 100644 --- a/NetStandard/ClearScript.V8/ClearScript.V8.csproj +++ b/NetStandard/ClearScript.V8/ClearScript.V8.csproj @@ -1,9 +1,10 @@ - + netstandard2.1 Microsoft.ClearScript.V8 false + 9.0 @@ -36,6 +37,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -74,7 +101,6 @@ - @@ -142,8 +168,6 @@ - - diff --git a/NetStandard/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj b/NetStandard/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj index 9cfdba0f..9400a24e 100644 --- a/NetStandard/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj +++ b/NetStandard/ClearScript.Windows.Core/ClearScript.Windows.Core.csproj @@ -4,6 +4,7 @@ netstandard2.1 Microsoft.ClearScript.Windows false + 9.0 @@ -47,7 +48,6 @@ - diff --git a/NetStandard/ClearScriptConsole/ClearScriptConsole.csproj b/NetStandard/ClearScriptConsole/ClearScriptConsole.csproj index 77abf8be..d1f3614c 100644 --- a/NetStandard/ClearScriptConsole/ClearScriptConsole.csproj +++ b/NetStandard/ClearScriptConsole/ClearScriptConsole.csproj @@ -1,9 +1,13 @@ - + + + + 9.0 + Exe - netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows + netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows;net9.0-windows Microsoft.ClearScript.Test false false @@ -41,9 +45,8 @@ - + - diff --git a/NetStandard/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj b/NetStandard/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj index 5a6b1b2b..9e6de777 100644 --- a/NetStandard/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj +++ b/NetStandard/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj @@ -1,8 +1,14 @@ - + + + + true + 9.0 + true + - netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows + netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows;net9.0-windows true Microsoft.ClearScript.Test false @@ -22,6 +28,7 @@ DEBUG;TRACE + true CA1416 true ..\..\bin\Debug\NetStandard @@ -29,6 +36,7 @@ TRACE + true CA1416 true ..\..\bin\Release\NetStandard @@ -62,7 +70,6 @@ - @@ -88,13 +95,12 @@ - + - @@ -130,18 +136,26 @@ false false + + tlbimp + 0 + 6 + f5078f18-c551-11d3-89b9-0000f81fe221 + 0 + false + false + - - - - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + diff --git a/ReadMe.md b/ReadMe.md index 266889e2..c8ef75e2 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -30,7 +30,7 @@ ClearScript is a library that makes it easy to add scripting to your .NET applic * [![V8](https://img.shields.io/badge/-V8-blue)](#) Automatic conversion between .NET [`BigInteger`](https://docs.microsoft.com/en-us/dotnet/api/system.numerics.biginteger) and JavaScript [`BigInt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt). * [![V8](https://img.shields.io/badge/-V8-blue)](#) Optional automatic conversion between .NET [`DateTime`](https://docs.microsoft.com/en-us/dotnet/api/system.datetime) and JavaScript [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date). * [![V8](https://img.shields.io/badge/-V8-blue)](#) Optional automatic conversion between .NET [tasks](https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task) and JavaScript [promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). -* Support for .NET 5.0+, .NET Framework 4.5+, .NET Core 3.1, and .NET Standard 2.1. +* Support for .NET 5.0+, .NET Framework 4.6.2+, .NET Core 3.1, and .NET Standard 2.1. * Support for Windows (x86/x64/arm64), Linux (x64/arm/arm64), and macOS (x64/arm64). # Installation @@ -44,7 +44,7 @@ Everything you need for one platform. | Platform | Packages | | :---: | --- | -| Windows | [![ClearScript](https://img.shields.io/nuget/v/Microsoft.ClearScript?label=Windows%20(x86/x64)&logo=Windows&logoColor=white)](https://www.nuget.org/packages/Microsoft.ClearScript) [![ClearScript.win-arm64](https://img.shields.io/nuget/v/Microsoft.ClearScript.win-arm64?label=Windows%20(arm64)&logo=Windows&logoColor=white)](https://www.nuget.org/packages/Microsoft.ClearScript.win-arm64) | +| Windows | [![ClearScript](https://img.shields.io/nuget/v/Microsoft.ClearScript?label=Windows%20(x86/x64)&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+V2luZG93czwvdGl0bGU+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAsMEgxMS4zNzdWMTEuMzcySDBaTTEyLjYyMywwSDI0VjExLjM3MkgxMi42MjNaTTAsMTIuNjIzSDExLjM3N1YyNEgwWm0xMi42MjMsMEgyNFYyNEgxMi42MjMiLz48L3N2Zz4=&logoColor=white)](https://www.nuget.org/packages/Microsoft.ClearScript) [![ClearScript.win-arm64](https://img.shields.io/nuget/v/Microsoft.ClearScript.win-arm64?label=Windows%20(arm64)&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+V2luZG93czwvdGl0bGU+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAsMEgxMS4zNzdWMTEuMzcySDBaTTEyLjYyMywwSDI0VjExLjM3MkgxMi42MjNaTTAsMTIuNjIzSDExLjM3N1YyNEgwWm0xMi42MjMsMEgyNFYyNEgxMi42MjMiLz48L3N2Zz4=&logoColor=white)](https://www.nuget.org/packages/Microsoft.ClearScript.win-arm64) | | Linux | [![ClearScript.linux-x64](https://img.shields.io/nuget/v/Microsoft.ClearScript.linux-x64?label=Linux%20(x64)&logo=Linux&logoColor=white)](https://www.nuget.org/packages/Microsoft.ClearScript.linux-x64) [![ClearScript.linux-arm](https://img.shields.io/nuget/v/Microsoft.ClearScript.linux-arm?label=Linux%20(arm)&logo=Linux&logoColor=white)](https://www.nuget.org/packages/Microsoft.ClearScript.linux-arm) [![ClearScript.linux-arm64](https://img.shields.io/nuget/v/Microsoft.ClearScript.linux-arm64?label=Linux%20(arm64)&logo=Linux&logoColor=white)](https://www.nuget.org/packages/Microsoft.ClearScript.linux-arm64) | | macOS | [![ClearScript.osx-x64](https://img.shields.io/nuget/v/Microsoft.ClearScript.osx-x64?label=macOS%20(x64)&logo=Apple&logoColor=white)](https://www.nuget.org/packages/Microsoft.ClearScript.osx-x64) [![ClearScript.osx-arm64](https://img.shields.io/nuget/v/Microsoft.ClearScript.osx-arm64?label=macOS%20(arm64)&logo=Apple&logoColor=white)](https://www.nuget.org/packages/Microsoft.ClearScript.osx-arm64) | diff --git a/UWP/ClearScript.Core/ClearScript.Core.csproj b/UWP/ClearScript.Core/ClearScript.Core.csproj index 35400652..f0ad4918 100644 --- a/UWP/ClearScript.Core/ClearScript.Core.csproj +++ b/UWP/ClearScript.Core/ClearScript.Core.csproj @@ -13,11 +13,12 @@ ClearScript.Core en-US UAP - 10.0.20348.0 - 10.0.17763.0 + 10.0.26100.0 + 10.0.19041.0 14 512 {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 9.0 AnyCPU @@ -162,13 +163,14 @@ + - + @@ -188,12 +190,14 @@ + + @@ -210,9 +214,15 @@ + + 9.0.0 + 6.2.14 + + 4.5.5 + 14.0 diff --git a/UWP/ClearScript.V8/ClearScript.V8.csproj b/UWP/ClearScript.V8/ClearScript.V8.csproj index 9a7cbd97..45e24621 100644 --- a/UWP/ClearScript.V8/ClearScript.V8.csproj +++ b/UWP/ClearScript.V8/ClearScript.V8.csproj @@ -1,4 +1,4 @@ - + @@ -14,11 +14,12 @@ en-US UAP - 10.0.20348.0 - 10.0.17763.0 + 10.0.26100.0 + 10.0.19041.0 14 512 {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 9.0 AnyCPU @@ -55,6 +56,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -110,11 +137,8 @@ - - 6.2.14 - - 13.0.2 + 13.0.3 diff --git a/UWP/ClearScriptConsole/ClearScriptConsole.csproj b/UWP/ClearScriptConsole/ClearScriptConsole.csproj index 15067db8..d7c0236c 100644 --- a/UWP/ClearScriptConsole/ClearScriptConsole.csproj +++ b/UWP/ClearScriptConsole/ClearScriptConsole.csproj @@ -36,6 +36,7 @@ False True 0 + 9.0 true @@ -138,11 +139,6 @@ - - - 6.2.11 - - {d3391831-65ce-4c1e-a21b-01a283f3e193} diff --git a/UWP/ClearScriptTest/ClearScriptTest.csproj b/UWP/ClearScriptTest/ClearScriptTest.csproj index 7e6bf64e..2bd74038 100644 --- a/UWP/ClearScriptTest/ClearScriptTest.csproj +++ b/UWP/ClearScriptTest/ClearScriptTest.csproj @@ -18,6 +18,7 @@ {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} $(VisualStudioVersion) false + 9.0 true @@ -127,6 +128,7 @@ + @@ -173,9 +175,6 @@ 3.8.0 - - 6.2.11 - 2.1.2 diff --git a/Unix/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj b/Unix/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj index 7a73e7bb..10927857 100644 --- a/Unix/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj +++ b/Unix/ClearScriptBenchmarks/ClearScriptBenchmarks.csproj @@ -1,9 +1,13 @@ - + + + + 9.0 + Exe - netcoreapp3.1;net5.0;net6.0;net7.0;net8.0 + netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0 Microsoft.ClearScript.Test false false @@ -43,7 +47,6 @@ - diff --git a/Unix/ClearScriptConsole/ClearScriptConsole.csproj b/Unix/ClearScriptConsole/ClearScriptConsole.csproj index b13dec7e..60a76a17 100644 --- a/Unix/ClearScriptConsole/ClearScriptConsole.csproj +++ b/Unix/ClearScriptConsole/ClearScriptConsole.csproj @@ -1,9 +1,13 @@ - + + + + 9.0 + Exe - netcoreapp3.1;net5.0;net6.0;net7.0;net8.0 + netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0 Microsoft.ClearScript.Test ClearScriptConsole false @@ -45,9 +49,8 @@ - + - diff --git a/Unix/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj b/Unix/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj index 35adb93c..fa0c9371 100644 --- a/Unix/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj +++ b/Unix/ClearScriptTest.NetStandard/ClearScriptTest.NetStandard.csproj @@ -1,8 +1,13 @@ - + + + + true + 9.0 + - netcoreapp3.1;net5.0;net6.0;net7.0;net8.0 + net6.0;net7.0;net8.0;net9.0 false Microsoft.ClearScript.Test false @@ -23,6 +28,7 @@ DEBUG;TRACE true + true CA1416 ..\..\bin\Debug\Unix\NetStandard @@ -30,6 +36,7 @@ TRACE true + true CA1416 ..\..\bin\Release\Unix\NetStandard @@ -59,7 +66,6 @@ - @@ -80,13 +86,12 @@ - + - @@ -106,15 +111,14 @@ - - - - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + diff --git a/Unix/ClearScriptTest/ClearScriptTest.csproj b/Unix/ClearScriptTest/ClearScriptTest.csproj index cd8b143d..166e3c40 100644 --- a/Unix/ClearScriptTest/ClearScriptTest.csproj +++ b/Unix/ClearScriptTest/ClearScriptTest.csproj @@ -1,8 +1,13 @@ - + + + + true + 9.0 + - netcoreapp3.1;net5.0;net6.0;net7.0;net8.0 + net6.0;net7.0;net8.0;net9.0 false Microsoft.ClearScript.Test false @@ -21,6 +26,7 @@ DEBUG;TRACE true + true CA1416 ..\..\bin\Debug\Unix @@ -28,6 +34,7 @@ TRACE true + true CA1416 ..\..\bin\Release\Unix @@ -57,7 +64,6 @@ - @@ -78,13 +84,12 @@ - + - @@ -104,14 +109,14 @@ - - - - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + + + + @@ -260,7 +265,6 @@ - diff --git a/Unix/ClearScriptV8/Makefile b/Unix/ClearScriptV8/Makefile index fc304e3f..7f4063e9 100644 --- a/Unix/ClearScriptV8/Makefile +++ b/Unix/ClearScriptV8/Makefile @@ -87,6 +87,7 @@ ifeq ($(TARGETOS), linux) endif else ifeq ($(TARGETOS), darwin) TARGET = $(TARGETARCH)-$(TARGETOS) + CXXLINKFLAGS := -framework CoreFoundation ifndef DEBUG STRIP = strip -r -u ENTITLEMENTS = $(MAKEDIR)/entitlements.xml diff --git a/Unix/V8Update.sh b/Unix/V8Update.sh index 3be6d0d9..b8c1bc48 100644 --- a/Unix/V8Update.sh +++ b/Unix/V8Update.sh @@ -1,6 +1,6 @@ #!/bin/bash -v8testedrev=12.3.219.12 +v8testedrev=13.3.415.23 v8testedcommit= v8cherrypicks= v8linuxbuildcommit=3d9590754d5d23e62d15472c5baf6777ca59df20 @@ -181,7 +181,7 @@ if [[ $download == true ]]; then if [[ $v8linuxbuildcommit != "" ]]; then git reset --hard $v8linuxbuildcommit >resetBuild.log || fail fi - cp ../../../sysroots.json linux/sysroot_scripts || fail + git apply --reject --ignore-whitespace ../../../BuildPatch.txt 2>apply-patch.log || fail cd .. cd tools/clang || abort if [[ $v8linuxclangcommit != "" ]]; then @@ -216,17 +216,23 @@ if [[ $linux == true ]]; then cd third_party/abseil-cpp || abort git diff --ignore-space-change --ignore-space-at-eol >AbseilCppPatch.txt 2>create-patch.log || fail cd ../.. + cd build || abort + git restore linux/sysroot_scripts/sysroots.json || fail + git diff --ignore-space-change --ignore-space-at-eol >BuildPatch.txt 2>create-patch.log || fail + cd .. fi if [[ $linux == true ]]; then echo "Installing LKG sysroots ..." + cp ../../sysroots.json build/linux/sysroot_scripts || fail build/linux/sysroot_scripts/install-sysroot.py --arch=x64 >install-x64-sysroot.log || fail build/linux/sysroot_scripts/install-sysroot.py --arch=i386 >install-i386-sysroot.log || fail build/linux/sysroot_scripts/install-sysroot.py --arch=$cpu >install-$cpu-sysroot.log || fail fi echo "Building V8 ..." -gn gen out/$cpu/$mode --args="fatal_linker_warnings=false is_cfi=false is_component_build=false is_debug=$isdebug target_cpu=\"$cpu\" use_custom_libcxx=false use_thin_lto=false v8_embedder_string=\"-ClearScript\" v8_enable_fuzztest=false v8_enable_pointer_compression=false v8_enable_31bit_smis_on_64bit_arch=false v8_monolithic=true v8_use_external_startup_data=false v8_target_cpu=\"$cpu\"" >gn-$cpu-$mode.log || fail +gn gen out/$cpu/$mode --args="fatal_linker_warnings=false is_cfi=false is_component_build=false is_debug=$isdebug target_cpu=\"$cpu\" use_custom_libcxx=false use_thin_lto=false v8_embedder_string=\"-ClearScript\" v8_enable_fuzztest=false v8_enable_pointer_compression=false v8_enable_31bit_smis_on_64bit_arch=false v8_monolithic=true v8_use_external_startup_data=false v8_target_cpu=\"$cpu\"" >gn-$cpu-$mode.log 2>gn-$cpu-$mode.log || fail +gn args out/$cpu/$mode --list >out/$cpu/$mode/allArgs.txt || fail ninja -C out/$cpu/$mode obj/libv8_monolith.a >build-$cpu-$mode.log || fail cd ../.. @@ -236,6 +242,7 @@ cp build/v8/V8Patch.txt . || fail if [[ $linux == true ]]; then cp build/v8/third_party/abseil-cpp/AbseilCppPatch.txt . || fail + cp build/v8/build/BuildPatch.txt . || fail fi echo "Importing ICU data ..." diff --git a/V8/AbseilCppPatch.txt b/V8/AbseilCppPatch.txt index 664e26e2..d239020d 100644 --- a/V8/AbseilCppPatch.txt +++ b/V8/AbseilCppPatch.txt @@ -1,12 +1,12 @@ diff --git a/absl.gni b/absl.gni -index 91d4111..9800433 100644 +index 48e1ce78..5fdb7836 100644 --- a/absl.gni +++ b/absl.gni -@@ -25,7 +25,6 @@ template("absl_source_set") { - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - "//build/config/compiler:no_chromium_code", -- "//build/config/compiler:prevent_unsafe_narrowing", - "//third_party/abseil-cpp:absl_default_cflags_cc", - "//third_party/abseil-cpp:absl_define_config", - ] +@@ -32,7 +32,6 @@ template("absl_source_set") { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ + "//build/config/compiler:no_chromium_code", +- "//build/config/compiler:prevent_unsafe_narrowing", + "//third_party/abseil-cpp:absl_default_cflags_cc", + "//third_party/abseil-cpp:absl_define_config", + ] diff --git a/V8/BuildPatch.txt b/V8/BuildPatch.txt new file mode 100644 index 00000000..9260a2db --- /dev/null +++ b/V8/BuildPatch.txt @@ -0,0 +1,13 @@ +diff --git a/config/compiler/BUILD.gn b/config/compiler/BUILD.gn +index 48aa424f8..11ead4408 100644 +--- a/config/compiler/BUILD.gn ++++ b/config/compiler/BUILD.gn +@@ -600,7 +600,7 @@ config("compiler") { + cflags_cc += [ "-fno-trigraphs" ] + } + } else { +- cflags_cc += [ "-std=${standard_prefix}++17" ] ++ cflags_cc += [ "-std=${standard_prefix}++20" ] + } + } else if (is_win) { + cflags_c += [ "/std:c11" ] diff --git a/V8/V8Patch.txt b/V8/V8Patch.txt index b7aee64a..fe58d102 100644 --- a/V8/V8Patch.txt +++ b/V8/V8Patch.txt @@ -1,5 +1,5 @@ diff --git a/BUILD.gn b/BUILD.gn -index a28da024c76..83c1b5d21ad 100644 +index f8a0507c92c..e5d780da89e 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -8,7 +8,6 @@ import("//build/config/coverage/coverage.gni") @@ -9,22 +9,30 @@ index a28da024c76..83c1b5d21ad 100644 -import("//build/config/riscv.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build_overrides/build.gni") - -@@ -1255,7 +1254,7 @@ config("toolchain") { + import("//third_party/icu/config.gni") +@@ -1387,7 +1386,7 @@ config("toolchain") { visibility = [ "./*" ] defines = [] - cflags = [] -+ cflags = [ "-D_SILENCE_CXX20_OLD_SHARED_PTR_ATOMIC_SUPPORT_DEPRECATION_WARNING" ] ++ cflags = [ "-D_SILENCE_CXX20_OLD_SHARED_PTR_ATOMIC_SUPPORT_DEPRECATION_WARNING", "-DV8_TLS_USED_IN_LIBRARY", "-Wno-cast-function-type-mismatch", "-Wno-deprecated-this-capture" ] ldflags = [] if (v8_current_cpu == "arm") { diff --git a/gni/v8.gni b/gni/v8.gni -index 185de67a522..c2335989396 100644 +index 4efb4d6d865..3f1dc0ba6c3 100644 --- a/gni/v8.gni +++ b/gni/v8.gni -@@ -119,7 +119,7 @@ declare_args() { - cppgc_is_standalone = false +@@ -4,6 +4,7 @@ + + import("//build/config/chrome_build.gni") + import("//build/config/compiler/pgo/pgo.gni") ++import("//build/config/dcheck_always_on.gni") + import("//build/config/gclient_args.gni") + import("//build/config/ios/config.gni") + import("//build/config/ios/ios_sdk_overrides.gni") +@@ -135,7 +136,7 @@ declare_args() { + cppgc_enable_slow_api_checks = false # Enable object names in cppgc for profiling purposes. - cppgc_enable_object_names = is_chrome_for_testing @@ -46,10 +54,10 @@ index 6a34f432410..88a81ab4c40 100644 * The same as NewDefaultPlatform but disables the worker thread pool. * It must be used with the --single-threaded V8 flag. diff --git a/include/v8-initialization.h b/include/v8-initialization.h -index d3e35d6ec5f..56b3faaa791 100644 +index 46a21a02cbc..ccfe020f76c 100644 --- a/include/v8-initialization.h +++ b/include/v8-initialization.h -@@ -136,6 +136,7 @@ class V8_EXPORT V8 { +@@ -159,6 +159,7 @@ class V8_EXPORT V8 { * of the data file has to be provided. */ static bool InitializeICU(const char* icu_data_file = nullptr); @@ -57,21 +65,11 @@ index d3e35d6ec5f..56b3faaa791 100644 /** * Initialize the ICU library bundled with V8. The embedder should only -@@ -264,6 +265,9 @@ class V8_EXPORT V8 { - */ - static void GetSharedMemoryStatistics(SharedMemoryStatistics* statistics); - -+ static int EnterRwxHostScope(); -+ static void ExitRwxHostScope(int code_space_write_nesting_level); -+ - private: - V8(); - diff --git a/include/v8-template.h b/include/v8-template.h -index 674d4201d5d..a4538592531 100644 +index 93b94285726..7a65b26b61e 100644 --- a/include/v8-template.h +++ b/include/v8-template.h -@@ -935,6 +935,9 @@ class V8_EXPORT ObjectTemplate : public Template { +@@ -1017,6 +1017,9 @@ class V8_EXPORT ObjectTemplate : public Template { */ void SetImmutableProto(); @@ -82,10 +80,10 @@ index 674d4201d5d..a4538592531 100644 * Support for TC39 "dynamic code brand checks" proposal. * diff --git a/include/v8config.h b/include/v8config.h -index e649d8cce7d..3ca8f9fb448 100644 +index 9d58e85db29..ff3e75eed20 100644 --- a/include/v8config.h +++ b/include/v8config.h -@@ -550,7 +550,7 @@ path. Add it with -I to the command line +@@ -582,7 +582,7 @@ path. Add it with -I to the command line // Use like: // V8_NOINLINE V8_PRESERVE_MOST void UnlikelyMethod(); #if V8_HAS_ATTRIBUTE_PRESERVE_MOST @@ -95,24 +93,24 @@ index e649d8cce7d..3ca8f9fb448 100644 # define V8_PRESERVE_MOST /* NOT SUPPORTED */ #endif diff --git a/src/api/api-natives.cc b/src/api/api-natives.cc -index 0f1747a2a91..0e3e6d6343c 100644 +index 7ed64a2671c..92c1609805b 100644 --- a/src/api/api-natives.cc +++ b/src/api/api-natives.cc -@@ -451,6 +451,9 @@ MaybeHandle InstantiateObject(Isolate* isolate, +@@ -346,6 +346,9 @@ MaybeHandle InstantiateObject(Isolate* isolate, if (info->immutable_proto()) { - JSObject::SetImmutableProto(object); + JSObject::SetImmutableProto(isolate, object); } + else if (info->host_delegate()) { -+ JSObject::SetHostDelegate(object); ++ JSObject::SetHostDelegate(isolate, object); + } if (!is_prototype) { // Keep prototypes in slow-mode. Let them be lazily turned fast later on. // TODO(dcarney): is this necessary? diff --git a/src/api/api.cc b/src/api/api.cc -index 9ca94b045c2..4bce5309eb7 100644 +index c0ff2001df7..496ef07f76d 100644 --- a/src/api/api.cc +++ b/src/api/api.cc -@@ -1934,6 +1934,17 @@ void ObjectTemplate::SetImmutableProto() { +@@ -1911,6 +1911,17 @@ void ObjectTemplate::SetImmutableProto() { self->set_immutable_proto(true); } @@ -130,7 +128,7 @@ index 9ca94b045c2..4bce5309eb7 100644 bool ObjectTemplate::IsCodeLike() const { return Utils::OpenDirectHandle(this)->code_like(); } -@@ -6530,6 +6541,10 @@ bool v8::V8::InitializeICU(const char* icu_data_file) { +@@ -6742,6 +6753,10 @@ bool v8::V8::InitializeICU(const char* icu_data_file) { return i::InitializeICU(icu_data_file); } @@ -142,10 +140,10 @@ index 9ca94b045c2..4bce5309eb7 100644 const char* icu_data_file) { return i::InitializeICUDefaultLocation(exec_path, icu_data_file); diff --git a/src/base/build_config.h b/src/base/build_config.h -index f25bd3f9b57..98b040ac0f0 100644 +index 207f46b057d..e58513be2d1 100644 --- a/src/base/build_config.h +++ b/src/base/build_config.h -@@ -36,7 +36,7 @@ +@@ -44,7 +44,7 @@ #endif #if defined(V8_OS_LINUX) && defined(V8_HOST_ARCH_X64) @@ -155,7 +153,7 @@ index f25bd3f9b57..98b040ac0f0 100644 #define V8_HAS_PKU_JIT_WRITE_PROTECT 0 #endif diff --git a/src/base/platform/platform.h b/src/base/platform/platform.h -index 99be31da701..f38dfbd6997 100644 +index a7b57d9fc80..da849f2f796 100644 --- a/src/base/platform/platform.h +++ b/src/base/platform/platform.h @@ -53,6 +53,8 @@ @@ -167,25 +165,11 @@ index 99be31da701..f38dfbd6997 100644 #ifndef V8_NO_FAST_TLS #if V8_CC_MSVC && V8_HOST_ARCH_IA32 // __readfsdword is supposed to be declared in intrin.h but it is missing from -diff --git a/src/builtins/builtins-async-module.cc b/src/builtins/builtins-async-module.cc -index 72ad214dcfa..d0a81059cb5 100644 ---- a/src/builtins/builtins-async-module.cc -+++ b/src/builtins/builtins-async-module.cc -@@ -15,7 +15,8 @@ BUILTIN(CallAsyncModuleFulfilled) { - SourceTextModule::cast(isolate->context()->get( - SourceTextModule::ExecuteAsyncModuleContextSlots::kModule)), - isolate); -- if (SourceTextModule::AsyncModuleExecutionFulfilled(isolate, module) -+ Handle result(args.at(1)); -+ if (SourceTextModule::AsyncModuleExecutionFulfilled(isolate, module, result) - .IsNothing()) { - // The evaluation of async module can not throwing a JavaScript observable - // exception. diff --git a/src/codegen/code-stub-assembler.cc b/src/codegen/code-stub-assembler.cc -index cc80f7aacca..faefc8d367f 100644 +index 20c3bbe060f..a3ba312acd5 100644 --- a/src/codegen/code-stub-assembler.cc +++ b/src/codegen/code-stub-assembler.cc -@@ -2227,6 +2227,10 @@ TNode CodeStubAssembler::LoadMapBitField3(TNode map) { +@@ -2321,6 +2321,10 @@ TNode CodeStubAssembler::LoadMapBitField3(TNode map) { return LoadObjectField(map, Map::kBitField3Offset); } @@ -196,7 +180,7 @@ index cc80f7aacca..faefc8d367f 100644 TNode CodeStubAssembler::LoadMapInstanceType(TNode map) { return LoadObjectField(map, Map::kInstanceTypeOffset); } -@@ -15093,6 +15097,11 @@ TNode CodeStubAssembler::Typeof(TNode value) { +@@ -15912,6 +15916,11 @@ TNode CodeStubAssembler::Typeof( GotoIf(InstanceTypeEqual(instance_type, ODDBALL_TYPE), &if_oddball); @@ -209,10 +193,10 @@ index cc80f7aacca..faefc8d367f 100644 Word32And(LoadMapBitField(map), Int32Constant(Map::Bits1::IsCallableBit::kMask | diff --git a/src/codegen/code-stub-assembler.h b/src/codegen/code-stub-assembler.h -index 7d687744c10..dd15ab9cc6a 100644 +index 6281b6aa2a3..62392f6bb23 100644 --- a/src/codegen/code-stub-assembler.h +++ b/src/codegen/code-stub-assembler.h -@@ -1570,6 +1570,8 @@ class V8_EXPORT_PRIVATE CodeStubAssembler +@@ -1345,6 +1345,8 @@ class V8_EXPORT_PRIVATE CodeStubAssembler TNode LoadMapBitField2(TNode map); // Load bit field 3 of a map. TNode LoadMapBitField3(TNode map); @@ -221,218 +205,11 @@ index 7d687744c10..dd15ab9cc6a 100644 // Load the instance type of a map. TNode LoadMapInstanceType(TNode map); // Load the ElementsKind of a map. -diff --git a/src/common/code-memory-access-inl.h b/src/common/code-memory-access-inl.h -index e1ec30c166f..5ceb3f452bf 100644 ---- a/src/common/code-memory-access-inl.h -+++ b/src/common/code-memory-access-inl.h -@@ -212,28 +212,89 @@ void WritableFreeSpace::ClearTagged(size_t count) const { - count); - } - --#if V8_HAS_PTHREAD_JIT_WRITE_PROTECT -+#if V8_HAS_PTHREAD_JIT_WRITE_PROTECT || V8_HAS_PKU_JIT_WRITE_PROTECT - - // static --bool RwxMemoryWriteScope::IsSupported() { return true; } -+int RwxMemoryWriteScope::EnterHostScope() { -+ if (v8_flags.jitless || !IsSupported()) return 0; -+ int code_space_write_nesting_level = code_space_write_nesting_level_; -+ DCHECK_GE(code_space_write_nesting_level, 0); -+ DCHECK_GE(code_space_host_nesting_level_, 0); -+ if (code_space_host_nesting_level_ == 0 && code_space_write_nesting_level > 0) { -+ code_space_write_nesting_level_ = 0; -+ SetExecutableInternal(); -+ } -+ code_space_host_nesting_level_++; -+ return code_space_write_nesting_level; -+} -+ -+// static -+void RwxMemoryWriteScope::ExitHostScope(int code_space_write_nesting_level) { -+ if (v8_flags.jitless || !IsSupported()) return; -+ DCHECK_GE(code_space_write_nesting_level, 0); -+ DCHECK_GT(code_space_host_nesting_level_, 0); -+ code_space_host_nesting_level_--; -+ if (code_space_host_nesting_level_ == 0 && code_space_write_nesting_level > 0) { -+ code_space_write_nesting_level_ = code_space_write_nesting_level; -+ SetWritableInternal(); -+ } -+} - - // static - void RwxMemoryWriteScope::SetWritable() { -+ if (!IsSupported()) return; -+ DCHECK_GE(code_space_write_nesting_level_, 0); -+ DCHECK_EQ(code_space_host_nesting_level_, 0); - if (code_space_write_nesting_level_ == 0) { -- base::SetJitWriteProtected(0); -+ SetWritableInternal(); - } - code_space_write_nesting_level_++; - } - - // static - void RwxMemoryWriteScope::SetExecutable() { -+ if (!IsSupported()) return; -+ DCHECK_GT(code_space_write_nesting_level_, 0); -+ DCHECK_EQ(code_space_host_nesting_level_, 0); - code_space_write_nesting_level_--; - if (code_space_write_nesting_level_ == 0) { -- base::SetJitWriteProtected(1); -+ SetExecutableInternal(); - } - } - -+#else // !V8_HAS_PTHREAD_JIT_WRITE_PROTECT && !V8_HAS_PKU_JIT_WRITE_PROTECT -+ -+// static -+int RwxMemoryWriteScope::EnterHostScope() { return 0; } -+ -+// static -+void RwxMemoryWriteScope::ExitHostScope(int /*code_space_write_nesting_level*/) {} -+ -+// static -+void RwxMemoryWriteScope::SetWritable() {} -+ -+// static -+void RwxMemoryWriteScope::SetExecutable() {} -+ -+#endif // V8_HAS_PTHREAD_JIT_WRITE_PROTECT || V8_HAS_PKU_JIT_WRITE_PROTECT -+ -+#if V8_HAS_PTHREAD_JIT_WRITE_PROTECT -+ -+// static -+bool RwxMemoryWriteScope::IsSupported() { return true; } -+ -+// static -+void RwxMemoryWriteScope::SetWritableInternal() { -+ base::SetJitWriteProtected(0); -+} -+ -+// static -+void RwxMemoryWriteScope::SetExecutableInternal() { -+ base::SetJitWriteProtected(1); -+} -+ - #elif V8_HAS_PKU_JIT_WRITE_PROTECT -+ - // static - bool RwxMemoryWriteScope::IsSupported() { - static_assert(base::MemoryProtectionKey::kNoMemoryProtectionKey == -1); -@@ -245,31 +306,23 @@ bool RwxMemoryWriteScope::IsSupported() { - } - - // static --void RwxMemoryWriteScope::SetWritable() { -+void RwxMemoryWriteScope::SetWritableInternal() { - DCHECK(ThreadIsolation::initialized()); -- if (!IsSupported()) return; -- if (code_space_write_nesting_level_ == 0) { - DCHECK_NE( - base::MemoryProtectionKey::GetKeyPermission(ThreadIsolation::pkey()), - base::MemoryProtectionKey::kNoRestrictions); - base::MemoryProtectionKey::SetPermissionsForKey( - ThreadIsolation::pkey(), base::MemoryProtectionKey::kNoRestrictions); -- } -- code_space_write_nesting_level_++; - } - - // static --void RwxMemoryWriteScope::SetExecutable() { -+void RwxMemoryWriteScope::SetExecutableInternal() { - DCHECK(ThreadIsolation::initialized()); -- if (!IsSupported()) return; -- code_space_write_nesting_level_--; -- if (code_space_write_nesting_level_ == 0) { - DCHECK_EQ( - base::MemoryProtectionKey::GetKeyPermission(ThreadIsolation::pkey()), - base::MemoryProtectionKey::kNoRestrictions); - base::MemoryProtectionKey::SetPermissionsForKey( - ThreadIsolation::pkey(), base::MemoryProtectionKey::kDisableWrite); -- } - } - - #else // !V8_HAS_PTHREAD_JIT_WRITE_PROTECT && !V8_TRY_USE_PKU_JIT_WRITE_PROTECT -@@ -278,10 +331,10 @@ void RwxMemoryWriteScope::SetExecutable() { - bool RwxMemoryWriteScope::IsSupported() { return false; } - - // static --void RwxMemoryWriteScope::SetWritable() {} -+void RwxMemoryWriteScope::SetWritableInternal() {} - - // static --void RwxMemoryWriteScope::SetExecutable() {} -+void RwxMemoryWriteScope::SetExecutableInternal() {} - - #endif // V8_HAS_PTHREAD_JIT_WRITE_PROTECT - -diff --git a/src/common/code-memory-access.cc b/src/common/code-memory-access.cc -index 94328a128b8..45317ac0461 100644 ---- a/src/common/code-memory-access.cc -+++ b/src/common/code-memory-access.cc -@@ -2,16 +2,29 @@ - // Use of this source code is governed by a BSD-style license that can be - // found in the LICENSE file. - -+#include "include/v8-initialization.h" - #include "src/common/code-memory-access-inl.h" - #include "src/utils/allocation.h" - - namespace v8 { -+ -+// static -+int V8::EnterRwxHostScope() { -+ return i::RwxMemoryWriteScope::EnterHostScope(); -+} -+ -+// static -+void V8::ExitRwxHostScope(int code_space_write_nesting_level) { -+ i::RwxMemoryWriteScope::ExitHostScope(code_space_write_nesting_level); -+} -+ - namespace internal { - - ThreadIsolation::TrustedData ThreadIsolation::trusted_data_; - - #if V8_HAS_PTHREAD_JIT_WRITE_PROTECT || V8_HAS_PKU_JIT_WRITE_PROTECT - thread_local int RwxMemoryWriteScope::code_space_write_nesting_level_ = 0; -+thread_local int RwxMemoryWriteScope::code_space_host_nesting_level_ = 0; - #endif // V8_HAS_PTHREAD_JIT_WRITE_PROTECT || V8_HAS_PKU_JIT_WRITE_PROTECT - - #if V8_HAS_PKU_JIT_WRITE_PROTECT -diff --git a/src/common/code-memory-access.h b/src/common/code-memory-access.h -index e0d317b07fe..c77411bcdd9 100644 ---- a/src/common/code-memory-access.h -+++ b/src/common/code-memory-access.h -@@ -114,6 +114,9 @@ class V8_NODISCARD RwxMemoryWriteScope { - static V8_EXPORT void SetDefaultPermissionsForSignalHandler(); - #endif // V8_HAS_PKU_JIT_WRITE_PROTECT - -+ V8_INLINE static int EnterHostScope(); -+ V8_INLINE static void ExitHostScope(int code_space_write_nesting_level); -+ - private: - friend class RwxMemoryWriteScopeForTesting; - friend class wasm::CodeSpaceWriteScope; -@@ -124,9 +127,13 @@ class V8_NODISCARD RwxMemoryWriteScope { - V8_INLINE static void SetWritable(); - V8_INLINE static void SetExecutable(); - -+ V8_INLINE static void SetWritableInternal(); -+ V8_INLINE static void SetExecutableInternal(); -+ - #if V8_HAS_PTHREAD_JIT_WRITE_PROTECT || V8_HAS_PKU_JIT_WRITE_PROTECT - // This counter is used for supporting scope reentrance. - V8_EXPORT_PRIVATE static thread_local int code_space_write_nesting_level_; -+ static thread_local int code_space_host_nesting_level_; - #endif // V8_HAS_PTHREAD_JIT_WRITE_PROTECT || V8_HAS_PKU_JIT_WRITE_PROTECT - }; - diff --git a/src/diagnostics/unwinding-info-win64.cc b/src/diagnostics/unwinding-info-win64.cc -index a71b866135b..4f1d26676c2 100644 +index 1312609e5b6..2fc14899e1c 100644 --- a/src/diagnostics/unwinding-info-win64.cc +++ b/src/diagnostics/unwinding-info-win64.cc -@@ -462,6 +462,14 @@ void InitUnwindingRecord(Record* record, size_t code_size_in_bytes) { +@@ -464,6 +464,14 @@ void InitUnwindingRecord(Record* record, size_t code_size_in_bytes) { namespace { V8_DECLARE_ONCE(load_ntdll_unwinding_functions_once); @@ -447,7 +224,7 @@ index a71b866135b..4f1d26676c2 100644 static decltype( &::RtlAddGrowableFunctionTable) add_growable_function_table_func = nullptr; static decltype( -@@ -469,6 +477,19 @@ static decltype( +@@ -471,6 +479,19 @@ static decltype( nullptr; void LoadNtdllUnwindingFunctionsOnce() { @@ -467,7 +244,7 @@ index a71b866135b..4f1d26676c2 100644 // Load functions from the ntdll.dll module. HMODULE ntdll_module = LoadLibraryEx(L"ntdll.dll", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32); -@@ -491,6 +512,21 @@ void LoadNtdllUnwindingFunctions() { +@@ -493,6 +514,21 @@ void LoadNtdllUnwindingFunctions() { &LoadNtdllUnwindingFunctionsOnce); } @@ -489,7 +266,7 @@ index a71b866135b..4f1d26676c2 100644 bool AddGrowableFunctionTable(PVOID* DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, -@@ -542,7 +578,7 @@ void RegisterNonABICompliantCodeRange(void* start, size_t size_in_bytes) { +@@ -544,7 +580,7 @@ void RegisterNonABICompliantCodeRange(void* start, size_t size_in_bytes) { ExceptionHandlerRecord* record = new (start) ExceptionHandlerRecord(); InitUnwindingRecord(record, size_in_bytes); @@ -498,7 +275,7 @@ index a71b866135b..4f1d26676c2 100644 kDefaultRuntimeFunctionCount, reinterpret_cast(start))); -@@ -580,7 +616,7 @@ void UnregisterNonABICompliantCodeRange(void* start) { +@@ -582,7 +618,7 @@ void UnregisterNonABICompliantCodeRange(void* start) { if (unhandled_exception_callback_g) { ExceptionHandlerRecord* record = reinterpret_cast(start); @@ -508,10 +285,10 @@ index a71b866135b..4f1d26676c2 100644 // Unprotect reserved page. DWORD old_protect; diff --git a/src/execution/isolate-inl.h b/src/execution/isolate-inl.h -index 256db29d140..3880ea12bb9 100644 +index 04eaa77fa56..15cd2cab05e 100644 --- a/src/execution/isolate-inl.h +++ b/src/execution/isolate-inl.h -@@ -35,7 +35,6 @@ V8_INLINE Isolate* Isolate::TryGetCurrent() { return g_current_isolate_; } +@@ -32,7 +32,6 @@ Isolate::CurrentPerIsolateThreadData() { // static V8_INLINE Isolate* Isolate::Current() { Isolate* isolate = TryGetCurrent(); @@ -520,22 +297,20 @@ index 256db29d140..3880ea12bb9 100644 } diff --git a/src/execution/stack-guard.cc b/src/execution/stack-guard.cc -index efcaf8cd10b..0e7cfbb704d 100644 +index 4bfd56d287b..7725d3cc4ba 100644 --- a/src/execution/stack-guard.cc +++ b/src/execution/stack-guard.cc -@@ -235,8 +235,10 @@ void StackGuard::FreeThreadResources() { - void StackGuard::ThreadLocal::Initialize(Isolate* isolate, - const ExecutionAccess& lock) { +@@ -240,6 +240,9 @@ void StackGuard::ThreadLocal::Initialize(Isolate* isolate, const uintptr_t kLimitSize = v8_flags.stack_size * KB; -- DCHECK_GT(GetCurrentStackPosition(), kLimitSize); + DCHECK_GT(GetCurrentStackPosition(), kLimitSize); uintptr_t limit = GetCurrentStackPosition() - kLimitSize; + if (GetCurrentStackPosition() < kLimitSize) { + limit = 0; + } real_jslimit_ = SimulatorStack::JsLimitFromCLimit(isolate, limit); set_jslimit(SimulatorStack::JsLimitFromCLimit(isolate, limit)); - real_climit_ = limit; -@@ -383,6 +385,8 @@ Tagged StackGuard::HandleInterrupts(InterruptLevel level) { + #ifdef USE_SIMULATOR +@@ -388,6 +391,8 @@ Tagged StackGuard::HandleInterrupts(InterruptLevel level) { isolate_->counters()->stack_interrupts()->Increment(); @@ -545,10 +320,10 @@ index efcaf8cd10b..0e7cfbb704d 100644 } diff --git a/src/heap/factory.cc b/src/heap/factory.cc -index 82ee405ecb5..9a2c4f39170 100644 +index 22f4131b3a8..6c044f258d7 100644 --- a/src/heap/factory.cc +++ b/src/heap/factory.cc -@@ -2129,6 +2129,7 @@ Tagged Factory::InitializeMap(Tagged map, InstanceType type, +@@ -2317,6 +2317,7 @@ Tagged Factory::InitializeMap(Tagged map, InstanceType type, Map::Bits3::ConstructionCounterBits::encode(Map::kNoSlackTracking) | Map::Bits3::IsExtensibleBit::encode(true); map->set_bit_field3(bit_field3); @@ -557,10 +332,10 @@ index 82ee405ecb5..9a2c4f39170 100644 map->init_prototype_and_constructor_or_back_pointer(roots); map->set_instance_size(instance_size); diff --git a/src/heap/setup-heap-internal.cc b/src/heap/setup-heap-internal.cc -index 243d96b8618..7c1a72627e9 100644 +index 5f7bce594f9..5b1d79bc2ca 100644 --- a/src/heap/setup-heap-internal.cc +++ b/src/heap/setup-heap-internal.cc -@@ -296,6 +296,7 @@ void InitializePartialMap(Tagged map, Tagged meta_map, +@@ -295,6 +295,7 @@ void InitializePartialMap(Isolate* isolate, Tagged map, Map::Bits3::OwnsDescriptorsBit::encode(true) | Map::Bits3::ConstructionCounterBits::encode(Map::kNoSlackTracking); map->set_bit_field3(bit_field3); @@ -629,10 +404,10 @@ index e127e75f10f..b0e4bd2d68e 100644 // Like above, but using the default icudt[lb].dat location if icu_data_file is // not specified. diff --git a/src/init/v8.cc b/src/init/v8.cc -index 15540a75e7e..74ab11151a0 100644 +index 7444ab59bdb..75ef7ddf3a0 100644 --- a/src/init/v8.cc +++ b/src/init/v8.cc -@@ -98,7 +98,6 @@ V8_DECLARE_ONCE(init_snapshot_once); +@@ -102,7 +102,6 @@ V8_DECLARE_ONCE(init_snapshot_once); // static void V8::InitializePlatform(v8::Platform* platform) { AdvanceStartupState(V8StartupState::kPlatformInitializing); @@ -641,10 +416,10 @@ index 15540a75e7e..74ab11151a0 100644 platform_ = platform; v8::base::SetPrintStackTrace(platform_->GetStackTracePrinter()); diff --git a/src/interpreter/bytecode-generator.cc b/src/interpreter/bytecode-generator.cc -index da222bb8c3c..4950acfe588 100644 +index f44c172d0a5..1ac05072687 100644 --- a/src/interpreter/bytecode-generator.cc +++ b/src/interpreter/bytecode-generator.cc -@@ -6848,10 +6848,13 @@ static bool IsCharU(const AstRawString* str) { +@@ -7383,10 +7383,13 @@ static bool IsCharU(const AstRawString* str) { return str->length() == 1 && str->FirstCharacter() == 'u'; } @@ -659,7 +434,7 @@ index da222bb8c3c..4950acfe588 100644 Literal* right_lit = expr->right()->AsLiteral(); diff --git a/src/libplatform/default-platform.cc b/src/libplatform/default-platform.cc -index 2a8f06a9c09..5476b4c9d3b 100644 +index 82853866cce..885cfe4563a 100644 --- a/src/libplatform/default-platform.cc +++ b/src/libplatform/default-platform.cc @@ -57,6 +57,10 @@ std::unique_ptr NewDefaultPlatform( @@ -673,42 +448,57 @@ index 2a8f06a9c09..5476b4c9d3b 100644 std::unique_ptr NewSingleThreadedDefaultPlatform( IdleTaskSupport idle_task_support, InProcessStackDumping in_process_stack_dumping, +diff --git a/src/objects/bigint.cc b/src/objects/bigint.cc +index cb7e1cdb406..642ac254ae5 100644 +--- a/src/objects/bigint.cc ++++ b/src/objects/bigint.cc +@@ -1366,7 +1366,7 @@ MaybeHandle BigInt::FromWords64(Isolate* isolate, int sign_bit, + static_assert(kDigitBits == 64 || kDigitBits == 32); + uint32_t length = (64 / kDigitBits) * words64_count; + DCHECK_GT(length, 0); +- if (kDigitBits == 32 && words[words64_count - 1] <= (1ULL << 32)) length--; ++ if (kDigitBits == 32 && words[words64_count - 1] < (1ULL << 32)) length--; + + Handle result; + if (!MutableBigInt::New(isolate, length).ToHandle(&result)) return {}; diff --git a/src/objects/js-objects.cc b/src/objects/js-objects.cc -index af21b605e3d..62e84834304 100644 +index 0e5c2ed4b65..d069bcc4864 100644 --- a/src/objects/js-objects.cc +++ b/src/objects/js-objects.cc -@@ -5207,6 +5207,13 @@ void JSObject::SetImmutableProto(Handle object) { - object->set_map(*new_map, kReleaseStore); +@@ -5324,6 +5324,14 @@ void JSObject::SetImmutableProto(Isolate* isolate, + object->set_map(isolate, *new_map, kReleaseStore); } -+void JSObject::SetHostDelegate(Handle object) { -+ Handle map(object->map(), object->GetIsolate()); ++void JSObject::SetHostDelegate(Isolate* isolate, ++ DirectHandle object) { ++ DirectHandle map(object->map(), isolate); + if (map->is_host_delegate()) return; -+ Handle new_map = Map::TransitionToHostDelegate(object->GetIsolate(), map); -+ object->set_map(*new_map, kReleaseStore); ++ DirectHandle new_map = Map::TransitionToHostDelegate(isolate, map); ++ object->set_map(isolate, *new_map, kReleaseStore); +} + - void JSObject::EnsureCanContainElements(Handle object, + void JSObject::EnsureCanContainElements(DirectHandle object, JavaScriptArguments* args, uint32_t arg_count, diff --git a/src/objects/js-objects.h b/src/objects/js-objects.h -index 9fb0613af3a..2340c6ab309 100644 +index df09d807219..84351759afe 100644 --- a/src/objects/js-objects.h +++ b/src/objects/js-objects.h -@@ -774,6 +774,8 @@ class JSObject : public TorqueGeneratedJSObject { - // Never called from JavaScript - static void SetImmutableProto(Handle object); +@@ -818,6 +818,9 @@ class JSObject : public TorqueGeneratedJSObject { + static void SetImmutableProto(Isolate* isolate, + DirectHandle object); -+ static void SetHostDelegate(Handle object); ++ static void SetHostDelegate(Isolate* isolate, ++ DirectHandle object); + // Initializes the body starting at |start_offset|. It is responsibility of // the caller to initialize object header. Fill the pre-allocated fields with // undefined_value and the rest with filler_map. diff --git a/src/objects/map-inl.h b/src/objects/map-inl.h -index a28034912de..3bba62d3740 100644 +index 0ae0d5f1119..9d358b9be2f 100644 --- a/src/objects/map-inl.h +++ b/src/objects/map-inl.h -@@ -128,6 +128,9 @@ BIT_FIELD_ACCESSORS(Map, bit_field3, may_have_interesting_properties, +@@ -134,6 +134,9 @@ BIT_FIELD_ACCESSORS(Map, bit_field3, may_have_interesting_properties, BIT_FIELD_ACCESSORS(Map, relaxed_bit_field3, construction_counter, Map::Bits3::ConstructionCounterBits) @@ -719,35 +509,36 @@ index a28034912de..3bba62d3740 100644 DCHECK(has_named_interceptor()); Tagged info = GetFunctionTemplateInfo(cage_base); diff --git a/src/objects/map.cc b/src/objects/map.cc -index 2c904d398b2..4fe7a01b664 100644 +index 81a3b16e853..43c7a8d3930 100644 --- a/src/objects/map.cc +++ b/src/objects/map.cc -@@ -1241,6 +1241,7 @@ Handle Map::RawCopy(Isolate* isolate, Handle src_handle, +@@ -1283,6 +1283,7 @@ Handle Map::RawCopy(Isolate* isolate, DirectHandle src_handle, } // Same as bit_field comment above. raw->set_bit_field3(new_bit_field3); + raw->set_host_bit_field(src->host_bit_field()); raw->clear_padding(); } - Handle prototype(src_handle->prototype(), isolate); -@@ -1367,6 +1368,12 @@ Handle Map::TransitionToImmutableProto(Isolate* isolate, Handle map) { + DirectHandle prototype(src_handle->prototype(), isolate); +@@ -1428,6 +1429,13 @@ Handle Map::TransitionToImmutableProto(Isolate* isolate, return new_map; } -+Handle Map::TransitionToHostDelegate(Isolate* isolate, Handle map) { ++Handle Map::TransitionToHostDelegate(Isolate* isolate, ++ DirectHandle map) { + Handle new_map = Map::Copy(isolate, map, "HostDelegate"); + new_map->set_is_host_delegate(true); + return new_map; +} + namespace { - void EnsureInitialMap(Isolate* isolate, Handle map) { + void EnsureInitialMap(Isolate* isolate, DirectHandle map) { #ifdef DEBUG diff --git a/src/objects/map.h b/src/objects/map.h -index 3ddb06d1f99..ebf2a4b3d2c 100644 +index f169d8772a8..707fb181f34 100644 --- a/src/objects/map.h +++ b/src/objects/map.h -@@ -338,6 +338,11 @@ class Map : public TorqueGeneratedMap { +@@ -349,6 +349,11 @@ class Map : public TorqueGeneratedMap { static_assert(kSlackTrackingCounterStart <= Bits3::ConstructionCounterBits::kMax); @@ -759,7 +550,7 @@ index 3ddb06d1f99..ebf2a4b3d2c 100644 // Inobject slack tracking is the way to reclaim unused inobject space. // // The instance size is initially determined by adding some slack to -@@ -705,6 +710,8 @@ class Map : public TorqueGeneratedMap { +@@ -729,6 +734,8 @@ class Map : public TorqueGeneratedMap { DECL_BOOLEAN_ACCESSORS(is_immutable_proto) @@ -768,17 +559,18 @@ index 3ddb06d1f99..ebf2a4b3d2c 100644 // This counter is used for in-object slack tracking. // The in-object slack tracking is considered enabled when the counter is // non zero. The counter only has a valid count for initial maps. For -@@ -885,6 +892,8 @@ class Map : public TorqueGeneratedMap { +@@ -926,6 +933,9 @@ class Map : public TorqueGeneratedMap { static Handle TransitionToImmutableProto(Isolate* isolate, - Handle map); + DirectHandle map); -+ static Handle TransitionToHostDelegate(Isolate* isolate, Handle map); ++ static Handle TransitionToHostDelegate(Isolate* isolate, ++ DirectHandle map); + static_assert(kInstanceTypeOffset == Internals::kMapInstanceTypeOffset); class BodyDescriptor; diff --git a/src/objects/map.tq b/src/objects/map.tq -index 590fac8d969..dcadae3285c 100644 +index e6982895020..ccc3e1ce90b 100644 --- a/src/objects/map.tq +++ b/src/objects/map.tq @@ -34,6 +34,10 @@ bitfield struct MapBitFields3 extends uint32 { @@ -804,16 +596,16 @@ index 590fac8d969..dcadae3285c 100644 prototype: JSReceiver|Null; constructor_or_back_pointer_or_native_context: Object; diff --git a/src/objects/objects.cc b/src/objects/objects.cc -index 99446acd540..81c1e64a4e4 100644 +index c2c5886e578..0d7303040cc 100644 --- a/src/objects/objects.cc +++ b/src/objects/objects.cc -@@ -910,7 +910,12 @@ Handle Object::TypeOf(Isolate* isolate, Handle object) { +@@ -1007,7 +1007,12 @@ Handle Object::TypeOf(Isolate* isolate, DirectHandle object) { if (IsString(*object)) return isolate->factory()->string_string(); if (IsSymbol(*object)) return isolate->factory()->symbol_string(); if (IsBigInt(*object)) return isolate->factory()->bigint_string(); - if (IsCallable(*object)) return isolate->factory()->function_string(); + if (IsJSObject(*object)) { -+ Handle obj = Handle::cast(object); ++ DirectHandle obj = Cast(object); + if (obj->HasNamedInterceptor()) { + return obj->map()->is_host_delegate() ? isolate->factory()->function_string() : isolate->factory()->object_string(); + } @@ -821,82 +613,11 @@ index 99446acd540..81c1e64a4e4 100644 return isolate->factory()->object_string(); } -diff --git a/src/objects/source-text-module.cc b/src/objects/source-text-module.cc -index 13890419a01..d25c6cd86b3 100644 ---- a/src/objects/source-text-module.cc -+++ b/src/objects/source-text-module.cc -@@ -731,7 +731,8 @@ MaybeHandle SourceTextModule::Evaluate( - try_catch.SetVerbose(false); - try_catch.SetCaptureMessage(false); - // TODO(verwaest): Return a bool from InnerModuleEvaluation instead? -- if (InnerModuleEvaluation(isolate, module, &stack, &dfs_index).is_null()) { -+ Handle unused_result; -+ if (!InnerModuleEvaluation(isolate, module, &stack, &dfs_index).ToHandle(&unused_result)) { - if (!module->MaybeHandleEvaluationException(isolate, &stack)) return {}; - CHECK(try_catch.HasCaught()); - // d. Perform ! Call(capability.[[Reject]], undefined, -@@ -746,7 +747,7 @@ MaybeHandle SourceTextModule::Evaluate( - if (!module->IsAsyncEvaluating()) { - // i. Perform ! Call(capability.[[Resolve]], undefined, - // «undefined»). -- JSPromise::Resolve(capability, isolate->factory()->undefined_value()) -+ JSPromise::Resolve(capability, unused_result) - .ToHandleChecked(); - } - -@@ -759,7 +760,7 @@ MaybeHandle SourceTextModule::Evaluate( - } - - Maybe SourceTextModule::AsyncModuleExecutionFulfilled( -- Isolate* isolate, Handle module) { -+ Isolate* isolate, Handle module, Handle result) { - // 1. If module.[[Status]] is evaluated, then - if (module->status() == kErrored) { - // a. Assert: module.[[EvaluationError]] is not empty. -@@ -783,7 +784,7 @@ Maybe SourceTextModule::AsyncModuleExecutionFulfilled( - // «undefined»). - Handle capability( - JSPromise::cast(module->top_level_capability()), isolate); -- JSPromise::Resolve(capability, isolate->factory()->undefined_value()) -+ JSPromise::Resolve(capability, result) - .ToHandleChecked(); - } - -@@ -848,7 +849,7 @@ Maybe SourceTextModule::AsyncModuleExecutionFulfilled( - // undefined, «undefined»). - Handle capability( - JSPromise::cast(m->top_level_capability()), isolate); -- JSPromise::Resolve(capability, isolate->factory()->undefined_value()) -+ JSPromise::Resolve(capability, unused_result) - .ToHandleChecked(); - } - } -@@ -1186,7 +1187,6 @@ MaybeHandle SourceTextModule::InnerModuleEvaluation( - } else { - // 15. Otherwise, perform ? module.ExecuteModule(). - MaybeHandle exception; -- Handle result; - if (!ExecuteModule(isolate, module, &exception).ToHandle(&result)) { - if (!isolate->is_execution_terminating()) { - isolate->Throw(*exception.ToHandleChecked()); -diff --git a/src/objects/source-text-module.h b/src/objects/source-text-module.h -index 2a3249bf1b3..0e781fbe939 100644 ---- a/src/objects/source-text-module.h -+++ b/src/objects/source-text-module.h -@@ -58,7 +58,7 @@ class SourceTextModule - // with async SourceTextModules. Return Nothing if the execution is - // terminated. - static Maybe AsyncModuleExecutionFulfilled( -- Isolate* isolate, Handle module); -+ Isolate* isolate, Handle module, Handle result); - static void AsyncModuleExecutionRejected(Isolate* isolate, - Handle module, - Handle exception); diff --git a/src/objects/templates-inl.h b/src/objects/templates-inl.h -index 7bf87e10b82..e6a2457218c 100644 +index 062e5077625..e24a229e30e 100644 --- a/src/objects/templates-inl.h +++ b/src/objects/templates-inl.h -@@ -186,6 +186,14 @@ void ObjectTemplateInfo::set_code_like(bool is_code_like) { +@@ -277,6 +277,14 @@ void ObjectTemplateInfo::set_code_like(bool is_code_like) { return set_data(IsCodeKindBit::update(data(), is_code_like)); } @@ -912,10 +633,10 @@ index 7bf87e10b82..e6a2457218c 100644 return IsTemplateFor(object->map()); } diff --git a/src/objects/templates.h b/src/objects/templates.h -index 7eb35de4caf..be9850bf36e 100644 +index 7048661ce5e..4898cd9137f 100644 --- a/src/objects/templates.h +++ b/src/objects/templates.h -@@ -211,6 +211,7 @@ class ObjectTemplateInfo +@@ -290,6 +290,7 @@ class ObjectTemplateInfo DECL_INT_ACCESSORS(embedder_field_count) DECL_BOOLEAN_ACCESSORS(immutable_proto) DECL_BOOLEAN_ACCESSORS(code_like) @@ -924,10 +645,10 @@ index 7eb35de4caf..be9850bf36e 100644 // Starting from given object template's constructor walk up the inheritance // chain till a function template that has an instance template is found. diff --git a/src/objects/templates.tq b/src/objects/templates.tq -index e8a6c9cf209..786e41527be 100644 +index 7ebc6c58a50..7dd0377f52a 100644 --- a/src/objects/templates.tq +++ b/src/objects/templates.tq -@@ -71,7 +71,8 @@ extern class FunctionTemplateInfo extends TemplateInfo { +@@ -98,7 +98,8 @@ extern class FunctionTemplateInfo extends TemplateInfo { bitfield struct ObjectTemplateInfoFlags extends uint31 { is_immutable_prototype: bool: 1 bit; is_code_kind: bool: 1 bit; @@ -936,4 +657,4 @@ index e8a6c9cf209..786e41527be 100644 + embedder_field_count: int32: 27 bit; } - extern class ObjectTemplateInfo extends TemplateInfo { + @generateUniqueMap diff --git a/V8Update.cmd b/V8Update.cmd index c071b896..33183da9 100644 --- a/V8Update.cmd +++ b/V8Update.cmd @@ -1,9 +1,9 @@ @echo off setlocal -set v8testedrev=12.3.219.12 +set v8testedrev=13.3.415.23 set v8testedcommit= -set v8cherrypicks=28a7e2d45fd620fa68fb0678a7246fc8e426d1cc +set v8cherrypicks= if not "%v8testedcommit%"=="" goto ProcessArgs set v8testedcommit=%v8testedrev% @@ -226,7 +226,9 @@ setlocal call "%VSINSTALLDIR%\VC\Auxiliary\Build\vcvarsall" x64_x86 >nul if errorlevel 1 goto Build32BitError echo Building V8 (x86) ... -call gn gen out\Win32\%mode% --args="fatal_linker_warnings=false is_component_build=false is_debug=%isdebug% target_cpu=\"x86\" use_custom_libcxx=false use_thin_lto=false v8_embedder_string=\"-ClearScript\" v8_enable_pointer_compression=false v8_enable_31bit_smis_on_64bit_arch=false v8_monolithic=true v8_target_cpu=\"x86\" v8_use_external_startup_data=false" >gn-Win32-%mode%.log +call gn gen out\Win32\%mode% --args="fatal_linker_warnings=false is_cfi=false is_component_build=false is_debug=%isdebug% target_cpu=\"x86\" use_custom_libcxx=false use_thin_lto=false v8_embedder_string=\"-ClearScript\" v8_enable_fuzztest=false v8_enable_pointer_compression=false v8_enable_31bit_smis_on_64bit_arch=false v8_monolithic=true v8_target_cpu=\"x86\" v8_use_external_startup_data=false" >gn-Win32-%mode%.log 2>&1 +if errorlevel 1 goto Build32BitError +call gn args out\Win32\%mode% --list >out\Win32\%mode%\allArgs.txt if errorlevel 1 goto Build32BitError call ninja -C out\Win32\%mode% obj\v8_monolith.lib >build-Win32-%mode%.log if errorlevel 1 goto Build32BitError @@ -244,7 +246,9 @@ setlocal call "%VSINSTALLDIR%\VC\Auxiliary\Build\vcvarsall" x64 >nul if errorlevel 1 goto Build64BitError echo Building V8 (x64) ... -call gn gen out\x64\%mode% --args="fatal_linker_warnings=false is_component_build=false is_debug=%isdebug% target_cpu=\"x64\" use_custom_libcxx=false use_thin_lto=false v8_embedder_string=\"-ClearScript\" v8_enable_pointer_compression=false v8_enable_31bit_smis_on_64bit_arch=false v8_monolithic=true v8_target_cpu=\"x64\" v8_use_external_startup_data=false" >gn-x64-%mode%.log +call gn gen out\x64\%mode% --args="fatal_linker_warnings=false is_cfi=false is_component_build=false is_debug=%isdebug% target_cpu=\"x64\" use_custom_libcxx=false use_thin_lto=false v8_embedder_string=\"-ClearScript\" v8_enable_fuzztest=false v8_enable_pointer_compression=false v8_enable_31bit_smis_on_64bit_arch=false v8_monolithic=true v8_target_cpu=\"x64\" v8_use_external_startup_data=false" >gn-x64-%mode%.log 2>&1 +if errorlevel 1 goto Build64BitError +call gn args out\x64\%mode% --list >out\x64\%mode%\allArgs.txt if errorlevel 1 goto Build64BitError call ninja -C out\x64\%mode% obj\v8_monolith.lib >build-x64-%mode%.log if errorlevel 1 goto Build64BitError @@ -262,7 +266,9 @@ setlocal call "%VSINSTALLDIR%\VC\Auxiliary\Build\vcvarsall" x64_arm64 >nul if errorlevel 1 goto BuildArm64BitError echo Building V8 (arm64) ... -call gn gen out\arm64\%mode% --args="fatal_linker_warnings=false is_component_build=false is_debug=%isdebug% target_cpu=\"arm64\" use_custom_libcxx=false use_thin_lto=false v8_embedder_string=\"-ClearScript\" v8_enable_pointer_compression=false v8_enable_31bit_smis_on_64bit_arch=false v8_monolithic=true v8_target_cpu=\"arm64\" v8_use_external_startup_data=false" >gn-arm64-%mode%.log +call gn gen out\arm64\%mode% --args="fatal_linker_warnings=false is_cfi=false is_component_build=false is_debug=%isdebug% target_cpu=\"arm64\" use_custom_libcxx=false use_thin_lto=false v8_embedder_string=\"-ClearScript\" v8_enable_fuzztest=false v8_enable_pointer_compression=false v8_enable_31bit_smis_on_64bit_arch=false v8_monolithic=true v8_target_cpu=\"arm64\" v8_use_external_startup_data=false" >gn-arm64-%mode%.log 2>&1 +if errorlevel 1 goto BuildArm64BitError +call gn args out\arm64\%mode% --list >out\arm64\%mode%\allArgs.txt if errorlevel 1 goto BuildArm64BitError call ninja -C out\arm64\%mode% obj\v8_monolith.lib >build-arm64-%mode%.log if errorlevel 1 goto BuildArm64BitError diff --git a/Version.tt b/Version.tt index d8557093..06f264ff 100644 --- a/Version.tt +++ b/Version.tt @@ -1,5 +1,5 @@ <# - var version = new Version(7, 4, 5); + var version = new Version(7, 5, 0); var versionSuffix = string.Empty; new Random(versionSuffix.Length); // suppress "versionSuffix not used" warning #> diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index a8c53d4e..964a0968 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -1,29 +1,35 @@ GEM remote: https://rubygems.org/ specs: - activesupport (7.1.3.2) + activesupport (7.1.5.1) base64 + benchmark (>= 0.3) bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) mutex_m + securerandom (>= 0.3) tzinfo (~> 2.0) - addressable (2.8.6) - public_suffix (>= 2.0.2, < 6.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) base64 (0.2.0) - bigdecimal (3.1.7) + benchmark (0.4.0) + bigdecimal (3.1.9) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.12.2) colorator (1.1.0) - commonmarker (0.23.10) - concurrent-ruby (1.2.3) - connection_pool (2.4.1) - dnsruby (1.71.0) + commonmarker (0.23.11) + concurrent-ruby (1.3.5) + connection_pool (2.5.0) + dnsruby (1.72.4) + base64 (~> 0.2.0) + logger (~> 1.6.5) simpleidn (~> 0.2.1) drb (2.2.1) em-websocket (0.5.3) @@ -32,13 +38,13 @@ GEM ethon (0.16.0) ffi (>= 1.15.0) eventmachine (1.2.7) - execjs (2.9.1) + execjs (2.10.0) faraday (2.8.1) base64 faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) faraday-net_http (3.0.2) - ffi (1.16.3) + ffi (1.17.1) forwardable-extended (2.6.0) gemoji (4.1.0) github-pages (231) @@ -96,7 +102,7 @@ GEM activesupport (>= 2) nokogiri (>= 1.4) http_parser.rb (0.8.0) - i18n (1.14.4) + i18n (1.14.7) concurrent-ruby (~> 1.0) jekyll (3.9.5) addressable (~> 2.4) @@ -214,29 +220,30 @@ GEM listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) + logger (1.6.6) mercenary (0.3.6) minima (2.5.1) jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (5.22.3) - mutex_m (0.2.0) - nokogiri (1.18.3-x86_64-linux-gnu) + minitest (5.25.4) + mutex_m (0.3.0) + nokogiri (1.15.7-x86_64-linux) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) sawyer (~> 0.9) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (5.0.4) + public_suffix (5.1.1) racc (1.8.1) rb-fsevent (0.11.2) - rb-inotify (0.10.1) + rb-inotify (0.11.1) ffi (~> 1.0) - rexml (3.3.9) + rexml (3.4.1) rouge (3.30.0) ruby2_keywords (0.0.5) - rubyzip (2.3.2) + rubyzip (2.4.1) safe_yaml (1.0.5) sass (3.7.4) sass-listen (~> 4.0.0) @@ -246,17 +253,14 @@ GEM sawyer (0.9.2) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) - simpleidn (0.2.1) - unf (~> 0.1.4) + securerandom (0.3.2) + simpleidn (0.2.3) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) typhoeus (1.4.1) ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.9.1) unicode-display_width (1.8.0) PLATFORMS diff --git a/docs/Reference/SearchHelp.aspx b/docs/Reference/SearchHelp.aspx index c37a5d84..88fb664c 100644 --- a/docs/Reference/SearchHelp.aspx +++ b/docs/Reference/SearchHelp.aspx @@ -5,8 +5,8 @@ // System : Sandcastle Help File Builder // File : SearchHelp.aspx // Author : Eric Woodruff (Eric@EWoodruff.us) -// Updated : 08/13/2022 -// Note : Copyright 2007-2022, Eric Woodruff, All rights reserved +// Updated : 08/02/2024 +// Note : Copyright 2007-2024, Eric Woodruff, All rights reserved // // This file contains the code used to search for keywords within the help topics using the full-text index // files created by the help file builder. @@ -119,7 +119,7 @@ private List ParseKeywords(string keywords) { checkWord = word.ToLower(CultureInfo.InvariantCulture); - if(checkWord.Length >= 2 && !Char.IsDigit(checkWord[0]) && !keywordList.Contains(checkWord)) + if(checkWord.Length >= 2 && !keywordList.Contains(checkWord)) keywordList.Add(checkWord); } diff --git a/docs/Reference/SearchHelp.inc.php b/docs/Reference/SearchHelp.inc.php index e5a3163a..f2760fa9 100644 --- a/docs/Reference/SearchHelp.inc.php +++ b/docs/Reference/SearchHelp.inc.php @@ -29,8 +29,8 @@ function ParseKeywords($keywords) foreach($words as $word) { $checkWord = strtolower($word); - $first = substr($checkWord, 0, 1); - if(strlen($checkWord) >= 2 && !ctype_digit($first) && !in_array($checkWord, $keywordList)) + + if(strlen($checkWord) >= 2 && !in_array($checkWord, $keywordList)) { array_push($keywordList, $checkWord); } diff --git a/docs/Reference/fti/FTI_100.json b/docs/Reference/fti/FTI_100.json index 69546eda..4c2a15b7 100644 --- a/docs/Reference/fti/FTI_100.json +++ b/docs/Reference/fti/FTI_100.json @@ -1 +1 @@ -{"documentflags":[38010881,50593796,51118087],"documentname":[13631493,14548997,16187397,16908293,23068678,23789574,23920646,24641542,24969221,25362437,28966917,29949957,30146565,31391749,36569093,37879813],"dictionary":[8323074,9437189,12255236],"differ":[61145089],"dump":[12910593],"donotenablevtablepatching":[61669377],"describing":[37617665,53608449,55115777],"data":[327681,3080193,4980754,5111809,7208978,18415619,19857410,21692418,23658499,24444932,24969222,25362437,25493510,25559044,25821188,26017796,26083334,26411013,26542086,26607622,26935302,27066373,27525124,27983877,28049413,28311558,28377093,28573701,28704772,28966916,29294597,29491206,29556740,29949958,30343173,30736390,30998532,31391748,31981573,32178182,32571393,33095684,34013189,34799617,34930692,35192841,35848198,36372489,37879813,38666249,39059457,39321602,39714825,40632321,42074113,42205185,43909121,44761089,44957697,45088769,45744129,46071809,46268417,47775745,48496642,49283074,50528257,51838977,58195969,58261522,58327041,58392577,58654724,58851329,58982402,60096513,60555265,60620806,60686343,60817427,60882945,61407233,61538305,61603841],"documentcategory":[1835009,2031618,2359298,3735556,4587524,4980744,6029318,6291460,6356996,6488070,6553604,6815749,7208972,7274501,7405573,7536644,8716292,8978436,13762565,13893637,14680069,14745605,21102599,21233671,21823495,22085639,24444933,24772613,25493509,26083333,26411013,27394053,27525125,27721733,28311557,28377093,28573701,29556741,29753349,30670850,30736389,31981573,33030146,33095685,33882114,34668546,35586050,36372488,38010881,39714824,39780354,44498951,45023233,45547527,46661639,47448070,48037894,53870594,58195972,58261512,58327044,58392580,58523649,59899910,60096516,60817420,60882948,61407236,61538308,61603844],"discarded":[14548993,15466497,15532033,16908289,22216705,22806529,23920641,24641537,50593793],"deleteproperty":[2621442,2686978,2818050,3145730,3211266,3670018,4128770,4521986,5177346,14811141,15335429,23527430,24117254,35913730,35979266,58916866,59375618,59834370,60162050,60227586,60293122,60424194,60751874,61014018],"detailed":[44236801,45744129,46202881,48103425,48365569,48693249,58458113,58654721,58982401],"debugport":[25231365,26214405,27590661,27656197,28835845,29163525,29425669,29622277,29884421,30015493],"dimensions":[7602177],"defined":[2621441,2686977,2818049,3145729,3211265,3670017,3735553,4128769,4521985,4587521,4980737,5046273,5177345,5242881,6291457,6356993,6553601,7077889,7143425,7208961,7536641,8060929,8716289,8978433,13631489,17367041,20316161,23789569,24576001,24707073,28246017,30212097,36110337,36831233,40763393,43778049,45744129,54067201,58195969,58261505,58327041,58392577,58654721,58785793,58916865,59375617,59834369,60096513,60162049,60227585,60293121,60424193,60751873,60817409,60882945,61014017,61407233,61538305,61603841],"defines":[8257537,8912897,38010889,38535174,39321608,39976961,50593793,52428801,54198273,56950785,57147393,57802753,58458113,59047937,59179009,59441153,59572225,59637761,59834369,59965441,60030977,60424193,60620801,60686337,61079553,61145089,61210625,61276161,61341697,61669377],"delay":[54853633],"directaccess":[59965441],"decrement":[3014657,4521985,55705601,60227585],"debugging":[26804226,27656194,28901378,29622274,43778049,47710209,48234497,50593793,52559873,59179010,61145090,61669378],"decimal":[3407873,5046273,12058631,58785793,59768833,61669377],"defaultarg":[7077889,7602177,8323073,8650753,12255233,12910593,31326209],"dummy":[47054849,51642369,56492033],"demand":[51511298],"downloaded":[59572225],"dispatches":[3014657,4521985,55705601,60227585],"distinct":[45023233,61145089],"debug":[4980738,25231361,26214401,27590657,27656193,28835841,29163521,29425665,29622273,29884417,30015489,33816580,38338564,40370178,58261510,60817412],"disablesourcemanagement":[61669377],"dataview":[38535169,60162049,61210625,61341698],"disabled":[19791873,47382529,50200577,53936129,57147394,60686338,61145089,61669377],"debugger":[65538,720898,917506,3932161,7208961,13631490,14548994,15466497,15532033,16187394,16908290,22151169,22216705,22740993,22806529,23068674,23789570,23920642,24641538,24969217,25231361,25362433,26214401,26279938,26673153,26738689,26804225,27459585,27590658,27656194,28180481,28508161,28639233,28835841,28901378,28966913,29097985,29163522,29425666,29622275,29884418,29949953,30015489,30146561,31129601,31391745,31850497,33161217,33554433,33685505,34275329,34734081,35127297,36044801,36306945,36569089,37224449,37486593,37879809,38207489,38469633,39190529,39321601,39387138,45613057,50593795,54657025,55181314,58261506,58851331,60817409,61145089],"depends":[43450369,49414145],"downloadstring":[12910593],"documen":[6815745,7405569,7864321,8847361,21954561,36634626,39256065,40304643,44761089,46661633,51445761,51576835,51707905,52363265,52625409,59310081,60489730],"disposing":[18874376,38273032,43122696],"delegat":[15794178,16580610,31260674,33947650],"dispose":[2621441,2686977,2818049,3145729,3211265,3670017,3735553,4063233,4128769,4521985,4587522,4980737,5177345,6291458,6356994,6553602,7208963,7536642,8257538,8716291,8978434,12910593,18874379,24576008,24707078,30212103,30539785,36110339,36831235,38273035,40763395,43122699,58195970,58261505,58327041,58392578,58916865,59375617,59703297,59834369,60096514,60162049,60227585,60293121,60424193,60751873,60817411,60882947,61014017,61407234,61538306,61603842],"documentloadcallback":[38010881,42926087,52166660],"disablebackgroundwork":[57147393],"delimited":[22740993,34734081,35127297,36044801,38207489,39190529,41222146,42270721,43843585,45416449,45613057,46071809,53870594,60030977],"distinction":[13172737,13238273,13631489,13762561,13893633,14548993,14680065,14745601,15073281,15204353,15466497,15532033,16187393,16908289,18939905,19464193,20250625,20447233,21102593,21233665,21823489,22085633,22216705,22806529,23068673,23789569,23920641,24641537],"disconnected":[917505],"delegates":[38010881,39059457,40632321,41353218,42074113,42205185,43909121,44957697,45088769,45219842,46268417,47775745,58195969,58327041,58392577,60096513,60817410,60882945,61407234,61538306,61603842],"disableextensionmethods":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47775745,48300036,54525958,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"destinationindex":[16056325,16711685,17432581],"del":[3407873,5046273,8126465,9830406,58785793,59768833],"dimension":[9502721,10354689],"direct":[2621442,2686978,2818050,3211266,3670018,15728642,15794178,16580610,19202050,37421059,37945347,59375618,59834370,59965441,60162050,60424194,60751874],"documentinfo":[1703938,1835009,3735554,4587522,4980740,5767174,5832710,6029318,6291458,6356994,6488070,6553602,7208966,7274501,7536642,8716290,8978434,15073290,15204362,18939917,19464205,21954565,23461898,25821195,26607626,28049419,28442634,30343179,30998539,32178186,32374785,33488897,34078721,35061761,35192836,37355521,37748737,38010881,38666244,40304642,40435713,41877509,45285382,46661633,47251457,50003973,51118081,51576842,51707905,51970055,52166661,52232193,52625409,53739530,54132740,57278469,58195970,58261508,58327042,58392578,58523649,59703297,60096514,60817414,60882946,61407234,61538306,61603842],"dynamically":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47775745,49676290,49938434,51183618,52297730,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"description":[65537,131073,196609,262145,327681,393217,458753,524289,655361,786433,851969,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5111809,5177345,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,12255233,30670849,30932993,31064065,31457281,31719425,31784961,32047105,32374785,32440321,32505857,32571393,32899073,33030145,33292289,33357825,33423361,33488897,33619969,33751041,33816577,33882113,34078721,34209793,34340865,34406401,34471937,34537473,34603009,34668545,34799617,34865153,34996225,35061761,35192833,35258369,35323905,35389441,35586049,35651585,35717121,35782657,35913729,35979265,36110337,36175873,36241409,36372481,36438017,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37289985,37355521,37421057,37552129,37617665,37683201,37748737,37814273,37945345,38010885,38076417,38141953,38338561,38404097,38535171,38600705,38666241,38797313,38862849,38928385,38993921,39059457,39124993,39256065,39321603,39387137,39518209,39649281,39714817,39780353,39911425,39976963,40173569,40239105,40304641,40370177,40435713,40566786,40632321,40697857,40763393,41091073,41156609,41222145,41287681,41418753,41484289,41811969,41877505,42008577,42074113,42205185,42532865,42598401,43188225,43909121,44957697,45088769,45416449,45744129,45809665,46137345,46202881,46268417,46596097,46858241,46923777,47120385,47644673,47775745,47972353,48365569,48824321,50593793,51576835,52428801,53084163,53477379,53673986,53870595,54067204,54198273,54722563,55115778,55246849,55312387,55377921,55705602,55836674,55902210,56229889,56426500,56492034,56754178,56950785,57016321,57147393,57212929,57540610,57671681,57802753,57933825,57999364,58130435,58195971,58261508,58327042,58392579,58458113,58523651,58589187,58654724,58720258,58785794,58851330,58916866,58982403,59047937,59113475,59179009,59244546,59310083,59375618,59441153,59506691,59572225,59637761,59703298,59768834,59834370,59899906,59965441,60030977,60096515,60162050,60227586,60293122,60358659,60424194,60489731,60555266,60620801,60686337,60751874,60817411,60882947,60948482,61014018,61079553,61145089,61210625,61276161,61341697,61407235,61472770,61538307,61603843,61669377],"disposes":[8257537],"dialogs":[4718593,30605314,39059457,39976961,40632321,42205185,43909121,44957697,46268417,46596097,50397185,57344001,58392577,60096513,60882945,60948483,61407233,61538305,61603841],"drives":[8650754],"demonstrates":[9306113,9568257,9830401,10616833,12255233,12910593],"declared":[40042497,44171265,59637761,61669377],"dynamic":[3014670,3407883,4521997,5046283,6946817,7340033,8519683,9109507,9371651,9633795,9961474,10027011,10158082,10551299,10747906,10944513,11534339,11730948,13631489,13828097,19398657,23789569,33357826,34865153,35323906,35782658,39059457,40632321,42074113,42205185,43646977,43909121,44957697,45088769,45744129,46202881,46268417,46727169,47775745,47906819,48168961,48365569,48758785,49348609,50135041,54001667,55705615,56819713,57540609,58195969,58327041,58392577,58458113,58654721,58785803,58982401,59179009,59768843,59965441,60096513,60227598,60817409,60882945,61145089,61407233,61538305,61603841],"date":[61145090,61669378],"deeply":[52494337],"desktop":[39976964,55377921,58392577,60096513,60882945,61407234,61538306,61603842],"disableglobalmembers":[61145089],"dynamichostobject":[3014658,6946817,7340037,38010881,55705608],"degrade":[61145089],"documentloader":[1835013,1966082,5963777,6225921,6422529,6488065,7274497,7667717,35389441,38010882,39583745,40697858,43319303,53018631,53084168,58523660],"dict":[8323076,9437186,12255236],"disconnect":[1900545,2162689,7733253,56229889,57212929],"directly":[3014657,4521985,9437185,55705601,60227585],"details":[13828097,19398657,23134209,23724033,44236801,48103425,48693249],"disconnects":[65537,917505,1900545,2162689,7733249,56229889,57212929,58261505],"defaultscriptusageattribute":[2555906,5570566,5636102,38010881,38928386,41418757,42008577,43974657,47316993,53411841,53477382,59113482],"declare":[44433409,50659329],"document":[1638403,1703937,1835014,1966085,2031623,2359297,3473409,3735566,4587534,4980756,5308417,5505035,5767171,5832707,5963777,6029331,6094874,6225946,6291470,6357006,6422539,6488083,6553614,6619142,6684673,6815753,7208994,7274514,7405579,7536654,7667713,7864327,8192001,8716302,8847381,8978446,12910593,13172740,13238276,13631494,13762566,13893638,14548996,14680072,14745608,15073283,15204355,15466498,15532034,16187398,16908292,18939907,19464195,20250628,20447236,21102598,21233670,21823496,21954562,22085640,22216706,22806530,23068678,23461891,23789574,23920644,24051715,24444935,24641540,24772613,24969218,25362434,25493511,25559043,25821187,26017795,26083333,26411013,26542083,26607619,26935299,27066371,27394055,27525125,27721735,28049411,28311557,28377095,28442627,28573703,28966914,29032451,29294595,29556743,29753349,29949954,30146562,30343171,30670856,30736391,30998531,31391746,31981573,32178179,32374788,33030148,33095685,33488900,33882116,34078724,34668548,35061764,35192840,35389442,35586052,36372493,36569090,36634630,37355524,37617666,37748740,37879810,38010893,38404097,38535169,38666248,39059457,39256069,39583748,39714829,39780356,40108034,40304644,40435714,40697859,40632321,40828930,40894466,41222150,41484290,41549826,41877507,42074113,42205185,42270721,42926082,43319298,43384836,43843585,43909121,44302339,44498946,44630018,44761091,44957697,45023236,45088769,45285379,45547522,46268417,46661633,47251458,47448065,47775745,48037889,50003972,50593796,50921474,51118082,51380226,51445761,51576839,51707907,51970050,52166660,52232194,52363265,52428803,52625409,53018626,53084168,53739522,53870606,54132737,55115778,57278469,57737217,57868289,58195983,58261525,58327055,58392591,58523655,59310092,59572228,59703298,59899909,60096527,60489741,60817443,60882959,61407247,61538319,61603855,61669377],"dictt":[8323074,9437186],"datetime":[55312385,61145090,61669377],"debuggerconnected":[65537,720900,58261505],"delivered":[52035585,56098817],"discarding":[3735554,4587522,6291458,6356994,6553602,7208962,7536642,8716290,8978434,13631490,16187394,23068674,23789570,32374785,33488897,34078721,35061761,37355521,37748737,58195970,58327042,58392578,60096514,60817410,60882946,61407234,61538306,61603842],"delegating":[9306113,9568257,9830401],"delete":[3014658,4521986,14811137,15335425,23527425,24117249,35913729,35979265,55705602,60227586],"delegate":[2621442,2686978,2818050,3014657,3211266,3407876,3670018,4521985,4784130,5046275,6881282,8388613,9306117,9568261,9830405,15728645,15794181,16580613,19202053,30474242,31260674,32899074,33226754,33947650,37421058,37945346,38010881,38600706,39649282,45154305,50003973,51314689,52166661,55705601,57016322,57212929,57278469,57933825,58064901,58720258,58785795,59375618,59768836,59834370,60162050,60227585,60424194,60751874],"debuggerdisconnected":[65537,917508,58261505],"destination":[16056326,16711686,17432582,18415617,19857409,21692417,23658497],"disablelistindextyperestriction":[39059457,40632321,42074113,42205185,43450374,43909121,44957697,45088769,46268417,47775745,49414148,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"dynamicobject":[3014679,4522007,38010881,55705629,60227612],"disabledynamicbinding":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,46333953,47775745,47906820,51052545,54001670,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"documentcontextcallback":[1835009,2031617,3735554,4587522,4980740,6029318,6291458,6356994,6488070,6553602,7208966,7274501,7405573,7536642,8716290,8978434,14680069,14745605,21823495,22085639,24444933,25493509,27394053,27721733,28377093,28573701,29556741,30670849,30736389,33030145,33882113,34668545,35586049,36372484,38010881,39714820,41549831,47251463,50003972,53870593,58195970,58261508,58327042,58392578,58523649,60096514,60817414,60882946,61407234,61538306,61603842],"download":[12910593],"datetimeoffset":[55312385],"displaying":[46596097,50397185,60948481],"disablefloatnarrowing":[39059457,40632321,42074113,42205185,42795014,43909121,44957697,45088769,46268417,47775745,48889860,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"different":[6094849,6225921,26804225,27656193,28901377,29622273,54591489,61407233,61538305,61603841],"disables":[4718593,30605313,38404098,39059466,40042497,40632330,41353217,42074125,42205194,42336257,42532865,42795009,43057153,43450369,43909130,44171265,44957706,45088778,45219841,45416449,45875201,46268426,46333953,46465025,47382529,47710209,47775754,47906817,48234497,48300033,48889857,49414145,51052545,52035585,52559873,52822017,53280769,54001665,54525953,54853633,56098817,58195978,58261506,58327050,58392586,60030977,60096522,60817421,60882954,60948481,61276161,61407242,61538314,61603850],"describes":[45744129,58654721],"disposable":[8257539],"disabletyperestriction":[39059457,40042500,40632321,42074113,42205185,43450369,43909121,44171270,44957697,45088769,46268417,47775745,49414145,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"double":[3407873,5046273,9699335,13631489,23789569,51511302,58785793,59768833,60751873],"derived":[2490371,2555907,2883587,3014665,3342339,3538947,4521993,4849667,5111809,38928385,42008577,42598401,46137345,46923777,47972353,53477380,54722564,55312388,55705609,58654721,59113476,59506692,60227593,60358660],"dispatcher":[39059458,40632322,42205186,54788108,61407235,61538307,61603843],"dimensional":[13828097,19398657],"discards":[1835009,1966081,5963777,6684673,53084161,58523649],"determines":[1572865,1638401,1769474,1835009,1900545,1966081,2031617,2097153,2359297,2752514,2162689,2228225,3014658,3276802,3407877,3473409,3604481,3866625,3932161,3997697,4063233,4259842,4325377,4390913,4456449,4521985,4587521,4653057,4784129,4980737,5046277,5111809,5439489,6291458,6356994,6553602,6881282,6946817,7208961,7536642,7798785,8716290,8912898,8978434,9175041,9764865,10223617,17039361,32636929,33751042,35520513,41746433,53084161,53673985,53870593,54067202,55115777,55705602,55836673,56229889,56426498,56492033,56754177,57016321,57212929,57540610,57671681,57933825,57999362,58130433,58195969,58261505,58392578,58523649,58589185,58654721,58720258,58785797,58851329,59244545,59310081,59703297,59768837,59899905,60096514,60227585,60489729,60555265,60817409,60882946,61407234,61472769,61538306,61603842],"disablejitcompilation":[57147393],"discard":[5963777,6684673,13631495,16187399,23068680,23789576],"disable":[26804225,27656193,28901377,29622273,40042497,42795009,43450369,44171265,47906817,48300033,48889857,49414145,54001665,54525953,59441153],"defaultdocumentloader":[1835010,5308421,5505025,6094849,6029313,6684673,35389442,38010881,43384833,53084161,58523656],"determine":[45678593,51904513],"documents":[1835009,1966081,5963778,6684674,6815746,7405570,7864322,8847362,39583745,39780353,41222145,43384833,43843585,44498945,45023233,53084161,53870593,58523649,59572227,59899905],"dynamicmetaobject":[3014658,4521986,55705602,60227586],"default":[1,1572865,1638401,1769473,1835010,1900545,1966081,2031617,2097153,2359297,2490369,2555906,2162689,2228225,2883585,3014657,3276801,3342338,3407873,3473409,3538945,3604481,3735554,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587523,4653057,4849665,4915201,4980737,5046273,5111809,5308417,5373953,5439489,5505025,5570563,5636097,5898241,6029313,6094849,6160385,6291459,6356995,6553603,6684673,6881281,7208963,7536643,7798785,8716291,8978435,15138817,15269889,16318465,16973825,17629185,20185089,20578305,21037057,21430273,31719426,33292290,34996226,35258370,35389441,38010883,38928386,39059457,39583746,40042498,40632321,40697858,41091074,41418754,41680898,42008578,42074113,42205185,42401794,42795009,42860550,43057153,43384835,43909121,43974658,44171266,44957697,45088769,45154305,46268417,46333953,46465025,46530561,46792705,47054849,47316994,47382529,47775745,47906817,48889857,49152002,49610753,50200577,50528257,50724865,50790401,50987009,51052545,51314689,51642369,51707905,51838977,52035585,52101121,52822017,52953089,53018630,53084163,53280769,53411842,53477380,53673985,53870593,53936129,54001665,54067201,54460417,54591489,54722561,55115777,55312385,55443457,55574529,55705601,55771138,55836673,56098817,56229889,56360962,56426500,56492033,56754177,56950785,57147393,57212929,57671681,57933825,57999363,58130435,58195972,58261505,58327043,58392580,58523651,58589185,58654721,58720257,58785793,58851329,59113476,59244545,59310081,59441153,59506689,59572225,59703297,59768833,59899905,60096516,60227585,60358657,60489729,60555265,60817412,60882948,61145089,61407236,61472769,61538308,61603844],"dll":[589825,720897,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,4915201,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6422529,6488065,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7143425,7274497,7340033,7405569,7471105,7602177,7667713,7733249,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8781825,8847361,8912897,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16515073,16449537,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30736385,30801921,30867457,30998529,31129601,31195137,31260673,31326209,31391745,31522817,31588353,31653889,31850497,31916033,31981569,32112641,32178177,32243713,32309249,32636929,32702465,32768001,32833537,32964609,33095681,33161217,33226753,33554433,33685505,33947649,34013185,34144257,34275329,34734081,34930689,35127297,35520513,35454977,35848193,36044801,36306945,36503553,36569089,37224449,37486593,37879809,38207489,38273025,38469633,38731777,39190529,39452673,39583745,39845889,40042497,40108033,40501249,40828929,40894465,40960001,41025537,41353217,41549825,41615361,41680897,41746433,42139649,42270721,42336257,42401793,42467329,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,45023233,45154305,45219841,45285377,45350913,45481985,45547521,45613057,45678593,45875201,45940737,46006273,46071809,46333953,46399489,46465025,46530561,46661633,46727169,46792705,46989313,47054849,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47710209,47841281,47906817,48037889,48103425,48168961,48234497,48300033,48431105,48496641,48562177,48627713,48693249,48758785,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669377],"discardcacheddocuments":[1835010,1966081,5963781,6684677,53084161,58523650],"documentsettings":[1835009,2031618,6029318,6488070,6815745,7274501,7405569,7864321,8192005,8847361,30670849,38010881,38404097,39059457,40108033,40632321,40828939,40894465,41222146,41549825,42074113,42205185,42270721,42926081,43319297,43843585,43909121,44630030,44957697,45088769,46268417,47775745,51380235,53870600,58195969,58261505,58327041,58392577,58523649,60096513,60817409,60882945,61407233,61538305,61603841],"deprecated":[47382529],"directory":[41222145,43843585,45416449,46071809,53870593,60030977],"display":[39059457,39976961,40632321,42205185,43909121,44957697,46268417,57344001,58392577,60096513,60882945,60948481,61407233,61538305,61603841],"defaults":[7077889,7602177,8323073,8650753,12255233,12910593,31326209,38010881,59113473],"defaultaccess":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47316996,47775745,53411846,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"documentaccessflags":[38010881,40108039,59572228]} \ No newline at end of file +{"destinationindex":[16449541,16646149,16777221,18153477,18677765,18743301],"disposable":[8912899],"disablebackgroundwork":[72744961],"dimensions":[7733249],"dialogs":[9240577,41746434,52232193,57737217,62193665,63045633,64684033,65273857,69009409,69533697,70582273,73465857,75104257,79953921,80281601,81002497,81068033,81133571,81264641],"defaults":[7733249,7929857,8847361,9175041,13959169,15990785,25624577,26279937,26869761,27656193,27787265,27852801,28442625,28573697,29032449,29097985,29229057,29294593,29425665,29622273,29818881,29884417,30015489,30146561,30277633,30670849,30736385,30801921,30932993,30998529,31064065,31719425,32047105,32112641,32178177,32309249,32374785,32440321,32768001,32833537,34078721,34209793,34275329,35651585,45547521,54591489,75759617],"default":[196609,851969,1703937,1769474,1835009,1900545,1966081,2031617,2162689,2228226,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145730,3342337,3407873,3538945,3604481,3735554,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4849665,5046273,5111809,5177345,5242881,5308417,5373955,5439489,5636097,5701633,5832705,5963777,5767169,6094849,6160385,6291457,6422529,6488067,6553601,6881281,6946817,7077889,7143425,7536641,7864321,8257537,8716291,9306115,9437185,9502723,9830403,10682369,11010051,11206659,11403267,12189697,15335425,15466497,17367041,17694721,18481153,19660801,20971521,26017793,27983873,45547523,50855938,53936130,54722562,55640065,55771142,55967746,56295426,56688641,57278465,57344002,57671682,57737217,57868289,57933826,58130433,58523650,58916865,59572226,60162049,60293121,60686338,60817409,60882945,61079554,61407233,61669377,61997058,62128129,62193665,62259202,63045633,63963137,64159746,64290817,64552961,64684033,64815105,64880641,65077249,65273857,65536001,66387969,66650113,66781186,66912258,67305473,67764225,67895297,67960838,68943873,69140481,69468163,69533697,69926914,70254593,70909953,71041025,71237633,71172097,71368707,71499778,71565313,71761921,71827457,72155137,72220673,72286210,72417281,72548353,72613889,72744961,73400321,73531393,73924609,73990148,74055681,74121217,74448897,74514433,74711043,74842113,75038721,75104260,75169795,75235329,75366401,75431937,75563009,75628548,75759620,75956225,76021761,76087300,76152833,76480513,76546049,76742657,76873729,76939265,77070337,77266945,77332481,77398017,77791233,77856772,77987841,78249985,78512131,78577665,78708737,78970881,79167489,79626241,79691779,79888385,79953924,80019457,80084993,80216065,80281604,80347137,80478209,80543745,80674817,80805889,80871425,81002500,81068036,81264644,81330177],"date":[29294593,29556737,29818881,31588353,42008577,76939266,80412674],"derived":[1769475,2031619,2949123,3014657,3145731,3407873,3342345,4653059,5046275,5963785,34406401,45285377,53542913,56492033,57671681,65863681,66781185,68157441,72548353,73990148,74842116,75038724,75759620,77266946,78577666,78970881,79167492,80085001,80216068,80543753],"directory":[52756481,54657025,55508993,63635457,69992449,79888385],"disposeasync":[4063233,80936961],"documentsettings":[1835010,2228225,6619137,6684673,6815745,7274501,7405574,8650753,9043973,10682374,45547521,45678593,52756482,55508993,57737217,58130433,59768833,59834369,59899915,60293121,61341697,61407233,61931521,62193665,63045633,63504385,64225281,64684033,64749569,65273857,65994766,69533697,72876043,75104257,75169793,75366401,76087297,77856769,78512129,79888392,79953921,80281601,81002497,81068033,81264641],"documentname":[15269893,16384005,18219013,19464197,26542086,26804230,28639238,29360134,36372485,39387141,41287685,42401797,44040197,44302341,45875205,49217541],"defaultdocumentloader":[2228226,5832709,6291457,7536641,8257537,10682369,45547521,55640066,69468161,75169800,79691777],"dispatches":[3342337,5963777,80084993,80543745],"distinct":[54198273,76939265],"disablesourcemanagement":[80412673],"documentflags":[45547521,63766535,78118916],"disablelistindextyperestriction":[56360964,57737217,58130433,60293121,61407233,62193665,62849030,63045633,64684033,65273857,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"demand":[70975490],"dynamicmetaobject":[3342338,5963778,80084994,80543746],"double":[3538945,4521985,4915202,7340035,9895939,10551303,18219009,26279943,26542081,29949959,32440327,32702471,46137351,51052546,51445762,54067202,70975494,75956225,76349443,77529091,77987841,78184449,79364098],"disconnects":[983041,1310721,2293761,2555905,7471105,68943873,70909953,75366401],"directaccess":[78446593],"dictt":[8847362,10354690],"documentinfo":[1638402,2228225,3735554,5373954,6225926,7077892,7405574,7667718,8716290,9043973,9306114,9502722,9830402,10682374,11010054,11206658,11403266,14942218,18022410,21561357,23330821,24313869,39518219,40173578,41418762,43515915,43909121,44105733,45547521,46858251,48365578,48496641,50003972,50987019,52822017,53018625,53870593,54460426,54853636,56426497,57409537,59441153,61538306,61734913,62914566,63766529,64880641,67174401,69337093,69599233,71172097,72482823,75104258,75169793,75366404,75825162,76087302,76218372,77725701,77856770,78512130,78839818,79298565,79953922,80281602,81002498,81068034,81264642],"drives":[9175042],"details":[16711681,23199745,41549825,43188225,56950785,69664769,73334785],"dispatcher":[57737218,62193666,64684034,74579980,75104259,79953923,81264643],"debugport":[38731781,39649285,40304645,40828933,42336261,44498949,44892165,45481989,49086469,50921477],"dummy":[57868289,69140481,78708737],"dynamically":[57737217,58130433,60293121,61407233,62193665,62390274,63045633,64684033,65273857,66519042,69533697,70713346,74907650,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"direct":[2818052,3276804,3473412,3997700,4390916,14876674,16318466,16973826,18874370,19070978,19136514,20905986,22020098,46202885,49938437,73138180,74645508,75497476,77135876,78184452,78446593],"downloadstring":[15990785],"download":[15990785],"dimension":[10158081,11337729],"decrement":[3342337,5963777,80084993,80543745],"destination":[16449542,16646150,16777222,17563649,18153478,18677766,18743302,19726337,23724033,24707073],"describing":[56819713,74186753,80347137],"dimensional":[16711681,23199745],"discardcacheddocuments":[2162689,2228226,6029317,8257541,75169794,79691777],"document":[1638401,1835015,1900545,2162693,2228230,2621443,3604481,3735566,5373966,5505025,5832705,6029313,6225923,6291482,6619143,6684681,6750214,6815765,7077908,7208986,7274497,7405587,7536651,7602187,7667715,8257537,8650763,8716302,9043986,9306126,9502734,9830414,10682387,11010082,11206670,11403278,14155784,14483464,14548996,14942211,15269894,15728642,15990785,16187394,16384004,16515078,18022403,18219014,19464196,19857412,21037064,21364742,21561347,21626888,22872066,23330818,23855106,24313859,24641540,25427972,26542086,26607622,26738694,26804230,28639236,29360132,36044803,36175877,36372482,37552131,37748739,37945347,38207493,39387138,39518211,40173571,40239107,40435715,40894471,41025539,41287682,41418755,42074119,42401794,42598403,43057157,43515907,43581447,43909124,44040194,44105731,44302338,44433415,44695556,45023237,45547533,45678600,45744135,45875202,46858243,47513607,47841284,48037895,48103425,48365571,48496644,49217538,49741829,49807367,50003976,50987011,51314692,51642381,51970053,52625413,52756486,52822020,53018628,53870596,54001670,54198276,54460419,54853640,54984709,55115780,55508993,55640066,55771138,56426498,56819714,57212941,57344004,57409540,57475074,57737217,58130433,58261509,58392579,59375620,59441153,59768834,59834369,59899906,60096515,60293121,61341698,61407233,61538308,61734914,61931522,61997059,62193665,62914563,63045633,63504385,63766530,64028673,64225282,64684033,64749570,64880643,65273857,65470466,65798146,65994754,67174402,68616193,69337093,69468164,69533697,69599233,70057985,70123521,71172098,71958531,72482818,72876034,73007105,73072641,75104271,75169799,75366421,75825154,76087331,76218369,76480524,76873732,77332485,77725700,77856783,78118916,78315522,78512143,78839815,79298564,79691784,79888398,79953935,80281615,80347138,80412673,80674829,81002511,81068047,81264655],"documentloadcallback":[45547521,64225287,79298564],"dump":[15990785],"delegat":[14876675,16973826,18874369,19136515,20905985,22020098,42139650,44630018],"deletable":[26673153,27590657,77660161],"displaying":[70582273,73465857,81133569],"defaultarg":[7733249,7929857,8847361,9175041,13959169,15990785,25624577,26279937,26869761,27656193,27787265,27852801,28442625,28573697,29032449,29097985,29229057,29294593,29425665,29622273,29818881,29884417,30015489,30146561,30277633,30670849,30736385,30801921,30932993,30998529,31064065,31719425,32047105,32112641,32178177,32309249,32374785,32440321,32768001,32833537,34078721,34209793,34275329,35651585,54591489],"debugger":[655362,983042,1310722,4849665,11010049,15269890,15728641,16187393,16384002,18219010,19464194,22085633,22740993,22872065,23855105,26542082,26804226,28639234,29360130,35258369,36372481,36700162,36896769,37027841,38731778,39256065,39387137,39649282,39714817,40304641,40828930,41287681,41680897,41943041,42205185,42270721,42336257,42401793,42532865,42991617,43778050,44040193,44302337,44498946,44761089,44892161,45219841,45481987,45875201,46530561,47316993,48234497,49086466,49217537,49545217,50331649,50528257,50593793,50921473,52101121,52297729,52953089,53149697,54132737,61800450,70516737,71696386,75366402,76087297,76546051,76939265,78118915],"depends":[56360961,62849025],"disabletyperestriction":[56360961,57737217,58130433,58523652,60293121,61407233,62193665,62849025,63045633,64159750,64684033,65273857,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"delegates":[45547521,51707905,57737217,58130433,60293121,61407233,62062594,62193665,63045633,64684033,65273857,67567618,69533697,75104258,76087298,77856769,78512129,79953922,80281601,81002497,81068033,81264642],"distinction":[14155777,14483457,14548993,14942209,15269889,15728641,16187393,16384001,16515073,18022401,18219009,19464193,19857409,21037057,21364737,21561345,21626881,22872065,23855105,24313857,24641537,25427969,26542081,26607617,26738689,26804225,28639233,29360129],"declared":[58523649,64159745,79429633,80412673],"documentcategory":[1835010,1900546,2228225,3735556,5373956,6684677,7077896,7405574,8650757,8716292,9043973,9306116,9502724,9830404,10682374,11010060,11206660,11403268,14155781,14483461,16515077,21037063,21364741,21626887,26607623,26738695,36175877,38207493,40894469,42074117,43057157,43581445,44433413,44695554,45023237,45547521,45678594,45744133,47513605,47841282,48037893,49741829,49807365,51314690,51642376,51970053,52625413,54198273,54984709,55115778,57212936,57475079,59375618,59441159,68616198,70123526,75104260,75169793,75366408,76087308,77332486,77856772,78315527,78512132,79888386,79953924,80281604,81002500,81068036,81264644],"del":[3538945,4521985,8585222,8978433,75956225,77987841],"detailed":[56950785,60358657,62455809,62980097,69664769,72548353,73334785,78905345,78970881],"delay":[76611585],"desktop":[52232196,74776577,75104258,79953922,80281601,81002497,81068033,81264642],"debugging":[39256066,40828930,43778050,45481986,48955393,56229889,66453505,67698689,76939266,77004802,78118913,80412674],"dynamicpropertynames":[55574529,60030980,61210625,67371014,71303169,78577665],"disconnect":[2293761,2555905,7471109,68943873,70909953],"debug":[7077890,38731777,39649281,40304641,40828929,42336257,44498945,44892161,45481985,47972356,49086465,50921473,55836676,58720258,75366406,76087300],"data":[1245185,1507329,3014657,3407873,7077906,11010066,17563650,19726339,23724034,24707075,36044804,36175878,36241413,36372485,37552134,37748740,37945349,38076420,38207494,38273029,39387141,39518213,40042500,40108038,40239109,40435718,42401796,43122694,43515909,43581445,44040198,44433413,45744132,45875204,46006273,46858244,47513604,48037894,48365574,49217542,49545218,49741829,49807366,50003977,50987012,51642377,51970052,52625413,54460422,54788097,54853641,54984708,57212937,57737217,57999362,58130433,60096513,60293121,60358657,61407233,62193665,62980097,63045633,63635457,64684033,64815105,65273857,67305473,68288514,69533697,72548356,75104257,75366418,76087315,76546049,77856769,78512129,78970884,79560710,79757319,79953921,80281601,80871425,81002497,81068033,81264641],"defaultaccess":[57737217,58130433,60293121,61407233,62193665,62259204,63045633,64684033,65273857,69533697,72286214,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"documents":[2162689,2228225,6029314,6619138,6684674,6815746,8257538,8650754,52756481,54198273,55508993,57344001,59375617,69468161,75169793,76873731,77332481,78315521,79691777,79888385],"dynamicobject":[3342359,5963799,45547521,80085020,80543773],"deleteproperty":[2097154,2752514,2818050,3276802,3473410,3997698,4390914,4456450,4784130,4980738,5570562,5963778,17629189,19333125,21954566,22675462,26673157,27590661,45940738,56098818,58064898,73138178,73269250,74645506,74973186,75497474,75694082,76283906,77135874,78184450,79495170,80084994,81199106],"documen":[6619137,6684673,6815745,8650753,23330817,54001666,58261505,59441153,60096513,61538307,64880641,69599233,70057985,73072641,76480513,78839811,80674818],"declare":[56033281,62717953],"dictionary":[8847362,10354693,13959172],"disablefloatnarrowing":[57737217,58130433,60293121,61407233,61669382,62193665,63045633,64684033,65273857,67764228,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"directly":[3342337,5963777,10354689,80084993,80543745],"debuggerdisconnected":[983044,1310721,75366401],"documentloader":[2162690,2228229,5505029,6029313,7208961,7405569,7602177,9043969,45547522,55640065,55771143,57344001,61997058,64749575,75169804,79691784],"discarded":[15728641,16187393,16384001,19464193,22872065,23855105,28639233,29360129,78118913],"discard":[6029313,8257537,15269895,18219015,26542088,26804232],"disconnected":[983041],"dynamichostobject":[3342338,7012357,8519681,45547521,80543752],"disableglobalmembers":[76939265],"deprecated":[67895297],"disableextensionmethods":[57737217,58130433,60293121,60620806,61407233,62193665,63045633,64684033,65273857,65667076,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"degrade":[76939265],"debuggerconnected":[655364,1310721,75366401],"defined":[2097153,2752513,2818049,3276801,3473409,3735553,3997697,4063233,4259841,4390913,4521985,5373953,5570561,5963777,6356993,7077889,7929857,7995393,8716289,9109505,9306113,9502721,9830401,11010049,11206657,11403265,15663105,18219009,23658497,24510465,25296897,26542081,46465025,48955393,51904513,52428801,56164353,56623105,60358657,62980097,70320129,72548353,73138177,74121217,74645505,75104257,75366401,75497473,75956225,76087297,76283905,77135873,77856769,78184449,78512129,78970881,79495169,79953921,80084993,80281601,80936961,81002497,81068033,81199105,81264641],"defines":[8912897,9961473,45547529,48103430,49545224,51707905,52232193,69861377,69992449,71958529,72744961,74645505,76021761,76677121,76808193,76873729,76939265,77004801,77135873,77201409,77660161,77791233,78118913,78446593,78774273,78905345,79233025,79429633,79560705,79757313,80150529,80412673],"discarding":[3735554,5373954,8716290,9306114,9502722,9830402,11010050,11206658,11403266,15269890,18219010,26542082,26804226,43909121,48496641,52822017,53018625,53870593,57409537,75104258,76087298,77856770,78512130,79953922,80281602,81002498,81068034,81264642],"delegate":[2818052,3276804,3342337,3473412,3538948,3997700,4390916,4521987,5963777,5898242,6553602,8388613,8585221,10944517,11075589,14876678,16318469,16973829,18874374,19070981,19136518,20905990,22020101,40632322,42139650,42860546,44630018,45547521,46202884,48758786,49938436,51707905,52887554,53477378,57278465,63963137,69337093,70909953,72679429,73138180,73531393,74645508,75497476,75890693,75956227,77135876,77725701,77987844,78053381,78184452,78643205,79036421,79101954,79298565,79822853,80084993,80543745,80609285,80805890],"delegating":[8585217,10944513,11075585],"disabledynamicbinding":[56688641,57737217,58130433,58916870,60293121,61407233,62193665,63045633,64290820,64684033,65273857,66650113,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"dynamic":[3342350,3538955,3801097,4521995,5242889,5963789,5767169,7012353,8519681,9633795,9699331,10027010,10289155,10485762,10813443,11141123,11272196,11993091,12582913,12779523,13041666,16711681,18219009,23199745,23265285,23461892,24969221,25034756,26411013,26542081,27131908,27459589,29687812,30539781,31522820,32636933,33226757,33685508,34406401,34996225,35454980,36634629,38010884,39321603,46727172,46923777,47579138,48300034,48693252,49676292,51707906,53411844,54329346,55050244,55181316,55574531,57147393,57737217,57802756,58130433,58851332,58916867,60030979,60293121,60358657,60555265,60948481,61210627,61407233,62193665,62455809,62980097,63045633,64290819,64684033,65273857,66322435,67371011,67502081,69206017,69533697,70647809,71303180,72548353,73728003,75104257,75431937,75956235,76087297,76414977,76939265,77004801,77856769,77987851,78381057,78446593,78512129,78577676,78905345,78970881,79953921,80085006,80281601,80543759,81002497,81068033,81264641],"display":[52232193,57737217,62193665,63045633,64684033,65273857,69009409,69533697,75104257,79953921,80281601,81002497,81068033,81133569,81264641],"delete":[3342338,5963778,17629185,19333121,21954561,22675457,26673155,27131906,27590659,29687810,35454978,38010882,45940737,48693249,55181313,56098817,58064897,80084994,80543746],"documentcontextcallback":[1835009,2228225,3735554,5373954,7077892,7405574,8650757,8716290,9043973,9306114,9502722,9830402,10682374,11010054,11206658,11403266,14155781,14483461,21037063,21626887,40894469,42074117,43581445,44433413,44695553,45547521,45678593,45744133,47513605,47841281,48037893,49807365,51314689,51642372,55115777,57212932,61734919,61931527,75104258,75169793,75366404,76087302,77725700,77856770,78512130,79888385,79953922,80281602,81002498,81068034,81264642],"delivered":[73924609,74448897],"different":[6291457,7208961,39256065,40828929,43778049,45481985,65077249,75104257,79953921,81264641],"delimited":[22740993,42270721,45219841,50593793,52756482,52953089,53149697,54132737,54657025,55508993,63504385,63635457,69992449,79888386],"deeply":[68419585],"differ":[76939265],"disabled":[21757953,67895297,71041025,72220673,72744962,76939265,79757314,80412673],"description":[131073,589825,262145,720897,851969,1048577,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5570561,5636097,5701633,5767169,5963777,5898241,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9240577,9306113,9502721,9830401,9895937,11010049,11206657,11403265,12320769,13959169,43646977,43909121,43974657,44105729,44695553,44826625,45154305,45350913,45547525,45678593,45940737,46006273,46071809,46202881,46268417,46399489,46596097,46661633,46727169,46923777,47382529,47448065,47579137,47710209,47775745,47841281,47906817,47972353,48103427,48168961,48300033,48431105,48496641,48562177,48627713,48693249,48758785,48824321,49020929,49152001,49348609,49479681,49545219,49610753,49676289,49938433,50003969,50069505,50200577,50266113,50397185,50462721,50855937,51052545,51183617,51249153,51314689,51445761,51576833,51642369,51707909,51773441,51838977,51904513,52035585,52166657,52232195,52363265,52494337,52690945,52756481,52822017,52887553,53018625,53084161,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673986,53739521,53805057,53870593,53936129,54001665,54067201,54263809,54329345,54394881,54525953,54657025,54722561,54788097,54853633,55050241,55115777,55181313,55246849,55312385,55377921,55443457,55574529,55640065,55705601,55836673,55902209,55967745,56098817,56164353,56295425,56426497,56492033,56557569,56623105,56754177,56819713,56885249,57081857,57212929,57409537,57540609,57606145,57671681,57737217,57802753,57933825,58064897,58130433,58261505,58589185,58654721,58720257,58851329,59047937,59113473,59244545,59375617,59834369,60227585,60293121,60358657,60424193,60751873,61014017,61210625,61276161,61407233,61538305,61800449,61997057,62193665,62455809,62652417,62783489,62980097,63045633,63897601,64356353,64618497,64684033,65273857,65470465,65863681,66781185,67633153,68157441,68943873,69533697,69861377,69992449,70320129,70582273,70909953,71172098,71303170,71368708,71761922,71958529,72024065,72417282,72548356,72613889,72744961,73138178,73269249,73531393,73990147,74121220,74317825,74514434,74645506,74711043,74776577,74842115,74973185,75038723,75104259,75169795,75300865,75366404,75431939,75497474,75628548,75694081,75759619,75956226,76021761,76087299,76152835,76283906,76349442,76414978,76480515,76546050,76677121,76742658,76808193,76873729,76939265,77004801,77135874,77201409,77266946,77332482,77398018,77529090,77594625,77660161,77791233,77856771,77987842,78118913,78184450,78249986,78446593,78512130,78577667,78708738,78774273,78839811,78905345,78970884,79101953,79167491,79233025,79364098,79429633,79495170,79560705,79626242,79691779,79757313,79888387,79953923,80019458,80084994,80150529,80216067,80281603,80347138,80412673,80478210,80543746,80674819,80740354,80805890,80871426,80936961,81002499,81068035,81133570,81199106,81264643,81330178],"disable":[39256065,40828929,43778049,45481985,56360961,58523649,58916865,60620801,61669377,62849025,64159745,64290817,65667073,67764225,77791233],"deletedynamicproperty":[3801090,5242882,27131909,29687813,35454983,38010887,48693250,55181314,71303170,78577666],"disposing":[21430280,41353224,46989320],"dynamicpropertyindices":[55574529,61210625,66322438,71303169,73728004,78577665],"downloaded":[76873729],"disablejitcompilation":[72744961],"disposes":[8912897],"describes":[60358657,62980097,72548353,78970881],"determine":[58982401,65601537],"dispose":[2097153,2752513,2818049,3276801,3473409,3735553,3997697,4259841,4390913,4587521,5373954,5570561,5963777,7077889,8716291,8912898,9306114,9502722,9830402,11010051,11206658,11403266,15990785,21430283,24510470,25296904,41353227,46465031,46989323,51511305,51904515,56164355,56623107,70320129,71172097,73138177,74645505,75104258,75366401,75497473,76087299,76283905,77135873,77856770,78184449,78512129,79495169,79953922,80084993,80281602,81002498,81068035,81199105,81264642],"determines":[851969,1703937,1835009,1900545,1966082,2162689,2228225,2293761,2555905,2621441,2686977,2883586,3014657,3080194,3211266,3342338,3407873,3538949,3604481,3801090,3866625,3932161,4128769,4194305,4325377,4521989,4587521,4849665,5111809,5177345,5242883,5308417,5373953,5439489,5636097,5701633,5963777,5767169,5898241,6094849,6160385,6553602,6946817,7077889,7864321,8519681,8716290,9306114,9502722,9568257,9830402,9895940,9961474,10616833,11010049,11206658,11403266,11665409,18939905,26411009,27328513,27459585,28901377,31391745,33226753,33488897,36634625,41156609,42926081,43646978,46333953,53280769,53411842,58851330,59113476,63438849,66060289,68026369,68681729,68943873,70385665,70909953,71172097,71303170,71368706,71761921,72417281,72548353,72613889,73531393,74121218,74514433,74711041,75104258,75169793,75366401,75431937,75628546,75956229,76087297,76152833,76349444,76414978,76480513,76546049,76742657,77266945,77332481,77398017,77529092,77856769,77987845,78249985,78577667,78708737,78970881,79101953,79364097,79626241,79691777,79888385,79953922,80019457,80084993,80281602,80347137,80478209,80543746,80674817,80805890,80871425,81002498,81068034,81264642,81330177],"documentaccessflags":[45547521,59768839,76873732],"discards":[2162689,2228225,6029313,8257537,75169793,79691777],"defaultscriptusageattribute":[1769474,6488070,6881286,45547521,57671682,57933829,62259201,66781185,71499777,72286209,73990150,75759626],"datetimeoffset":[75038721],"datetime":[4915202,7340035,9895939,29294599,29556743,29818887,31588359,42008583,51052546,51445762,54067202,75038721,76349443,76939266,77529091,79364098,80412673],"donotenablevtablepatching":[80412673],"decimal":[3538945,4521985,4915202,7340035,9895939,13893639,30736392,31195144,31719432,33947656,45416456,51052546,51445762,54067202,75956225,76349443,77529091,77987841,79364098,80412673],"dataview":[48103425,69861378,75497473,79233025],"disables":[9240577,41746433,54657025,56229889,56360961,56688641,57737226,58130442,58523649,58916865,59834370,60293133,60620801,60817409,61276161,61407242,61669377,62062593,62193674,62849025,63045642,64159745,64290817,64421889,64684042,65273866,65667073,66387969,66453505,66650113,67567617,67698689,67764225,67895297,68878337,69533706,69992449,73924609,74448897,75104266,75235329,75366402,75563009,76087309,76611585,77201409,77856778,78512138,79953930,80281610,81002506,81068042,81133569,81264650],"demonstrates":[8585217,10747905,10944513,11075585,13959169,15990785],"dll":[1,393217,524289,655361,327681,786433,917505,983041,1114113,2359297,5505025,5832705,6029313,6225921,6291457,6356993,6422529,6488065,6619137,6684673,6750209,6815745,6881281,7012353,7143425,7208961,7274497,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9371649,9437185,9568257,9633793,9699329,9764865,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11075585,11141121,11272193,11337729,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,26935297,27000833,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28246017,28180481,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35454977,35520513,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36306945,36372481,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38404097,38469633,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40632321,40697857,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,41943041,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43712513,43778049,43843585,44040193,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44761089,44892161,44957697,45023233,45088769,45219841,45285377,45416449,45481985,45613057,45744129,45809665,45875201,46137345,46333953,46465025,46530561,46792705,46858241,46989313,47054849,47120385,47185921,47251457,47316993,47513601,47644673,48037889,48234497,48365569,48889857,48955393,49086465,49217537,49283073,49414145,49741825,49807361,49872897,50135041,50331649,50528257,50593793,50659329,50724865,50790401,50921473,50987009,51118081,51380225,51511297,51970049,52101121,52297729,52428801,52559873,52625409,52953089,53149697,54132737,54198273,54460417,54591489,54919169,54984705,55508993,55771137,56033281,56229889,56360961,56688641,56950785,57016321,57147393,57278465,57344001,57475073,57868289,57999361,58195969,58327041,58392577,58458113,58523649,58785793,58916865,58982401,59179009,59310081,59441153,59506689,59572225,59637761,59703297,59768833,59899905,59965441,60030977,60096513,60162049,60489729,60555265,60620801,60686337,60817409,60882945,60948481,61079553,61145089,61341697,61472769,61669377,61734913,61865985,61931521,62062593,62128129,62259201,62324737,62390273,62521345,62586881,62717953,62849025,62914561,63111169,63176705,63242241,63307777,63373313,63438849,63504385,63569921,63635457,63700993,63766529,63832065,63963137,64028673,64094209,64159745,64225281,64290817,64421889,64487425,64552961,64749569,64815105,64880641,64946177,65011713,65077249,65142785,65208321,65339393,65404929,65536001,65601537,65732609,65667073,65798145,65929217,65994753,66060289,66125825,66191361,66256897,66322433,66387969,66453505,66519041,66584577,66650113,66715649,66846721,66912257,66977793,67043329,67108865,67174401,67239937,67305473,67371009,67436545,67502081,67567617,67698689,67764225,67829761,67895297,67960833,68026369,68091905,68222977,68288513,68354049,68419585,68485121,68550657,68616193,68681729,68747265,68812801,68878337,68943873,69009409,69074945,69140481,69206017,69271553,69337089,69402625,69468161,69599233,69664769,69730305,69795841,69861377,69926913,69992449,70057985,70123521,70189057,70254593,70320129,70385665,70451201,70516737,70647809,70713345,70778881,70844417,70909953,70975489,71041025,71106561,71172097,71237633,71303169,71368705,71434241,71499777,71565313,71630849,71696385,71761921,71827457,71892993,71958529,72024065,72089601,72155137,72220673,72286209,72351745,72417281,72482817,72548353,72613889,72679425,72744961,72810497,72876033,72941569,73007105,73072641,73138177,73203713,73269249,73334785,73400321,73465857,73531393,73596929,73662465,73728001,73793537,73859073,73924609,73990145,74055681,74121217,74186753,74252289,74317825,74383361,74448897,74514433,74579969,74645505,74711041,74842113,74907649,74973185,75038721,75104257,75169793,75235329,75300865,75366401,75431937,75497473,75563009,75628545,75694081,75759617,75825153,75890689,75956225,76021761,76087297,76152833,76218369,76283905,76349441,76414977,76480513,76546049,76611585,76677121,76742657,76808193,76873729,76939265,77004801,77070337,77135873,77201409,77266945,77332481,77398017,77463553,77529089,77594625,77660161,77725697,77791233,77856769,77922305,77987841,78053377,78118913,78184449,78249985,78315521,78381057,78446593,78512129,78577665,78643201,78708737,78774273,78839809,78905345,78970881,79036417,79101953,79167489,79233025,79298561,79364097,79429633,79495169,79560705,79626241,79691777,79757313,79822849,79888385,79953921,80019457,80084993,80150529,80216065,80281601,80347137,80412673,80478209,80543745,80609281,80674817,80740353,80805889,80871425,80936961,81002497,81068033,81133569,81199105,81264641,81330177],"deletes":[3801090,4456450,4784130,4980738,5242882,26673153,27131905,27590657,29687809,35454977,38010881,48693250,55181314,58064898,71303170,73269250,74973186,75694082,78577666],"dict":[8847364,10354690,13959172],"deleted":[26673153,27590657,33882113,34668545,35323905,37158913,38666241,38928385,39911425,41615361,43712513,46792705,49872897,51118081,77660161]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_101.json b/docs/Reference/fti/FTI_101.json index cc1482d3..419aea15 100644 --- a/docs/Reference/fti/FTI_101.json +++ b/docs/Reference/fti/FTI_101.json @@ -1 +1 @@ -{"examples":[9764865,13565953],"exact":[13631489,23789569],"external":[9109505,10092545,10944513,11141121,39911425,43057153,46465025,50200577,53936129,56557570,59244545],"enumerates":[37027842,37814274,38797314,39518210,40239106,41156610,42991617,43515905,47120386,47644674,48824322,56885249,57409537,58916866,59375618,59834370,60162050,60227586,60293122,60424194,60751874,61014018],"exception":[327685,3080194,3735553,4587521,5111815,6291457,6356993,6553601,7208961,7536641,8716289,8978433,9043969,10616833,10878977,12910599,13565953,16384010,17956865,18415617,18677763,19267585,19857409,20381697,20840449,20971521,21692417,22020097,22675466,23658497,24379395,26476545,28770305,32571395,34799619,38010883,39845890,40501249,41025546,41615362,42139649,42729476,43646980,43712513,44236801,44367873,44892162,45154307,45481986,45678593,45744150,46006276,46202887,46727172,47513601,47841281,48103425,48365577,48627714,48693249,49020930,49545220,50135044,51314691,51904513,52035585,56098817,58195969,58327041,58392577,58458122,58654756,58982411,59441155,60096513,60817409,60882945,61145090,61407234,61538306,61603842],"event":[589828,720900,917508,1900546,2097154,2162690,2228226,3932161,6750211,7012355,7733250,13828097,19398657,38010884,39387137,54657025,54722564,55181313,56229891,57212932,57671683,57933828,58851329,59506692,60358660,60817409,61407233,61538305,61603841],"enablevaluetaskpromiseconversion":[61145089],"eventconnection":[1900546,2162691,6750214,7012358,7733249,38010882,56229895,57212940],"export":[39059458,40632322,42074114,42205186,43909122,44957698,45088770,46268418,47054849,47775746,49610754,50790402,51642369,58195970,58327042,58392578,60096514,60817410,60882946,61407234,61538306,61603842],"executionstarted":[39845892,44892166,45744129,46202881,48365569,48627718,58458113,58654721,58982401],"eventsource":[2097154,2228226,6750209,7012353,13828097,19398657,38010882,57671687,57933835],"expensive":[13434881,60620802],"exposeruntimetype":[40042497,44171265,59637761],"efficiency":[61145089],"enabletaskpromiseconversion":[61145091],"eval":[31588353,32964609],"enum":[50593794,53477380,54198274,54722564,56950786,57147394,59113476,59179010,59441154,59572226,59637762,59965442,60358660,60620802,60686338,61145090,61210626,61341698,61669378],"exposehostobjectstaticmembers":[39059457,40632321,42074113,42205185,43581444,43909121,44957697,45088769,46268417,47185926,47775745,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"engin":[4784130,6881282,10878977,13565953,30474242,31260674,33226754,33947650,38600706,39059462,39649282,40632326,40828929,41549825,42074118,42205190,43909126,44105729,44630017,44957702,45088774,46268422,46530561,47054849,47251457,47579137,47775750,48168961,48758785,49348609,49610753,49676289,49938433,50528257,50790401,51183617,51642369,51838977,52297729,52953089,53805057,54329345,55967745,56295425,56623105,56819713,57016322,58195974,58327046,58392582,58720258,59965441,60096518,60817414,60882950,61145089,61407238,61538310,61603846],"engaging":[43646977,45744129,46202881,46727169,47906817,48365569,50135041,54001665,58458113,58654721,58982401],"enablenullresultwrapping":[9175042,39059457,40632321,42074113,42205185,42336260,43909121,44957697,45088769,45875206,46268417,47775745,49610753,50790401,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"exceeds":[50200577,53936129],"enhancements":[61145090],"earlier":[43057153,43450369,46465025,49414145],"expansion":[38993921,51511300,58589185],"exceptions":[3407873,5046273,5111809,12910594,58654721,58785793,59768833,61145089],"enableremotedebugging":[59179009,61145089],"extensionattribute":[7471107,7929859,7995395,8585219,9240579,9895939,16252931,17104899,17825795,18153475,18546691,19005443,19333123,19726339,20054019,20512771,21299203,59047939,61079555],"enumerations":[5046273,7077891,38010881,38535169,39321601,39976961,58785793],"exempt":[43450369,49414145],"exceeded":[59441154],"effect":[9175041,13631489,16187393,23068673,23789569,46333953,47316993,47382529,50987009,51052545,52822017,53411841,53477377,54591489,54722561,54853633,55443457,55574529,56950785,61669377],"events":[65538,131074,196610,262146,327682,13828097,19398657,39321601,54067201,54722561,56426497,57999361,58261505,58654721,58851329,59506689,60358657],"execution":[3735555,4587523,6291459,6356995,6553603,7208965,7536643,8716291,8978435,13631490,14548993,15466497,15532033,15859713,16187394,16908289,17956865,19529729,20971521,22216705,22806529,23068674,23789570,23920641,24641537,26279937,26869761,27197441,28770305,30867457,31588353,32112641,32374785,32964609,33488897,34078721,35061761,37355521,37748737,38010883,38404097,39059457,39845890,40632321,42074114,42205185,43909121,44367873,44892162,44957697,45088769,45678595,45744129,46202881,46268417,47775745,48365569,48627714,50200577,50724865,51904515,52035585,53936129,54460417,56098817,58064898,58195972,58261505,58327044,58392580,58458113,58654722,58982402,59441154,60096516,60817416,60882948,61407236,61538308,61603844],"enabled":[26804225,27656193,28901377,29622273,43778049,50593793,51249153,52887553,54198273,54853637,55312385,57147393,59179011,61145093,61669380],"enforces":[4784129,6291457,6356993,6553601,6881281,7536641,8716289,8978433,30277633,31522817,31916033,32309249,33161217,33685505,34144257,34734081,35454977,36306945,37224449,38207489,40566785,44695553,45613057,57016322,58392577,58720257,60096513,60882945,61407233,61538305,61603841],"enables":[4718593,30605313,38404098,39059466,40042497,40632330,41353217,42074125,42205194,42336257,42532865,42795009,43057153,43450369,43909130,44171265,44957706,45088778,45219841,45416449,45875201,46268426,46333953,46465025,47382529,47710209,47775754,47906817,48234497,48300033,48889857,49414145,50200577,51052545,51511297,52035585,52559873,52822017,53280769,53936129,54001665,54525953,54853634,56098817,58195978,58261506,58327050,58392586,59572225,60030977,60096522,60817421,60882954,60948481,61276161,61407242,61538314,61603850],"enableruntimeinterruptpropagation":[42074113,56098820,60817409],"extendedhostfunctions":[5046274,7077889,7143426,7602177,8060930,8126466,8257537,8323074,8454145,8650754,8781829,8912897,9043969,9306113,9437186,9568257,9699329,9830401,10289153,10354689,10420225,10485761,10616833,10682369,10878977,11075585,11141121,11206657,11337729,11665409,12058625,12189697,12255233,12582913,12910593,13565953,30932993,31457281,38010881,58785800,59768833],"enablefileloading":[59572225],"exceeding":[50200577,51511297,53936129],"encapsulated":[3014657,4521985,55705601,60227585],"expect":[47054849,51642369,56492033],"enumerablet":[8126466,9306113,9830402],"enablejitdebugging":[61669377],"extension":[7471106,7929858,7995394,8585218,9240578,9895938,13828098,16252930,17104898,17825794,18153474,18546690,19005442,19333122,19398658,19726338,20054018,20512770,21299202,38010881,38535169,39059458,40632322,42074115,42205186,43909122,44105730,44957698,45088770,46268418,47579138,47775746,48300034,52822021,53805058,54329346,54525954,55967746,56295426,56623106,58195970,58327042,58392578,59047937,60096514,60817411,60882946,61079553,61407234,61538306,61603842],"errors":[50200577,50724865,53936129,54460417],"execute":[3735556,4587524,6291460,6356996,6553604,7208965,7536644,8716292,8978436,13238273,13762561,14680065,15204359,15466503,15859714,16187399,16908295,18939913,19529730,20250625,21102593,21823489,22216713,23068681,23920649,26476551,27197442,30867458,31588354,32112642,32964610,33488901,33882113,35061765,35586049,37748742,58195972,58327044,58392580,60096516,60817413,60882948,61407237,61538309,61603845],"enforceanonymoustypeaccess":[39059457,40632321,42074113,42205185,43057156,43909121,44957697,45088769,46268417,46465030,47775745,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"effective":[50200577,50593793,51249153,52887553,53936129,59441154,60620802],"enginename":[28180485,28901381,29622277,43712518,45744129,46202881,47513606,47841284,48365569,58458113,58654721,58982401],"exposed":[2424833,7143425,8060929,8126465,8257537,8323073,8650753,8912897,9043969,9306113,9437185,9568257,9699329,9830401,10289153,10354689,10420225,10485761,10616833,10682369,10878977,10944513,11075585,11141121,11206657,11337729,11665409,12058625,12189697,12255233,12582913,12713985,12910593,13041665,13434884,13500417,13565953,13697025,13828100,14286849,14483457,15007745,15138817,15269889,16515073,18284545,18808833,19136513,19398660,19922945,20709377,21037057,21430273,21889025,23199745,24248321,25100289,38010884,39059458,40042497,40632322,42074114,42205186,43581441,43909122,44171265,44433409,44957698,45088770,46268418,47185921,47316993,47775746,50659329,52822018,53280770,53411841,54591489,55312385,57802754,58195970,58327042,58392578,59113473,59506689,59768833,59965445,60096514,60358657,60817410,60882946,61407234,61538306,61603842],"exposes":[65537,131073,196609,262145,327681,393217,458753,524289,655361,786433,851969,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735582,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587550,4653057,4718593,4784129,4849665,4980737,5046273,5111809,5177345,5439489,6291486,6357022,6553630,6881281,7208990,7536670,7798785,8716318,8978462,11927553,12320769,12648449,12713985,12845057,13041665,13107201,13303809,13369345,13500417,13697025,13828097,13959169,14024705,14090241,14155777,14286849,14417921,14483457,14876673,14942209,15007745,15138817,15269889,15597569,15925249,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19136513,19398657,19660801,19922945,19988481,20119553,20643841,20709377,20774913,21037057,21364737,21430273,21495809,21889025,22413313,22478849,22609921,23199745,23265281,23396353,24248321,25100289,31064072,32047112,32440322,33292296,33423368,33619970,34209800,34537473,34603010,34996225,35258376,35389441,35717122,36634625,37027841,37093377,37617665,37814273,38141953,38404097,38797313,38928385,38993921,39059457,39256065,39387137,39518209,39780353,39911425,40239105,40304641,40435713,40632321,40697857,41156609,41222145,41484289,42008577,42074113,42205185,42532865,42598401,43188225,43909121,44957697,45088769,45416449,45744129,45809665,46137345,46202881,46268417,46596097,46858241,46923777,47120385,47644673,47775745,47972353,48365569,48824321,51576833,52428801,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55246849,55312386,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57016321,57212929,57540609,57671681,57802753,57933825,57999361,58130433,58195998,58261505,58327070,58392606,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59244545,59310081,59375617,59506689,59703297,59768833,59834369,59899905,60030977,60096542,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60751873,60817438,60882974,60948481,61014017,61079553,61276161,61407262,61472769,61538334,61603870],"enablestandardsmode":[61669378],"explicitly":[46792705,47054849,51642369,56492033,59572225],"exits":[12910593],"excessive":[50200577,50724865,53936129,54460417],"extract":[10616833],"exemption":[43450369,49414145],"evaluation":[54853633],"executes":[3735560,4587528,6291464,6357000,6553608,7208969,7536648,8716296,8978440,13238273,13762561,14680065,15204353,15466497,15859713,16187393,16908289,18939905,19529729,20250625,21102593,21823489,22216705,23068673,23920641,26476545,27197441,30867457,31588355,32112641,32964611,33488900,33882115,35061764,35586051,37748741,58195976,58327048,58392584,60096520,60817417,60882952,61407240,61538312,61603848],"exposing":[38010882,59637761,59965441],"equivalent":[42795009,48889857,49610753,50790401],"enforced":[50724865,54460417],"equality":[42336257,45875201,55312386,59637761],"enforce":[43057154,46465026,52101121,58392577,58720257,60096513,60882945],"enablemodeless":[4718593,30605316,60948481],"encoding":[27000833,29229057,36634627,39256066,44761103,51445774,59310082,60489731],"experimental":[59179009,61145089],"enabletoplevelawait":[42532865,54853636,57147393,61276161],"enableinterruptpropagation":[38404097,52035588,58261505],"enablestringifyenhancements":[61145089],"extensions":[2293763,2949121,7471106,7929858,7995394,8585218,9240578,9306113,9895938,16252929,17104897,17825793,18153473,18546689,19005441,19333121,19726337,20054017,20512769,21299201,22740994,31784962,32505858,34471937,34734082,35127298,36044802,38010881,38207490,38862849,39124993,39190530,40173569,41222145,41287681,41811969,42270722,45613058,53870593,58195969,58392577,59047943,60096513,60882945,61079553,61407233,61538305,61603841,61669377],"enableautohostvariables":[39059457,40632321,41353220,42074113,42205185,43909121,44957697,45088769,45219846,46268417,47775745,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"element":[2752515,3407877,5046277,7602178,9502722,9699330,9961477,10158085,10289154,10354691,10420226,10485762,10682370,10747910,11075586,11206658,11337730,11665410,12058626,12189698,12582914,16056322,17301506,17891330,24903682,34406402,46858241,57540612,58785797,59768837,60751873],"ending":[37093377,52756481,53673985],"enhanced":[38010881,55705601],"equals":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490370,2555906,2162689,2228225,2883586,3014657,3276801,3342338,3407873,3473409,3538946,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849666,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,42336257,45875201,51576833,53084161,53477378,53673985,53870593,54067201,54722562,55115777,55312386,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113474,59244545,59310081,59506690,59637761,59703297,59768833,59899905,60096513,60227585,60358658,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"enabledynamicmoduleimports":[59179009,61145089],"enabledatetimeconversion":[61145089],"elements":[2752513,3670018,13172737,13238273,13631489,13762561,13893633,14548993,14680065,14745601,15073281,15204353,15466497,15532033,16056324,16187393,16908289,17301508,18939905,19464193,20250625,20447233,21102593,21233665,21823489,22085633,22216705,22806529,23068673,23789569,23920641,24641537,39059457,40632321,42074113,42205185,43450370,43909121,44957697,45088769,46268417,46858241,47775745,49414146,57540610,58195969,58327041,58392577,60096513,60751874,60817409,60882945,61407233,61538305,61603841],"externally":[24444929,24969217,25493505,25559041,25821185,26017793,26083329,26542081,26607617,26935297,27525121,28311553,28704769,28966913,29491201,29556737,29949953,30736385,30998529,31391745,32178177,33095681,34930689,35848193],"engine":[327681,2293763,2949124,3735554,4587524,4784130,4980742,5111809,5242881,6291462,6356998,6553606,6881282,7208965,7536646,7995400,8585224,8716294,8978438,9699329,9895944,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,11927553,12058625,12189697,12320769,12582913,12648449,12713985,12845057,13041665,13107201,13172737,13238273,13303809,13369345,13434887,13500417,13631491,13697025,13762561,13828098,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14680065,14745601,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15466497,15532033,15597569,15859713,15925249,16187394,16252936,16384001,16777217,16842753,16908289,17235969,17367043,17563649,17760257,17825800,17956866,18087937,18350081,18415617,18612225,18677761,18743297,18874370,18939905,19070977,19136513,19267585,19333128,19398658,19464193,19529729,19660801,19791874,19857409,19922945,19988481,20119553,20250625,20316163,20381697,20447233,20512776,20643841,20709377,20774913,20971522,21037057,21102593,21233665,21364737,21430273,21495809,21757953,21823489,21889025,22085633,22151170,22216705,22413313,22478849,22609921,22740994,22806529,23068674,23199745,23265281,23396353,23461889,23789571,23920641,23986177,24051713,24248321,24444929,24576001,24641537,24772609,24969217,25100289,25362433,25493505,25559041,25755650,25821185,25952260,26017794,26083330,26279938,26411009,26476545,26542081,26607617,26673156,26804230,26869761,26935298,27066370,27131905,27197441,27262977,27394049,27525121,27590660,27656198,27721730,27787265,27918337,27983873,28049409,28114948,28180484,28246019,28311553,28377089,28442625,28573698,28704769,28770306,28835844,28901382,28966913,29032450,29097988,29229057,29294593,29360132,29491201,29556738,29622278,29753346,29818883,29884420,29949953,30015492,30081026,30146561,30277633,30343169,30408707,30736386,30867457,30998529,31064065,31129603,31391745,31522818,31588354,31784961,31850499,31916033,31981570,32047105,32112641,32178177,32243714,32309251,32374785,32440321,32505858,32571393,32636930,32702466,32768001,32833539,32964610,33030145,33095682,33161218,33292289,33423361,33488897,33554434,33619969,33685507,33882113,34013185,34078721,34144258,34209793,34275331,34340865,34471939,34603009,34668545,34734084,34930689,35061761,35127300,35192833,35258369,35454979,35520514,35586049,35717121,35848193,36044803,36110338,36306946,36372481,36503555,36569089,36831234,37027842,37224451,37355521,37486594,37748737,37814274,37879809,38010883,38207492,38273026,38338573,38469635,38731777,38797314,38862852,39059461,39124998,39190532,39321603,39452673,39518210,39845889,39976963,40042498,40173574,40239106,40370183,40501249,40566787,40632325,40763394,40828929,40960006,41025537,41156610,41287686,41353218,41615361,41746435,41811974,42074115,42139649,42205189,42336257,42467329,42729473,42795010,43057153,43122690,43450369,43581441,43646977,43712515,43778051,43909124,44105729,44171266,44236801,44367874,44433410,44630017,44695554,44892161,44957700,45023233,45088772,45154306,45219842,45481985,45613059,45678595,45744130,45875201,46006273,46202881,46268420,46333954,46465025,46530561,46727169,47054850,47120386,47185921,47316993,47513602,47579137,47644674,47710210,47775747,47841283,47906818,48168961,48234498,48300033,48365570,48496642,48693249,48758785,48824322,48889858,48955394,49283074,49348609,49414145,49610754,49676289,49741826,49938433,50069506,50200577,50528258,50593794,50659330,50724865,50790402,51052546,51183617,51249153,51314690,51511297,51642370,51773441,51838978,51904515,52297729,52494338,52822018,52953089,53280770,53411841,53805057,54001666,54329345,54525953,54788098,55050247,55377921,55574529,55967745,56098817,56295425,56623105,56819713,57016323,57344001,57540609,58064897,58195977,58261510,58327045,58392591,58458115,58654722,58720258,58916866,58982401,59047939,59375618,59768833,59834370,59965441,60096527,60162050,60227586,60293122,60424194,60751874,60817429,60882954,61014018,61079556,61145095,61407249,61472769,61538321,61603852,61669378],"enable":[26804225,27656193,28901377,29622273,30605319,41353217,42336257,43057153,45219841,45875201,46465025,52035585,54853634,56098817],"endcpuprofile":[4980737,7208961,25165828,38731780,58261505,60817409],"enumerator":[2752513,57540609],"expected":[6029313,6488065,7274497],"existing":[5046273,6094849,6225921,7143425,30932993,58785793],"extends":[38010881,55705601],"error":[983042,12910593,16384002,20381698,22020098,22675458,32571394,34799618,38010881,40501249,41615361,42139649,44236802,45481985,45744131,46202882,48103426,48365572,48693250,49020929,58458116,58654726,58982404,59441153,61145090],"environment":[38010881,39976964,55377921,55705601,61407234,61538306,61603842],"expressions":[13172737,13238273,13631489,13762561,13893633,14548993,14680065,14745601,15073281,15204353,15466497,15532033,16187393,16908289,18939905,19464193,20250625,20447233,21102593,21233665,21823489,22085633,22216705,22806529,23068673,23789569,23920641,24641537,31588353,32964609],"empty":[3407873,5046273,10944515,13631489,17367041,20316161,23789569,25165825,28246017,34865153,38731777,39976961,43778050,58785793,59768833,60686338,61472770],"ecmascript":[41484289,48037889,52428801,54853633],"evaluated":[13172737,13893633,14745601,20447233,21233665,22085633],"endtimestamp":[37093377,52756484,53673985],"evaluates":[3735559,4587527,6291463,6356999,6553607,7208968,7536647,8716295,8978439,13172737,13631489,13893633,14548993,14745601,15073281,15532033,19464193,20447233,21233665,22085633,22806529,23789569,24641537,32374788,33030147,34078724,34668547,37355525,39452673,58195975,58327047,58392583,60096519,60817416,60882951,61407239,61538311,61603847],"extended":[5046273,7077889,7143425,7602177,8060929,8126465,8323073,8454145,8650753,8781825,9437185,30932993,31457281,38010882,53870593,58785794,59506689],"enableallloading":[59572225],"enablewebloading":[59572225],"example":[7143426,8060930,8126465,8257537,8323073,8650753,8912897,9043969,9306113,9437185,9568257,9699329,9830401,10289153,10354689,10420225,10485761,10616834,10682369,10878977,10944513,11075585,11141121,11206657,11337729,11665409,12058625,12189697,12255233,12582913,12910593,13565953,52690945,53149697,53542913,54067201,54263809],"efficient":[13434881,47382529,60620801],"enforcerelativeprefix":[59572225],"evaluate":[3735556,4587524,6291460,6356996,6553604,7208965,7536644,8388609,8716292,8978436,13172738,13631495,13893634,14549000,14745602,15073288,15532040,15859713,19464202,19529729,20447234,21233666,22085634,22806538,23789577,24641546,26476545,27197441,30867457,31588353,32112641,32374789,32964609,33030145,34078725,34668545,37355526,39452680,58195972,58327044,58392580,60096516,60817413,60882948,61407236,61538308,61603844],"eventhandler":[720903,917511],"elementt":[9699330,10289154,10420226,10485762,10682370,11075586,11206658,11337730,11665410,12058626,12189698,12582914],"environments":[58392577,60096513,60882945],"enumerable":[7143426,8060930,8126466,9306113,9830401,18153473,19005441,52822017,53280769],"evaluatedocument":[3735555,4587523,6291459,6356995,6553603,7208963,7536643,8716291,8978435,13172741,13893637,14745605,20447239,21233671,22085639,33030147,34668547,58195971,58327043,58392579,60096515,60817411,60882947,61407235,61538307,61603843],"easy":[55377921],"entered":[41943041],"entry":[12255233],"executing":[15728641,15794177,16580609,17367041,19202049,20316161,28246017,43778049,47710209,48234497,50593793,52559873,61145089],"enablesamplecollection":[54198273],"expression":[13172737,13631489,13893633,14548993,14745601,15073281,15532033,15859713,19464193,19529729,20447233,21233665,22085633,22806529,23789569,24641537,27197441,30867457,31588354,32112641,32964610],"executecommand":[3735553,4587521,6291458,6356994,6553602,7208962,7536642,8716289,8978433,15859716,19529734,27197447,30867463,31588358,32112647,32964614,58195969,58327041,58392578,60096514,60817410,60882945,61407234,61538306,61603841],"end":[25165825,38731777,51576833,52428801,52756481,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55246849,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57016321,57212929,57540609,57671681,57802753,57933825,57999361,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59244545,59310081,59375617,59506689,59703297,59768833,59834369,59899905,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60751873,60817409,60882945,60948481,61014017,61079553,61276161,61407233,61472769,61538305,61603841],"executable":[38993921,39911425,49479682,52690950,58589185,59244545],"eventargs":[58851333],"enabledebugging":[59179010,61145091,61669379],"engines":[13434881,13631489,15859713,16187393,19529729,23068673,23789569,24969217,25493505,26083329,26542081,26607617,26935297,27197441,28311553,28966913,29491201,29949953,30736385,30867457,30998529,31588353,32112641,32178177,32964609,34930689,35848193,38010883,38535169,39976963,40566786,45023233,46530561,50593794,52494338,52953089,55377923,58195969,58720257,59047937,59965441,60882945,60948481,61079553,61603841],"executedocument":[3735555,4587523,6291459,6356995,6553603,7208963,7536643,8716291,8978435,13238277,13762565,14680069,20250631,21102599,21823495,33882115,35586051,58195971,58327043,58392579,60096515,60817411,60882947,61407235,61538307,61603843],"exhaustive":[14352390,22937606,23986182,27918343,42467335],"enhance":[61669377],"eligible":[59572225],"encounter":[57147393],"exists":[25362433,26411009,27066369,27983873,28049409,28377089,28573697,29294593,30343169,31981569,34013185,37879809,47316993,53411841,53477377,54591489,54722561,56950785],"exhausting":[51511297],"executed":[13238273,13762561,14680065,20250625,21102593,21823489,23461889,24051713,24444929,24772609,24969217,25362433,25493505,25559041,25821185,26017793,26083329,26411009,26542081,26607617,26935297,27066369,27131905,27394049,27525121,27721729,27983873,28049409,28311553,28377089,28442625,28573697,28704769,28966913,29032449,29294593,29491201,29556737,29753345,29949953,30146561,30343169,30736385,30998529,31391745,31981569,32178177,32768001,33095681,34013185,34930689,35848193,36569089,37879809,39321601,54853633,59703297],"explicit":[13828098,19398658],"enumeration":[3014657,4521985,38010881,38535169,39321601,39976961,42074114,50593794,52822019,53280771,54198274,55705601,56950786,57147394,59179010,59441154,59572226,59637762,59965442,60227585,60620802,60686338,60817410,61145090,61210626,61341698,61669378],"equal":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849665,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61407233,61472771,61538305,61603841],"expose":[12713985,13041666,13303809,13500418,13697025,13828099,13959169,14286849,14417921,14483457,15007745,15138817,15269889,19136514,19398659,19922945,20119553,20709377,21037057,21430273,21889025,22609921,23199746,23396353,24248321,25100289,41549825,43057153,43581441,44433409,46465025,47185921,47251457,50659329,54067201,59768833],"enabling":[50200577,53936129],"enums":[7077889,13631489,23789569,53477377,55312385,59113473],"excluded":[52822017,53280769],"errordetails":[44236806,45744129,46202881,48103430,48365569,48693252,58458113,58654721,58982401]} \ No newline at end of file +{"enablevaluetaskpromiseconversion":[76939265],"enabledatetimeconversion":[76939265],"external":[9633793,10878977,11468801,12582913,55246849,60817409,66191362,66387969,71041025,72220673,77398017],"executed":[14483457,14548993,16515073,21626881,24641537,26607617,36044801,36175873,36241409,36372481,37552129,37748737,37945345,38076417,38207489,38273025,39387137,39518209,40042497,40108033,40173569,40239105,40435713,40894465,41025537,41287681,41418753,42074113,42401793,42598401,43057153,43122689,43515905,43581441,44040193,44302337,44433409,45023233,45744129,45875201,46858241,47513601,48037889,48365569,49217537,49545217,49741825,49807361,50659329,50987009,51970049,52625409,54460417,54984705,57016321,71172097,76611585],"enforceanonymoustypeaccess":[57737217,58130433,60293121,60817414,61407233,62193665,63045633,64684033,65273857,66387972,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"enhancements":[76939266],"enableautohostvariables":[57737217,58130433,60293121,61407233,62062596,62193665,63045633,64684033,65273857,67567622,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"empty":[3538945,4521985,12582915,15663105,18219009,23658497,26542081,35979265,42729473,46923777,48955394,52232193,52428801,60162049,64552961,75956225,77987841,79757314,81330178],"example":[7995394,8585217,8847361,8912897,8978433,9109506,9175041,9961473,10158081,10223617,10354689,10747906,10551297,10878977,10944513,11075585,11730945,11862017,11927553,12124161,12386305,12517377,12582913,12845057,12910593,13631489,13893633,13959169,14221313,15204353,15990785,19005441,64094209,66584577,67829761,69402625,74121217],"extensions":[2490371,3670017,8060930,8192002,8323074,8781826,10092546,10420226,11075585,17039361,17170433,17956865,18415617,18808833,19398657,19922945,20054017,21233665,22740994,25231361,26935297,42270722,45219842,45547521,50397186,50593794,51576833,52166658,52363265,52756481,52953090,53149698,54132738,54263809,55443457,59047937,60424193,63504386,75104257,76677127,77856769,78774273,79888385,79953921,80281601,80412673,81002497,81068033,81264641],"exhausting":[70975489],"evaluated":[14155777,19857409,21037057,21364737,25427969,26738689],"evaluates":[3735559,5373959,8716295,9306119,9502727,9830407,11010056,11206663,11403271,14155777,15728641,18022401,18219009,19464193,19857409,21037057,21364737,22872065,24313857,25427969,26542081,26738689,28639233,45088769,47841283,52822021,53018628,55115779,57409540,75104263,76087304,77856775,78512135,79953927,80281607,81002503,81068039,81264647],"engine":[1507329,2490371,3014657,3670020,3735554,5373956,5898242,6356993,6553602,7077894,8716294,8781832,9306118,9502726,9830406,10092552,10420232,10551297,11010053,11206662,11403270,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13172737,13238273,13303815,13434881,13500417,13631489,13697025,13828097,13893633,14024705,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14745601,14811137,14942209,15073281,15204353,15269890,15335425,15400961,15466497,15532033,15597569,15663107,15728641,15794177,15859713,15925249,16056321,16187393,16384001,16515073,16580609,16711682,17039368,17104898,17170440,17235969,17301505,17563649,17760257,17825793,17891329,17956872,18022401,18087937,18219011,18284545,18546689,19202049,19267585,19464193,19726337,19857409,19988481,20119553,20250625,20316161,20381697,20512769,20578305,20709377,20774913,21037057,21102593,21299201,21364737,21430274,21495809,21561345,21626881,21692417,21757954,22085634,22216705,22478849,22544385,22609921,22740994,22872065,22937601,23003137,23134209,23199746,23527425,23592961,23658499,23855105,24117249,24182785,24313857,24379393,24444929,24641537,24903681,25100289,25231368,25296897,25427969,25886722,26017793,26476545,26542083,26607617,26738689,26804226,27066369,27983873,28049409,28639233,29360129,35520514,36044801,36175873,36241409,36372481,36700162,37093380,37552129,37748738,37879810,37945345,38076417,38207490,38273025,38404097,38535172,39124993,39256070,39387137,39452673,39518209,39714818,40042497,40108033,40173569,40239106,40304644,40435714,40501249,40763395,40828934,40894465,41025537,41156610,41287681,41353218,41418753,41680899,41877507,41943043,42074114,42205188,42270724,42401793,42467330,42532868,42598402,42729473,42926083,42991619,43122689,43057153,43319297,43515905,43581441,43778054,43843586,43909121,44040193,44171265,44236802,44302337,44433410,44498948,44564482,44695553,44761092,45023234,45088769,45219844,45350913,45481990,45613057,45547523,45744129,45809667,45875201,46006273,46333954,46530562,46858241,46989314,47054852,47120385,47185922,47251458,47513602,47644673,47710209,47841281,48037889,48168961,48234499,48365569,48431105,48496641,48889859,48955395,49086468,49152001,49217537,49283073,49414147,49545219,49741825,49807362,50003969,50135042,50331650,50397185,50528258,50593796,50659329,50724865,50790402,50855937,50921476,50987009,51183617,51314689,51380225,51576838,51642369,51707905,51773441,51904514,51970049,52035585,52101123,52166658,52232195,52297731,52363267,52428803,52559874,52625410,52822017,52953091,53018625,53149699,53608450,53673987,53870593,54132740,54198273,54263812,54460417,54525954,54722561,54919171,54984706,55115777,55377921,55443462,55836685,56033282,56164354,56229890,56360961,56623106,56688642,56885250,56950785,57016321,57147393,57278466,57409537,57737221,57868290,57999362,58130436,58327041,58458113,58523650,58720263,58785798,58916866,58982403,59047942,59244546,59637762,59703297,59899905,60162050,60293123,60358658,60424198,60555265,60620801,60751874,60817409,60882945,61407235,61669378,62062594,62128130,62193669,62259201,62324737,62390273,62455810,62717954,62783490,62849025,62980097,63045636,63176705,63569921,63897602,63963138,64159746,64290818,64356354,64421889,64552962,64684037,64815106,65273860,65404929,65601539,65667073,65994753,66125831,66387969,66453506,66519041,66650114,67043329,67108865,67239939,67305474,67502081,67567618,67633154,67764226,68091905,68222979,68288514,68419586,68485121,68812801,68878337,69009409,69140482,69206017,69533700,69664769,69795842,70254593,70647809,70713345,70975489,71041025,71106561,71237634,71630850,71827457,72089601,72286209,72351746,72548353,72679425,72810497,73138178,73662465,74055681,74252289,74383361,74448897,74579970,74645506,74776578,74907649,75104273,75235330,75366406,75497474,75563010,76087317,76283906,76414977,76677123,76939272,77135874,77463553,77856777,77922305,77987841,78118914,78184450,78381057,78446593,78512133,78774276,78905347,78970882,79101955,79495170,79953932,80084994,80281615,80412674,80805890,81002511,81068042,81199106,81264657,81330177],"exceeding":[70975489,71041025,72220673],"executecommand":[3735553,5373953,8716289,9306114,9502721,9830402,11010050,11206658,11403266,16580612,23003142,43843590,44564486,45613063,49283079,51380231,75104258,76087298,77856769,78512129,79953921,80281602,81002498,81068033,81264642],"expansion":[61014017,70975492,76152833],"extends":[45547521,80543745],"enableallloading":[76873729],"enablestandardsmode":[80412674],"enumerablet":[8585218,8978434,11075585],"extendedhostfunctions":[4521986,7733249,7929857,7995394,8454145,8585217,8847362,8912897,8978434,9109506,9175042,9371653,9961473,10158081,10223617,10354690,10747905,10551297,10878977,10944513,11075585,11730945,11862017,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,13959169,14221313,15204353,15990785,19005441,45547521,46596097,48562177,75956232,77987841],"expressions":[14155777,14483457,14548993,14942209,15269889,15728641,16187393,16384001,16515073,18022401,18219009,19464193,19857409,21037057,21364737,21561345,21626881,22872065,23855105,24313857,24641537,25427969,26542081,26607617,26738689,26804225,28639233,29360129,43843585,44564481],"expose":[14024705,14286849,14352385,14417921,15335425,15466497,15794177,15925250,16711683,17760258,17891329,20250625,20381697,20512769,21102593,21692418,22544386,22609921,23199747,24117249,24379393,24903681,26017793,26476545,27066369,27983873,56033281,60817409,61734913,61931521,62324737,62717953,66387969,67043329,74121217,77987841],"elementt":[10551298,11730946,11927554,12124162,12386306,12517378,12845058,12910594,13631490,13893634,14221314,15204354],"enums":[7929857,18219009,26542081,73990145,75038721,75759617],"enablearrayconversion":[76939265],"explicitly":[57868289,65536001,69140481,76873729,78708737],"enumerations":[4521985,7929859,45547521,48103425,49545217,51707905,52232193,75956225],"enabling":[71041025,72220673],"element":[3211267,3538949,4521989,7733250,10027013,10158083,10485766,10551298,11337730,11730946,11927554,12124162,12386306,12517378,12845058,12910594,13041669,13631490,13893634,14221314,15204354,16777218,16908290,18743298,20447234,22282242,25821186,45154306,58589185,75956229,76414980,76939265,77987845,78184449],"exact":[18219009,26542081],"event":[655364,983044,1114116,1703938,2293762,2555906,2686978,4849665,7471106,7798787,9764867,16711681,23199745,45547524,61800449,68943875,70516737,70909956,71696385,72613891,73531396,74842116,75104257,76087297,76546049,79167492,79953921,80216068,81264641],"eventargs":[76546053],"enableinterruptpropagation":[59834369,73924612,75366401],"enablemodeless":[9240577,41746436,81133569],"execute":[3735556,5373956,8716292,9306116,9502724,9830404,11010053,11206660,11403268,14483457,14548993,14942215,15269895,16187399,16384007,16515073,16580610,21561353,21626881,23003138,23855113,24641537,26607617,26804233,29360137,43843586,43909125,44564482,44695553,45613058,47120391,48496645,49283074,51314689,51380226,53870598,75104261,76087301,77856772,78512132,79953925,80281604,81002500,81068036,81264645],"executedocument":[3735555,5373955,8716291,9306115,9502723,9830403,11010051,11206659,11403267,14483461,14548997,16515077,21626887,24641543,26607623,44695555,51314691,75104259,76087299,77856771,78512131,79953923,80281603,81002499,81068035,81264643],"ending":[53805057,71434241,80019457],"exceeds":[71041025,72220673],"exits":[15990785],"equivalent":[61669377,62128129,67764225,71237633,76939266],"enumerates":[4456450,4784130,4980738,28180481,32243713,53608450,54525954,55574530,56885250,59244546,60030977,60489729,60751874,61210626,62521345,62783490,63111169,63897602,64356354,65339393,66322433,67371009,67633154,71303170,73138178,73269250,73728001,74645506,74973186,75497474,75694082,76283906,77135874,78184450,78577666,79495170,80084994,81199106],"externally":[36044801,36175873,37552129,37748737,38076417,38207489,40042497,40108033,40435713,42401793,43122689,44040193,45744129,45875201,46858241,47513601,48037889,48365569,49217537,49807361,50987009,51970049,54460417,54984705],"efficient":[13303809,67895297,79560705],"enablefileloading":[76873729],"eventhandler":[655367,983047],"effect":[10616833,15269889,18219009,26542081,26804225,56688641,62259201,65077249,66650113,67895297,71565313,72286209,73990145,74055681,74842113,75235329,76021761,76611585,77070337,80412673],"enabledynamicmoduleimports":[76939265,77004801],"enforcerelativeprefix":[76873729],"entry":[13959169],"earlier":[56360961,60817409,62849025,66387969],"encounter":[72744961],"executes":[3735560,5373960,8716296,9306120,9502728,9830408,11010057,11206664,11403272,14483457,14548993,14942209,15269889,16187393,16384001,16515073,16580609,21561345,21626881,23003137,23855105,24641537,26607617,26804225,29360129,43843587,43909124,44564483,44695555,45613057,47120385,48496644,49283073,51314691,51380225,53870597,75104264,76087305,77856776,78512136,79953928,80281608,81002504,81068040,81264648],"equal":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330179],"endtimestamp":[53805057,71434244,80019457],"enabletoplevelawait":[61276161,72744961,76611588,77201409],"experimental":[76939265,77004801],"exempt":[56360961,62849025],"enabletaskpromiseconversion":[76939267],"ecmascript":[65470465,70123521,71958529,76611585],"enumerator":[3211265,4063234,4259842,4456450,4784130,4980738,5767173,23068673,24772612,24838147,25493508,26148865,28377091,33423364,35913731,36503556,37617667,37814276,47775747,49610756,51707906,70320131,73269250,74973186,75431941,75694082,76414977,80936963],"engaging":[58916865,60358657,60555265,60948481,62455809,62980097,64290817,70647809,72548353,78905345,78970881],"evaluatedocument":[3735555,5373955,8716291,9306115,9502723,9830403,11010051,11206659,11403267,14155781,19857413,21037063,21364741,25427975,26738695,47841283,55115779,75104259,76087299,77856771,78512131,79953923,80281603,81002499,81068035,81264643],"encapsulated":[3342337,5963777,80084993,80543745],"execution":[3735555,5373955,8716291,9306115,9502723,9830403,11010053,11206659,11403267,15269890,15728641,16187393,16384001,16580609,17104897,18219010,19464193,22872065,23003137,23855105,25886721,26542082,26804226,28639233,29360129,36700161,37879809,38404097,43843585,43909121,44564481,45547523,45613057,48496641,49283073,50135041,51380225,52822017,53018625,53870593,57409537,57737217,58130433,58327042,58982403,59834369,60293122,60358657,61407233,62193665,62455809,62980097,63045633,64684033,65273857,65601539,69533697,71041025,71106562,71827457,72220673,72548354,72679426,73400321,73793538,73924609,74448897,75104260,75366401,76087304,77791234,77856772,78512132,78905345,78970882,79953924,80281604,81002500,81068036,81264644],"enforced":[71827457,73400321],"enumeration":[3342337,5963777,45547521,48103425,49545217,51707905,52232193,60293122,69861378,72744962,75235331,75563011,76021762,76087298,76873730,76939266,77004802,77660162,77791234,78118914,78446594,79233026,79429634,79560706,79757314,80084993,80150530,80412674,80543745],"explicit":[16711682,23199746],"enforce":[60817410,66387970,72155137,80281601,80805889,81002497,81068033],"excessive":[71041025,71827457,72220673,73400321,76939265],"enginename":[42205189,43778053,45481989,60358657,62455809,62980097,67239942,68222980,72351750,72548353,78905345,78970881],"exceptions":[3014657,3407873,3538945,4521985,15990786,72548353,75956225,76939265,77987841,78970881],"expression":[14155777,15728641,16580609,18022401,18219009,19464193,19857409,21037057,21364737,22872065,23003137,24313857,25427969,26542081,26738689,28639233,43843586,44564482,45613057,49283073,51380225],"extension":[8060930,8192002,8323074,8781826,10092546,10420226,16711682,17039362,17170434,17956866,18415618,18808834,19398658,19922946,20054018,21233666,23199746,25231362,26935298,45547521,48103425,57737218,58130434,60293123,60620802,61407234,62193666,63045634,63569922,64684034,65273858,65667074,68091906,68485122,69533698,73662466,74252290,75104258,75235333,76087299,76677121,77463554,77856770,77922306,78512130,78774273,79953922,80281602,81002498,81068034,81264642],"exposed":[2424833,7995393,8585217,8847361,8912897,8978433,9109505,9175041,9961473,10158081,10223617,10354689,10747905,10551297,10878977,10944513,11075585,11730945,11862017,11927553,12124161,12386305,12517377,12582913,12845057,12910593,13303812,13631489,13893633,13959169,14221313,14286849,14352385,14417921,15204353,15335425,15466497,15794177,15925249,15990785,16711684,17760257,19005441,20381697,20512769,20840449,21692417,21889025,22347777,22544385,23199748,24117249,24903681,26017793,26476545,27066369,27983873,45547524,56033281,57737218,58130434,58523649,60293122,61407234,62193666,62259201,62324737,62717953,63045634,64159745,64684034,65077249,65273858,67043329,69533698,72286209,75038721,75104258,75235330,75563010,75759617,76087298,76808194,77856770,77987841,78446597,78512130,79167489,79953922,80216065,80281602,81002498,81068034,81264642],"exposes":[131073,589825,262145,720897,851969,1048577,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735582,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373982,5439489,5570561,5636097,5701633,5767169,5963777,5898241,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716318,9240577,9306142,9502750,9830430,9895937,11010078,11206686,11403294,12320769,13172737,13238273,13434881,13500417,13697025,13828097,14024705,14286849,14352385,14417921,14745601,14811137,15073281,15335425,15400961,15466497,15597569,15794177,15859713,15925249,16711681,17235969,17301505,17760257,17825793,17891329,18087937,18284545,18546689,19202049,19988481,20119553,20250625,20316161,20381697,20512769,20578305,20774913,21102593,21495809,21692417,22216705,22478849,22544385,22609921,22937601,23199745,23527425,23592961,24117249,24182785,24379393,24903681,25100289,26017793,26476545,27066369,27983873,45350920,47710216,48168968,49152002,50855944,51183624,51773442,52035586,52690945,52756481,53084161,53280769,53542913,53608449,53805057,53936129,54001665,54394881,54525953,54657025,54722568,55246849,55377922,55574529,55640065,55705601,55902209,56426497,56492033,56557569,56819713,56885249,57540609,57606145,57671681,57737217,58130433,58261505,58589185,59113473,59244545,59375617,59834369,60227585,60293121,60358657,60751873,61014017,61210625,61276161,61407233,61538305,61800449,61997057,62193665,62455809,62783489,62980097,63045633,63897601,64356353,64684033,65273857,65470465,65863681,66781185,67633153,68157441,68943873,69533697,69992449,70320129,70582273,70909953,71172097,71303169,71368705,71761921,71958529,72024065,72417281,72548353,72613889,73138177,73269249,73531393,73990145,74121217,74317825,74514433,74645505,74711041,74842113,74973185,75038722,75104286,75169793,75300865,75366401,75431937,75497473,75628545,75694081,75759617,75956225,76087326,76152833,76283905,76349441,76414977,76480513,76546049,76677121,76742657,76808193,77135873,77201409,77266945,77332481,77398017,77529089,77594625,77856798,77987841,78184449,78249985,78512158,78577665,78708737,78774273,78839809,78905345,78970881,79101953,79167489,79364097,79495169,79626241,79691777,79888385,79953950,80019457,80084993,80216065,80281630,80347137,80478209,80543745,80674817,80740353,80805889,80871425,80936961,81002526,81068062,81133569,81199105,81264670,81330177],"evaluation":[76611585],"exists":[3801090,5242882,26411010,26673153,27459586,27590657,33226754,36241409,36372481,36634626,37945345,38273025,39387137,39518209,40239105,43515905,43581441,44433409,49741825,52625409,53411842,58851330,62259201,65077249,71303170,72286209,73990145,74842113,76021761,77660161,78577666],"efficiency":[76939265],"endcpuprofile":[7077889,11010049,35979268,42729476,75366401,76087297],"eval":[43843585,44564481],"enable":[39256065,40828929,41746439,43778049,45481985,60817409,62062593,64421889,66387969,67567617,68878337,73924609,74448897,76611586],"executing":[14876673,15663105,16318465,16973825,18874369,19070977,19136513,20905985,22020097,23658497,48955393,52428801,56229889,66453505,67698689,76939265,78118913],"enablejitdebugging":[80412673],"eventsource":[1703938,2686978,7798785,9764865,16711681,23199745,45547522,72613895,73531403],"effective":[33882113,39911425,43712513,49872897,68354049,71041025,72220673,72810497,77791234,78118913,79560706],"entered":[61603841],"exposeruntimetype":[58523649,64159745,79429633],"expensive":[13303809,79560706],"expect":[57868289,69140481,78708737],"enableruntimeinterruptpropagation":[60293121,74448900,76087297],"exist":[26673153,27590657],"enumerable":[7995394,8585217,8978434,9109506,11075585,18808833,19922945,33882113,34668545,35323905,37158913,38666241,38928385,39911425,41615361,43712513,46792705,49872897,51118081,52690945,69074945,75235329,75431937,75563009,77660162],"exposing":[45547522,78446593,79429633],"enablewebloading":[76873729],"environments":[80281601,81002497,81068033],"events":[589826,720898,1245186,1310722,1376258,1507330,16711681,23199745,49545217,71368705,72548353,74121217,74842113,75366401,75628545,76546049,78970881,79167489,80216065],"expected":[7405569,9043969,10682369],"errordetails":[56950788,60358657,62455809,62980097,69664774,72548353,73334790,78905345,78970881],"engines":[13303809,15269889,16580609,18219009,23003137,26542081,26804225,36175873,37552129,38207489,40042497,40108033,40435713,43122689,43843585,44040193,44564481,45547523,45613057,45875201,48037889,48103425,48365569,49217537,49283073,49807361,50987009,51380225,52232195,53673986,54198273,54460417,60882945,68419586,70254593,74776579,76677121,77856769,78118914,78446593,78774273,79953921,80805889,81068033,81133569],"enhance":[80412673],"extract":[10747905],"enablesamplecollection":[80150529],"extended":[4521985,7733249,7929857,7995393,8454145,8847361,8978433,9109505,9175041,9371649,10354689,45547522,46596097,48562177,75956226,79167489,79888385],"equals":[851969,1638401,1703937,1769474,1835009,1900545,1966081,2031618,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949122,3014657,3080193,3145730,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653058,4587521,4718593,4849665,4915201,5046274,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,64421889,68878337,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990146,74121217,74514433,74711041,74842114,75038722,75104257,75169793,75366401,75431937,75628545,75759618,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708737,78839809,78970881,79167490,79364097,79429633,79626241,79691777,79888385,79953921,80019457,80084993,80216066,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"easy":[74776577],"eligible":[76873729],"end":[24838145,28377089,35979265,42729473,68943873,69992449,70320129,70909953,71172097,71303169,71368705,71434241,71761921,71958529,72024065,72417281,72548353,72613889,73138177,73269249,73531393,73990145,74121217,74317825,74514433,74645505,74711041,74842113,74973185,75038721,75104257,75169793,75300865,75366401,75431937,75497473,75628545,75694081,75759617,75956225,76087297,76152833,76283905,76349441,76414977,76480513,76546049,76677121,76742657,76808193,77135873,77201409,77266945,77332481,77398017,77529089,77594625,77856769,77987841,78184449,78249985,78512129,78577665,78708737,78774273,78839809,78905345,78970881,79101953,79167489,79364097,79495169,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,80936961,81002497,81068033,81133569,81199105,81264641,81330177],"existing":[4456450,4521985,4784130,4980738,6291457,7208961,7995393,28180482,32243714,46596097,55574530,60030977,61210626,66322433,67371009,71303170,73269250,73728001,74973186,75694082,75956225,78577666],"engin":[5898242,6553602,11862017,19005441,40632322,42139650,42860546,44630018,48758786,53477378,57147393,57737223,57868289,58130439,59899905,60162049,60293127,60882945,61407239,61734913,61931521,62128129,62193671,62390273,63045639,63569921,64552961,64684039,64815105,65273863,65994753,66519041,67305473,67502081,68091905,68485121,69140481,69206017,69533703,70254593,70713345,71237633,73662465,74252289,74907649,75104263,76087303,76939265,77463553,77856775,77922305,78381057,78446593,78512135,79101954,79953927,80281607,80805890,81002503,81068039,81264647],"executable":[55246849,61014017,64094214,68747266,76152833,77398017],"environment":[45547521,52232196,74776577,75104258,79953922,80543745,81264642],"executionstarted":[58327044,60358657,62455809,62980097,71106566,72548353,73793542,78905345,78970881],"enumerateindexedproperties":[52690945,69074948,75431937],"enforces":[5898241,6553601,8716289,9306113,9502721,9830401,11206657,11403265,39714817,41943041,42270721,43319297,45219841,47251457,47644673,48889857,50331649,50790401,52297729,52559873,53149697,53673985,54919169,75104257,79101954,79953921,80281601,80805889,81002497,81068033,81264641],"enum":[69861378,72744962,73990148,74842116,75759620,76021762,76873730,76939266,77004802,77660162,77791234,78118914,78446594,79233026,79429634,79560706,79757314,80150530,80216068,80412674],"enumerate":[69074945],"enumerato":[37617665,37814273],"equality":[64421889,68878337,75038722,79429633],"enablenullresultwrapping":[10616834,57737217,58130433,60293121,61407233,62128129,62193665,63045633,64421892,64684033,65273857,68878342,69533697,71237633,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"enabledebugging":[76939267,77004802,80412675],"export":[57737218,57868289,58130434,60293122,61407234,62128130,62193666,63045634,64684034,65273858,69140481,69533698,71237634,75104258,76087298,77856770,78512130,79953922,80281602,81002498,81068034,81264642],"exception":[1245189,1507333,3014663,3407879,3735553,5373953,8716289,9306113,9502721,9830401,10223617,10747905,11010049,11206657,11403265,11862017,15990791,17104897,17563649,19005441,19267585,19726337,20709386,21299203,21823489,23134209,23724033,24707073,25624577,25755649,25886721,26083331,26279937,26869761,27262986,27656193,27787265,27852801,28442625,28573697,29032449,29097985,29229057,29294593,29425665,29622273,29818881,29884417,30015489,30146561,30277633,30670849,30736385,30801921,30932993,30998529,31064065,31719425,31981569,32047105,32112641,32178177,32309249,32374785,32440321,32768001,32833537,34209793,34078721,34275329,35651585,37879809,39780353,45547523,46006275,47120385,50135041,54788099,56950785,57278467,58327042,58458116,58982401,59179010,59703297,59965444,60358678,60555268,60948484,62455817,62980118,63176714,63963139,65404930,65601537,67108865,67239937,68222977,68812804,69664769,70647812,71106562,72089602,72351745,72548388,73334785,73793538,73924609,74448897,75104258,76087297,76939266,77791235,77856769,78512129,78905354,78970916,79953922,80281601,81002497,81068033,81264642],"extensionattribute":[8060931,8192003,8323075,8781827,10092547,10420227,17039363,17170435,17956867,18415619,18808835,19398659,19922947,20054019,21233667,25231363,26935299,76677123,78774275],"exemption":[56360961,62849025],"exceeded":[77791234],"enableremotedebugging":[76939265,77004801],"error":[458754,15990785,19267586,20709378,25755650,27262978,45547521,46006274,54788098,56950786,59179009,59703297,60358659,62455812,62980099,65404929,67108865,69664770,72089601,72548357,73334786,76939266,77791233,78905348,78970886],"enhanced":[45547521,80543745],"elements":[3211265,4390916,14155777,14483457,14548993,14942209,15269889,15728641,16187393,16384001,16515073,16777220,16908292,18022401,18219009,18743300,19464193,19857409,21037057,21364737,21561345,21626881,22282244,22872065,23855105,24313857,24641537,25427969,26542081,26607617,26738689,26804225,28639233,29360129,50266114,51249154,56360962,57737217,58130433,58589185,60293121,61407233,62193665,62849026,63045633,64684033,65273857,69533697,75104257,76087297,76414978,77856769,78184452,78512129,79953921,80281601,81002497,81068033,81264641],"enablestringifyenhancements":[76939265],"encoding":[39059457,39452673,54001667,58261506,60096527,70057998,76480514,80674819],"examples":[9568257,19005441],"extensively":[75431937],"errors":[71041025,71827457,72220673,73400321],"evaluate":[3735556,5373956,8388609,8716292,9306116,9502724,9830404,11010053,11206660,11403268,14155778,15728648,16580609,18022408,18219015,19464200,19857410,21037058,21364738,22872074,23003137,24313866,25427970,26542089,26738690,28639242,43843585,44564481,45088776,45613057,47120385,47841281,49283073,51380225,52822022,53018629,55115777,57409541,75104260,76087301,77856772,78512132,79953924,80281604,81002500,81068036,81264644],"exhaustive":[15532038,24444934,39190534,40501255,44171271],"exposehostobjectstaticmembers":[57737217,58130433,60293121,61407233,62193665,62324742,63045633,64684033,65273857,67043332,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"enabled":[39256065,40828929,43778049,45481985,48955393,68354049,72744961,72810497,75038721,76611589,76939269,77004803,78118913,80150529,80412676],"enables":[9240577,41746433,54657025,56229889,56360961,56688641,57737226,58130442,58523649,58916865,59834370,60293133,60620801,60817409,61276161,61407242,61669377,62062593,62193674,62849025,63045642,64159745,64290817,64421889,64684042,65273866,65667073,66387969,66453505,66650113,67567617,67698689,67764225,67895297,68878337,69533706,69992449,70975489,71041025,72220673,73924609,74448897,75104266,75235329,75366402,75563009,76087309,76611586,76873729,77201409,77856778,78512138,79953930,80281610,81002506,81068042,81133569,81264650],"excluded":[75235329,75563009],"eventconnection":[2293762,2555907,7471105,7798790,9764870,45547522,68943879,70909964]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_102.json b/docs/Reference/fti/FTI_102.json index e76feba9..596f702c 100644 --- a/docs/Reference/fti/FTI_102.json +++ b/docs/Reference/fti/FTI_102.json @@ -1 +1 @@ -{"final":[12910593],"feature":[47382532,54853637,59179009,61145089],"filter":[11272198,11468806,12451846,12779526],"format":[8126465,8323073,8650753,11927553,12320769,12845057,14024705,14942209,15597569,15925249,16842753,17367041,18350081,18612225,19070977,19660801,19988481,20316161,20643841,22478849,23134209,23265281,27000833,28246017,29229057,34734081,35127297,36044801,38207489,39190529,43778049,45613057,47710210,48234498,52559874],"floating":[9043969,39059457,40632321,42074113,42205185,42795010,43909121,44957697,45088769,46268417,47775745,48889858,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"friendly":[59441153],"finalize":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587522,4653057,4849665,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,18874370,19791880,38273026,43122690,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195970,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"finallyfunc":[12910600],"funcname":[14221317,21757958],"function":[1572865,1638401,1769473,1900546,1835009,1966081,2031617,2097154,2359297,2621441,2686977,2818049,2162690,2228226,3014657,3145729,3211265,3276801,3407877,3473409,3604481,3670017,3735553,3866625,3932161,3997697,4063233,4128769,4259841,4325377,4390913,4456449,4521986,4587522,4653057,4980737,5046276,5111809,5177345,5242881,5439489,5505025,6094849,6029313,6225921,6291458,6356994,6422529,6488065,6553602,6750211,6881281,6946817,7012355,7077889,7143425,7208962,7274497,7471105,7536642,7602177,7733249,7798785,7929857,8060929,7995393,8126466,8257540,8323073,8388614,8454145,8519682,8585217,8650753,8716290,8912900,8978434,9043970,9109506,9175042,9240577,9306120,9371650,9437185,9502721,9568264,9633794,9699330,9764866,9830408,9895937,9961474,10027010,10092546,10158082,10223618,10289154,10354689,10420226,10485762,10551298,10616834,10682370,10747906,10878979,10944514,11075586,11141122,11206658,11337730,11534338,11599873,11665410,11730946,12058626,12189698,12255233,12582914,12910601,13172737,13565955,13631489,13893633,14221316,14548993,14614529,14745601,14811137,15073281,15335425,15400961,15532033,15663105,15794177,15859713,15990787,16056321,16252929,16449537,16580609,16646145,16711681,17039361,17104897,17301505,17367041,17432577,17498113,17694721,17825793,18022401,18153473,18219009,18284545,18481153,18546689,18677761,19005441,19333121,19464193,19529729,19595265,19726337,20054017,20316161,20447233,20512769,21233665,21299201,21626881,21757956,22085633,22282241,22544385,22806529,23003139,23134209,23461889,23527425,23592961,23789569,24051713,24117249,24379393,24444929,24641537,24772609,24838145,24969217,25165825,25296897,25362433,25493505,25559041,25624577,25755649,25821185,25952257,26017793,26083329,26345473,26411009,26542081,26607617,26804225,26935297,27066369,27131905,27197441,27394049,27525121,27656193,27721729,27787265,27983873,28049409,28180481,28246017,28311553,28377089,28442625,28573697,28704769,28901377,28966913,29032449,29294593,29491201,29556737,29622273,29753345,29949953,30081025,30146561,30343169,30736385,30801921,30867457,30998529,31195137,31260673,31326209,31391745,31588353,31653889,31981569,32112641,32178177,32636929,32768001,32899074,32964609,33095681,33947649,34013185,34930689,35520513,35848193,36569089,37617670,37879809,38010882,38731777,39452673,41746433,43778049,50003969,53084161,53608449,53673985,53870593,54067201,54853633,54919169,55115783,55508994,55705601,55836673,56033281,56229891,56426497,56492033,56754177,57081857,57212931,57278465,57671682,57737217,57868289,57933826,57999361,58064897,58130433,58195970,58261505,58327041,58392578,58523649,58589185,58654721,58720257,58785796,58851329,58916865,59244545,59310081,59375617,59703297,59768837,59834369,59899905,60096514,60162049,60227586,60293121,60424193,60489729,60555265,60751873,60817410,60882946,61014017,61210627,61341698,61407234,61472769,61538306,61603842],"fields":[393218,458754,524290,655362,786434,851970,54722561,55836673,55902209,56492033,56950785,58720257,59506689,60358657,60555265,61472769],"formatting":[38404097,39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47710210,47775745,48234498,52559874,58195969,58261505,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"functional":[13828097,19398657],"free":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4653057,4849665,4980737,5046273,5111809,5439489,6881281,7798785,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58261505,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60227585,60358657,60489729,60555265,61472769],"fatal":[41615362,45481986,45744129,46202881,48365569,49020930,58458113,58654721,58982401],"fail":[42336257,45875201,51511297,59637761],"functionality":[5242881,47382529,61669377],"functions":[3407873,5046273,7077889,7143425,7602177,8060929,8126465,8257537,8323073,8388609,8454145,8519681,8650753,8781825,8912897,9043969,9109505,9175041,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10878977,10944513,11075585,11141121,11206657,11337729,11403265,11534337,11665409,11730945,12058625,12189697,12255233,12582913,12910593,13565953,30932993,31457281,32899073,33357825,33751041,34406401,34865153,35323905,35782657,36175873,38010882,39059457,40632321,41353218,42074113,42205185,43909121,44957697,45088769,45219842,46268417,47775745,49676289,49938433,51183617,52297729,58195969,58327041,58392577,58785794,59768834,60096513,60817409,60882945,61407233,61538305,61603841],"functionname":[37617665,55115777,55508996],"fails":[3407873,5046273,8257537,9043969,46333953,51052545,58785793,59768833],"finished":[30539777],"follow":[1],"file":[10616833,22740994,34471937,34734082,35127298,36044802,38207490,39059457,39124993,39190530,40173569,40632321,41222145,41287681,41811969,42074113,42205185,42270722,43909121,44105730,44957697,45088769,45613058,45744129,46268417,47579138,47775745,53805058,53870593,54329346,55967746,56295426,56623106,58195970,58327041,58392578,58654721,59572225,60096514,60817409,60882946,61407234,61538306,61603842],"following":[65537,131073,196609,262145,327681,393217,458753,524289,655361,786433,851969,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5111809,5177345,5439489,6291457,6356993,6553601,6881281,7143425,7208961,7536641,7798785,8060929,8126465,8257537,8323073,8650753,8716289,8912897,8978433,9043969,9306113,9437185,9568257,9699329,9830401,10289153,10354689,10420225,10485761,10616833,10682369,10878977,10944513,11075585,11141121,11206657,11337729,11665409,12058625,12189697,12255234,12582913,12910593,13565953,13631489,13828097,19398657,23789569,34537473,34996225,35389441,36634625,37027841,37093377,37617665,37814273,38141953,38404097,38797313,38928385,38993921,39059457,39256065,39387137,39518209,39780353,39911425,40239105,40304641,40435713,40632321,40697857,41156609,41222145,41484289,42008577,42074113,42205185,42532865,42598401,43188225,43909121,44957697,45088769,45416449,45744129,45809665,46137345,46202881,46268417,46596097,46858241,46923777,47120385,47644673,47775745,47972353,48365569,48824321,51576833,52428801,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55246849,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57016321,57212929,57540609,57671681,57802753,57933825,57999361,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59244545,59310081,59375617,59506689,59703297,59768833,59834369,59899905,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60751874,60817409,60882945,60948481,61014017,61079553,61276161,61407233,61472769,61538305,61603841],"first":[2752513,7471105,7929857,7995393,8585217,9240577,9306113,9568257,9895937,16056322,16252929,16711682,17104897,17301506,17432578,17498114,17825793,18153473,18219010,18546689,19005441,19333121,19726337,20054017,20512769,21299201,41549825,47251457,50593793,54853633,55443457,57540609,61145089],"frames":[45744129,58654721],"fso":[8650754],"framework":[16252929,18546689,19333121,21299201,47382529],"forwards":[13631489,23789569],"foo":[8323073,12255233],"files":[39059457,40632321,42074113,42205185,43909121,44105729,44957697,45088769,45416449,46071810,46268417,47579137,47775745,53805057,54329345,55967745,56295425,56623105,58195969,58327041,58392577,60030977,60096513,60817409,60882945,61407233,61538305,61603841],"formatted":[17367041,20316161,28246017,43778049],"frame":[52035586,56098818],"false":[5242881,5373953,5898241,6094850,6225922,6946818,8912897,9175041,9371649,9764865,10027009,10158081,10878977,12910594,13565953,13631489,14352385,14811137,15335425,15400961,16187393,16318465,16973825,17039361,17694721,18284545,18874370,19595265,22282241,22937601,23068673,23527425,23789569,23986177,24117249,24838145,25362434,25624577,25755649,26411010,27066370,27918337,27983874,28049410,28377090,28573698,29294594,30081025,30343170,30605313,31981570,32636929,34013186,35520513,37879810,38273026,41746433,42467329,43122690,45678593,51904513,58064897],"future":[59179009,61145089],"fully":[1703937,3801089,8126465,9437185,12124161,12517377,13041665,13500417,13697025,14286849,19136513,19922945,23199745,24248321,51576833,55902209],"factory":[38010881,55246849],"favor":[14352385,22937601,23986177,27918337,42467329],"features":[38535169,43778049,47906817,50593793,54001665,55377921,59179009,61145089,61669378],"float":[42795009,48889857,51511297,60751873],"filesystemobject":[8650754],"fallback":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,46333954,47775745,51052546,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"form":[8126465,8454145,9437185,11730945,12713985,13041665,13500417,13697025,13631489,14286849,14483457,15007745,15138817,15269889,19136513,19922945,20709377,21037057,21430273,21889025,23199745,23789569,24248321,25100289],"filenameextensions":[22151172,22740997,34734085,35127301,36044805,38207493,39190533,41222145,42270724,45613061,53870593],"finally":[12910593],"flagsattribute":[50593796,54198276,57147396,59179012,59572228,59637764,59965444,61145092,61210628,61669380],"facilities":[61145089],"field":[1048578,1114114,1179650,1245186,1376258,1441794,1507330,9175041,13828097,19398657,39059458,40042497,40632322,42074114,42205186,42336258,43909122,44171265,44957698,45088770,45875202,46268418,47775746,54722564,58195970,58327042,58392578,59506692,59637762,60096514,60358660,60817410,60882946,61407234,61538306,61603842,61669377],"foreach":[9568258,9830403],"formatcode":[38404097,39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47710212,47775745,48234502,52559876,58195969,58261505,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"finalization":[19791873],"freeing":[2621441,2686977,2818049,3145729,3211265,3670017,3735553,4128769,4521985,4587521,4980737,5177345,6291457,6356993,6553601,7208961,7536641,8716289,8978433,24576001,24707073,30212097,36110337,36831233,40763393,58195969,58261505,58327041,58392577,58916865,59375617,59834369,60096513,60162049,60227585,60293121,60424193,60751873,60817409,60882945,61014017,61407233,61538305,61603841],"flags":[3407873,5046273,10616840,11927558,13107206,13303814,13500422,13828102,14090246,14155782,14286854,14876678,14942214,15007750,15269894,15597574,15925254,17235975,17760263,18087943,18743303,19070983,19398663,19660807,19988487,20643847,21037063,22347782,22609927,22872070,23199751,24248327,24510470,25034758,25100295,25231366,25624582,25690118,25755654,26214406,26673158,26804230,27590662,27656198,28114950,28508166,28639238,28835846,28901382,29097990,29163526,29360134,29425670,29622278,29687814,29884422,30015494,32309254,32833542,33685510,34275334,34734086,35127302,35454982,36044805,36503558,37027841,37224454,37814273,38207494,38469638,38797313,39190534,39518209,40108033,40239105,40304641,41156609,45613061,45940741,46923777,50462725,50593793,51118085,51576833,54198273,55443457,57147393,58785793,59179009,59375617,59506689,59572225,59637761,59768833,59834369,59965441,60162049,60293121,60424193,60751873,61145089,61210625,61669377],"facilitate":[47710209,48234497,52559873],"filenameextension":[39059458,40632322,42074114,42205185,43909122,44105732,44957698,45088769,46268417,47579141,47775745,53805063,54329350,55967751,56295430,56623111,58195969,58327041,58392578,60096514,60817410,60882945,61407234,61538306,61603841],"func":[2621441,2686977,2818049,3211265,3407874,3670017,4784129,5046273,6881281,8126465,8388615,9306120,15794187,16580619,31260687,32899075,33947659,37421057,37945345,38600705,39649281,57016321,58720257,58785793,59375617,59768834,59834369,60162049,60424193,60751873],"flag":[3407873,5046273,10616838,58785793,59768833]} \ No newline at end of file +{"fail":[64421889,68878337,70975489,79429633],"fully":[1638401,4718593,4915201,7340033,8978433,9895937,10354689,11599873,12713985,14352385,15925249,17760257,20512769,21692417,22544385,24117249,24903681,76349441,77529089,78839809,79364097,80740353],"frame":[73924610,74448898],"fields":[131074,262146,1048578,1179650,1441794,1572866,74842113,76021761,78249985,78708737,79167489,80216065,80740353,80805889,80871425,81330177],"filesystemobject":[9175042],"finallyfunc":[15990792],"fso":[9175042],"floating":[10223617,57737217,58130433,60293121,61407233,61669378,62193665,63045633,64684033,65273857,67764226,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"float64array":[78184449],"format":[8847361,8978433,9175041,13238273,13697025,13828097,15400961,15597569,15663105,15859713,17301505,18546689,19202049,20119553,20316161,20578305,20774913,21495809,23527425,23658497,25100289,39059457,39452673,41549825,42270721,45219841,48955393,50593793,52428801,52953089,53149697,54132737,56229890,66453506,67698690],"files":[54657025,57737217,58130433,60293121,61407233,62193665,63045633,63569921,63635458,64684033,65273857,68091905,68485121,69533697,69992449,73662465,74252289,75104257,76087297,77463553,77856769,77922305,78512129,79953921,80281601,81002497,81068033,81264641],"finished":[51511297],"file":[10747905,22740994,42270722,45219842,50593794,51576833,52363265,52756481,52953090,53149698,54132738,55443457,57737217,58130433,59047937,60293121,60358657,60424193,61407233,62193665,62980097,63045633,63504386,63569922,64684033,65273857,68091906,68485122,69533697,72548353,73662466,74252290,75104258,76087297,76873729,77463554,77856770,77922306,78512129,78970881,79888385,79953922,80281602,81002498,81068034,81264642],"f093":[8847361,9175041,13238273,13697025,13828097,15400961,15597569,15859713,17301505,18546689,19202049,20119553,20316161,20578305,20774913,21495809,23527425,25100289],"finally":[15990785],"filenameextension":[57737218,58130433,60293122,61407233,62193666,63045634,63569925,64684033,65273858,68091911,68485124,69533697,73662471,74252294,75104258,76087298,77463559,77856769,77922310,78512129,79953921,80281602,81002498,81068033,81264642],"free":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,9895937,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75169793,75366401,75431937,75628545,75759617,75956225,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,80019457,80084993,80216065,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81330177],"features":[48103425,48955393,58916865,64290817,74776577,76939265,77004801,78118913,80412674],"formatting":[56229890,57737217,58130433,59834369,60293121,61407233,62193665,63045633,64684033,65273857,66453506,67698690,69533697,75104257,75366401,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"fastproxy":[3801089,3866625,4063233,4259841,4325377,4456449,4784129,4915201,4980737,5111809,5242881,5439489,5701633,5767169,6946817,7340033,9895937,23068674,23265282,23461890,24248322,24772610,24838146,24969218,25034754,25493506,25559042,25624578,26148866,26214402,26279938,26345474,26411010,26673154,26869762,27000834,27131906,27328514,27459586,27525122,27590658,27656194,27721730,27787266,27852802,27918338,28246018,28180482,28377090,28442626,28508162,28573698,28704770,28770306,28835842,28901378,29032450,29097986,29163522,29229058,29294594,29425666,29491202,29556738,29622274,29687810,29753346,29818882,29884418,29949954,30015490,30081026,30146562,30212098,30277634,30343170,30408706,30474242,30539778,30605314,30670850,30736386,30801922,30867458,30932994,30998530,31064066,31129602,31195138,31260674,31326210,31391746,31457282,31522818,31588354,31653890,31719426,31784962,31850498,31916034,31981570,32047106,32112642,32178178,32243714,32309250,32374786,32440322,32505858,32571394,32636930,32702466,32768002,32833538,32899074,32964610,33030146,33095682,33161218,33226754,33292290,33357826,33423362,33488898,33554434,33619970,33685506,33751042,33816578,33882114,33947650,34013186,34078722,34209794,34275330,34340866,34406402,34471938,34537474,34603010,34668546,34734082,34799618,34865154,34930690,34996226,35061762,35127298,35323906,35454978,35586050,35651586,35717122,35782658,35848194,35913730,36110338,36306946,36438018,36503554,36569090,36634626,36765698,36831234,36962306,37158914,37224450,37355522,37421058,37617666,37683202,37814274,38010882,38141954,38469634,38600706,38666242,38797314,38862850,38928386,38993922,39321602,39583746,39780354,39845890,39911426,39976962,40370178,40566786,41091074,41222146,41615362,42008578,42795010,43384834,43450370,43712514,44367874,44957698,45285378,45416450,46137346,46661633,46727169,46792706,47775745,48693249,48824321,49348609,49610753,49676289,49872898,50069505,50200577,51052545,51118082,51445761,51707905,52494337,52690945,53280769,53411841,53739521,54067201,55050241,55181313,55574529,55902209,56557569,56754177,57606145,57802753,58064897,58654721,58851329,59113473,60030978,60227585,61210625,61472770,61865986,62652417,63438850,63832066,64618497,65011714,66060290,66322434,67371010,68026370,68681730,69074946,70320130,70385666,71303170,72024066,72417285,73269250,73728002,74317826,74514437,74776578,74973186,75300866,75431939,75694082,75890690,76349443,76742661,77266948,77529091,77660162,78053378,78577668,78643202,79036418,79364099,79626245,79822850,80478213,80609282,80936962],"float32":[27918337,29097985,31064065,31129601,44367873],"functionality":[6356993,67895297,80412673],"float32array":[78184449],"feature":[67895300,76611589,76939265,77004801],"favor":[15532033,24444929,39190529,40501249,44171265],"fatal":[59179010,60358657,62455809,62980097,65404930,72089602,72548353,78905345,78970881],"flags":[3538945,4521985,10747912,13500422,13697030,14352390,14745606,14811142,15400966,15466502,15794182,15925254,16711686,17235974,17301510,17891334,18284551,19202054,19988487,20119559,20316167,21102599,21495815,22478855,22544391,22937607,23199751,23527431,24903687,25165830,25952262,26017799,27066375,27394054,28311558,33882118,35520518,36896774,37027846,37289990,38535174,38731782,39256070,39649286,39911430,40304646,40828934,40960006,41943046,42270726,42336262,42532870,43253766,43712518,43778054,44498950,44761094,44892166,45219846,45481990,45809670,47054854,48234502,48889862,49086470,49414150,49872902,50593798,50921478,52101126,52297734,52953093,53149701,53608449,54132742,54919174,56885249,59244545,59768833,60751873,61538305,62783489,63307781,63700997,63766533,64356353,65863681,72744961,73138177,74645505,75497473,75956225,76283905,76873729,76939265,77004801,77070337,77135873,77660161,77987841,78118913,78184449,78446593,78839809,79167489,79233025,79429633,80150529,80412673],"float":[26279937,27918338,29097986,29949953,31064066,31129602,32440321,32702465,44367874,46137345,61669377,67764225,70975489,78184449],"fallback":[56688642,57737217,58130433,60293121,61407233,62193665,63045633,64684033,65273857,66650114,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"facilities":[76939265],"filenameextensions":[22085636,22740997,42270725,45219845,50593797,52756481,52953093,53149701,54132741,63504388,79888385],"func":[2818050,3276802,3473410,3538946,3997698,4390914,4521985,5898241,5767173,6553601,8388615,8978433,11075592,14876683,16973835,19136523,22020107,33423366,35913734,36503558,37617670,37814278,39321605,42139663,44630027,46202882,47775746,48758785,49610755,49938434,52887555,53477377,73138178,74645506,75431941,75497474,75956225,77135874,77987842,78184450,79101953,80805889],"functional":[16711681,23199745],"flag":[3538945,4521985,10747910,75956225,77987841],"final":[15990785],"field":[2,393218,524290,327682,786434,917506,2359298,5767172,10616833,16711681,23199745,33882116,41615364,43712516,51118084,51707905,57737218,58130434,58523649,60293122,61407234,62193666,62652418,63045634,64159745,64421890,64618498,64684034,65273858,68878338,69533698,74842116,75104258,75431940,76087298,77856770,78512130,79036421,79167492,79429634,79953922,80216068,80281602,80412673,81002498,81068034,81264642],"following":[131073,589825,262145,720897,851969,1048577,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5570561,5636097,5701633,5767169,5963777,5898241,6094849,6160385,6553601,6946817,7077889,7340033,7864321,7995393,8585217,8716289,8847361,8912897,8978433,9109505,9175041,9240577,9306113,9502721,9830401,9895937,9961473,10158081,10223617,10354689,10747905,10551297,10878977,10944513,11010049,11075585,11206657,11403265,11730945,11862017,11927553,12124161,12320769,12386305,12517377,12582913,12845057,12910593,13631489,13893633,13959170,14221313,15204353,15990785,16711681,18219009,19005441,23199745,26542081,52690945,52756481,53084161,53280769,53542913,53608449,53805057,53936129,54001665,54394881,54525953,54657025,55246849,55574529,55640065,55705601,55902209,56426497,56492033,56557569,56819713,56885249,57540609,57606145,57671681,57737217,58130433,58261505,58589185,59113473,59244545,59375617,59834369,60227585,60293121,60358657,60751873,61014017,61210625,61276161,61407233,61538305,61800449,61997057,62193665,62455809,62783489,62980097,63045633,63897601,64356353,64684033,65273857,65470465,65863681,66781185,67633153,68157441,68943873,69533697,69992449,70320129,70582273,70909953,71172097,71303169,71368705,71761921,71958529,72024065,72417281,72548353,72613889,73138177,73269249,73531393,73990145,74121217,74317825,74514433,74645505,74711041,74842113,74973185,75038721,75104257,75169793,75300865,75366401,75431937,75497473,75628545,75694081,75759617,75956225,76087297,76152833,76283905,76349441,76414977,76480513,76546049,76677121,76742657,76808193,77135873,77201409,77266945,77332481,77398017,77529089,77594625,77856769,77987841,78184450,78249985,78512129,78577665,78708737,78774273,78839809,78905345,78970881,79101953,79167489,79364097,79495169,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,80936961,81002497,81068033,81133569,81199105,81264641,81330177],"facilitate":[56229889,66453505,67698689],"f414c260":[42270721,45219841,50593793,52953089,53149697,54132737],"foreach":[8585219,10944514],"follow":[196609],"false":[6291458,6356993,6422529,7143425,7208962,8519682,9568257,9961473,10289153,10616833,11862017,11993089,13041665,15269889,15532033,15990786,16121857,17498113,17629185,18219009,18939905,19005441,19333121,19660801,19791873,20840449,20971521,21430274,21954561,22675457,23789569,24444929,24838145,25559041,26411009,26542081,26673153,26804225,27000833,27328513,27459585,27525121,27590657,27918337,28246017,28377089,28508161,28704769,28770305,28835841,28901377,29491201,29556737,29949953,30081025,30212097,30343169,30408705,30474241,30605313,30867457,31129601,31195137,31260673,31326209,31391745,31588353,31784961,31850497,31916033,31981569,32571393,32702465,32964609,33030145,33095681,33226753,33357825,33488897,33816577,33947649,34340865,34537473,34603009,35389441,35520513,35586049,35848193,36241410,36372482,36634625,37289985,37945346,38273026,39190529,39387138,39518210,39780354,40239106,40501249,41156609,41353218,41746433,42467329,42926081,43515906,43581442,44171265,44433410,46333953,46989314,49741826,52625410,58982401,65601537,72679425,79822849],"falsy":[9895937,27328515,59113473,66060290,76349441,77529089],"funcname":[16056325,28049414],"framework":[67895297],"forwards":[18219009,26542081],"formatcode":[56229892,57737217,58130433,59834369,60293121,61407233,62193665,63045633,64684033,65273857,66453510,67698692,69533697,75104257,75366401,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"functionname":[56819713,64946180,80347137],"functio":[27000833,55902209,61472769,72024065,79822849],"flagsattribute":[72744964,76873732,76939268,77004804,77660164,78118916,78446596,79233028,79429636,80150532,80412676],"friendly":[24248321,77791233],"finalize":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373954,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,21430274,21757960,41353218,46989314,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856770,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"faster":[77660161],"fast":[4456450,4784130,4980738,6946818,24772611,25493507,31981570,34406401,39780354,39976961,45285377,51707924,70320129,72024065,72417282,73269251,74317825,74514433,74973187,75300865,75431941,75694083,75890690,76349441,76742657,77266946,77529089,77660161,78053378,78577666,78643202,79036418,79364097,79626242,79822849,80478209,80609282,80936961],"function":[851969,1703938,1835009,1900545,1966081,2097153,2162689,2228225,2293762,2555906,2621441,2686978,2752513,2818049,2883585,3014657,3080193,3276801,3342337,3407873,3473409,3538949,3604481,3735553,3866625,3932161,3997697,4128769,4194305,4325377,4456450,4390913,4521988,4587521,4849665,5111810,5177345,5242881,5308417,5373954,5439489,5570561,5636097,5701633,5963778,5767169,6094849,6160385,6291457,6356993,6553601,6946822,7077889,7208961,7405569,7471105,7536641,7602177,7733249,7798787,7864321,7929857,7995393,8060929,8192001,8323073,8388614,8454145,8519681,8585224,8781825,8716290,8847361,8912900,8978434,9043969,9109505,9175041,9306114,9502722,9568258,9633794,9699330,9764867,9830402,9961476,10027010,10092545,10158081,10223618,10289154,10354689,10420225,10485762,10551298,10616834,10682369,10747906,10813442,10878978,10944520,11010050,11075592,11141122,11206658,11272194,11337729,11403266,11468802,11665410,11730946,11862019,11927554,11993090,12124162,12386306,12517378,12582914,12779522,12845058,12910594,13041666,13107201,13631490,13893634,13959169,14090241,14155777,14221314,14680067,14876673,15007745,15204354,15663105,15728641,15990793,16056324,16121857,16252929,16449537,16580609,16646145,16777217,16842753,16908289,16973825,17039361,17170433,17432577,17498113,17629185,17956865,18022401,18153473,18219009,18415617,18677761,18743297,18808833,18939905,19005443,19136513,19333121,19398657,19464193,19595265,19791873,19857409,19922945,20054017,20185089,20643841,20840449,21037057,21168129,21233665,21299201,21364737,21954561,22020097,22282241,22413313,22675457,22872065,23003137,23658497,23789569,23986177,24248321,24313857,24576001,24772609,24838145,25231361,25362435,25427969,25493505,25624577,25690113,26083329,26279937,26411009,26542081,26673153,26738689,26869761,26935297,27000836,27328513,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,28049412,28114945,28246017,28180481,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,29032449,29097985,29229057,29294593,29425665,29491201,29556737,29622273,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457283,31588353,31719425,31784961,31850497,31916033,31981574,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505861,32571393,32702465,32768001,32833537,32899076,32964609,33030145,33095681,33226753,33357825,33488897,33554435,33816577,33947649,34013188,34078721,34209793,34275329,34340865,34537473,34603009,34734084,34799621,35061764,35389441,35520513,35586049,35651585,35782660,35848193,35979265,36044801,36110341,36175873,36241409,36438021,36372481,36634625,36765699,36962308,37093377,37289985,37355524,37486593,37552129,37748737,37945345,38076417,38141958,38207489,38273025,38469637,39256065,39387137,39518209,39780357,40042497,40108033,40173569,40239105,40435713,40697857,40828929,40894465,41025537,41156609,41287681,41418753,41484289,41549825,42074113,42139649,42205185,42401793,42467329,42598401,42663937,42729473,42926081,43057153,43122689,43515905,43581441,43778049,43843585,44040193,44302337,44433409,44564481,44630017,45023233,45088769,45481985,45547522,45613057,45744129,45875201,46333953,46858241,47513601,48037889,48365569,48955393,49217537,49283073,49741825,49807361,50069505,50659329,50724865,50987009,51380225,51707908,51970049,52428801,52494337,52625409,52887554,54460417,54591489,54984705,55902209,56819718,57016321,61472769,64028673,64487425,64946178,66715649,68943875,69337089,69861378,70451201,70909955,71172097,71368705,71761921,72024066,72417281,72548353,72613890,72679425,73007105,73138177,73269251,73531394,74121217,74186753,74514433,74645505,74711041,75104258,75169793,75366401,75431937,75497473,75628545,75956228,76087298,76152833,76283905,76480513,76546049,76611585,76742657,77135873,77266945,77332481,77398017,77725697,77856770,77987845,78184449,78249985,78512129,78577665,78708737,78970881,79036417,79233027,79364097,79495169,79626246,79691777,79822852,79888385,79953922,80019457,80084994,80281602,80347143,80478211,80543745,80674817,80805889,80871425,81002498,81068034,81199105,81264642,81330177],"form":[5767173,8454145,8978433,10354689,11272193,14286849,14352385,14417921,15335425,15466497,15794177,15925249,17760257,18219009,20381697,20512769,21692417,22544385,24117249,24903681,26017793,26476545,26542081,27066369,27983873,33423362,35913730,36503554,37617666,37814274,47775746,49610755,75431941],"first":[3211265,8060929,8192001,8323073,8781825,10092545,10420225,10944513,11075585,16449538,16646146,16777218,16842754,16908290,17039361,17170433,17956865,18153474,18415617,18677762,18743298,18808833,19398657,19922945,20054017,20185090,21168130,21233665,22282242,23986178,25231361,26935297,61734913,61931521,76414977,76611585,76939265,77070337,78118913],"foo":[8847361,13959169],"finalization":[21757953],"freeing":[2097153,2752513,2818049,3276801,3473409,3735553,3997697,4063233,4259841,4390913,5373953,5570561,5963777,7077889,8716289,9306113,9502721,9830401,11010049,11206657,11403265,24510465,25296897,46465025,51904513,56164353,56623105,70320129,73138177,74645505,75104257,75366401,75497473,76087297,76283905,77135873,77856769,78184449,78512129,79495169,79953921,80084993,80281601,80936961,81002497,81068033,81199105,81264641],"factory":[33423366,35913734,36503558,37617670,37814278,45547521,47775745,49610753,77594625],"fulfilled":[79233025],"fails":[3538945,4521985,8912897,10223617,25624577,26279937,26869761,27656193,27787265,27852801,28442625,28573697,29032449,29097985,29229057,29294593,29425665,29622273,29818881,29884417,30015489,30146561,30277633,30670849,30736385,30801921,30932993,30998529,31064065,31719425,32047105,32112641,32178177,32309249,32374785,32440321,32768001,32833537,34209793,34078721,34275329,35651585,56688641,66650113,75956225,77987841],"functions":[3538945,4521985,7733249,7929857,7995393,8388609,8454145,8585217,8847361,8912897,8978433,9109505,9175041,9371649,9568257,9633793,9699329,9961473,10027009,10158081,10223617,10289153,10354689,10485761,10551297,10616833,10747905,10813441,10878977,10944513,11075585,11141121,11272193,11337729,11468801,11665409,11730945,11862017,11927553,11993089,12124161,12386305,12517377,12582913,12648449,12779521,12845057,12910593,13041665,13631489,13893633,13959169,14221313,15204353,15990785,19005441,43646977,45154305,45547522,46596097,46923777,47579137,48300033,48562177,49479681,52887553,54329345,57737217,58130433,60293121,61407233,62062594,62193665,62390273,63045633,64684033,65273857,66519041,67567618,69533697,70713345,74907649,75104257,75956226,76087297,77856769,77987842,78512129,79953921,80281601,81002497,81068033,81264641],"filter":[12451846,13369350,13565958,13762566],"formatted":[15663105,23658497,48955393,52428801],"future":[76939265,77004801],"frames":[60358657,62980097,72548353,78970881]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_103.json b/docs/Reference/fti/FTI_103.json index 26a5440d..81e54056 100644 --- a/docs/Reference/fti/FTI_103.json +++ b/docs/Reference/fti/FTI_103.json @@ -1 +1 @@ -{"globalflags":[42532865,55443460,61276161],"grow":[38404097,42074113,50724865,54460417,58261505,60817409],"gain":[11730945],"garbage":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3735553,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587522,4653057,4849665,4980738,5046273,5111809,5439489,6291458,6356994,6553602,6881281,7208962,7536642,7798785,8716290,8978434,14352387,19791875,22937603,23986179,27918339,30539777,42467331,51576833,52101121,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57147393,57212929,57671681,57933825,57999361,58130433,58195970,58261506,58327041,58392578,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096514,60227585,60358657,60489729,60555265,60817410,60882946,61407234,61472769,61538306,61603842],"generally":[12255233],"getcacheddocument":[1835010,1966081,5505029,6422533,53084161,58523650],"generated":[4980748,7208972,24444930,24969218,25362434,25493506,25559042,25821186,26017794,26083330,26411010,26542082,26607618,26935298,27066370,27525122,27983874,28049410,28311554,28377090,28573698,28704770,28966914,29294594,29491202,29556738,29949954,30343170,30736386,30998530,31391746,31981570,32178178,33095682,34013186,34930690,35192838,35848194,36372486,37879810,38666246,39714822,58261516,60620801,60686337,60817420],"generates":[27000833,29229057],"guid":[3735560,4587528,6291464,6357000,6553608,7208968,7536648,8323073,8650753,8716296,8978440,11927553,12320769,12648454,12845057,13107206,13369350,14024705,14090246,14155782,14876678,14942209,15597569,15925249,16777222,16842753,17235976,17563654,17760264,18087944,18350081,18612225,18743304,19070977,19660801,19988481,20643841,20774920,21364744,21495816,22413320,22478849,23265281,31064068,32047108,33423364,34209796,34734081,35127297,36044801,38207489,39190529,45613057,55312385,58195976,58327048,58392584,60096520,60817416,60882952,61407240,61538312,61603848],"gcnew":[31326209,55836673],"general":[983041,9961473,10158081,10747905,40042497,44171265],"getruntimeheapinfo":[7208961,27787268,60817409],"giving":[2621442,2686978,2818050,3211266,3670018,15728641,15794177,16580609,19202049,37421058,37945346,55312385,59375618,59834370,60162050,60424194,60751874],"gettype":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849665,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,45154306,51314690,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"gets":[524290,1048577,1179649,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2621442,2686978,2752513,2818050,2162689,2228225,2883585,3014657,3145730,3211266,3276801,3342337,3407878,3473409,3538945,3604481,3670018,3735553,3801089,3866625,3932161,3997697,4063233,4128770,4259841,4325377,4390913,4456449,4521987,4587522,4653057,4849665,4980737,5046278,5111809,5177346,5439489,6291458,6356994,6553602,6881281,7208962,7536642,7798785,8519681,8716290,8978434,9961473,10551297,10878977,13565953,14614529,15663105,17367041,20316161,21626881,25296897,28246017,33357826,34537476,34996225,35389441,36175874,36241410,36438018,36634628,36700162,36896770,37027846,37093381,37617674,37814280,38141954,38404103,38797320,38928386,38993926,39059468,39256067,39387138,39518213,39583745,39780355,39845889,39911431,40108033,40239113,40304646,40435714,40501249,40632332,40697858,40828929,40894465,40960001,41025537,41156617,41222151,41484290,41549825,41615361,41680897,42008578,42074126,42139649,42205196,42270721,42401793,42532865,42598402,42663937,42729473,42860545,42926081,43188228,43253761,43319297,43384833,43646977,43712513,43778049,43843585,43909131,43974657,44040193,44105729,44236801,44302337,44498945,44564481,44630017,44761089,44826625,44892161,44957707,45023233,45088778,45285377,45350913,45416450,45481985,45547521,45678593,45744142,45809668,45940737,46006273,46071809,46137345,46202886,46268427,46399489,46530561,46596097,46661633,46727169,46792705,46858245,46923780,46989313,47054849,47120387,47251457,47316993,47448065,47513601,47579137,47644675,47775753,47841281,47972354,48037889,48103425,48365577,48431105,48562177,48627713,48693249,48824323,48955393,49020929,49086465,49152001,49217537,49479681,49545217,49610753,49741825,49807361,49872897,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50724865,50790401,50855937,50921473,50987009,51118081,51249153,51380225,51445761,51511297,51576839,51642369,51707905,51773441,51838977,51904513,51970049,52101121,52232193,52363265,52428802,52494338,52625409,52690945,52756481,52887553,52953089,53018625,53084163,53149697,53215233,53346305,53411841,53477379,53542913,53608449,53673990,53739521,53805057,53870600,53936129,54067205,54132737,54263809,54329345,54394881,54460417,54591489,54657025,54722563,54788097,54919169,54984705,55050241,55115787,55181313,55312386,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55967745,55902211,56033281,56164353,56229889,56295425,56360961,56426501,56492033,56557569,56623105,56688641,56754179,57081857,57212929,57344001,57475073,57540614,57606145,57671681,57737217,57868289,57933825,57999365,58130434,58195980,58261512,58327050,58392589,58458121,58523650,58589191,58654735,58720257,58785798,58851331,58916869,58982406,59113475,59244552,59310084,59375624,59506693,59703299,59768838,59834378,59899908,60030978,60096525,60162058,60227590,60293127,60358659,60424203,60489733,60555265,60751883,60817424,60882957,60948481,61014021,61276161,61407246,61472769,61538318,61603854],"gadgets":[7143427,8060931,54067203],"getelement":[3407873,5046273,9961476,58785793,59768833],"generating":[4980742,7208966,24444929,25559041,25821185,26017793,27525121,28704769,28966913,29556737,30998529,31391745,33095681,34930689,35192835,36372483,38666243,39714819,58261510,60817414],"getunderlyingobject":[5177345,31195140,61014017],"generator":[61210627],"getmetaobject":[3014657,4521985,55705601,60227585],"getheapinfo":[4980737,26345476,58261505],"getobjectdata":[3080193,5111810,18415622,23658501,58654722,58982401],"generate":[9568257,60620802],"generic":[5242881,7077889,7602177,8126466,8257537,8454145,8912897,9043969,9240577,9306113,9437189,9699329,9764865,9830401,9895937,10223617,10289153,10354689,10420225,10485761,10616833,10682369,10878977,11075585,11141121,11206657,11337729,11665409,12058625,12124161,12189697,12255234,12517377,12582913,12713985,13041666,13303809,13500418,13565953,13697026,13828098,13959169,14286850,14483457,15007745,15138817,15269889,15794177,16580609,17104897,17825793,18546689,19136514,19333121,19398658,19922946,20709377,21037057,21430273,21889025,22609921,23199746,23396353,24248322,25100289,31260673,31326209,33947649,47906817,54001665,55836673,57212929,57933825,60751873,61341697],"getting":[3014657,4521985,55705601,60227585],"getbytes":[2621441,2686977,2818049,3211265,3670017,18022404,18481156,59375617,59834369,60162049,60424193,60751873],"getstacktrace":[3735553,4587521,6291457,6356993,6553601,7208962,7536641,8716290,8978433,17367044,20316165,28246023,43778054,58195969,58327041,58392577,60096513,60817410,60882946,61407233,61538305,61603841],"gethashcode":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849665,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"getcomponents":[10616833],"getdynamicmembernames":[3014657,4521985,55705601,60227585],"groups":[9764865,13565953],"guide":[7471105,7929857,7995393,8585217,9240577,9895937,16252929,17104897,17825793,18153473,18546689,19005441,19333121,19726337,20054017,20512769,21299201],"greater":[51511297,52690945,53149697,53542913,54263809,61145089],"getbaseexception":[5111809,12910593,58654721],"given":[1572865,3604481,4194305,4980737,5242881,7208961,13434881,23724033,27000833,29229057,31326210,53673985,55246849,58130433,58261505,59965441,60817410],"getvalue":[13828097,19398657],"getenumerator":[2752513,8650753,57540609],"global":[3735553,4587521,6291457,6356993,6553601,7208961,7536641,8716289,8978433,11927553,12320769,12648449,12713985,12845057,13041665,13107201,13303809,13369345,13500417,13697025,13828097,13959169,14024705,14090241,14155777,14221314,14286849,14417921,14483457,14876673,14942209,15007745,15138817,15269889,15597569,15925249,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19136513,19398657,19660801,19922945,19988481,20119553,20643841,20709377,20774913,21037057,21364737,21430273,21495809,21757954,21889025,22413313,22478849,22609921,23199745,23265281,23396353,24248321,25100289,38010881,39059457,39321601,40632321,41549825,42074114,42205185,42532865,43909121,44957697,45088769,46268418,46530561,47251457,47710209,47775745,48168966,48234497,48758791,49348617,49676289,49938433,51183617,52297729,52559873,52953089,55443459,56819720,57147393,58195970,58327042,58392578,59965441,60030977,60096514,60817411,60882947,61145090,61276161,61407234,61538306,61603842,61669377],"globalmembers":[59965441,61145089],"getproperty":[2621442,2686978,2818050,3145730,3211266,3407874,3670018,4128770,4521986,5046274,5177346,8519685,10551301,14614533,15663109,21626886,25296902,33357826,36241410,36438018,58785794,58916866,59375618,59768834,59834370,60162050,60227586,60293122,60424194,60751874,61014018],"getnamespacenode":[4259841,11599876,54067201]} \ No newline at end of file +{"getuint32":[7340033,9895937,29622276,32309252,76349441,77529089],"grow":[59834369,60293121,71827457,73400321,75366401,76087297],"general":[458753,10027009,10485761,13041665,58523649,64159745],"globalmembers":[76939265,78446593],"getnamespacenode":[2883585,13107204,74121217],"generator":[79233027],"garbage":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3735553,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373954,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077890,7340033,7864321,8716290,9306114,9502722,9830402,9895937,11010050,11206658,11403266,15532035,21757955,24444931,39190531,40501251,44171267,51511297,68943873,70909953,71172097,71368705,71761921,72155137,72417281,72548353,72613889,72744961,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104258,75169793,75366402,75431937,75628545,75759617,75956225,76087298,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856770,77987841,78249985,78512129,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953922,80019457,80084993,80216065,80281602,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002498,81068034,81264642,81330177],"getuint64":[7340033,9895937,30277636,30998532,76349441,77529089],"getnullable":[7340033,9895937,27787268,30932996,76349441,77529089],"getruntimeheapinfo":[11010049,50724868,76087297],"guid":[3735560,5373960,8716296,8847361,9175041,9306120,9502728,9830408,11010056,11206664,11403272,13172742,13238273,13434886,13500422,13697025,13828097,14745606,14811142,15073286,15400961,15597569,15859713,17235974,17301505,17825798,18087944,18284552,18546689,19202049,19988488,20119553,20316161,20578305,20774913,21495809,22216712,22478856,22937608,23527425,23592968,24182792,25100289,42270721,45219841,45350916,47710212,48168964,50593793,51183620,52953089,53149697,54132737,75038721,75104264,76087304,77856776,78512136,79953928,80281608,81002504,81068040,81264648],"getunderlyingobject":[5570561,42663940,81199105],"getbiginteger":[7340033,9895937,28442628,34078724,76349441,77529089],"getheapinfo":[7077889,37486596,75366401],"given":[851969,4915202,6160385,6356993,7077889,7340036,9895940,11010049,12320769,13303809,27787265,30474241,30605313,30932993,31850497,32178177,32768001,34603009,38862849,39059457,39452673,40566785,43188225,51052546,51445762,54067202,54591490,74711041,75366401,76087298,76349444,77529092,77594625,78446593,79364098,80019457],"getchar":[7340033,9895937,25624580,34275332,76349441,77529089],"groups":[9568257,19005441],"generate":[10944513,79560706],"getelement":[3538945,4521985,10027012,75956225,77987841],"giving":[2818052,3276804,3473412,3997700,4390916,14876673,16318465,16973825,18874369,19070977,19136513,20905985,22020097,46202884,49938436,73138180,74645508,75038721,75497476,77135876,78184452],"generally":[13959169],"getfriendlyname":[4456449,4784129,4980737,24248324,73269249,74973185,75694081],"getint16":[7340033,9895937,27656196,34209796,76349441,77529089],"generated":[7077900,11010060,36044802,36175874,36241410,36372482,37552130,37748738,37945346,38076418,38207490,38273026,39387138,39518210,40042498,40108034,40239106,40435714,42401794,43122690,43515906,43581442,44040194,44433410,45744130,45875202,46858242,47513602,48037890,48365570,49217538,49741826,49807362,50003974,50987010,51642374,51970050,52625410,54460418,54853638,54984706,57212934,75366412,76087308,79560705,79757313],"generates":[39059457,39452673],"gets":[393217,327681,851969,1572866,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097154,2162689,2228225,2293761,2555905,2621441,2686977,2752514,2818050,2883585,2949121,3014657,3080193,3145729,3211265,3276802,3342337,3407873,3473410,3538950,3604481,3735553,3801090,3866625,3932161,3997698,4063233,4128769,4194305,4259841,4325377,4390914,4456453,4521990,4653057,4587521,4718593,4784133,4849665,4915201,4980741,5046273,5111809,5177345,5242883,5308417,5373954,5439489,5570562,5636097,5701633,5963779,5767170,6094849,6160385,6553601,6946817,7077889,7340071,7864321,8716290,9306114,9502722,9699329,9830402,9895975,10027009,11010050,11141121,11206658,11403266,11862017,15007745,15663105,19005441,20643841,22413313,23068673,23265281,23658497,24248321,24969217,25559041,25624577,25690113,26148865,26279937,26345473,26869761,27525121,27656193,27721729,27787265,27852801,27918337,28246017,28442625,28508161,28573697,28704769,28770305,28835841,29032449,29097985,29229057,29294593,29425665,29491201,29556737,29622273,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31588353,31719425,31784961,31850497,31916033,32047105,32112641,32178177,32309249,32374785,32440321,32571393,32636929,32702465,32768001,32833537,32964609,33030145,33095681,33357825,33816577,33947649,34078721,34209793,34275329,34340865,34537473,34603009,35586049,35651585,35848193,38666241,39321602,39911425,46071810,46268418,46661634,46792705,47382530,48824322,48955393,49479682,49676290,49872897,51052563,51707905,52428801,52756487,53084164,53542914,53608454,53805061,53936129,54001668,54067219,54198273,54329346,54394884,54525955,54657026,55246855,55508993,55640065,55705604,55771137,55902209,56426498,56492033,56557569,56819722,56885256,56950785,57081858,57344001,57475073,57540610,57606145,57671682,57737229,57802754,57868289,58130443,58195969,58261507,58327041,58392577,58458113,58589189,58785793,58982401,59179009,59244552,59310081,59375619,59441153,59506689,59572225,59637761,59703297,59768833,59834375,59899905,59965441,60096513,60162049,60227585,60293135,60358670,60555265,60686337,60751877,60882945,60948481,61014022,61079553,61145089,61276161,61341697,61407242,61472769,61538310,61734913,61800450,61865985,61931521,61997058,62128129,62193677,62259201,62455817,62586881,62783497,62914561,62980111,63045644,63176705,63242241,63307777,63373313,63504385,63569921,63635457,63700993,63766529,63832065,63897603,64028673,64094209,64225281,64356361,64487425,64552961,64684045,64749569,64815105,64880641,64946177,65011713,65077249,65142785,65208321,65273868,65404929,65470466,65536001,65601537,65732609,65798145,65863684,65929217,65994753,66125825,66191361,66256897,66584577,66715649,66781186,66846721,66912257,66977793,67108865,67174401,67239937,67305473,67436545,67633155,67829761,67960833,68091905,68157442,68222977,68354049,68419586,68485121,68550657,68616193,68747265,68812801,68943873,69009409,69140481,69271553,69402625,69468161,69533708,69599233,69664769,69730305,69795841,69926913,69992450,70057985,70123521,70189057,70254593,70320129,70451201,70516737,70582273,70647809,70778881,70844417,70909953,70975489,71041025,71106561,71237633,71172099,71303170,71368709,71434241,71499777,71565313,71630849,71696385,71761923,71827457,71892993,71958530,72024065,72089601,72155137,72220673,72286209,72351745,72417281,72482817,72548368,72613889,72810497,72876033,72941569,73007105,73072641,73138184,73203713,73269253,73334785,73400321,73465857,73596929,73531393,73662465,73793537,73859073,73990147,74055681,74121221,74186753,74252289,74317825,74383361,74514433,74579969,74645514,74711042,74842115,74973189,75038722,75104271,75169794,75300865,75366408,75431938,75497482,75628549,75694085,75759619,75825153,75956230,76087313,76152839,76218369,76283911,76349479,76414982,76480516,76546051,76742657,77070337,77135883,77201409,77266945,77332484,77398024,77463553,77529128,77856781,77922305,77987846,78053377,78184459,78249985,78315521,78512139,78577667,78708737,78839815,78905353,78970895,79167493,79364097,79495173,79626241,79691779,79888392,79953935,80019462,80084998,80216067,80281614,80347147,80478209,80543745,80674821,80740355,80805889,80871425,80936961,81002510,81068046,81133569,81199109,81264655,81330177],"getcurrent":[4063233,4259841,23068676,26148868,70320129,80936961],"getvalue":[16711681,23199745],"getstring":[7340033,9895937,29884420,32833540,76349441,77529089],"getboolean":[7340033,9895937,29032452,30015492,76349441,77529089],"guide":[8060929,8192001,8323073,8781825,10092545,10420225,17039361,17170433,17956865,18415617,18808833,19398657,19922945,20054017,21233665,25231361,26935297],"getbaseexception":[3014657,3407873,15990785,72548353,78970881],"gethashcode":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"getdynamicproperty":[3801090,5242882,23265285,24969221,30539781,32636933,49676290,57802754,71303170,78577666],"getcacheddocument":[2162689,2228226,7536645,7602181,75169794,79691777],"getsbyte":[7340033,9895937,29229060,32374788,76349441,77529089],"getting":[3342337,5963777,80084993,80543745],"gain":[11272193],"gadgets":[7995395,9109507,74121219],"getsingle":[7340033,9895937,29097988,31064068,76349441,77529089],"greater":[64094209,66584577,67829761,69402625,70975489,76939265],"getpropertyindices":[4456449,4784129,4980737,28180484,73269249,74973185,75694081],"getuint16":[7340033,9895937,27852804,30801924,76349441,77529089],"getdecimal":[7340033,9895937,30736388,31719428,76349441,77529089],"globalflags":[61276161,77070340,77201409],"getobjectdata":[3014658,3407874,19726342,24707078,72548354,78970882],"generating":[7077894,11010054,36044801,37748737,38076417,40042497,42401793,45744129,45875201,46858241,47513601,50003971,50987009,51642371,51970049,54853635,54984705,57212931,75366406,76087302],"getdatetime":[7340033,9895937,29294596,29818884,76349441,77529089],"getter":[5767176,33882114,34668546,35323906,37158914,38666246,38928386,39321606,39911430,46792712,49872904,51118082,51707905,58654725,64618501,75431944,78053377,79364097],"getstacktrace":[3735553,5373953,8716290,9306113,9502721,9830401,11010050,11206657,11403265,15663108,23658501,48955398,52428807,75104257,76087298,77856769,78512129,79953921,80281601,81002497,81068034,81264641],"getcharspan":[7340033,9895937,26869764,35651588,76349441,77529089],"getdouble":[7340033,9895937,26279940,32440324,76349441,77529089],"global":[3735553,5373953,8716289,9306113,9502721,9830401,11010049,11206657,11403265,13172737,13238273,13434881,13500417,13697025,13828097,14024705,14286849,14352385,14417921,14745601,14811137,15073281,15335425,15400961,15466497,15597569,15794177,15859713,15925249,16056322,16711681,17235969,17301505,17760257,17825793,17891329,18087937,18284545,18546689,19202049,19988481,20119553,20250625,20316161,20381697,20512769,20578305,20774913,21102593,21495809,21692417,22216705,22478849,22544385,22609921,22937601,23199745,23527425,23592961,24117249,24182785,24379393,24903681,25100289,26017793,26476545,27066369,27983873,28049410,45547521,49545217,56229889,57147398,57737217,58130433,60293122,60882945,61276161,61407233,61734913,61931521,62193665,62390273,63045633,64684033,65273857,66453505,66519041,67502087,67698689,69206025,69533698,69992449,70254593,70713345,72744961,74907649,75104258,76087299,76939266,77070339,77201409,77856770,78381064,78446593,78512130,79953922,80281602,80412673,81002498,81068035,81264642],"getcomponents":[10747905],"gcnew":[27787265,30474241,30932993,34603009,38862849,54591489,78184449,78249985],"getint64":[7340033,9895937,30146564,32047108,76349441,77529089],"gettype":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,57278466,63963138,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"getint32":[7340033,9895937,28573700,29425668,76349441,77529089],"getproperty":[2097154,2752514,2818050,3276802,3473410,3538946,3997698,4390914,4456450,4521986,4784130,4980738,5570562,5963778,9699333,11141125,15007749,20643845,22413318,25559045,25690118,26345477,46268418,46661634,54329346,57081858,73138178,73269250,74645506,74973186,75497474,75694082,75956226,76283906,77135874,77987842,78184450,79495170,80084994,81199106],"getenumerator":[3211265,9175041,76414977],"generic":[6356993,7733249,7929857,8323073,8454145,8585217,8912897,8978434,9568257,9961473,10158081,10223617,10354693,10420225,10747905,10551297,10878977,11075585,11599873,11665409,11730945,11862017,11927553,12124161,12386305,12517377,12713985,12845057,12910593,13631489,13893633,13959170,14221313,14286849,14352386,14417921,14876673,15204353,15335425,15466497,15794177,15925250,16711682,16973825,17760258,17891329,17956865,18874369,19005441,19136513,19398657,20250625,20381697,20512770,20905985,21102593,21692418,22020097,22544386,22609921,23199746,24117250,24903682,25231361,26017793,26476545,26935297,27066369,27787265,27983873,30474241,30605313,30932993,31850497,32178177,32768001,33882113,34603009,37617665,37814273,38862849,40566785,41615361,42139649,43712513,44630017,51118081,54591489,58916865,64290817,69861377,70909953,72417281,73531393,74514433,75431937,75890689,76742657,77266946,78053377,78184449,78249985,78577666,78643201,79036417,80478209,80609281],"getmetaobject":[3342337,5963777,80084993,80543745],"getbytes":[2818049,3276801,3473409,3997697,4390913,14090244,17432580,73138177,74645505,75497473,77135873,78184449],"getdynamicmembernames":[3342337,5963777,80084993,80543745],"getbyte":[7340033,9895937,30670852,32112644,76349441,77529089],"getpropertynames":[4456449,4784129,4980737,32243716,73269249,74973185,75694081]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_104.json b/docs/Reference/fti/FTI_104.json index 9ad6937a..7bc04574 100644 --- a/docs/Reference/fti/FTI_104.json +++ b/docs/Reference/fti/FTI_104.json @@ -1 +1 @@ -{"heapexpansionmultiplier":[38993921,51511300,58589185],"hitline":[524290,1048577,1179649,3801090,39321601,55902214,56688646],"hasmember":[3014657,6946821,55705601],"helplink":[45744129,58654721],"heapsizeviolationpolicy":[38404097,53346308,53936129,58261505],"hash":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849665,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"highest":[61145089],"handled":[12910593,52035585,56098817],"handler":[1900545,2097153,2162689,2228225,6750209,7012353,7733249,38010882,56229890,57212931,57671681,57933826],"help":[45744129,51511297,58654721],"heapsizelimit":[39911425,55640068,59244545],"heap":[4456449,4980737,7208961,26345473,27000836,27787265,29229060,38010881,38404099,38993925,39911429,42074115,49086467,49479683,49872897,50200583,50331651,51249155,51511302,51773442,52101121,52690949,52887555,53149697,53346306,53542913,53936135,54263809,55640067,55836673,56164353,56557569,58261508,58589189,59244549,60817412],"held":[458753,1245185,55836673],"hosts":[52690945,53149697,53542913,54263809],"host":[262145,1900545,2097153,2293766,2424833,2162689,2228225,3014657,3407897,3735565,4259849,4587533,5046303,5373953,6291469,6357005,6553613,6750209,6946817,7012353,7077892,7143438,7208973,7340033,7471108,7536653,7602181,7733249,7929860,7995397,8060936,8126478,8257543,8323076,8388609,8454151,8519683,8585221,8650756,8716301,8781825,8912903,8978445,9043975,9109507,9175041,9240580,9306118,9371651,9437198,9502724,9568263,9633795,9699335,9764868,9830409,9895941,9961475,10027011,10092549,10158083,10223620,10289159,10354696,10420231,10485767,10551299,10616840,10682375,10747907,10813442,10878984,10944519,11010050,11075591,11141127,11206663,11272194,11337735,11403265,11468802,11534339,11599874,11665415,11730947,11796482,11862018,11927554,11993090,12058631,12124162,12189703,12255247,12320769,12386306,12451842,12517378,12582919,12648449,12713988,12779522,12845057,12910601,13041668,13107202,13303812,13369345,13434883,13500421,13565961,13697028,13631493,13828106,13959171,14024705,14090242,14155778,14286853,14417923,14483460,14876674,14942210,15007749,15138820,15269893,15597570,15925250,16318465,16777217,16842753,17235970,17563649,17760258,18087938,18350081,18612225,18743298,19070978,19136516,19398666,19660802,19922948,19988482,20119555,20643842,20709380,20774913,21037061,21364737,21430276,21495809,21889028,22413313,22478849,22609924,23199749,23265281,23396355,23789573,24248325,25100293,26476545,30932996,31457284,31784963,32440323,32505861,32899073,33292297,33357827,33619971,33751043,34406403,34603011,34865156,35258377,35323907,35717123,35782659,36175875,36765701,37158916,37683206,38010890,39059462,40042497,40632326,41025537,41353219,41549825,42074118,42205190,43581442,43909126,44171265,44433411,44957702,45088775,45219843,45416449,45809665,46071810,46268422,46792705,47054849,47185922,47251457,47382529,47775750,48168961,48365569,48496642,48758785,49283074,49348609,49676289,49938433,50528257,50659331,50724865,51183617,51642369,51838977,52035585,52297729,52494339,52822018,53280770,54067219,54460417,55705601,56098817,56229890,56492034,56819713,57212930,57344001,57671682,57802754,57933826,58195988,58327059,58392595,58458113,58785824,58982401,59047942,59441154,59768857,59965445,60030977,60096531,60817427,60882963,61145093,61407251,61538323,61603859,61669377],"handle":[3407873,5046273,6750209,7012353,12910593,46596097,50397186,58785793,59768833,60948481],"hidehostexceptions":[61145089],"high":[39321601,55377921],"hostdata":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47775745,48496644,49283078,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"htm":[10616833],"heapsizesampleinterval":[38404097,52887556,58261505],"hostitemflags":[3735566,4587534,6291470,6357006,6553614,7208974,7536654,8716302,8978446,11927558,12320769,12648449,12713985,12845057,13041665,13107206,13303814,13369345,13500422,13697025,13828101,13959169,14024705,14090246,14155782,14286854,14417921,14483457,14876678,14942214,15007750,15138817,15269894,15597574,15925254,16777217,16842753,17235976,17563649,17760264,18087944,18350081,18612225,18743304,19070984,19136513,19398663,19660808,19922945,19988488,20119553,20643848,20709377,20774913,21037064,21364737,21430273,21495809,21889025,22413313,22478849,22609928,23199752,23265281,23396353,24248328,25100296,31064068,32047108,32440321,33292292,33423364,33619969,34209796,34603009,35258372,35717121,38010881,58195982,58327054,58392590,59965444,60096526,60817422,60882958,61407246,61538318,61603854],"hostfunctions":[3407874,5046313,8257537,8388609,8519681,8912897,9043969,9109505,9175041,9306113,9371649,9502721,9568257,9633793,9699329,9764865,9830401,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10878977,10944514,11075585,11141121,11206657,11337729,11403269,11534337,11665409,11730945,12058625,12189697,12255233,12582913,12910593,13565953,13828097,19398657,32899073,33357825,33751041,34406401,34865153,35323905,35782657,36175873,38010881,58785838,59768841],"hitcount":[524289,1179652,37617665,55115777,55902209,56033284],"http":[10616833,12910593],"hidden":[61145089],"holding":[31326209],"holds":[12255233,19857409,21692417,38010881,55836673],"hit":[524290,1048577,1179651,3801089,37617666,55115778,55902210,56033282,56688643],"hitlines":[37617665,55115777,56688644],"hostsettings":[38010881,45416450,46071809,46792705,47382529,60030982],"hos":[4718593,30605314,39976961,59965441,60948482],"hresult":[40501254,45744130,48365570,58458114,58654722],"handling":[12910593],"hint":[61145089],"handlers":[60817409,61407233,61538305,61603841],"hosttypeargs":[8126469,9437189],"honor":[13631489,16187393,23068673,23789569,50593794],"hands":[59965441],"halt":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,45678593,46268417,47775745,51904513,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"hierarchy":[51576833,52428801,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55246849,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,58982401,59047937,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60030977,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61079553,61276161,61407233,61472769,61538305,61603841],"hostwindow":[39059457,40632321,42205185,43909121,44957697,46268417,57344004,58392577,60096513,60882945,60948481,61407233,61538305,61603841],"hidedynamicmembers":[59965441],"hostexception":[61145089],"hosttypecollection":[262146,4259842,5046273,7077898,7143434,8060933,10813441,11010049,11272197,11468801,11599873,11796485,11862017,11993093,12124161,12386309,12451841,12517377,12779525,30932993,36765697,37158913,37683206,38010881,45809666,54067211,56426497,58785793],"hierarchical":[7143425,8060929,54067201]} \ No newline at end of file +{"handled":[15990785,73924609,74448897],"hint":[76939265],"handler":[1703937,2293761,2555905,2686977,7471105,7798785,9764865,45547522,68943874,70909955,72613889,73531394],"hitlines":[56819713,69271556,80347137],"heapsizeviolationpolicy":[59834369,70778884,72220673,75366401],"hierarchical":[7995393,9109505,74121217],"handle":[3538945,4521985,7798785,9764865,15990785,70582273,73465858,75956225,77987841,81133569],"hidden":[76939265],"hosts":[64094209,66584577,67829761,69402625],"hresult":[59703302,60358658,62455810,62980098,72548354,78905346,78970882],"hasdynamicproperty":[3801090,5242882,26411013,27459589,33226759,36634631,53411842,58851330,71303170,78577666],"hierarchy":[68943873,69992449,70909953,71172097,71368705,71761921,71958529,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76677121,76742657,77201409,77266945,77332481,77398017,77529089,77594625,77856769,77987841,78249985,78577665,78708737,78774273,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"hostexception":[76939265],"human":[4456449,4784129,4980737,24248323,73269249,74973185,75694081],"hitline":[393217,327681,1572866,4718594,49545217,69271558,80740358],"hostsettings":[45547521,54657026,63635457,65536001,67895297,69992454],"hash":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"holding":[54591489],"handling":[15990785],"host":[1376257,1703937,2293761,2424833,2490374,2555905,2686977,2883593,3342337,3538969,3735565,3801089,3866625,4325377,4456449,4522015,4784129,4980737,5111809,5242881,5373965,5439489,5701633,5767169,6422529,6946819,7012353,7471105,7733253,7798785,7929860,7995406,8060932,8192004,8323076,8388609,8454151,8519681,8585225,8716301,8781829,8847364,8912903,8978446,9109512,9175044,9306125,9371649,9502733,9568260,9633795,9699331,9764865,9830413,9961479,10027011,10092549,10158088,10223623,10289155,10354702,10420229,10485763,10551303,10616833,10747912,10813443,10878983,10944519,11010061,11075590,11141123,11206669,11272195,11337732,11403277,11468805,11534338,11599874,11665412,11730951,11796482,11862024,11927559,11993091,12058626,12124167,12255234,12386311,12451842,12517383,12582919,12648449,12713986,12779523,12845063,12910599,12976130,13041667,13107202,13172737,13238273,13303811,13369346,13434881,13500418,13565954,13631495,13697026,13762562,13828097,13893639,13959183,14024707,14221319,14286852,14352389,14417924,14745602,14811138,15073281,15138818,15204359,15335428,15400962,15466501,15597569,15794181,15859713,15925253,15990793,16711690,17235970,17301506,17760260,17825793,17891332,18087937,18284546,18219013,18546689,19005449,19202050,19660801,19988482,20119554,20250627,20316162,20381700,20512772,20578305,20774913,21102596,21495810,21692420,22216705,22478850,22544389,22609923,22937602,23199754,23265281,23461889,23527426,23592961,24117252,24182785,24248321,24379395,24772609,24903685,24969217,25034753,25100289,25493505,25559042,26017797,26214402,26345474,26411009,26476548,26542085,26673154,27000833,27066373,27131905,27459585,27590658,27721730,27983876,28180481,29163521,29687809,29753346,30539777,31457283,31522817,31653890,31981571,32243713,32505860,32636929,32899074,33161217,33226753,33423361,33554434,33619972,33685505,33882115,34013186,34406402,34471939,34668548,34734083,34799620,34996225,35061764,35127298,35323906,35454977,35782659,35913729,36110338,36438018,36503553,36634625,36765698,36962306,37158916,37355522,37617665,37814273,38010881,38141956,38469635,38600708,38666243,38928386,38993921,39321601,39780355,39845890,39911428,39976962,40370178,41091073,41615362,43384834,43450371,43646979,43712515,43974662,44957698,45154307,45285378,45547530,46596100,46661633,46727169,46792706,46923780,47120385,47579139,47775745,48300035,48562180,48693249,48824321,49152003,49348609,49479683,49610753,49676289,49872899,50069505,50200577,50397187,50462725,50855945,51118082,51707922,51773443,51838980,52035587,52166661,52494337,52690945,52887553,53411841,53739521,54329347,54657025,54722569,55050241,55181313,55377923,55574529,55705601,55902209,56033283,56557569,56754177,57147393,57606145,57737222,57802753,57868289,57999362,58064897,58130439,58523649,58654721,58851329,60030977,60162049,60293126,61210625,61407238,61472769,61734913,61865985,61931521,62062595,62193670,62324738,62390273,62455809,62652417,62717955,63045638,63176705,63635458,63832065,64159745,64552961,64618497,64684038,64815105,65273862,65536001,66322433,66519041,67043330,67305473,67371009,67502081,67567619,67895297,68288514,68419587,68943874,69009409,69074945,69140481,69206017,69533702,69992449,70713345,70909954,71303169,71827457,72024066,72417283,72548353,72613890,73269250,73400321,73531394,73728001,73924609,74121235,74317826,74448897,74514434,74776577,74907649,74973186,75104275,75235330,75300866,75431942,75563010,75694082,75890691,75956256,76087315,76349441,76677126,76742658,76808194,76939269,77266947,77529089,77660162,77791234,77856788,77987865,78053379,78381057,78446597,78512147,78577667,78643203,78708738,78905345,79036419,79364097,79626243,79822850,79953939,80281619,80412673,80478210,80543745,80609283,81002515,81068051,81264659],"hidehostexceptions":[76939265],"hostwindow":[57737217,62193665,63045633,64684033,65273857,69009412,69533697,75104257,79953921,80281601,81002497,81068033,81133569,81264641],"hosttypecollection":[1376258,2883586,4521985,7929866,7995402,9109509,11534337,11599873,11796481,12058625,12255237,12451841,12713985,12976133,13107201,13369349,13565953,13762565,15138821,43974662,45547521,46596097,50462721,51838977,55705602,74121227,75628545,75956225],"hidedynamicmembers":[78446593],"heapsizelimit":[55246849,73203716,77398017],"holds":[13959169,17563649,23724033,45547521,78249985],"hasmember":[3342337,8519685,80543745],"heapsizesampleinterval":[59834369,68354052,75366401],"handlers":[75104257,76087297,79953921,81264641],"hostitemflags":[3735566,5373966,8716302,9306126,9502734,9830414,11010062,11206670,11403278,13172737,13238273,13434881,13500422,13697030,13828097,14024705,14286849,14352390,14417921,14745606,14811142,15073281,15335425,15400966,15466502,15597569,15794182,15859713,15925254,16711685,17235974,17301510,17760257,17825793,17891334,18087937,18284552,18546689,19202054,19988488,20119560,20250625,20316168,20381697,20512769,20578305,20774913,21102600,21495816,21692417,22216705,22478856,22544392,22609921,22937608,23199751,23527432,23592961,24117249,24182785,24379393,24903688,25100289,26017800,26476545,27066376,27983873,45350916,45547521,47710212,48168964,49152001,50855940,51183620,51773441,52035585,54722564,55377921,75104270,76087310,77856782,78446596,78512142,79953934,80281614,81002510,81068046,81264654],"hitcount":[393220,1572865,56819713,66715652,80347137,80740353],"hit":[393219,327681,1572866,4718593,56819714,66715650,69271555,80347138,80740354],"hostdata":[57737217,57999364,58130433,60293121,61407233,62193665,63045633,64684033,65273857,68288518,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"hosttypeargs":[8978437,10354693],"held":[524289,1441793,78249985],"hands":[78446593],"highest":[76939265],"helplink":[60358657,62980097,72548353,78970881],"htm":[10747905],"halt":[57737217,58130433,58982401,60293121,61407233,62193665,63045633,64684033,65273857,65601537,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"honor":[15269889,18219009,26542081,26804225,78118914],"hos":[9240577,41746434,52232193,78446593,81133570],"high":[49545217,74776577],"hostfunctions":[3538946,4522025,8388609,8585217,8912897,9568257,9633793,9699329,9961473,10027009,10158081,10223617,10289153,10485761,10616833,10747905,10813441,10551297,10878977,10944513,11075585,11141121,11272193,11337729,11468801,11665409,11730945,11862017,11927553,11993089,12124161,12386305,12517377,12582914,12648453,12779521,12845057,12910593,13041665,13631489,13893633,13959169,14221313,15204353,15990785,16711681,19005441,23199745,43646977,45154305,45547521,46923777,47579137,48300033,49479681,52887553,54329345,75956270,77987849],"help":[60358657,62980097,70975489,72548353,78970881],"heap":[6094849,7077889,11010049,37486593,39059460,39452676,45547521,50724865,55246853,59834371,60293123,61014021,64094213,66191361,66584577,66977795,67829761,68354051,68747267,69402625,69730305,70778882,70844419,70975494,71041031,72155137,72220679,72810499,73203715,73859073,74383362,75366404,76087300,76152837,77398021,78249985],"http":[10747905,15990785],"heapexpansionmultiplier":[61014017,70975492,76152833]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_105.json b/docs/Reference/fti/FTI_105.json index af5f313e..0006d865 100644 --- a/docs/Reference/fti/FTI_105.json +++ b/docs/Reference/fti/FTI_105.json @@ -1 +1 @@ -{"implementers":[3014657,4521985,13434881,55705601,60227585],"invocations":[13434881],"int":[7602179,8388612,9306116,9502724,9568259,10354692,10485761,11337729,12189697,14811140,15663108,15728641,15794177,16580609,17170436,19202049,23527428,24182788,25231364,25296900,26214404,27590660,27656196,28835844,29163524,29425668,29622276,29884420,30015492,39583747,40501252,41680901,42991620,43384835,45023235,50987011,52690949,53149701,53542917,54263813,55181316,55574531,55771141,56885252,60751873],"immediate":[45744129,58654721],"interchangeable":[12255233],"importers":[54853633],"intvalue":[9043969],"indentation":[47710209,48234497,52559873],"idynamicmetaobjectprovider":[3407882,5046282,8519686,9109509,9633798,9961478,10027014,10158086,10747910,11730950,33357826,34865153,35323906,35782658,58785802,59768842,59965441],"iarray":[2621441,3211265,15728641,15794177,16580609,16711681,17432577,17498113,18022401,18219009,18481153,19202049,37027841,37421057,37814273,37945345,44040193,44564481,44826625,45350913,59375617,59834369],"ijavascriptobject":[3145730,37027842,37814274,38535169,38797314,39518210,40239106,41156610,45940737,46399489,59375622,59834374,60162054,60293125,60424198,60751878],"iscriptengineexception":[38010881,39845889,40501249,41025537,41615361,42139649,42729473,43646977,43712513,44236801,44892161,45481985,46006273,46727169,47513601,47841281,48103425,48365570,48627713,48693249,49020929,49545217,50135041,58458117,58654724,58982404],"idictionary":[2752519,16121857,17039361,17694721,19595265,42663937,43253761,46858245,49152001,50003973,56426500,57540624],"ihost":[4718593,30605313,46596097,50397185,60948481],"immutable":[2490369,12976129,38010881,46137345,55312386],"interval":[38404098,42074114,50987010,51249154,52887554,55574530,58261506,60817410],"ilist":[13828097,19398657,61341697],"initialize":[3014657,4521985,11272193,11796481,12386305,12779521,55705601,60227585],"indexer":[13828097,19398657],"indexers":[13828098,19398658],"indexed":[2621443,2686979,2818051,3145731,3211267,3670019,4128771,4521987,5177347,14811137,15663105,17170433,23527425,24182785,25296897,35913729,35979265,36241409,36438017,36700161,36896769,36962305,37027841,37289985,37814273,38797313,39518209,40239105,41156609,41680897,43450369,47120385,47644673,48824321,49414145,55771137,58916868,59375620,59834372,60162052,60227588,60293124,60424196,60751876,61014020],"itypedarray":[2818050,3670018,16056321,16449537,17301505,38535170,40239106,41156611,46989313,60424197,60751894,61341697],"iscriptableobject":[2424834,13434881,38010881,56426500,57802757,59768836],"increases":[51511297],"interfere":[61669377],"instances":[13631489,23461889,23789569,24051713,24444929,24772609,24969217,25362433,25493505,25559041,25821185,25952257,26017793,26083329,26411009,26542081,26607617,26804226,26935297,27066369,27131905,27394049,27525121,27656194,27721729,27983873,28180481,28311553,28377089,28573697,28704769,28901378,29032449,29294593,29491201,29556737,29622274,29753345,30146561,30343169,30736385,31391745,31981569,33095681,38010881,51445761,53805057,54329345,55312386,55967745,56295425,56623105,60817410],"istransient":[50593793],"iterates":[2752513,57540609],"icomparablet":[8912898],"ienumerable":[2752513,19005447,42991622,43515910,56426504,56885254,57409542,57540617],"ipropertybag":[2752514,3407878,5046278,9371654,10551302,10944513,11534342,33357826,35323906,35782658,38010883,46858242,56426501,57540613,57999361,58785798,59768838],"implement":[13828097,19398657,57540609,59965441],"isreadonly":[5373957,5898245,16318469,16973829,46858241,57540609],"invalid":[60686338],"interfaces":[13631489,14548993,16187393,16908289,22151169,22740993,23068673,23789569,23920641,24641537,24969217,25362433,26673153,26738689,27459585,27590657,28180481,28508161,28639233,28901377,28966913,29097985,29163521,29425665,29622273,29884417,29949953,30146561,31129601,31391745,31850497,33161217,33554433,33685505,34275329,34734081,35127297,36044801,36306945,36569089,37224449,37486593,37879809,38010881,38207489,38469633,38535169,39190529,39976961,40566785,45613057,53477377,59113473,60751873],"introduced":[43450369,49414145],"icollection":[2752522,42663943,43253767,46858246,56426500,57540628],"itemname":[11927557,12320773,12648453,12845061,13041669,13107205,13303813,13369349,13500421,13697029,13828101,13959173,14024709,14090245,14155781,14286853,14417925,14483461,14876677,14942213,15007749,15597573,15925253,16777221,16842758,17235974,17563653,17760262,18087942,18350085,18612230,18743302,19070982,19136518,19398662,19660806,19922950,19988486,20119558,20643846,20709382,20774918,21364742,21495814,22413318,22478854,22609926,23199750,23265286,23396358,24248326,25100294],"instantiation":[3407873,5046273,9109508,10092546,10944513,11141121,34865153,51707905,52625409,58785793,59768833,61407233,61538305,61603841],"import":[7143425,7602178,8060929,8126466,8323074,8454145,9306113,9437186,9699329,9830401,10289153,10420225,10485761,10616833,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12255233,12582913,12845058,12910593,13107201,14090242,14942209,15925250,16777217,17563650,17760257,18350081,18612226,18743298,19660801,20643842,21364737,22413314,23265281,38010881,39059457,40632321,41549825,42074113,42205185,43909121,44957697,45088769,46268417,47251457,47775745,50528258,51838978,58195969,58327041,58392577,58785793,60096513,60817409,60882945,61407233,61538305,61603841],"including":[13631489,23789569],"iscriptobject":[2621449,2686985,2818057,3145737,3211273,3670025,4128770,5177353,14614529,14811137,15335425,15400961,15663105,15990785,16646145,17170433,17891329,21626881,22282241,23003137,23527425,23592961,24117249,24182785,24903681,25296897,35913729,36241409,36700161,36962305,37027845,37814277,38010881,38797317,39518213,40239109,40960001,41156613,41680897,42401793,42991617,43515905,47120389,48824322,55050241,55771137,56360961,56885249,57409537,58916869,59375634,59834386,60162066,60227588,60293138,60424210,60751890,61014034],"invokewithdirectaccess":[2621442,2686978,2818050,3211266,3670018,15728645,15794181,16580613,19202053,37421058,37945346,59375618,59834370,60162050,60424194,60751874],"invalidoperationexception":[58654725],"iscomparable":[8912897],"ignorecase":[6946822],"indices":[9961478,10158086,10747910,13828097,19398657,37027841,37814273,38797313,39518209,40239105,41156609,42991618,47120385,47644673,48824321,56885250,58916865,59375617,59834369,60162049,60227585,60293121,60424193,60751873,61014017],"idisposable":[2621441,2686977,2818049,3145729,3211265,3670017,3735553,4128769,5177345,8257538,24576001,24707073,30212097,30539777,58195972,58261508,58327045,58392580,58916869,59375621,59703300,59834373,60162053,60227588,60293125,60424197,60751877,60817412,61014021,61407236],"instead":[13828097,19398657,22151172,42336257,45875201,47906817,54001665,54132740,54263812,59572225,59637761],"iscriptengine":[3735554,11927553,12320769,12648449,12713985,12845057,13041665,13107201,13172737,13238273,13303809,13369345,13500417,13697025,13631489,13762561,13893633,13828097,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14680065,14745601,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15466497,15532033,15597569,15859713,15925249,16187393,16777217,16842753,16908289,17235969,17367041,17563649,17760257,17956865,18087937,18350081,18612225,18743297,18939905,19070977,19136513,19398657,19464193,19529729,19660801,19922945,19988481,20119553,20250625,20316161,20447233,20643841,20709377,20774913,20971521,21037057,21102593,21233665,21364737,21430273,21495809,21757953,21823489,21889025,22085633,22216705,22413313,22478849,22609921,22806529,23068673,23199745,23265281,23396353,23789569,23920641,23986177,24248321,24641537,25100289,27197442,27918338,28246018,28770306,30867458,31064065,31588353,32047105,32112642,32440321,32964609,33292289,33619969,34078721,34668545,35061761,35586049,38010881,40042497,40828929,41353217,42336257,42467329,42795009,43057153,43450369,43581441,43778049,44105729,44171265,44367873,44433409,44630017,45154305,45219841,45678593,45875201,46333953,46465025,46530561,47054849,47185921,47316993,47579137,47710209,47775746,47906817,48168961,48234497,48300033,48496641,48758785,48889857,48955393,49283073,49348610,49414145,49610753,49676289,49741825,49938433,50528257,50659329,50790401,51052545,51183617,51314689,51642369,51838977,51904513,52297730,52953089,53411841,53805058,54001665,54329345,54525953,55967746,56295425,56623106,56819713,58195972,58327045,58392580,60817412,61407236],"isync":[4784129,30277633,31522817,32309249,32636929,33161217,33226753,33685505,33947649,34144257,34734081,35454977,36306945,37224449,38207489,38600705,57016321],"intptr":[2621442,2686978,2818050,3211266,3670018,15728645,15794181,16580613,19202053,37421058,37945346,50397190,59375618,59834370,60162050,60424194,60751874],"invokes":[2621445,2686981,2818053,3145731,3211269,3407876,3670021,3735553,4128771,4521987,4587521,4784130,5046275,5177347,6291457,6356993,6553601,6881282,7208961,7536641,8388610,8716289,8978433,9306114,9568258,9830402,12910593,14221313,15400961,15728642,15794178,15990785,16580610,16646145,18874370,19202050,21757953,22282241,23003137,23592961,30474242,31260674,32899074,33226753,33947649,37421058,37945346,38273026,38600706,39649282,43122690,45678593,47054849,51642369,51904513,56492033,57016322,58195969,58327041,58392577,58720258,58785795,58916867,59375621,59768836,59834373,60096513,60162053,60227587,60293123,60424197,60751877,60817409,60882945,61014019,61407233,61538305,61603841],"invoker":[851969,1507329,4784129,6881281,30277633,30474241,31260673,31522817,31916033,32309249,32636929,33161217,33226753,33685506,33947649,34144257,34734082,35454977,35520513,36306945,37224450,38207490,38600705,39124994,39649281,40173570,45613057,50069505,57016321,58392578,58720257,60096514,60882945],"iarraybuffer":[2621442,15728641,16580609,17432577,18022401,18219009,37027842,37945345,38535169,44040198,45350913,59375621,61341697],"ignores":[10223617],"identical":[24969217,25362433,25493505,26083329,26411009,26542081,26607617,26935297,27066369,27983873,28049409,28311553,28377089,28573697,29294593,29491201,29949953,30343169,30736385,31981569,32178177,34013185,35848193,37879809],"invoked":[3407878,5046278,6815745,7405569,7864321,8847361,9764865,10092545,10223617,10878977,11141121,12910593,13565953,14221313,19791873,21757953,33751042,34865154,36175874,41549825,47251457,58785798,59768838,60817409],"ignored":[10223617,25362433,26411009,27066369,27983873,28049409,28377089,28573697,29294593,30343169,31981569,34013185,37879809,59179009,61145095,61669378],"iequality":[5898241,6160385,16973825,17629185],"include":[5242881,10616833,13631489,23789569,49610753,50790401],"importable":[44433409,50659329],"inheritance":[51576833,52428801,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55246849,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,58982401,59047937,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60030977,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61079553,61276161,61407233,61472769,61538305,61603841],"icomparable":[8912898],"implementation":[3014668,4521996,5242881,18153473,19005441,30474241,31260673,31916033,35520513,38010888,39059457,39976961,40566786,40632321,41549825,42205185,43909121,44433409,44957697,46268417,47251457,50069505,50659329,50921473,55705612,56229889,56426497,57671681,57999361,58195969,58392578,58523649,58720257,60096514,60227597,60489729,60882947,61407233,61538305,61603842],"inherits":[53477377,54067201,54722561,55312385,55705601,57212929,57540609,57933825,57999361,58327041,58392577,58523649,58654721,58785793,58851329,58916865,58982401,59113473,59375617,59506689,59834369,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60751873,60817409,60882945,61014017,61407233,61538305,61603841],"inherited":[131073,262145,327681,1572870,1638406,1703942,1769485,1835015,1900550,1966086,2031622,2097158,2359302,2490376,2555912,2621450,2686991,2752522,2818063,2162695,2228230,2883592,3014676,3145738,3211274,3276806,3342344,3407878,3473414,3538952,3604486,3670031,3735553,3801094,3866629,3932166,3997702,4063238,4128769,4259853,4325382,4390917,4456454,4522004,4587525,4653062,4849672,4980742,5046319,5111814,5177354,5439494,6291513,6357049,6553657,6881286,7209011,7536697,7798789,8716340,8978490,34537476,37027847,37814279,38797322,38928385,39059483,39518213,40239114,40632347,41156619,42008578,42074134,42205211,42598402,43909146,44957722,45744136,45809668,46137345,46268439,46858245,46923778,47120389,47972353,51576838,53084166,53477386,53673990,53870598,54067218,54722570,55115782,55312393,55705620,55836678,55902214,56229894,56426502,56492037,56754182,57212935,57540623,57671686,57933830,57999378,58130438,58195973,58261510,58327041,58392659,58523655,58589190,58654735,58720262,58785839,58851334,58916865,59113481,59244550,59310086,59375633,59506698,59703302,59768838,59834385,59899910,60096595,60162073,60227604,60293135,60358665,60424217,60489734,60555269,60751898,60817481,60883019,61014031,61407316,61472773,61538388,61603925],"iserializable":[18415617],"ihostwindow":[4718594,30605313,39976961,46596098,50397185,57344007,60948485],"initonly":[1114113,1376257,1441793,1507329],"information":[3735554,4587522,4980741,6029313,6291458,6356994,6488065,6553602,7208966,7274497,7471105,7536642,7929857,7995393,8126465,8388609,8454145,8585217,8716290,8978434,9240577,9437185,9502721,9895937,10092545,10354689,11141121,11927553,12320769,12648449,12713985,12845057,13041665,13107201,13172737,13303809,13369345,13500417,13697025,13893633,13959169,14024705,14090241,14155777,14286849,14417921,14483457,14548993,14745601,14876673,14942209,15007745,15073283,15138817,15204354,15269889,15532033,15597569,15925249,16252929,16777217,16842753,17104897,17235969,17563649,17760257,17825793,18087937,18153473,18350081,18546689,18612225,18743297,18939906,19005441,19070977,19136513,19333121,19464195,19660801,19726337,19857409,19922945,19988481,20054017,20119553,20447233,20512769,20643841,20709377,20774913,21037057,21233665,21299201,21364737,21430273,21495809,21692417,21889025,21954561,22085633,22413313,22478849,22609921,22806529,23199745,23265281,23396353,23461890,24248321,24641537,25100289,25821186,26345474,26607618,27787266,28049409,28442626,30343170,30998530,32178178,32374785,33488897,34078721,35061761,35192835,36634625,37355521,37748737,38010882,38666244,39256065,39321601,39452673,40435713,41549826,42336257,45285377,45744129,45875201,47251458,50003971,50200577,51576833,51970049,52166658,53739521,53936129,57278466,58195970,58261509,58327042,58392578,58654721,59244545,59310081,59637761,59703297,60096514,60489729,60686337,60817414,60882946,61407234,61538306,61603842],"icustomattributeprovider":[5242886],"iterable":[2949122,18153474,19005448,61079554],"idata":[2686977,38797313,60162049],"issues":[57147393],"interrupts":[3735553,4587521,6291457,6356993,6553601,7208961,7536641,8716289,8978433,17956865,20971521,28770305,44367873,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"isnull":[3407873,5046273,9175044,42336258,45875202,58785793,59637761,59768833],"ityped":[2818049,3670017,16056321,16449537,17301505,40239105,41156609,46989313,60424193,60751873],"internal":[43057154,46465026,47382529,60817409],"iwindows":[5177345,31195137,47120385,61014017],"isyncinvoker":[1507333,4784130,30277633,30474241,31260673,31522821,31916033,32309253,32636929,33161221,33226753,33685509,33947649,34144261,34734085,35454981,35520513,36306949,37224453,38207493,38600705,39059457,39124997,40173573,40566786,40632321,42205185,43909121,44957697,45613061,46268417,50069511,57016325,58392583,58720261,60096519,60882946,61407233,61538305,61603841],"inside":[3014657,4521985,55705601,60227585],"item":[2752513,10944515,11927554,12320769,12648449,12713985,12845057,13041665,13107202,13303810,13369345,13500418,13697025,13828099,13959169,14024705,14090242,14155778,14286850,14417921,14483457,14876674,14942210,15007746,15138817,15269890,15597570,15925250,16777217,16842753,17235970,17563649,17760258,18087938,18350081,18612225,18743298,19070978,19136513,19398659,19660802,19922945,19988482,20119553,20643842,20709377,20774913,21037058,21364737,21430273,21495809,21889025,22413313,22478849,22609922,23199746,23265281,23396353,24248322,25100290,34537473,36700163,36896771,37027842,37814274,38797314,39518210,40239106,41156610,41680900,42401796,43188225,45809665,46858241,47120386,47644674,48824322,49152005,54067201,55771141,56360965,56426497,57540610,57999361,58916866,59375618,59834370,59965441,60162050,60227586,60293122,60424194,60751874,61014018,61145089],"iarraybufferview":[2686981,2818053,3211266,3670021,15794177,16711681,17498113,18481153,19202049,37421057,37814274,38535169,38797315,40239107,41156611,44040193,44564481,44826625,59834373,60162060,60424204,60751884],"idisposablet":[8257538],"iwindowsscriptobject":[5177346,31195137,39976961,47120386,61014021],"invoking":[3014657,4521985,8388609,13631489,13828097,19398657,23789569,45088769,52494339,55705601,58195969,60227585],"interactive":[47710209,48234497,52559873],"inotifypropertychanged":[589825,56426500],"info":[1703937,4456449,5767169,5832705,15073281,15204353,18415622,18939905,19464193,19857414,21692422,21954565,23461889,23658502,25821185,26345473,26607617,27787265,28049409,28442625,30343169,30998529,32178177,36634626,39256065,39911425,40304641,41877505,45285381,46661633,47251457,49086465,49479681,49872897,50003973,50331649,51118081,51576833,51707905,51970054,52166661,52232193,52625409,53739521,55640065,56164353,56557569,57278469,59244545,59310081,60489730],"iconvertible":[9699333,10289157,10420229,10485765,10682373,11075589,11206661,11337733,11665413,12058629,12189701,12582917],"immutablevalueattribute":[2490370,12976133,38010881,46137346,55312392],"iproperty":[2752513,9371649,10551297,11534337,46858241,57540609],"instantiate":[8650753,11927553,12320769,12648449,13369345,14024705,14155777,14876673,15597569,16842753,17235969,18087937,19070977,19988481,20774913,21495809,22478849],"increment":[3014657,4521985,55705601,60227585],"inner":[41025537],"imports":[3735560,4587528,5046280,6291464,6357000,6553608,7077889,7143426,7208968,7536648,7602177,8060930,8126466,8323074,8454145,8716296,8978440,9437186,11141121,12845057,13107201,14090241,14942209,15925249,16777217,17563649,17760257,18350081,18612225,18743297,19660801,20643841,21364737,22413313,23265281,30932994,31457283,32047112,34209800,58195976,58327048,58392584,58785800,59179009,60096520,60817416,60882952,61145089,61407240,61538312,61603848],"individual":[3014657,4521985,47316993,53411841,53477377,55705601,59113473,60227585],"iasyncenumerable":[18153477],"iequalitycomparer":[5898245,6160389,16973829,17629189,31719426,41091074,48431110,56426498,57999362],"idynamic":[8519681,9109505,9633793,10027009],"iterator":[61210625,61341698],"insensitive":[6946817,61145089],"interrupt":[3735553,4587521,6291457,6356993,6553601,7208963,7536641,8716290,8978433,17956869,20971526,26869763,28770312,38404097,42074113,44367879,52035587,56098819,58064897,58195969,58261505,58327041,58392577,59441155,60096513,60817412,60882946,61407233,61538305,61603841],"invokemethod":[2621441,2686977,2818049,3145729,3211265,3670017,4128769,4521985,5177345,16646148,23592965,58916865,59375617,59834369,60162049,60227585,60293121,60424193,60751873,61014017],"invocable":[8126465,8454145,9437185,12713985,13041665,13500417,13697025,14286849,14483457,15007745,15138817,15269889,19136513,19922945,20709377,21037057,21430273,21889025,23199745,24248321,25100289,52822017,53280769],"invocation":[14221313,15400962,15990786,16646146,21757953,22282242,23003138,23592962,52494337],"instance":[393217,458753,655361,786433,851970,1114113,1245185,1376257,1441793,1507334,1572865,1638401,1703940,1769473,1835009,1900545,1966081,2031617,2097153,2293762,2359297,2490373,2555909,2162689,2228225,2883589,2949129,3014658,3276801,3342341,3407885,3473409,3538949,3604481,3801092,3866625,3932161,3997697,4063233,4194305,4259841,4325377,4390913,4456449,4521986,4587521,4653057,4849669,4980743,5046285,5111809,5308417,5439489,5570561,5636097,5701633,6029313,6291457,6356993,6488065,6553601,6619137,6881281,7077889,7143425,7208961,7274497,7340033,7471106,7536641,7667713,7798785,7929859,8060929,7995394,8126465,8192001,8257537,8323074,8585219,8650754,8716289,8781825,8912897,8978433,9043969,9240578,9306113,9437185,9568257,9699330,9830401,9895938,10289154,10354689,10420226,10485762,10616833,10682370,10878977,10944513,11075586,11141122,11206658,11337730,11403265,11665410,12058626,12189698,12255233,12582914,12910593,12976129,13565953,16252931,17104899,17825795,18153474,18546691,19005442,19267585,19333123,19726339,20054020,20512771,20578305,20840449,20905985,21168129,21299203,21561345,21954561,22151170,22347777,22740994,22872065,23330817,23855105,24313857,24510465,25034753,25231362,25427969,25690113,25886721,25952259,26214401,26673155,26738690,26804227,27328513,27459587,27590659,27656195,27852802,28114946,28180484,28508162,28639235,28835842,28901380,29097987,29163522,29360130,29425667,29622276,29687810,29818882,29884419,30015490,30408706,31129603,31326211,31522818,31850499,32243713,32309250,32505858,32571393,32702465,32833537,33161219,33554434,33685507,33816588,34144258,34275330,34471938,34734083,34799617,35127298,35454978,35651592,36044802,36306947,36503553,37224451,37486594,37552130,38207491,38338572,38469634,38404097,38862856,39059457,39124997,39190530,39321604,39387137,39976963,40173573,40370182,40566786,40632321,41287685,41418754,41811973,42074114,42205185,43712513,43778049,43909121,44957697,45088769,45613059,45744130,46202881,46268417,47513601,47775745,47841281,48365569,48955393,49741825,50921473,51576836,52035585,53084162,53280773,53477382,53673985,53870594,54067201,54657025,54722566,54984705,55115777,55246849,55312390,55705603,55836674,55902212,56098817,56229889,56426497,56492035,56754177,57212929,57671681,57933825,57999361,58130434,58195972,58261525,58327041,58392584,58458113,58523650,58589186,58654724,58720259,58785806,58851330,58982402,59047938,59113479,59179009,59244545,59310082,59506701,59703297,59768848,59899905,60096520,60227586,60358663,60489730,60555267,60817425,60882947,61079561,61145090,61407241,61472771,61538313,61603844,61669378],"identify":[9961473,10158081,10747905],"imported":[7077890,7602177,8060929,8126466,8323073,8454146,9437186,42795009,48889857],"items":[2752513,57540609,59965441],"inherit":[5242886,51576833,53477377,54067201,54722561,55312385,55705601,55902209,57212929,57933825,57999361,58392577,58523649,58654721,58785793,58851329,58982401,59113473,59506689,60096513,60227585,60358657,60489729,60817409,60882945,61407233,61538305,61603841],"inference":[13828097,19398657,47906817,54001665],"iteration":[2949122,18153474,19005442,61079554],"invoke":[2621441,2686977,2818049,3014658,3145729,3211265,3670017,3735553,4128769,4521987,4587521,4784130,5177345,5242881,6291457,6356993,6553601,6881282,7208961,7536641,8716289,8978433,12255233,12910594,13828097,14221318,15400966,15728642,15794178,15990785,16580610,16646146,19202050,19398657,21757960,22282247,23003137,23592962,30474249,31260681,33226759,33947655,37421057,37945345,38600707,39649283,45154305,51314689,55705602,57016322,58195969,58327041,58392577,58720258,58916865,59375617,59834369,60096513,60162049,60227587,60293121,60424193,60751873,60817409,60882945,61014017,61407233,61538305,61603841],"index":[2752513,3014660,4521988,13828097,14811142,15663110,16056327,16711681,17170438,17301511,17432577,17498113,18219009,19398657,23527430,24182790,25296902,39059457,40632321,41680903,42074113,42205185,43450370,43909121,44957697,45088769,46268417,47775745,49414146,55705604,55771143,57540609,58195969,58327041,58392577,60096513,60227588,60817409,60882945,61407233,61538305,61603841],"indicates":[1703937,2490371,2555907,2883587,3342339,3538947,3801089,4849667,39845889,41615361,44892161,45481985,45744130,46202882,48365570,48627713,49020929,50593794,51576833,53477379,54722563,54919169,55312387,55902209,57081857,58458114,58654722,58982402,59113475,59506691,60358659,60686341,61210628,61341704],"identifier":[3735568,4587536,6291472,6357008,6553616,6815751,7208976,7405575,7536656,7864327,8323074,8650754,8716304,8847367,8978448,11927555,12320771,12648450,12845059,13107202,13369346,14024707,14090242,14155778,14876674,14942211,15597571,15925251,16777218,16842755,17235970,17563650,17760258,18087938,18350083,18612227,18743298,19070979,19660803,19988483,20643843,20774914,21364738,21495810,22413314,22478851,23265283,31064072,32047112,33423368,34209800,34734083,35127299,36044802,37617666,38207491,38928385,39124993,39190531,40173569,41287681,41811969,42008577,42598401,45613058,46137345,46923777,47972353,53477377,54722561,55115778,55312385,57475073,57737217,58195984,58327056,58392593,59113473,59506689,60096529,60358657,60817424,60882960,61407249,61538321,61603856],"interrupted":[3080193,20840449,21692417,22020097,22675457,23658497,24379393,34799617,38010881,46202881,47513601,48103425,48627713,49020929,49545217,50135041,52035586,56098818,58982402],"instantiating":[54853633,55443457],"iscriptable":[2424833,13434881,57802753],"initvalue":[12255239],"iasyncenumerator":[18153474],"infrastructure":[3014657,4521985,43646977,45744129,46202881,46727169,47906817,48365569,50135041,54001665,55705601,58458113,58654721,58982401,60227585],"inspector":[23134210,23724033],"intended":[3014660,4521988,13631489,23789569,47382529,47710209,48234497,52559873,55705604,60227588],"idispatchex":[61669377],"isdefaultattribute":[2490369,2555905,2883585,3342337,3538945,4849665,53477377,54722561,55312385,59113473,59506689,60358657],"initializing":[39321602,39976961,59179009,61145089,61669377],"includes":[9830401,13631491,13828097,19398657,23789571,47710209,48234497,52559873],"invokeasfunction":[2621441,2686977,2818049,3145729,3211265,3670017,4128769,4521985,5177345,15990788,23003142,58916865,59375617,59834369,60162049,60227585,60293121,60424193,60751873,61014017],"istypeobj":[3407874,5046274,9764870,10223622,33751042,58785794,59768834],"iscript":[3735553,4128769,11927553,12320769,12648449,12713985,12845057,13041665,13107201,13172737,13238273,13303809,13369345,13500417,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15859713,15925249,15990785,16187393,16646145,16777217,16908289,17170433,17367041,17563649,17891329,17956865,18350081,31064065,32047105,32440321,33292289,33619969,34078721,34668545,35061761,35586049,35913729,36241409,36700161,36962305,39845889,40042497,40501249,40828929,40960001,41025537,41353217,41615361,41680897,42139649,42336257,42401793,42729473,42991617,43057153,43515905,43581441,43646977,44105729,44433409,45154305,45678593,46530561,47316993,47710209,47775745,47841281,47906817,48168961,48300033,48365569,48496641,48693249,48824321,48889857,48955393,49414145,49610753,49938433,50528257,51052545,51642369,58327041,58458113,58916865],"ijava":[3145729,39518209,45940737,46399489,60293121],"implemented":[38928385,42008577,42598401,46137345,46923777,47972353,53477377,54722561,55312385,59113473,59506689,60358657,60751873],"introduce":[61145089],"initializes":[4915201,5308417,5373953,5570561,5636097,5701633,5767169,5832705,5898241,6160385,6619137,7340033,7667713,8192001,8781825,11272193,11403265,11796481,11993089,12386305,12779521,12976129,16318465,16384001,16973825,17629185,19267585,19857409,20185089,20381697,20578305,20840449,20905985,21168129,21561345,21692417,21954561,22020097,22151169,22347777,22675457,22740993,22872065,23330817,23855105,24313857,24510465,25034753,25231361,25427969,25690113,25886721,26214401,26673153,26738689,27328513,27459585,27590657,27852801,28114945,28508161,28639233,28835841,29097985,29163521,29360129,29425665,29687809,29818881,29884417,30015489,30408705,31129601,31522817,31719428,31850497,32243713,32309249,32571396,32702465,32833537,33161217,33554433,33685505,33816588,34144257,34275329,34471938,34734081,34799620,35127297,35454977,35651592,36044801,36306945,36503553,37224449,37486593,37552130,37683205,38207489,38338572,38469633,39124997,39190529,40173573,41091076,41287685,41418754,41811973,41877506,45613057,51576834,53084161,53477377,53870593,54067205,54722561,55312385,55705601,56426500,57999364,58130433,58195970,58261516,58392581,58523649,58589185,58654724,58785793,58982404,59113474,59310081,59506696,59768833,60096517,60358658,60489729,60817420,60882945,61407237,61538309,61603841],"interprets":[13172737,13238273,13631489,13762561,13893633,14548993,14680065,14745601,15073281,15204353,15466497,15532033,16187393,16908289,18939905,19464193,20250625,20447233,21102593,21233665,21823489,22085633,22216705,22806529,23068673,23789569,23920641,24641537,61472769],"innerexception":[16384005,22675461,41025540,45744129,48365569,58458113,58654721],"ireadonlylist":[49217542,54394886,56688646],"isfatal":[41615364,45481990,45744129,46202881,48365569,49020934,58458113,58654721,58982401],"istype":[3407873,5046273,8912901,58785793,59768833],"indexing":[3014657,4521985,9961473,10158081,10747905,55705601,60227585],"inadvertent":[52690945,53149697,53542913,54263809],"involvement":[59965441],"implements":[589825,3407881,5046281,8257537,8519681,8912897,9371649,9633793,9961473,10027009,10158081,10551297,10747905,11534337,11730945,13828097,16121857,16842753,17039361,17235969,17694721,17760257,18087937,18153473,18415617,18612225,18743297,18939905,19005441,19070977,19136513,19398658,19464193,19529729,19595265,19660801,19922945,19988481,20119553,20250625,20316161,20447233,20643841,20709377,20774913,20971521,21037057,21102593,21233665,21364737,21430273,21495809,21626881,21757953,21823489,21889025,22085633,22216705,22282241,22413313,22478849,22609921,22806529,23003137,23068673,23199745,23265281,23396353,23527425,23592961,23789569,23920641,23986177,24117249,24182785,24248321,24576001,24641537,24707073,24903681,25100289,25296897,27197441,27918337,28246017,28770305,30212097,30474241,30539777,30867457,31260673,31588353,31916033,32112641,32964609,33357826,35323906,35520513,35782658,42467329,42663937,42795009,43253761,43450369,43712513,43778049,44171265,44236801,44367873,44630017,44892161,45219841,45481985,45875201,46006273,46333953,46465025,46727169,47054849,47185921,47513601,47579137,48103425,48234497,48627713,48758785,49020929,49152001,49283073,49348609,49545217,49676289,49741825,50135041,50659329,50790401,51183617,51314689,51838977,51904513,52297729,52953089,53411841,53805057,54001665,54329345,54525953,55050241,55771137,55967745,56295425,56360961,56426497,56623105,56819713,56885249,57409537,57540609,58195969,58261505,58392577,58654721,58720257,58785801,58982401,59703297,59768842,60227585,60817409,61341700,61407233],"interoperability":[61145089],"integer":[7602177,8388609,9043969,9306113,9502721,9568257,10354689,14811137,15663105,17170433,23527425,24182785,25231361,25296897,26214401,27590657,27656193,28835841,29163521,29425665,29622273,29884417,30015489,40501249,41680897,42991617,52690945,53149697,53542913,54263809,55181313,55771137,56885249],"integers":[7143425,8060929,9502721,9830401,10354689,61145090],"idataview":[2686978,38535169,38797314,60162053,61341697],"ievent":[589826,720897,917505],"initial":[12255233,39583745,43384833,45023233],"indicating":[46858241,57540609],"interface":[2424833,2621441,2686977,2752513,2818049,3145729,3211265,3670017,3735553,4128769,4718593,4784129,5177345,10944513,11927553,12320769,12648449,12713985,12845057,13041665,13107201,13172737,13238273,13303810,13369345,13434881,13500417,13697025,13631489,13762561,13893633,13828097,13959170,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16187393,16449537,16580609,16646145,16711681,16777217,16908289,17170433,17301505,17367041,17432577,17498113,17563649,17891329,17956865,18022401,18219009,18350081,18481153,19202049,22609921,23396353,30277633,30605313,31064065,31195137,32047105,32440321,32636929,33226753,33292289,33619969,33947649,34078721,34668545,35061761,35586049,35913729,36241409,36700161,36962305,37027841,37421057,37814273,37945345,38010881,38535169,38600705,38797313,39059457,39518209,39845889,39976962,40042497,40239105,40501249,40566785,40632321,40828929,40960001,41025537,41156609,41353217,41615361,41680897,42139649,42205185,42336257,42401793,42729473,42991617,43057153,43515905,43581441,43646977,43909121,44040193,44105729,44433409,44564481,44826625,44957697,45154305,45350913,45678593,45940737,46268417,46399489,46530561,46596097,46858241,46989313,47120385,47316993,47710209,47775745,47841281,47906817,48168962,48300033,48365569,48496641,48693249,48758785,48824321,48889857,48955393,49348609,49414145,49610753,49938433,50397185,50528257,51052545,51642369,53477380,54722564,56426503,56819713,57016325,57344001,57540619,57802757,58195970,58261505,58327046,58392579,58458117,58654721,58720257,58916870,58982401,59113476,59375624,59703297,59768833,59834376,60096513,60162057,60227586,60293127,60358660,60424201,60751883,60817410,60882945,60948486,61014023,61407235,61538305,61603841]} \ No newline at end of file +{"importers":[76611585],"implements":[1114113,3538953,4521993,8912897,9699329,9961473,10027009,10289153,10485761,10813441,11141121,11272193,11993089,12779521,13041665,16711681,17498113,18087937,18284545,18546689,18808833,18939905,19529729,19726337,19791873,19922945,19988481,20119553,20316161,20381697,20578305,20774913,21037057,21102593,21495809,21561345,21626881,21692417,21954561,22216705,22413313,22478849,22544385,22609921,22675457,22872065,22937601,23003137,23199746,23527425,23592961,23658497,23789569,23855105,23920641,24117249,24182785,24313857,24379393,24444929,24510465,24641537,24707073,24903681,25100289,25362433,25427969,25296897,25690113,25821185,25886721,26017793,26476545,26542081,26607617,26738689,26804225,27066369,27983873,28049409,28114945,28639233,29360129,33226753,35454977,36634625,37879809,38010881,40501249,40632321,42139649,43319297,43843585,44171265,44564481,45613057,46333953,46465025,47579138,48300034,48955393,49283073,50135041,51380225,51511297,52428801,54329346,58458113,58916865,59179009,59965441,60162049,60489729,60555265,60620801,60686337,60817409,60948481,61669377,62324737,62390273,62521345,62717953,62849025,63242241,63569921,63963137,64159745,64815105,65601537,65732609,65994753,66125825,66322433,66453505,66650113,66912257,67239937,67371009,67502081,67567617,68091905,68288513,68878337,69140481,69206017,69664769,69795841,69861380,69926913,70254593,70713345,71106561,71172097,71237633,72089601,72286209,72351745,72417281,72548353,73334785,73662465,73793537,74252289,74514433,74907649,75366401,75628545,75956233,76087297,76414977,76742657,77266945,77463553,77856769,77922305,77987850,78381057,78577665,78970881,79626241,80084993,80281601,80478209,80805889,81264641],"iscriptable":[2424833,13303809,76808193],"iv8fasthostmethod":[51707906,56557570,61865985,72417284,74317829,74514437],"int32array":[78184449],"iv8fastasyncenumerator":[4063234,5767170,24772613,26148865,28377089,36503559,47775746,51707905,75431938,80936965],"iproperty":[3211265,10289153,11141121,12779521,58589185,76414977],"inherit":[6356998,70909953,71368705,72417281,72548353,73531393,73990145,74121217,74514433,74842113,75038721,75104257,75169793,75759617,75956225,76087297,76349441,76546049,77529089,78577665,78839809,78970881,79167489,79364097,79626241,79953921,80084993,80216065,80281601,80478209,80543745,80674817,80740353,81002497,81068033,81264641],"idisposable":[2097153,2752513,2818049,3276801,3473409,3735553,3997697,4259841,4390913,5570561,8912898,24510465,25296897,46465025,51511297,70320133,71172100,73138181,74645509,75366404,75497477,76087300,76283909,77135877,77856772,78184453,78512133,79495173,80084996,80281604,81199109,81264644],"invalid":[79757314],"internal":[60817410,66387970,67895297,76087297],"interrupt":[3735553,5373953,8716290,9306113,9502721,9830401,11010051,11206657,11403265,17104901,25886726,37879816,38404099,50135047,59834369,60293121,72679425,73924611,74448899,75104257,75366401,76087300,77791235,77856769,78512129,79953921,80281601,81002497,81068034,81264641],"invocable":[8454145,8978433,10354689,14286849,14352385,14417921,15335425,15466497,15794177,15925249,17760257,20381697,20512769,21692417,22544385,24117249,24903681,26017793,26476545,27066369,27983873,75235329,75563009],"ignorecase":[8519686],"inadvertent":[64094209,66584577,67829761,69402625],"iv8fasthostobject":[4456456,4784136,4980744,24248325,24772613,25493509,25559045,26214405,26345477,26673157,27590661,27721733,28180485,29753349,31653893,32243717,46661634,48824322,49348610,51707907,57606146,58064898,63832065,72024068,72417284,73269256,74317828,74514440,74973192,75300869,75431940,75694088,75890691,76742660,77266949,78053379,78577665,78643203,79036419,79626244,80609283],"interfere":[80412673],"isfatal":[59179014,60358657,62455809,62980097,65404932,72089606,72548353,78905345,78970881],"invocations":[13303809],"idisposablet":[8912898],"instantiate":[9175041,13172737,13238273,13500417,14745601,15400961,15859713,17301505,17825793,18087937,18284545,18546689,20119553,20774913,21495809,22937601,24182785],"isset":[53280769,70385668,79364097],"invoke":[2097153,2752513,2818049,3276801,3342338,3473409,3735553,3997697,4390913,4456449,4980737,5373953,5570561,5963779,5898242,6356993,6553602,8716289,9306113,9502721,9830401,11010049,11206657,11403265,13959169,14680065,14876674,15990786,16056326,16121862,16252930,16318466,16711681,16973826,18874370,19070978,19136514,20905986,22020098,23199745,23789575,25362433,27000838,28049416,28114946,29163525,34406401,40632329,42139657,42860551,44630023,45285377,46202881,48758787,49938433,53477379,57278465,63963137,73138177,73269249,74645505,74973185,75104257,75497473,76087297,76283905,77135873,77266945,77856769,78184449,78512129,78577665,79101954,79495169,79822849,79953921,80084995,80281601,80543746,80609281,80805890,81002497,81068033,81199105,81264641],"indicates":[1638401,1769475,2031619,2949123,3145731,4653059,4718593,4915201,5046275,7340033,9895937,58327041,59179009,60358658,62455810,62980098,64487425,65404929,69861384,70451201,71106561,72089601,72548354,73793537,73990147,74842115,75038723,75759619,76349441,77529089,77660166,78118914,78839809,78905346,78970882,79167491,79233030,79364097,79757317,80216067,80740353],"instances":[18219009,26542081,36044801,36175873,36241409,36372481,37093377,37552129,37748737,37945345,38076417,38207489,39256066,39518209,40108033,40173569,40239105,40435713,40828930,40894465,41025537,41287681,42074113,42205185,42401793,42598401,43057153,43581441,43778050,44040193,44433409,45023233,45481986,45547521,45744129,46858241,47513601,48037889,48365569,49741825,49807361,50659329,51970049,52625409,54984705,68091905,70057985,73662465,74252289,75038722,76087298,77463553,77922305],"ienumerable":[3211265,19922951,28180485,32243717,60030982,60489734,62521350,63111174,65339398,66322439,67371015,73728006,75628552,76414985],"invocation":[14680066,16056321,16121858,16252930,23789570,25362434,28049409,28114946,31457281,31981569,32505857,32899073,33554433,33619969,34013185,34471937,34668545,34734081,34799617,35061761,35127297,35323905,35782657,36110337,36438017,36765697,36962305,37158913,37355521,38141953,38469633,38600705,38928385,39780353,39845889,40370177,43450369,44957697,68419585],"icustomattributeprovider":[6356998],"itypedarray":[3276802,4390914,16777217,16908289,18743297,19595265,22282241,48103426,50266113,51249153,62783490,64356355,65929217,69861377,77135877,78184470],"icomparable":[9961474],"indicating":[58589185,76414977],"invokeasfunction":[2097153,2752513,2818049,3276801,3473409,3997697,4390913,5570561,5963777,14680068,25362438,73138177,74645505,75497473,76283905,77135873,78184449,79495169,80084993,81199105],"iwindows":[5570561,42663937,54525953,81199105],"initial":[13959169,54198273,57344001,69468161],"interprets":[14155777,14483457,14548993,14942209,15269889,15728641,16187393,16384001,16515073,18022401,18219009,19464193,19857409,21037057,21364737,21561345,21626881,22872065,23855105,24313857,24641537,25427969,26542081,26607617,26738689,26804225,28639233,29360129,81330177],"iasyncenumerable":[18808837],"inherits":[70320129,70909953,71368705,72024065,72417281,72548353,73138177,73269249,73531393,73990145,74121217,74317825,74514433,74645505,74842113,74973185,75038721,75104257,75169793,75497473,75759617,75956225,76087297,76283905,76414977,76546049,77135873,78184449,78512129,78577665,78970881,79167489,79495169,79626241,79953921,80084993,80216065,80281601,80478209,80543745,80674817,80936961,81002497,81068033,81199105,81264641],"iscacheable":[25559045],"info":[1638401,6094849,6225921,7667713,14942209,17563654,18022401,19726342,21561345,23330821,23724038,24313857,24707078,37486593,39518209,40173569,41418753,43515905,44105729,46858241,48365569,50724865,50987009,54001666,54460417,55246849,58261505,59441153,61538305,61734913,62914565,63766529,64880641,66191361,66977793,67174401,68747265,69337093,69599233,69730305,70844417,72482822,73203713,73859073,75825153,76480513,77398017,77725701,78839809,79298565,80674818],"indices":[4456449,4784129,4980737,10027014,10485766,13041670,16711681,23199745,28180483,53608449,54525953,55574529,56885249,59244545,60489730,60751873,61210625,62783489,63111170,63897601,64356353,66322434,67633153,71303169,73138177,73269249,73728002,74645505,74973185,75497473,75694081,76283905,77135873,78184449,78577665,79495169,80084993,81199105],"impossible":[76939265],"invalidoperationexception":[78970885],"individual":[3342337,5963777,62259201,72286209,73990145,75759617,80084993,80543745],"invokewithdirectaccess":[2818052,3276804,3473412,3997700,4390916,14876677,16318469,16973829,18874373,19070981,19136517,20905989,22020101,46202884,49938436,73138180,74645508,75497476,77135876,78184452],"int16":[3538945,4521985,4915202,7340035,9895939,12845062,27656196,31326212,33292292,33357828,34209796,51052546,51445762,54067202,75956225,76349443,77529091,77987841,79364098],"iarray":[2818049,3473409,14090241,14876673,16318465,16449537,16646145,16842753,16973825,17432577,18153473,18677761,18874369,19070977,19136513,20185089,20905985,21168129,22020097,23986177,44826625,46202881,47906817,49020929,49938433,53215233,53608449,56885249,58195969,59506689,61145089,66846721,73138177,74645505],"interactive":[56229889,66453505,67698689],"iv8fasthostfunctionoperations":[4456450,27000833,51707906,61472774,73269253,80478213],"iscriptableobject":[2424834,13303809,45547521,75628548,76808197,77987844],"initvalue":[13959175],"iserializable":[19726337,24707073],"inattribute":[14876673,18874369,19136513,20905985,23068673,23265281,23461889,24969217,25034753,25559041,26148865,26214401,26345473,27000834,29163522,30539777,31522817,31653889,32636929,33685505,78053377,78643201,79822850,80609282],"int16array":[78184449],"impact":[76939265],"interval":[59834370,60293122,68354050,71565314,72810498,74055682,75366402,76087298],"import":[7733250,7995393,8454145,8585217,8847362,8978434,9109505,10354690,10747905,10551297,11075585,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13434882,13631489,13697026,13828098,13893633,13959169,14221313,14811137,15073281,15204353,15597569,15990785,17235970,19202049,19988481,20316162,20578306,22216705,22478850,23527425,23592962,25100289,45547521,57737218,58130434,60162050,60293122,61407234,61734913,61931521,62193666,63045634,64552962,64684034,64815106,65273858,67305474,69533698,75104258,75956225,76087298,77856770,78512130,79953922,80281602,81002498,81068034,81264642],"includes":[8585217,16711681,18219011,23199745,26542083,56229889,66453505,67698689],"imports":[3735560,4521992,5373960,7733249,7929857,7995394,8454145,8716296,8847362,8978434,9109506,9306120,9502728,9830408,10354690,10878977,11010056,11206664,11403272,13434881,13697025,13828097,14811137,15073281,15597569,17235969,19202049,19988481,20316161,20578305,22216705,22478849,23527425,23592961,25100289,46596098,47710216,48562179,51183624,75104264,75956232,76087304,76939265,77004801,77856776,78512136,79953928,80281608,81002504,81068040,81264648],"isyncinvoker":[786437,5898242,39714821,40632321,41156609,41943045,42139649,42270725,42860545,43319297,44630017,45219845,46333953,47251461,47644673,48758785,48889861,50331653,51576837,52297733,52559877,53149701,53673986,54919173,55443461,57737217,62193665,63045633,64684033,65273857,69533697,71630855,75104257,79101957,79953921,80281607,80805893,81002503,81068034,81264641],"idataview":[3997698,48103425,59244546,69861377,75497477],"immutablevalueattribute":[2031618,14614533,45547521,56492034,75038728],"ipropertybag":[3211266,3538950,4521990,10289158,11141126,12582913,12779526,45547523,47579138,48300034,54329346,58589186,71368705,75628549,75956230,76414981,77987846],"interface":[2097153,2818049,2752513,2424833,3211265,3276801,3473409,3735553,3801089,3997697,4063233,4259841,4390913,4456449,4784129,4980737,5570561,5898241,9240577,12582913,13172737,13238273,13303809,13434881,13500417,13697025,13828097,14024705,14090241,14155777,14286849,14352385,14417921,14483457,14548993,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17104897,17235969,17301505,17432577,17629185,17760257,17825793,17891330,18022401,18153473,18219009,18350081,18677761,18743297,18874369,19070977,19136513,19202049,19333121,19464193,19595265,19857409,20185089,20250626,20447233,20512769,20643841,20905985,21102593,21168129,21364737,22020097,22282241,22609921,23068673,23265281,23461889,23986177,24248321,24772609,24838145,24969217,25034753,25493505,25559041,26148865,26214401,26345473,26411009,26673153,27000833,27131905,27459585,27590657,27721729,28180481,28377089,29163521,29687809,29753345,31653889,32243713,41156609,41746433,42663937,42860545,43909121,44630017,44695553,44826625,45350913,45547521,45940737,46202881,46268417,46661633,47382529,47644673,47710209,47906817,48103425,48627713,48693249,48758785,48824321,49020929,49152001,49348609,49676289,49938433,50266113,50855937,51249153,51707905,52035585,52232194,53018625,53215233,53411841,53608449,53673985,54525953,55050241,55115777,55574529,55902210,56033281,56229889,56360961,56557570,56688641,56885249,56950785,57147394,57278465,57606146,57737217,57868289,57999361,58064897,58195969,58327041,58523649,58589185,58785793,58982401,59244545,59506689,59572225,59637761,59703297,59899905,60030977,60751873,60882945,61079553,61145089,61407233,61472770,61865986,62062593,62128129,62193665,62259201,62455809,62783489,63045633,63111169,63176705,63307777,63832066,63897601,64290817,64356353,64421889,64552961,64684033,65208321,65273857,65339393,65404929,65667073,65929217,66387969,66519041,66846721,67043329,67108865,67305473,67502081,67764225,68222977,68485121,68812801,69009409,69206017,69533697,70320134,70582273,70647809,71172097,71303173,72024071,72417282,72548353,73138184,73269254,73465857,73728001,73990148,74317831,74514434,74645512,74842116,74973190,75104257,75300870,75366401,75431937,75497481,75628551,75694085,75759620,76087298,76283911,76414987,76742657,76808197,77135881,77266945,77856770,77987841,78184459,78381057,78512134,78577665,78905349,78970881,79101957,79495174,79626242,79953921,80084994,80216068,80281603,80478210,80805889,80936966,81002497,81068033,81133574,81199111,81264643],"intended":[3342340,5963780,18219009,26542081,31981569,39780353,56229889,66453505,67698689,67895297,80084996,80543748],"iscriptobject":[2097154,2752521,2818057,3276809,3473417,3997705,4390921,5570569,14680065,15007745,16121857,16252929,17629185,18350081,19333121,20447233,20643841,21954561,22413313,22675457,23789569,23920641,25362433,25690113,25821185,28114945,45547521,45940737,46268417,47382529,48627713,53608453,54525957,56885253,58785793,59244549,59572225,60489729,60751877,61079553,62521345,62783493,63111169,63897602,64356357,65339393,66125825,66912257,69926913,73138194,74645522,75497490,76283922,77135890,78184466,79495173,80084996,81199122],"ihostwindow":[9240578,41746433,52232193,69009415,70582274,73465857,81133573],"iv8fasthostobjectoperations":[4456461,4784130,4980749,24248321,24772609,25493505,25559041,26214401,26345473,26673153,27590657,27721729,28180481,29753345,31653889,32243713,46661633,48824321,49348609,51707906,58064897,63832070,72417284,73269265,74973201,75694085,76742661,80478212],"importable":[56033281,62717953],"inner":[63176705],"ijavascriptobject":[2752514,48103425,53608450,56885250,59244546,60751874,62783490,63307777,64356354,65208321,73138182,74645510,75497478,76283909,77135878,78184454],"ignores":[11665409],"ignored":[11665409,36241409,36372481,37945345,38273025,39387137,39518209,40239105,43515905,43581441,44433409,49741825,52625409,76939271,77004801,80412674],"index":[3211265,3342340,3801089,5242881,5963780,9895978,16449537,16646145,16711681,16777223,16842753,16908295,17629190,18153473,18350086,18677761,18743303,20185089,20643846,21168129,21954566,22282247,23199745,23265286,23461894,23920646,23986177,25624584,25690118,26279944,26345478,26411015,26673158,26869768,27131910,27328520,27525128,27656200,27721734,27787271,27852808,27918344,28246024,28442632,28508168,28835848,28901384,29229064,29425672,29491208,29622280,29818888,29949960,30015496,30081032,30474247,30539782,30670856,30867464,30998536,31064072,31260680,31326216,31391752,31522822,31588360,31653894,31719432,31850503,32047112,32571400,32768007,32833544,33226760,33488904,33947656,34340872,34537480,35454983,35586056,51052563,51707905,53411841,56360962,57737217,58130433,58851329,59572231,60293121,61407233,62193665,62849026,63045633,64684033,65273857,66912263,69533697,71303170,75104257,76087297,76414977,77529130,77856769,78512129,78577665,79953921,80084996,80281601,80543748,81002497,81068033,81264641],"isync":[5898241,39714817,41156609,41943041,42270721,42860545,44630017,45219841,47251457,47644673,48758785,48889857,50331649,52297729,52559873,54919169,79101953],"isundefined":[9895937,33488900,59113473,63438852,76349441,77529089],"iwindowsscriptobject":[5570562,42663937,52232193,54525954,81199109],"introduced":[56360961,62849025],"iasyncenumerator":[5767170,18808834,37814279,47775746,75431938],"instance":[1,131073,524289,262146,786438,851969,917505,1048577,1179649,1441793,1638404,1703937,1769477,1835009,1900545,1966081,2031621,2162689,2228225,2293761,2359297,2490370,2555905,2621441,2686977,2883585,2949125,3014657,3080193,3145733,3342338,3407873,3538957,3604481,3670025,3866626,3932161,4128769,4194305,4325378,4521997,4653061,4587521,4718596,4849665,4915204,5046277,5111810,5177345,5242881,5308417,5373953,5439489,5505025,5636097,5701634,5832705,5963778,5767175,6094849,6160385,6488065,6553601,6750209,6881281,6946818,7012353,7077895,7274497,7340036,7405569,7864321,7929857,7995393,8060930,8126465,8192003,8323074,8585217,8781826,8716289,8847362,8912897,8978433,9043969,9109505,9175042,9306113,9371649,9502721,9830401,9895940,9961473,10092547,10158081,10223617,10354689,10420226,10551298,10682369,10747905,10878978,10944513,11010049,11075585,11206657,11403265,11730946,11862017,11927554,12124162,12320769,12386306,12517378,12582913,12648449,12845058,12910594,13631490,13893634,13959169,14221314,14614529,15204354,15990785,17039363,17170435,17367041,17956867,18415619,18612225,18808834,19005441,19398659,19922946,20054020,21233667,21823489,22085634,22151169,22740994,22806529,23134209,23330817,23396353,24051713,24248325,24772613,25165825,25231363,25493509,25559045,25952257,26214405,26345477,26673157,26935299,27197441,27394049,27590661,27721733,28180485,28311553,28966913,29753349,31457282,31653893,32243717,32505858,32899073,33161217,33423362,33554433,33619971,34013185,34144257,34471939,34734082,34799618,34996225,35061762,35127298,35192834,35258371,35782658,35913730,36110337,36438017,36503554,36765697,36896771,36962305,37027842,37093379,37355521,37617666,37814274,38141954,38469634,38535170,38600707,38731778,38993921,39256067,39321602,39649283,39714819,39845890,39976962,40304642,40370178,40763394,40828931,40960002,41091073,41680899,41811969,41877506,41943043,42205188,42270723,42336258,42532867,42991619,43253761,43384834,43450371,43778052,44236801,44498947,44761091,44892161,44957698,45219843,45481988,45809665,46006273,46530562,47054850,47185921,47251458,47316994,47448066,47775746,47972364,48234498,48889858,48955393,49086467,49414145,49545220,49610755,50069512,50200578,50331651,50528258,50593794,50921474,51576837,52101122,52166658,52232195,52297731,52363266,52494344,52559874,52953090,53149699,53673986,53739524,54132738,54263816,54591491,54788097,54919170,55312392,55443461,55836684,56754180,57737217,57933826,58130433,58720262,59047941,59637761,59834369,60293122,60358658,60424197,61407233,61800449,62193665,62455809,62980098,63045633,64684033,65273857,65798145,67239937,68222977,68943873,69533697,69795841,70516737,70909953,71172097,71368705,71761921,72351745,72417286,72548356,72613889,73596929,73531393,73924609,73990150,74121217,74448897,74514438,74711042,74842118,75038726,75104265,75169794,75366421,75431944,75563013,75628545,75759623,75956238,76087313,76152834,76349444,76480514,76546050,76677122,76742660,76939266,77004801,77266947,77332481,77398017,77529092,77594625,77856772,77987856,78053381,78249986,78512129,78577667,78643205,78708739,78774281,78839812,78905345,78970884,79036421,79167501,79364100,79626250,79691778,79888386,79953924,80019457,80084994,80216071,80281608,80347137,80412674,80478218,80543747,80609285,80674818,80740356,80805891,80871427,81002504,81068035,81264649,81330179],"including":[18219009,26542081],"interrupted":[1245185,3407873,21823489,23724033,24707073,25755649,26083329,27262977,45547521,54788097,59179009,59965441,60948481,62980097,72351745,72548354,73334785,73793537,73924610,74448898],"invokes":[2097155,2752515,2818055,3276807,3473415,3538948,3735553,3997703,4390919,4456449,4521987,4980737,5373953,5570563,5963779,5898242,6553602,8388610,8585218,8716289,9306113,9502721,9830401,10944514,11010049,11075586,11206657,11403265,14680065,14876674,15990785,16056321,16121857,16252929,16318466,16973826,18874370,19070978,19136514,20905986,21430274,22020098,23789569,25362433,27000833,28049409,28114945,29163521,40632322,41353218,42139650,42860545,44630017,46202884,46989314,48758786,49938436,51707906,52887554,53477378,57868289,58982401,65601537,69140481,73138183,73269249,74645511,74973185,75104257,75497479,75956227,76087297,76283907,77135879,77856769,77987844,78184455,78512129,78708737,79101954,79495171,79822849,79953921,80084995,80281601,80609281,80805890,81002497,81068033,81199107,81264641],"invoker":[262145,786433,5898241,6553601,31457286,32505862,32899078,33554438,33619974,34013190,34471942,34668550,34734086,34799622,35061766,35127302,35323910,35782662,36110342,36438022,36765702,36962310,37158918,37355526,38141958,38469638,38600710,38928390,39714817,39845894,40370182,40632321,41156609,41943042,42139649,42270722,42860545,43319297,43450374,44630017,44957702,45219842,46333953,47251457,47644673,48758785,48889857,50331649,51576834,52297730,52559873,53149697,53477377,54919169,55443458,71630849,79101953,79822849,80281602,80609281,80805889,81002498,81068033],"invoked":[3538950,4521990,6619137,6684673,6815745,6946818,8650753,9568257,10878977,11468801,11665409,11862017,15990785,16056321,19005441,21757953,28049409,31981570,39780354,43646978,46923778,49479682,61734913,61931521,75956230,76087297,77987846,79626242],"int8array":[78184449],"imported":[7733249,7929858,8454146,8847361,8978434,9109505,10354690,61669377,67764225],"inference":[16711681,23199745,58916865,64290817],"iarraybufferview":[2818050,3276809,3997705,4390921,14090241,14876673,16318465,16449537,16842753,18677761,18874369,20185089,22020097,44826625,48103425,49938433,53215233,56885250,58195969,59244547,59506689,62783491,64356355,66846721,74645509,75497488,77135888,78184464],"inherited":[720897,851974,1245185,1376257,1507329,1638406,1703942,1769480,1835014,1900550,1966093,2031624,2097153,2162694,2228231,2293766,2555911,2621446,2686982,2752522,2818058,2883597,2949128,3014662,3080198,3145736,3211274,3276819,3342356,3407878,3473418,3538950,3604486,3735553,3866631,3932165,3997715,4063233,4128774,4194310,4259841,4325382,4390931,4456461,4522031,4653064,4587526,4718598,4849670,4915206,4980749,5046280,5111815,5177349,5242886,5308422,5373957,5439494,5570570,5636101,5701639,5963796,5767174,6094854,6160390,6553606,6946823,7077894,7340038,7864326,8716340,9306169,9502778,9830457,9895942,11010099,11206713,11403321,53084164,53542914,53608455,54525957,55705604,56492033,56885255,57671681,57737244,58589189,59244554,60293143,60358664,60751877,62193692,62783498,62980105,63045659,64356363,64684060,65273883,65863682,66781186,68157441,68943878,69533720,70320129,70909959,71172102,71368722,71761926,72417287,72548368,72613894,73138193,73269261,73531398,73990154,74121234,74514439,74645521,74711046,74842122,74973197,75038729,75104341,75169799,75366406,75431942,75497501,75628550,75759625,75956271,76087370,76152838,76283919,76349446,76414991,76480518,76546054,76742662,77135901,77266950,77332486,77398022,77529094,77856773,77987846,78184478,78249990,78512129,78577670,78708741,78839814,78970895,79167498,79364102,79495169,79626247,79691782,79888390,79954006,80019462,80085012,80216073,80281684,80347142,80478215,80543764,80674822,80740358,80805894,80871429,80936961,81002580,81068108,81199119,81264725,81330181],"include":[6356993,10747905,18219009,26542081,62128129,71237633],"increment":[3342337,5963777,80084993,80543745],"intptr":[2818052,3276804,3473412,3997700,4390916,14876677,16318469,16973829,18874373,19070981,19136517,20905989,22020101,46202884,49938436,73138180,73465862,74645508,75497476,77135876,78184452],"iv8fasthostfunction":[51707906,55902210,61472769,72024069,79626245,80478212],"iscomparable":[9961473],"initialize":[3342337,5963777,12976129,13369345,13762561,15138817,80084993,80543745],"innerexception":[20709381,27262981,60358657,62455809,62980097,63176708,72548353,78905345,78970881],"icollection":[3211274,58589190,63242247,65732615,75628548,76414996],"idispatchex":[80412673],"ilist":[16711681,23199745,69861377],"iequalitycomparer":[7143429,9437189,17694725,20971525,55967746,56295426,59310086,71368706,75628546],"inspector":[41549826,43188225],"implementers":[3342337,5963777,13303809,80084993,80543745],"indentation":[56229889,66453505,67698689],"ityped":[3276801,4390913,16777217,16908289,18743297,19595265,22282241,50266113,51249153,62783489,64356353,65929217,77135873,78184449],"iscriptengineexception":[45547521,56950785,58327041,58458113,59179009,59703297,59965441,60555265,60948481,62455810,63176705,65404929,67108865,67239937,68222977,68812801,69664769,70647809,71106561,72089601,72351745,72548356,73334785,73793537,78905349,78970884],"iterable":[3670018,18808834,19922952,78774274],"indexing":[3342337,5963777,10027009,10485761,13041665,80084993,80543745],"implementation":[3342348,5963788,6356993,18808833,19922945,40632321,42139649,43319297,45547528,46333953,51707911,52232193,53673986,56033281,57737217,61734913,61931521,62193665,62717953,63045633,64684033,65273857,65798145,68943873,69533697,71368705,71630849,72417281,72613889,74514433,75104257,75169793,75431937,75628545,76742657,77266945,77856769,78577665,79626241,79953922,80085005,80281602,80478209,80543756,80674817,80805889,81002498,81068035,81264641],"iscriptengine":[3735554,13172737,13238273,13434881,13500417,13697025,13828097,14024705,14155777,14286849,14352385,14417921,14483457,14548993,14745601,14811137,14942209,15073281,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,16056321,16187393,16384001,16515073,16580609,16711681,17104897,17235969,17301505,17760257,17825793,17891329,18022401,18087937,18284545,18219009,18546689,19202049,19464193,19857409,19988481,20119553,20250625,20316161,20381697,20512769,20578305,20774913,21037057,21102593,21364737,21495809,21561345,21626881,21692417,22216705,22478849,22544385,22609921,22872065,22937601,23003137,23199745,23527425,23592961,23658497,23855105,24117249,24182785,24313857,24379393,24444929,24641537,24903681,25100289,25427969,25886721,26017793,26476545,26542081,26607617,26738689,26804225,27066369,27983873,28049409,28639233,29360129,37879810,40501250,43843585,43909121,44171265,44564481,44695553,45350913,45613058,45547521,47710209,48955393,49152001,49283074,50135041,50855937,51380226,52035585,52428802,53018625,55115777,56033281,56229889,56360961,56688641,57147393,57278465,57868289,57999361,58523649,58916865,58982401,59637761,59899905,60162049,60620801,60817409,60882945,61407234,61669377,62062593,62128129,62259201,62324737,62390273,62717953,62849025,63569921,63963137,64159745,64290817,64421889,64552961,64815105,65601537,65667073,65994753,66387969,66453505,66519041,66650113,67043329,67305473,67502081,67567617,67764225,68091906,68288513,68485121,68878337,69140481,69206018,69795841,70254593,70713345,71237633,72286209,73662466,74252289,74907650,76087300,77463554,77856772,77922305,78381057,78512133,80281604,81264644],"intvalue":[10223617],"iv8fasthostmethodoperations":[4980738,29163521,51707906,61865990,72417285,74973189],"ihost":[9240577,41746433,70582273,73465857,81133569],"invoking":[3342337,5963777,8388609,16711681,18219009,23199745,26542081,58130433,68419587,77856769,80084993,80543745],"involvement":[78446593],"ijava":[2752513,60751873,63307777,65208321,76283905],"information":[3735554,5373954,7077893,7405569,8060929,8192001,8323073,8388609,8454145,8716290,8781825,8978433,9043969,9306114,9502722,9830402,10092545,10158081,10354689,10420225,10682369,10878977,11010054,11206658,11337729,11403266,11468801,13172737,13238273,13434881,13500417,13697025,13828097,14024705,14155777,14286849,14352385,14417921,14745601,14811137,14942210,15073281,15335425,15400961,15466497,15597569,15728641,15794177,15859713,15925249,17039361,17170433,17235969,17301505,17563649,17760257,17825793,17891329,17956865,18022403,18087937,18284545,18415617,18546689,18808833,19202049,19398657,19464193,19857409,19922945,19988481,20054017,20119553,20250625,20316161,20381697,20512769,20578305,20774913,21037057,21102593,21233665,21364737,21561346,21495809,21692417,22216705,22478849,22544385,22609921,22872065,22937601,23330817,23527425,23592961,23724033,24117249,24182785,24313859,24379393,24903681,25100289,25231361,25427969,26017793,26476545,26738689,26935297,27066369,27983873,28639233,37486594,39518210,40173570,41418754,43515905,43909121,45088769,45547522,46858242,48365570,48496641,49545217,50003971,50724866,50987010,52822017,53018625,53870593,54001665,54460418,54853636,56426497,57409537,58261505,60358657,61734914,61931522,62914561,62980097,64421889,68878337,69337090,71041025,71172097,72220673,72482817,72548353,75104258,75366405,75825153,76087302,76480513,77398017,77725699,77856770,78512130,78839809,78970881,79298562,79429633,79757313,79953922,80281602,80674817,81002498,81068034,81264642],"inside":[3342337,5963777,80084993,80543745],"invokemethod":[2097153,2752513,2818049,3276801,3473409,3997697,4390913,5570561,5963777,16252932,28114949,73138177,74645505,75497473,76283905,77135873,78184449,79495169,80084993,81199105],"interoperability":[76939265],"istruthy":[9895937,31391748,59113473,68681732,76349441,77529089],"isreadonly":[6422533,7143429,19660805,20971525,58589185,76414977],"iscript":[2097153,3735553,13172737,13238273,13434881,13500417,13697025,13828097,14024705,14155777,14286849,14352385,14417921,14483457,14548993,14680065,14745601,14811137,14942209,15007745,15073281,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,16056321,16121857,16187393,16252929,16384001,16515073,16580609,16711681,17104897,17235969,17301505,17629185,17760257,17825793,17891329,18022401,18219009,18350081,19202049,19333121,19464193,19857409,20250625,20447233,20512769,20643841,21364737,43909121,44695553,45350913,45940737,46268417,47382529,47710209,48627713,49152001,50855937,52035585,53018625,55115777,56033281,56229889,56360961,56688641,56950785,57147393,57278465,57868289,57999361,58327041,58523649,58785793,58982401,59572225,59637761,59703297,59899905,60882945,61079553,61407233,62062593,62128129,62259201,62455809,63111169,63176705,63897601,64290817,64421889,64552961,65339393,65404929,65667073,66387969,66519041,67043329,67108865,67305473,67764225,68222977,68485121,68812801,70647809,78512129,78905345,79495169],"int32":[2097155,2752515,2818051,3276803,3473411,3538949,3801092,3997699,4390915,4456452,4521987,4784132,4915202,4980740,5242884,5570563,5767170,5963779,7077890,7340035,7733249,8388610,8585217,8978433,9895958,10158082,10223617,10878977,10944514,11075586,11337730,11730950,17629185,18219009,18350081,20643841,21954562,23265281,23461889,23920642,25624577,25690114,26279937,26345473,26411009,26542081,26673153,26869761,27131905,27328513,27525121,27656193,27721729,27787265,27852801,27918337,28246017,28180481,28442625,28508161,28573699,28835841,28901377,29229057,29425668,29491201,29622273,29818881,29949953,30015489,30081025,30343171,30474241,30539777,30670849,30867457,30998529,31064065,31260673,31326209,31391745,31522817,31588353,31653889,31719425,31850497,32047105,32505857,32571396,32768001,32833537,33226754,33488897,33619969,33947649,34013185,34340865,34471937,34537473,34668545,34930691,35454978,35586049,35782657,36110337,36438017,37355521,38141953,38469633,38731777,38928385,39649281,40304641,40370177,40828929,42336257,44498945,44892161,44957697,45154306,45481985,45940737,46071809,46268417,46399489,46661633,46727169,47382529,47972356,48627713,48693249,48824321,49086465,49348609,49676289,50069508,50921473,51052565,51445762,52494340,52887554,53411841,53608449,53739522,54067202,54525953,55050241,55181313,55836676,56098817,56754178,56885249,57081857,57802753,58064897,58654722,58720258,58851329,59244545,59572225,59703297,60489729,60751873,62783489,63111169,63897601,64094209,64356353,65011713,66322433,66584577,66912258,67633153,67829761,69402625,71303172,71696385,72417282,73138180,73269252,73728001,74514434,74645508,74973188,75366406,75431938,75497476,75694084,75956227,76087300,76283908,76349443,77135876,77529110,77987845,78184452,78577668,79364098,79495172,79626244,80084996,80478212,81199108],"interchangeable":[13959169],"inotifypropertychanged":[1114113,75628548],"interfaces":[15269889,16384001,18219009,19464193,22085633,22740993,26542081,26804225,28639233,29360129,35258369,36372481,36896769,37027841,38731777,39387137,39649281,39714817,41287681,41680897,41943041,42205185,42270721,42401793,42532865,42991617,43778049,44040193,44302337,44498945,44761089,45219841,45481985,45547521,45875201,46530561,47316993,48103425,48234497,49086465,49217537,50331649,50528257,50593793,51707905,52101121,52232193,52297729,52953089,53149697,53673985,54132737,73990145,75759617,78184449],"items":[3211265,76414977,78446593],"integers":[7995393,8585217,9109505,10158081,11337729,76939266],"increases":[70975489],"infrastructure":[3342337,5963777,58916865,60358657,60555265,60948481,62455809,62980097,64290817,70647809,72548353,75431937,78905345,78970881,80084993,80543745],"iasync":[37814273],"icomparablet":[9961474],"identical":[36175873,36241409,36372481,37552129,37945345,38207489,38273025,39387137,39518209,40108033,40239105,40435713,43122689,43515905,43581441,44040193,44433409,48037889,48365569,49217537,49741825,49807361,52625409,54460417],"indexers":[16711682,23199746],"identify":[10027009,10485761,13041665],"insensitive":[8519681,76939265],"int32t":[8585218,8978434,10223618],"initializes":[5505025,5832705,6225921,6422529,6488065,6750209,6881281,7012353,7143425,7274497,7667713,8126465,9371649,9437185,12189697,12255233,12648449,12976129,13369345,13762561,14614529,15138817,17367041,17563649,17694721,18481153,18612225,19267585,19660801,20709377,20971521,21823489,22085633,22151169,22740993,22806529,23134209,23330817,23396353,23724033,24051713,25165825,25755649,25952257,27197441,27262977,27394049,28311553,28966913,31457281,32505857,32899073,33161217,33554433,33619969,34013185,34144257,34471937,34734081,34799617,34996225,35061761,35127297,35192833,35258369,35782657,36110337,36438017,36765697,36896769,36962305,37027841,37355521,38141953,38469633,38535169,38600705,38731777,38993921,39649281,39714817,39845889,40304641,40370177,40763393,40960001,41091073,41680897,41811969,41877505,41943041,42270721,42336257,42532865,42991617,43253761,43384833,43450369,43974661,44105730,44236801,44498945,44761089,44892161,44957697,45219841,45809665,46006276,46530561,47054849,47185921,47251457,47316993,47448066,47972364,48234497,48889857,49086465,49414145,50069512,50200578,50331649,50528257,50593793,50921473,51576837,52101121,52297729,52363266,52494344,52559873,52953089,53149697,53739524,54132737,54788100,54919169,55312392,55443461,55836684,55967748,56295428,56754180,57933826,59047941,60424197,71368708,72417284,72548356,73990145,74121221,74514436,74711041,74842113,75038721,75104261,75169793,75366412,75431937,75628548,75759618,75956225,76087308,76152833,76480513,76742658,77266945,77856770,77987841,78577665,78839810,78970884,79167496,79626248,79691777,79888385,79953921,80216066,80281605,80478216,80543745,80674817,81002501,81068033,81264645],"isfalsy":[9895937,27328516,59113473,66060292,76349441,77529089],"iv8fastenumerator":[4259842,5767170,23068673,24838145,25493509,33423367,49610754,51707905,70320133,75431938],"iconvertible":[10551301,11730949,11927557,12124165,12386309,12517381,12845061,12910597,13631493,13893637,14221317,15204357],"int64":[327682,3538945,4521985,4915202,7340035,9895939,15204358,30146564,31784964,32047108,34340868,36569092,51052546,51445762,54067202,64487426,70451202,73007106,75956225,76349443,77529091,77987841,79364098],"initonly":[1,786433,917505,2359297],"instantiation":[3538945,4521985,9633796,10878977,11468802,12582913,46923777,64880641,69599233,75104257,75956225,77987841,79953921,81264641],"istypeobj":[3538946,4521986,9568262,11665414,43646978,75956226,77987842],"int":[7733251,8388612,10158084,10944515,11075588,11337732,11730945,12845057,14876673,15204353,16318465,16973825,17629188,18350084,18874369,19070977,19136513,20643844,20905985,21954564,22020097,23265284,23461892,23920644,25624579,25690116,26279939,26345476,26411012,26673156,26869763,27131908,27328515,27525124,27656196,27721732,27787267,27852803,27918340,28246020,28180483,28442627,28508164,28573700,28835844,28901379,29229059,29425671,29491204,29622276,29818883,29949956,30015491,30081028,30146561,30343172,30408705,30474244,30539780,30670851,30867460,30998531,31064067,31260676,31326213,31391747,31522820,31588356,31653892,31719427,31784961,31850500,32047108,32309249,32505860,32571400,32768003,32833539,33226757,33292289,33357825,33488899,33619972,33947652,34013188,34209793,34340869,34471940,34537476,34668548,34930692,35454981,35586053,35782660,36110340,36306945,36438020,36569089,37355524,38141956,38469636,38731780,38928388,39649284,40304644,40370180,40828932,42336260,44498948,44892164,44957700,45481988,49086468,50921476,54198275,57344003,59572229,59703300,60489732,63111172,64094213,65011716,66322437,66584581,66912261,67829765,69402629,69468163,71565315,71696388,73728004,74055683,78184449],"implemented":[53542913,56492033,57671681,65863681,66781185,68157441,73990145,74842113,75038721,75759617,78184449,79167489,80216065],"iv8fasthostdynamicproperties":[3801090,23265281,23461889,24969217,25034753,26411009,27131905,27459585,29687809,33226753,35454977,36634625,38010881,39321605,48693249,49676289,51707905,53411841,55050241,55574530,60030977,66322433,67371009,71303173,73728001,78577668],"idictionary":[3211271,17498113,18939905,19529729,19791873,58589189,60686337,63242241,65732609,75628548,76414992,77725701],"iarraybuffer":[3473410,16646145,16973825,17432577,18153473,19070977,19136513,20905985,21168129,23986177,46202881,47906817,48103425,49020929,53608450,61145089,66846726,69861377,73138181],"instead":[16711681,22085636,23199745,58916865,64290817,64421889,68878337,69402628,76218372,76873729,79429633],"iterator":[69861378,79233025],"idynamicmetaobjectprovider":[3538954,4521994,9633797,9699334,10027014,10485766,10813446,11272198,11993094,13041670,46923777,47579138,48300034,54329346,75956234,77987850,78446593],"ievent":[655361,983041,1114114],"integer":[7733249,8388609,10158081,10223617,10944513,11075585,11337729,17629185,18350081,20643841,21954561,23265281,23461889,23920641,25624577,25690113,26279937,26345473,26411009,26673153,26869761,27131905,27328513,27525121,27656193,27721729,27787265,27852801,27918337,28246017,28180481,28442626,28508162,28573697,28835841,28901377,29229057,29425666,29491201,29622273,29818881,29949953,30015489,30081025,30343169,30474241,30539777,30670849,30867457,30998529,31064065,31260673,31326209,31391745,31522817,31588353,31653889,31719425,31850497,32047105,32505857,32571394,32768001,32833537,33030145,33226753,33488897,33619969,33947649,34013185,34078721,34340865,34471937,34537473,34668545,34930689,35454977,35586049,35782657,36110337,36438017,37224449,37355521,38141953,38469633,38731777,38928385,39649281,40304641,40370177,40828929,42336257,44498945,44892161,44957697,45481985,49086465,50921473,59572225,59703297,60489729,63111169,64094209,65011713,66322433,66584577,66912257,67829761,69402625,71696385,73728001],"inheritance":[68943873,69992449,70909953,71172097,71368705,71761921,71958529,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76677121,76742657,77201409,77266945,77332481,77398017,77529089,77594625,77856769,77987841,78249985,78577665,78708737,78774273,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"iasyncdisposable":[4063233,80936965],"immutable":[2031617,14614529,45547521,56492033,75038722],"identifier":[3735568,5373968,6619143,6684679,6815751,8650759,8716304,8847362,9175042,9306128,9502736,9830416,11010064,11206672,11403280,13172738,13238275,13434882,13500418,13697027,13828099,14745602,14811138,15073282,15400963,15597571,15859715,17235970,17301507,17825794,18087938,18284546,18546691,19202051,19988482,20119555,20316163,20578307,20774915,21495811,22216706,22478850,22937602,23527427,23592962,24182786,25100291,42270723,45219843,45350920,47710216,48168968,50593795,51183624,51576833,52953090,53149698,53542913,54132739,55443457,56492033,56819714,57671681,59047937,60424193,65863681,66781185,68157441,71892993,73007105,73990145,74842113,75038721,75104273,75759617,76087312,77856784,78512144,79167489,79953936,80216065,80281617,80347138,81002513,81068048,81264657],"introduce":[76939265],"istype":[3538945,4521985,9961477,75956225,77987841],"indexer":[16711681,23199745],"indexed":[2097155,2752515,2818051,3276803,3473411,3801091,3997699,4390915,4456453,4784133,4980741,5242883,5570563,5963779,17629185,18350081,20643841,21954561,23265281,23461889,23920641,25690113,26345473,26673153,27131905,27721729,28180483,30539777,31522817,31653889,35454977,45940737,46071809,46268417,46399489,46661633,46727169,47382529,48627713,48693249,48824321,49348609,49676289,52690945,53608449,54525953,55050241,55181313,55574529,56098817,56360961,56885249,57081857,57802753,58064897,59244545,59572225,60751873,61210625,62783489,62849025,63897601,64356353,66322433,66912257,67633153,69074946,71303172,73138180,73269253,73728001,74645508,74973189,75431937,75497476,75694085,76283908,77135876,78184452,78577668,79495172,80084996,81199108],"instantiating":[76611585,77070337],"isnull":[3538945,4521985,9895937,10616836,28901380,59113473,64421890,68026372,68878338,75956225,76349441,77529089,77987841,79429633],"interrupts":[3735553,5373953,8716289,9306113,9502721,9830401,11010049,11206657,11403265,17104897,25886721,37879809,50135041,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"iterates":[3211265,4456450,4784130,4980738,24772609,25493505,73269250,74973186,75694082,76414977],"implement":[16711681,23199745,76414977,78446593],"idata":[3997697,59244545,75497473],"ireadonlylist":[62586886,66256902,69271558],"issues":[72744961],"initializing":[49545218,52232193,76939265,77004801,80412673],"itemname":[13172741,13238277,13434885,13500421,13697029,13828101,14024709,14286853,14352389,14745605,14811141,15073285,15400965,15597573,15794181,15859717,15925253,16711685,17235973,17301509,17760261,17825797,17891333,18087942,18284550,18546694,19202053,19988486,20119558,20250629,20316166,20512773,20578310,20774918,21102598,21495814,21692422,22216710,22478854,22544390,22609926,22937606,23199750,23527430,23592966,24117254,24182790,24379398,24903686,25100294,26476550,27066374],"isdefaultattribute":[1769473,2031617,2949121,3145729,4653057,5046273,73990145,74842113,75038721,75759617,79167489,80216065],"iequality":[7143425,9437185,17694721,20971521],"immediate":[60358657,62980097,72548353,78970881],"idynamic":[9633793,9699329,10813441,11993089],"item":[3211265,4063233,4259841,12582915,13172737,13238273,13434881,13500418,13697026,13828097,14024705,14286849,14352386,14417921,14745602,14811138,15073281,15335425,15400962,15466498,15597569,15794178,15859713,15925250,16711683,17235970,17301506,17760257,17825793,17891330,18087937,18284546,18546689,19202050,19988482,20119554,20250625,20316162,20381697,20512769,20578305,20774913,21102594,21495810,21692417,22216705,22478850,22544386,22609921,22937602,23068679,23199747,23527426,23592961,24117249,24182785,24379393,24903682,25100289,26017794,26148871,26476545,27066370,27983873,37617665,37814273,46071811,47382531,53084161,53608450,54394881,54525954,55705601,56885250,58589185,59244546,59572228,60686341,60751874,61079556,62783490,63897602,64356354,66912261,67633154,69926917,70320129,71368705,73138178,74121217,74645506,75497474,75628545,76283906,76414978,76939265,77135874,78184450,78446593,79495170,80084994,80936961,81199106],"ienumerator":[5767172,35913736,37617672,49610756,75431940],"istransient":[78118913],"iteration":[3670018,18808834,19922946,78774274]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_106.json b/docs/Reference/fti/FTI_106.json index 8f411f29..5936b066 100644 --- a/docs/Reference/fti/FTI_106.json +++ b/docs/Reference/fti/FTI_106.json @@ -1 +1 @@ -{"javascriptobjectflags":[38535169,45940742,61210628],"json":[3604482,23134212,23724035,27000833,29229057,39780354,44498950,53673986,59899906,61145090],"java":[2949121,16252929,17104897,17825793,18153473,18546689,19005441,19333121,19726337,20054017,20512769,21299201,38535169,38862849,61079553,61210625,61341697],"jscript":[6291457,7536641,30867457,31522818,32112641,32309250,32702466,33161218,33685506,34734083,36503554,37486594,38469634,39059457,39124998,39190531,39976962,40566786,41287686,43909121,53805057,55377922,55967745,58392583,61407239,61472769,61669379],"javascript":[2621441,2686977,2818049,2949121,3145729,3211265,3670017,7143425,8060929,8126465,8257537,8323073,8650753,8912897,9043969,9306113,9437186,9568257,9699329,9830401,10289153,10354689,10420225,10485761,10616833,10682369,10878977,10944513,11075585,11141121,11206657,11337729,11665409,12058625,12189697,12255233,12582913,12910593,13565953,15728642,15794178,16056322,16252930,16449538,16580610,16711682,17104898,17301506,17432578,17498114,17825794,18022402,18153474,18219010,18481154,18546690,19005442,19202050,19333122,19726338,20054018,20512770,21299202,37027843,37421057,37814275,37945345,38535179,38797315,38862849,39321603,39518211,40239107,41156611,41484289,41549825,44040194,44564482,44826626,45350914,45940739,46399491,46989314,47251457,47448066,48037890,52035585,52101121,52428804,55377924,56098817,59375621,59441153,59834372,60162053,60293125,60424197,60751878,60817409,61079556,61145094,61210627,61341699],"javascriptobjectkind":[38535169,46399494,61341700],"javascrip":[13631489,23789569,42336257,45875201,59637761],"javascriptextensions":[2949122,16252929,17104897,17825793,18153473,18546689,19005441,19333121,19726337,20054017,20512769,21299201,38535169,38862849,61079558],"jscriptengine":[6291458,7536642,30867458,31522821,32112642,32309253,32702469,33161221,33685509,34734085,36503557,37486597,38469637,39059458,39124998,39190533,39976961,40566785,41287686,43909122,53805058,55967746,58392587,60882945,61407243,61603841,61669378],"just":[57147394,61669377]} \ No newline at end of file +{"javascriptextensions":[3670018,17039361,17170433,17956865,18415617,18808833,19398657,19922945,20054017,21233665,25231361,26935297,48103425,54263809,78774278],"javascript":[2818049,2752513,3276801,3473409,3670017,3997697,4390913,7995393,8585217,8847361,8912897,8978433,9109505,9175041,9961473,10158081,10223617,10354690,10747905,10551297,10878977,10944513,11075585,11730945,11862017,11927553,12124161,12386305,12517377,12582913,12845057,12910593,13631489,13893633,13959169,14090242,14221313,14876674,15204353,15990785,16318466,16449538,16646146,16777218,16842754,16908290,16973826,17039362,17170434,17432578,17956866,18153474,18415618,18677762,18743298,18808834,18874370,19005441,19070978,19136514,19398658,19595266,19922946,20054018,20185090,20905986,21168130,21233666,22020098,22282242,23986178,25231362,26935298,44826625,46202881,47906817,48103435,49020929,49545219,49938433,50266113,51249153,51707905,53215233,53608451,54263809,56885251,58195970,59244547,59506690,60751875,61145090,61734913,61931521,62783491,63307779,64356355,65208323,65470465,65929218,66846722,68616194,69861379,70123522,71958532,72155137,73138181,73924609,74448897,74645508,74776581,75497477,76087297,76283909,76939272,77135877,77791233,78184454,78774276,79233027],"jscript":[11206657,11403265,39714818,41943042,45219843,45613057,47185922,49414146,50528258,51380225,51576838,52101122,52232194,52559874,53673986,54132739,54919170,57737217,59047942,63045633,73662465,74776578,77463553,80281607,80412675,81264647,81330177],"javascrip":[18219009,26542081,64421889,68878337,79429633],"javascriptobjectkind":[48103425,65208326,69861380],"java":[3670017,17039361,17170433,17956865,18415617,18808833,19398657,19922945,20054017,21233665,25231361,26935297,48103425,54263809,69861377,78774273,79233025],"json":[6160386,39059457,39452673,41549828,43188227,59375618,76939266,77332482,78315526,80019458],"javascriptobjectflags":[48103425,63307782,79233028],"just":[72744962,80412673],"jscriptengine":[11206658,11403266,39714821,41943045,45219845,45613058,47185925,49414149,50528261,51380226,51576838,52101125,52232193,52559877,53673985,54132741,54919173,57737218,59047942,63045634,73662466,77463554,79953921,80281611,80412674,81068033,81264651]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_107.json b/docs/Reference/fti/FTI_107.json index f6773bfb..ff1436d7 100644 --- a/docs/Reference/fti/FTI_107.json +++ b/docs/Reference/fti/FTI_107.json @@ -1 +1 @@ -{"kind":[24444930,24969218,25362434,25493506,25559042,25821186,26017794,26083330,26411010,26542082,26607618,26935298,27066370,27525122,27983874,28049410,28311554,28377090,28573698,28704770,28966914,29294594,29491202,29556738,29949954,30343170,30736386,30998530,31391746,31981570,32178178,33095682,34013186,34930690,35848194,37027842,37814274,37879810,38797314,39518210,40239106,41156610,46399494,59375618,59834370,60162050,60293122,60424194,60620801,60751874,61145089,61341698],"keys":[34537473,42663943,43188225,45809665,46858242,54067201,56426497,57540610,57999361],"key":[2752516,16121862,17039367,17694726,19595270,45744129,46858241,49152006,57540613,58654721],"keyword":[13631489,23789569],"keyvaluepair":[2752518,46858242,56426504,57540624],"kinds":[38535169,61341697]} \ No newline at end of file +{"keyed":[51707905,71303169],"keyword":[18219009,26542081],"kind":[36044802,36175874,36241410,36372482,37552130,37748738,37945346,38076418,38207490,38273026,39387138,39518210,40042498,40108034,40239106,40435714,42401794,43122690,43515906,43581442,44040194,44433410,45744130,45875202,46858242,47513602,48037890,48365570,49217538,49741826,49807362,50987010,51970050,52625410,53608450,54460418,54984706,56885250,59244546,60751874,62783490,64356354,65208326,69861378,73138178,74645506,75497474,76283906,76939265,77135874,78184450,79560705],"key":[3211268,17498118,18939911,19529734,19791878,58589185,60358657,60686342,62980097,72548353,76414981,78970881],"keys":[53084161,54394881,55705601,58589186,63242247,71368705,74121217,75628545,76414978],"kinds":[48103425,69861377],"keyvaluepair":[3211270,58589186,75628552,76414992]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_108.json b/docs/Reference/fti/FTI_108.json index 4f8bf993..8e6f5a6a 100644 --- a/docs/Reference/fti/FTI_108.json +++ b/docs/Reference/fti/FTI_108.json @@ -1 +1 @@ -{"leaf":[7143425,8060929,54067201],"locates":[4259841,11599873,54067201],"loaddocument":[1835009,1966081,6488069,53084161,58523649],"leaks":[50200577,53936129],"loaders":[6029313,6488065,7274497,45023233,53870593],"languages":[8519681,9109505,9371649,9633793,9961473,10027009,10092545,10158081,10551297,10747905,10944513,11141121,11534337,13172737,13238273,13631489,13762561,13893633,14548993,14680065,14745601,15073281,15204353,15466497,15532033,16187393,16908289,18939905,19464193,20250625,20447233,21102593,21233665,21823489,22085633,22216705,22806529,23068673,23789569,23920641,24641537,47054849,50528257,51642369,51838977,56492033,57540609,60555265],"languag":[13828097,19398657,57540609],"looks":[1769473,3276801,4259841,19595265,54067201,56426497,57999361],"lower":[50200577,53936129],"lines":[47710209,48234497,52559873,56688642],"locks":[60817409],"loaded":[6029315,6488067,6815745,7274499,7405569,7864321,8847361,13172738,13238274,13762562,13893634,14680066,14745602,20250626,20447234,21102594,21233666,21823490,22085634,24051713,24444929,24772609,25493505,25559041,26017793,26083329,26411009,26542081,26935297,27066369,27394049,27525121,27721729,28311553,28377089,28573697,29032449,29294593,29556737,29753345,30736385,31981569,33095681,38010882,40894465,41222146,42926081,52166657,53870594,57278465,59572227],"larger":[60620801],"local":[8650753],"lengths":[9502726,10354694],"limited":[15859713,19529729,27197441,30867457,31588353,32112641,32964609],"locate":[11599873,17039361,19595265,41943041],"long":[1048580,1179650,16056328,16711688,17301512,17432584,17498120,18219016,44564484,44826628,45350916,46989316,49086468,49479684,49872900,50266116,50331652,50855940,52101126,52756484,54919174,55640068,56033284,56164356,56557572,57081862,57475078,57737224,60751873,61145090],"loadcallback":[41222145,42926084,53870593,59572225],"look":[12255233],"loading":[47382529],"label":[10944513,13631489,14548993,16187393,16908289,22151169,22740993,23068673,23789569,23920641,24641537,24969217,25362433,26673153,26738689,27459585,27590657,28180481,28508161,28639233,28901377,28966913,29097985,29163521,29425665,29622273,29884417,29949953,30146561,31129601,31391745,31850497,33161217,33554433,33685505,34275329,34734081,35127297,36044801,36306945,36569089,37224449,37486593,37879809,38207489,38469633,39190529,45613057],"like":[13828097,19398657],"line":[524291,1048579,1179651,3801089,37617666,39321601,50593793,55115778,55902212,56688641,57081859,61145089],"lossy":[61145091],"lib":[5046274,7077889,7143433,8060935,30932995,58785794],"likely":[42795009,48168961,48758785,48889857,49348609,56819713],"let":[7077889,7602177,8323073,8650753,12255233,12910593,31326209],"low":[61145089,61669377],"load":[983041,5242883,6029314,6488066,7274498,40894465,42926081,52166657,57278465],"list":[8650753,9699334,10289158,10420230,10485766,10682374,11075590,11206662,11337734,11665414,12058630,12189702,12582918,13828097,19398657,22740994,30670849,30932993,31064065,31457281,31719425,31784961,32047105,32374785,32440321,32505857,32571393,32899073,33030145,33292289,33357825,33423361,33488897,33619969,33751041,33816577,33882113,34078721,34209793,34340865,34406401,34471938,34603009,34668545,34734082,34799617,34865153,35061761,35127298,35192833,35258369,35323905,35586049,35651585,35717121,35782657,35913729,35979265,36044802,36110337,36175873,36241409,36372481,36438017,36700161,36765697,36831233,36896769,36962305,37158913,37289985,37355521,37421057,37552129,37683201,37748737,37945345,38076417,38207490,38338561,38600705,38666241,38862849,39059457,39124994,39190530,39649281,39714817,40173570,40370177,40632321,40763393,41091073,41222146,41287682,41418753,41811970,41877505,42074113,42205185,42270721,43450371,43843585,43909121,44957697,45088769,45416449,45613058,46071809,46268417,47775745,49414147,53870594,58195970,58327041,58392578,60030977,60096514,60817409,60882946,61407234,61538306,61603842],"loader":[1572865,1835009,1966081,5242881,5308417,5505025,5701633,5963777,6029313,6094849,6225921,6422529,6488065,6684673,6815745,7274497,7405569,7667713,7864321,8847361,34996226,35389441,38010882,39059457,39583747,40697858,40632321,41222146,42074113,42205185,42860546,43319302,43384835,43909121,44957697,45088769,45416449,46268417,46530563,46792707,47775745,52953091,53018626,53084163,53870594,58130435,58195969,58327041,58392577,58523649,60030977,60096513,60817409,60882945,61407233,61538305,61603841],"limit":[38404097,39911425,42074113,50200578,50724865,51511297,52101121,52690945,53149697,53542913,53936130,54263809,54460417,55640066,58261505,59244545,59441154,60817409],"leave":[52101121],"lists":[60751873],"listt":[9699330,10289154,10420226,10485762,10682370,11075586,11206658,11337730,11665410,12058626,12189698,12582914],"longer":[41943041,54853636],"locating":[46071809],"linq":[7143425,8060929,8126465,9306115,9830401],"link":[1,45744129,58654721],"loade":[35389441,39583745,40697857,43384833,53084161,58523649],"loads":[1572865,1835010,1966082,3735558,4587526,4980748,5242882,6029313,6291462,6356998,6488065,6553606,7208978,7274497,7536646,8716294,8978438,13172737,13238273,13762561,13893633,14680065,14745601,20250625,20447233,21102593,21233665,21823489,22085633,24051713,24444929,24772609,25493505,25559041,26017793,26083329,26411009,26542081,26935297,27066369,27394049,27525121,27721729,28311553,28377089,28573697,29032449,29294593,29556737,29753345,30736385,31981569,33030147,33095681,33882115,34668547,35586051,36372492,39714828,53084162,58130433,58195974,58261516,58327046,58392582,58523650,60096518,60817426,60882950,61407238,61538310,61603846],"loadcustomattributes":[1572865,5242885,58130433],"legacy":[46333953,47382529,51052545],"location":[59572225],"looking":[41943041],"level":[42532865,54853640,57147393,59572225,61145089,61276161,61669377],"linenumber":[524289,1048580,37617665,55115777,55902209,57081860],"listen":[25231361,26214401,27590657,27656193,28835841,29163521,29425665,29622273,29884417,30015489],"language":[3014658,4521986,13631489,23789569,41353217,45219841,47054849,49610753,50790401,51642369,55705602,56492033,60227586,61669377],"leaves":[30539777],"length":[16056325,17301509,40239106,41156610,46989318,60424194,60751874],"loaddocumentasync":[1835010,1966081,6029317,7274500,53084161,58523650],"library":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046274,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077891,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631490,13697025,13762561,13828098,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398658,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789570,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,26935297,27000833,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35454977,35520513,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36306945,36372481,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38404097,38469633,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40632321,40697857,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,41943041,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43909121,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,44957697,45023233,45088769,45154305,45219841,45285377,45350913,45416449,45481985,45547521,45613057,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268417,46333953,46399489,46465025,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47644673,47710209,47775745,47841281,47906817,47972353,48037889,48103425,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55312385,55377923,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492034,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785794,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555266,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145090,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669378],"leading":[47710209,48234497,52559873]} \ No newline at end of file +{"list":[9175041,10551302,11730950,11927558,12124166,12386310,12517382,12845062,12910598,13631494,13893638,14221318,15204358,16711681,22740994,23199745,42270722,43646977,43909121,43974657,44105729,44695553,44826625,45154305,45219842,45350913,45678593,45940737,46006273,46071809,46202881,46268417,46399489,46596097,46661633,46727169,46923777,47382529,47448065,47579137,47710209,47775745,47841281,47906817,47972353,48168961,48300033,48431105,48496641,48562177,48627713,48693249,48758785,48824321,49020929,49152001,49348609,49479681,49610753,49676289,49938433,50003969,50069505,50200577,50266113,50397185,50462721,50593794,50855937,51052545,51183617,51249153,51314689,51445761,51576834,51642369,51707905,51773441,51838977,51904513,52035585,52166657,52363266,52494337,52756482,52822017,52887553,52953090,53018625,53149698,53215233,53346305,53411841,53477377,53739521,53870593,54067201,54132738,54263809,54329345,54657025,54722561,54788097,54853633,55050241,55115777,55181313,55312385,55377921,55443458,55508993,55836673,55967745,56098817,56164353,56295425,56360963,56623105,56754177,57081857,57212929,57409537,57737217,57802753,57933825,58064897,58130433,58654721,58720257,58851329,59047938,60227585,60293121,60424194,61407233,62193665,62652417,62849027,63045633,63504385,63635457,64618497,64684033,65011713,65273857,69533697,69992449,75104258,76087297,77529090,77856770,78512129,79888386,79953922,80281602,81002498,81068034,81264642],"loaddocument":[2162689,2228225,7405573,75169793,79691777],"locks":[76087297],"leaks":[71041025,72220673],"loaddocumentasync":[2162689,2228226,9043972,10682373,75169794,79691777],"long":[393218,327684,16449544,16646152,16777224,16842760,16908296,18153480,18677768,18743304,20185096,21168136,22282248,23986184,28246018,30146564,30277634,30998530,31784964,31916034,32047108,34340868,36569092,37421058,58195972,59506692,61145092,64487430,65929220,66191364,66715652,66977796,68550660,68747268,69730308,70189060,70451206,70844420,71434244,71892998,72155142,73007112,73203716,73859076,78184449],"loade":[55640065,57344001,61997057,69468161,75169793,79691777],"loads":[851969,2162690,2228226,3735558,5373958,6356994,7077900,7405569,8716294,9043969,9306118,9502726,9830406,10682369,11010066,11206662,11403270,14155777,14483457,14548993,16515073,19857409,21037057,21364737,21626881,24641537,25427969,26607617,26738689,36044801,36175873,37552129,37748737,37945345,38207489,40239105,40435713,40894465,41025537,42074113,42598401,43057153,43581441,44433409,44695555,45023233,45744129,47513601,47841283,48037889,49741825,49807361,51314691,51642380,51970049,52625409,54984705,55115779,57212940,74711041,75104262,75169794,75366412,76087314,77856774,78512134,79691778,79953926,80281606,81002502,81068038,81264646],"lists":[78184449],"listt":[10551298,11730946,11927554,12124162,12386306,12517378,12845058,12910594,13631490,13893634,14221314,15204354],"label":[12582913,15269889,16384001,18219009,19464193,22085633,22740993,26542081,26804225,28639233,29360129,35258369,36372481,36896769,37027841,38731777,39387137,39649281,39714817,41287681,41680897,41943041,42205185,42270721,42401793,42532865,42991617,43778049,44040193,44302337,44498945,44761089,45219841,45481985,45875201,46530561,47316993,48234497,49086465,49217537,50331649,50528257,50593793,52101121,52297729,52953089,53149697,54132737],"loadcustomattributes":[851969,6356997,74711041],"like":[16711681,23199745],"line":[393219,327683,1572867,4718593,49545217,56819714,69271553,70451203,76939265,78118913,80347138,80740356],"listen":[38731777,39649281,40304641,40828929,42336257,44498945,44892161,45481985,49086465,50921473],"limited":[16580609,23003137,43843585,44564481,45613057,49283073,51380225],"legacy":[56688641,66650113,67895297],"linq":[7995393,8585217,8978433,9109505,11075587],"leave":[72155137],"lines":[56229889,66453505,67698689,69271554],"longer":[61603841,76611588],"languag":[16711681,23199745,76414977],"leading":[56229889,66453505,67698689],"local":[9175041],"let":[7733249,7929857,8847361,9175041,13959169,15990785,25624577,26279937,26869761,27656193,27787265,27852801,28442625,28573697,29032449,29097985,29229057,29294593,29425665,29622273,29818881,29884417,30015489,30146561,30277633,30670849,30736385,30801921,30932993,30998529,31064065,31719425,32047105,32112641,32178177,32309249,32374785,32440321,32768001,32833537,34078721,34209793,34275329,35651585,54591489],"language":[3342338,5963778,18219009,26542081,57868289,62062593,62128129,67567617,69140481,71237633,78708737,80084994,80412673,80543746],"length":[16777221,16908293,18743301,22282245,62783490,64356354,65929222,77135874,78184450],"locating":[63635457],"leaf":[7995393,9109505,74121217],"loaded":[6619137,6684673,6815745,7405571,8650753,9043971,10682371,14155778,14483458,14548994,16515074,19857410,21037058,21364738,21626882,24641538,25427970,26607618,26738690,36044801,36175873,37552129,37748737,37945345,38207489,40239105,40435713,40894465,41025537,42074113,42598401,43057153,43581441,44433409,45023233,45547522,45744129,47513601,48037889,49741825,49807361,51970049,52625409,52756482,54984705,61341697,64225281,69337089,76873731,79298561,79888386],"lossy":[76939268],"location":[76873729],"link":[196609,60358657,62980097,72548353,78970881],"lib":[4521986,7929857,7995401,9109511,46596099,75956226],"leaves":[51511297],"lengths":[10158086,11337734],"load":[458753,6356995,7405570,9043970,10682370,61341697,64225281,69337089,79298561],"loader":[851969,2162689,2228225,5505025,5832705,6029313,6291457,6356993,6619137,6684673,6815745,7208961,7405569,7536641,7602177,8126465,8257537,8650753,9043969,10682369,45547522,52756482,53936130,54657025,55640065,55771138,57344003,57737217,58130433,60293121,60882947,61407233,61997058,62193665,63045633,64684033,64749574,65273857,65536003,67960834,69468163,69533697,69992449,70254595,74711043,75104257,75169793,76087297,77856769,78512129,79691779,79888386,79953921,80281601,81002497,81068033,81264641],"level":[61276161,72744961,76611592,76873729,76939265,77201409,80412673],"locates":[2883585,13107201,74121217],"look":[13959169],"linenumber":[327684,1572865,56819713,70451204,80347137,80740353],"loadcallback":[52756481,64225284,76873729,79888385],"languages":[9633793,9699329,10027009,10289153,10485761,10813441,10878977,11141121,11468801,11993089,12582913,12779521,13041665,14155777,14483457,14548993,14942209,15269889,15728641,16187393,16384001,16515073,18022401,18219009,19464193,19857409,21037057,21364737,21561345,21626881,22872065,23855105,24313857,24641537,25427969,26542081,26607617,26738689,26804225,28639233,29360129,57868289,60162049,64552961,64815105,67305473,69140481,76414977,78708737,80871425],"loaders":[7405569,9043969,10682369,54198273,79888385],"low":[51707905,74776577,76939265,80412673],"library":[458753,65537,4521985,7929858,16711681,18219009,23199745,26542081,61603841,74776578,75956225,76939265,78708737,80412673,80871425],"lower":[71041025,72220673],"loading":[67895297],"looking":[61603841],"likely":[57147393,61669377,67502081,67764225,69206017,78381057],"locate":[13107201,17498113,18939905,61603841],"larger":[79560705],"limit":[55246849,59834369,60293121,64094209,66584577,67829761,69402625,70975489,71041026,71827457,72155137,72220674,73203714,73400321,75366401,76087297,77398017,77791234],"looks":[1966081,2883585,3080193,17498113,71368705,74121217,75628545]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_109.json b/docs/Reference/fti/FTI_109.json index 550085ef..1335cf50 100644 --- a/docs/Reference/fti/FTI_109.json +++ b/docs/Reference/fti/FTI_109.json @@ -1 +1 @@ -{"modify":[5373953,16318465,52166657,57278465],"marshalalllongasbigint":[61145090],"meta":[3735554,4587522,4980740,6029313,6291458,6356994,6488065,6553602,7208965,7274497,7536642,8519681,8716290,8978434,9109505,9633793,10027009,15073282,15204354,18939906,19464194,21954561,23461890,25821186,26607618,28049409,28442626,30343170,30998530,32178178,32374785,33488897,34078721,35061761,35192835,36634625,37355521,37748737,38010881,38666244,39256065,40435713,41549826,45285377,47251458,50003969,51576833,51970049,52166658,53739521,57278466,58195970,58261508,58327042,58392578,59310081,59703297,60096514,60489729,60817413,60882946,61407234,61538306,61603842],"members":[65537,131073,196609,262145,327681,393217,458753,524289,655361,786433,851969,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5111809,5177345,5439489,5570561,6291457,6356993,6553601,6881281,7208961,7536641,7798785,7929857,8126466,8454146,8585217,8716289,8978433,9240577,9437186,9502721,9895937,10092545,10354689,11141121,11730948,11927553,12320769,12648449,12713986,12845057,13041666,13107201,13303811,13369345,13500418,13697026,13828098,13959171,14024705,14090241,14155777,14286850,14417921,14483458,14876673,14942209,15007746,15138818,15269890,15597569,15925249,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19136514,19398658,19660801,19922946,19988481,20119553,20643841,20709378,20774913,21037058,21364737,21430274,21495809,21889026,22413313,22478849,22609923,23199746,23265281,23396355,24248322,25100290,34537473,34996225,35389441,36634625,37027841,37093377,37617665,37814273,38010884,38141953,38404097,38797313,38928386,38993921,39059459,39256065,39387137,39518209,39780353,39911425,40239105,40304641,40435713,40632323,40697857,41156609,41222145,41484289,42008578,42074115,42205187,42532865,42598401,43188225,43581442,43909123,43974657,44433409,44957699,45088771,45154305,45416449,45744129,45809665,46137345,46202881,46268419,46596097,46858241,46923777,47120385,47185922,47316994,47644673,47775747,47972353,48365569,48824321,50593793,50659329,51314689,51576833,52428801,52494338,53084161,53411842,53477380,53673985,53870593,54067201,54198273,54722561,55115777,55246849,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,56950786,57016321,57147393,57212929,57540611,57671681,57802753,57933825,57999361,58130433,58195971,58261505,58327043,58392579,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113476,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637762,59703297,59768833,59834369,59899905,59965444,60030977,60096515,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817411,60882947,60948481,61014017,61079553,61145091,61210625,61276161,61341697,61407235,61472769,61538307,61603843,61669377],"microseconds":[37093378,38141953,38404097,42074113,50266113,50855937,50987009,52756481,53673986,55574529,56754177,58261505,60817409],"maxyoungspacesize":[38993921,54263812,58589185],"maxruntimeheapsize":[42074113,50200580,51249153,51511297,59441153,60817409],"memory":[4980737,7208961,15728643,15794179,16580611,19202051,25362433,26345474,26411009,27066369,27787266,27983873,28049409,28377089,28573697,29294593,30343169,30539777,31981569,34013185,37879809,38010881,38993921,39321601,39911427,49872897,50200579,51511297,52101122,53936131,56164353,56557569,58261505,58589185,59244548,60489729,60686337,60817409,61210625],"multiplier":[38993921,51511299,58589185],"max":[39583745,43384833,45023233,50200577,50724865,52101121,52690945,53149697,53542913,53936129,54263809,54460417],"multidimensional":[13828097,19398657],"map":[6815745,7405569,7864321,8847361,40304641,51576833,52232194],"merge":[7077889,7143425],"mutable":[1048577,1179649,1245185,52166657,55836673,57278465],"max_safe_integer":[61145089],"maintains":[45023233],"monitoring":[50200580,50724865,51249153,51511297,52887553,53936132,54460417,59441153],"monitor":[50724865,54460417],"memberwiseclone":[1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849665,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"multiple":[13434881,23461889,24051713,24444929,24772609,24838145,24969217,25362433,25493505,25559041,25624577,25755649,25821185,26017793,26083329,26411009,26542081,26607617,26935297,27066369,27131905,27394049,27525121,27721729,27983873,28049409,28311553,28377089,28442625,28573697,28704769,28966913,29032449,29294593,29491201,29556737,29753345,29949953,30081025,30146561,30343169,30736385,30998529,31391745,31981569,32178177,32768001,33095681,34013185,34930689,35848193,36569089,37879809,39321601,52494337,59703297],"modeless":[4718593,30605315,60948481],"malicious":[51511297],"movenext":[8650753],"maxarraybufferallocation":[38993921,50200577,52101124,53936129,58589185],"manner":[11730945],"methods":[1572866,1638402,1703938,1769474,1835010,1900546,1966082,2031618,2097154,2293762,2359298,2424834,2490370,2555906,2621442,2686978,2752514,2818050,2162690,2228226,2883586,2949122,3014659,3080194,3145730,3211266,3276802,3342338,3407874,3473410,3538946,3604482,3670018,3735554,3801090,3866626,3932162,3997698,4063234,4128770,4194306,4259842,4325378,4390914,4456450,4521987,4587522,4653058,4718594,4784130,4849666,4980738,5046274,5111810,5177346,5242881,5439490,6291458,6356994,6553602,6881282,7208962,7471106,7536642,7798786,7929858,7995394,8126466,8454146,8585218,8716290,8978434,9240578,9437186,9502721,9895938,10092545,10354689,11141121,11927553,12320769,12648449,12713986,12845057,12910593,13041666,13107201,13303809,13369345,13500418,13697026,13828102,13959169,14024705,14090241,14155777,14286850,14417921,14483458,14876673,14942209,15007746,15138818,15269890,15597569,15925249,16252930,16777217,16842753,17104898,17235969,17563649,17760257,17825794,18087937,18153474,18350081,18546690,18612225,18743297,19005442,19070977,19136514,19333122,19398662,19726338,19660801,19922946,19988481,20054018,20119553,20512770,20643841,20709378,20774913,21037058,21299202,21364737,21430274,21495809,21889026,22413313,22478849,22609921,23199746,23265281,23396353,24248322,25100290,38010881,38535171,48300033,49676289,49938433,51183617,51576833,52297729,52822019,53084161,53280771,53477377,53673985,53870593,54067201,54525953,54722562,55115777,55246849,55312385,55705602,55836674,55902209,56229889,56426497,56492033,56754177,57016321,57212929,57540609,57671681,57802753,57933825,57999361,58130433,58195969,58261505,58327041,58392577,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047938,59113473,59244545,59310081,59375617,59506690,59703297,59768833,59834370,59899905,60096513,60162049,60227586,60293121,60358658,60424194,60489729,60555265,60751873,60817409,60882945,60948481,61014017,61079554,61407233,61472769,61538305,61603841],"manage":[6029313,6488065,7274497],"maxoldspacesize":[38993921,50200577,52690948,53542916,53936129,58589185],"maxheapsize":[38404097,51511297,52887553,53936132,58261505,59441153],"marshaled":[42336257,45875201,49610753,50528257,50790401,51838977,59637761,61145090,61407233,61472769,61538305,61603841,61669380],"marshalnullasdispatch":[49610753,50790401,61669377],"maxexecutablesize":[38993921,52690948,58589185],"misspelled":[41943041],"mib":[38993924,52690947,53149699,53542915,54263811,58589188],"metho":[57278465],"moment":[50266114,50855938,52756482],"memorystream":[50921473],"marshalarraysbyvalue":[61669377],"match":[2490369,2555905,2883585,3342337,3538945,4849665,13828097,19398657,53477377,54722561,55312385,59113473,59506689,60358657],"maxstackusage":[38404097,54460420,58261505],"make":[5373954,5898242,16318466,16973826],"maps":[49610753,50528257,50790401,51838977,60555265],"module":[41484289,41549829,47251461,47448065,48037889,52428801,54853633,59179009,61145089],"minimum":[38404097,42074113,51249153,52887553,58261505,60817409],"message":[16384007,20381703,22020103,22675463,32571394,34799618,42139654,44236801,45744131,46202881,48103425,48365571,48693249,58458115,58654725,58982403],"method":[2621441,2686977,2818049,3014670,3145729,3211265,3670017,4128769,4521999,5177345,5242882,5505025,5963777,6029313,6094849,6225921,6422529,6488065,6684673,6750209,6815746,6946817,7012353,7077889,7143425,7274497,7405570,7471109,7602177,7733249,7864322,7929861,7995397,8060929,8126465,8257537,8323073,8388609,8454145,8519681,8585221,8650753,8847362,8912897,9043969,9109505,9175042,9240581,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895941,9961473,10027009,10092545,10158081,10223618,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141122,11206657,11337729,11468801,11534337,11599873,11665409,11730945,11862017,11927553,12058625,12124161,12189697,12255235,12320769,12451841,12517377,12582913,12648449,12713986,12845057,12910593,13041665,13107201,13172738,13238274,13303810,13369345,13434883,13500417,13565953,13631492,13697025,13762562,13828106,13893634,13959170,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548994,14614529,14680066,14745602,14811137,14876673,14942209,15007745,15073282,15138818,15204354,15269890,15335425,15400961,15466498,15532034,15597569,15663105,15728642,15794178,15859715,15925249,15990785,16056321,16121857,16187394,16252934,16449537,16515073,16580610,16646149,16711681,16777217,16842753,16908290,17039361,17104901,17170433,17235969,17301505,17367042,17432577,17498113,17563649,17694721,17760257,17825797,17891329,17956866,18022401,18087937,18153478,18219009,18284545,18350081,18415617,18481153,18546694,18612225,18677761,18743297,18808833,18874373,18939906,19005446,19070977,19136513,19202050,19333126,19398666,19464194,19529731,19595265,19660801,19726341,19791876,19922945,19988481,20054022,20119553,20250626,20316162,20447234,20512773,20643841,20709377,20774913,20971522,21037058,21102594,21233666,21299206,21364737,21430274,21495809,21626881,21757953,21823490,21889026,22085634,22216706,22282241,22413313,22478849,22544386,22609922,22806530,22937601,23003137,23068674,23134209,23199745,23265281,23396354,23461889,23527425,23592965,23658497,23724033,23789572,23920642,23986177,24051713,24117249,24182785,24248321,24379393,24444929,24576001,24641538,24707073,24772609,24838145,24903681,24969217,25100289,25165825,25296897,25362433,25493505,25559041,25624577,25755649,25821185,25952258,26017793,26083329,26148865,26279938,26345473,26411009,26476546,26542081,26607617,26804226,26869762,26935297,27000834,27066369,27131905,27197444,27262977,27394049,27525121,27656194,27721729,27787265,27918337,27983873,28049409,28180482,28246018,28311553,28377089,28442625,28573697,28704769,28770306,28901378,28966913,29032449,29229058,29294593,29491201,29556737,29622274,29753345,29949953,30081025,30146561,30212097,30277633,30343169,30474242,30539777,30605313,30670849,30736385,30801922,30867460,30932993,30998529,31064065,31195137,31260674,31326209,31391745,31457281,31588356,31653890,31784961,31916034,31981569,32047105,32112644,32178177,32374785,32440321,32505857,32636929,32768001,32899073,32964612,33030145,33095681,33226753,33292289,33357825,33423361,33488897,33619969,33751041,33882113,33947649,34013185,34078721,34209793,34340865,34406401,34603009,34668545,34865153,34930689,35061761,35192833,35258369,35323905,35520514,35586049,35717121,35782657,35848193,35913729,35979265,36110337,36175873,36241409,36372481,36438017,36569089,36765697,36831233,36962305,37158913,37289985,37355521,37421057,37748737,37879809,37945345,38010887,38076417,38273029,38600705,38666241,38731777,38862849,39059461,39452673,39649281,39714817,40042498,40370177,40632325,40763393,40894465,41222146,41746433,42074119,42205189,42336258,42467329,42795009,42926081,43122693,43778051,43909125,44171266,44367874,44695553,44957701,45088773,45154305,45744129,45875202,46268421,46333956,47054850,47316994,47775749,47906819,48300033,48889857,50003969,51052548,51314689,51642370,52166657,52822018,53280770,53411842,53477378,53870594,54001667,54525953,54591490,54722566,55246849,55705614,56492035,56950786,57278465,57802753,58064897,58195973,58327045,58392581,58654721,58916865,59375617,59506692,59637762,59834369,60096517,60162049,60227599,60293121,60358660,60424193,60751873,60817415,60882949,61014017,61407237,61538309,61603845,61669380],"marshaling":[59965441,60817409],"modified":[9306113],"maximum":[16056321,16711681,17301505,17432577,17498113,18219009,35389441,38404098,38993925,39583746,39780353,40697857,42074114,43384834,45023234,50724865,51511297,51773441,52101121,52690946,53084161,53149698,53346305,53542914,54263810,54460417,58261506,58523649,58589189,59899905,60817410],"marshalunsafelongasbigint":[61145089],"maxnewspacesize":[38993921,53149700,54263812,58589185],"mustoverride":[7274497,20316161,20971521,21626881,22282241,23527425,23592961,23986177,24117249,24182785,24707073,24903681,25296897,30539777,44302337,45285377,47579137,48758785,51183617,55050241,55771137,56360961,56885249,57409537],"marshaldatetimeasdate":[61669377],"merged":[13828097,19398657],"mscorlib":[7143425,8060929],"marshal":[26476545],"mapping":[8126465,8454145,9437185,9502721,10092545,10354689,11141121,11927553,12320769,12648449,12713985,12845057,13041665,13107201,13303809,13369345,13500417,13697025,13828097,13959169,14024705,14090241,14155777,14286849,14417921,14483457,14876673,14942209,15007745,15138817,15269889,15597569,15925249,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19136513,19398657,19660801,19922945,19988481,20119553,20643841,20709377,20774913,21037057,21364737,21430273,21495809,21889025,22413313,22478849,22609921,23199745,23265281,23396353,24248321,25100289],"modulecategory":[38535169,41484290,47448065,48037889,52428806],"mustinherit":[53084161,55705601,56229889,57671681,58195969,59310081,59703297,59899905,60227585,60882945,61603841],"missing":[50528257,51838977,60555265],"member":[720897,917505,3014662,3538945,4521989,6750209,6815745,6946820,7012353,7077889,7143425,7405569,7471105,7602177,7733249,7864321,7929857,8060929,7995393,8126465,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8847361,8912897,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11337729,11468801,11534337,11599873,11665409,11730945,11862017,12058625,12124161,12189697,12255233,12451841,12517377,12582913,12910593,13565953,13828098,16252929,16515073,17104897,17825793,18153473,18284545,18546689,18808833,19005441,19333121,19398658,19726337,20054017,20512769,20905986,21299201,21561347,22347781,22872068,22937601,23134209,23330817,23461889,23724033,23855106,24051713,24444929,24510468,24772609,24838145,24969217,25034755,25165825,25362433,25493505,25559041,25624577,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26279937,26345473,26411009,26476545,26542081,26607617,26804225,26869761,27000833,26935297,27066369,27131905,27262977,27394049,27525121,27656193,27721729,27787265,27983873,28049409,28180481,28311553,28377089,28442625,28573697,28704769,28901377,28966913,29032449,29229057,29294593,29491201,29556737,29622273,29753345,29949953,30081025,30146561,30343169,30736385,30998529,31326209,31391745,31981569,32178177,32768001,33095681,34013185,34930689,35651585,35848193,36569089,37879809,38010883,38731777,39452673,40108033,40894465,41549825,41746433,42270721,42598401,42860545,42926081,43319297,43843585,43974657,44498945,44695553,45023233,45088769,45547521,46071809,46661633,46792705,46923780,47251457,47382529,47448065,47972353,48037889,48431105,48562177,49086465,49217537,49479681,49807361,49872897,50069505,50200577,50266113,50331649,50462723,50593793,50724865,50855937,50987009,51118081,51249153,51380225,51511297,51707905,51773441,52035585,52101121,52232193,52363265,52494338,52559873,52625409,52690945,52756481,52822017,52887553,53018625,53149697,53215233,53280769,53346305,53542913,53608449,53739521,53936129,54132737,54198273,54263809,54394881,54460417,54591492,54657025,54722562,54788097,54853633,54919169,54984705,55181313,55443457,55508993,55574529,55640065,55705606,56033281,56098817,56164353,56557569,56688641,56950788,57081857,57147393,57344001,57475073,57540609,57606146,57737217,57868289,58195969,59179009,59441153,59506693,59572225,59637762,59965441,60227589,60358658,60620801,60686337,61145089,61210625,61341697,61669377],"maxruntimestackusage":[42074113,50724868,60817409],"multiplication":[3014657,4521985,55705601,60227585],"merges":[5046273,7143425,30932993,58785793],"makes":[55377921,61145089],"min_safe_integer":[61145089],"managed":[2949122,4587521,6291457,6356993,6553601,7208961,7536641,8716289,8978433,18153474,18874370,19005442,36110337,36831233,38273026,40763393,43122690,58195969,58392577,59441153,60096513,60817409,60882945,61079554,61145089,61407233,61538305,61603841,61669377],"microsoft":[65539,131075,196611,262147,327683,393219,458755,524291,589828,655363,720900,786435,851971,917508,1048580,1114116,1179652,1245188,1376260,1441796,1507332,1572867,1638403,1703939,1769475,1900547,1835011,1966083,2031619,2097155,2293763,2359299,2424835,2490371,2555907,2621443,2686979,2752515,2818051,2162691,2228227,2883587,2949123,3014659,3080195,3145731,3211267,3276803,3342339,3407875,3473411,3538947,3604483,3670019,3735555,3801091,3866627,3932163,3997699,4063235,4128771,4194307,4259843,4325379,4390915,4456451,4521987,4587523,4653059,4718595,4784131,4849667,4915204,4980739,5046275,5111811,5177347,5242884,5308420,5373956,5439491,5505028,5570564,5636100,5701636,5767172,5832708,5898244,5963780,6029316,6094852,6160388,6225924,6291459,6356995,6422532,6488068,6553603,6619140,6684676,6750212,6815748,6881283,6946820,7012356,7077892,7143428,7208963,7274500,7340036,7405572,7471108,7536643,7602180,7667716,7733252,7798787,7864324,7929860,7995396,8060932,8126468,8192004,8257540,8323076,8388612,8454148,8519684,8585220,8650756,8716291,8781828,8847364,8912900,8978435,9043972,9109508,9175044,9240580,9306116,9371652,9437188,9502724,9568260,9633796,9699332,9764868,9830404,9895940,9961476,10027012,10092548,10158084,10223620,10289156,10354692,10420228,10485764,10551300,10616836,10682372,10747908,10813444,10878980,10944516,11010052,11075588,11141124,11206660,11272196,11337732,11403268,11468804,11534340,11599876,11665412,11730948,11796484,11862020,11927556,11993092,12058628,12124164,12189700,12255236,12320772,12386308,12451844,12517380,12582916,12648452,12713988,12779524,12845060,12910596,12976132,13041668,13107204,13172740,13238276,13303812,13369348,13434884,13500420,13565956,13631492,13697028,13762564,13828100,13893636,13959172,14024708,14090244,14155780,14221316,14286852,14352388,14417924,14483460,14548996,14614532,14680068,14745604,14811140,14876676,14942212,15007748,15073284,15138820,15204356,15269892,15335428,15400964,15466500,15532036,15597572,15663108,15728644,15794180,15859716,15925252,15990788,16056324,16121860,16187396,16252932,16318468,16384004,16515076,16449540,16580612,16646148,16711684,16777220,16842756,16908292,16973828,17039364,17104900,17170436,17235972,17301508,17367044,17432580,17498116,17563652,17629188,17694724,17760260,17825796,17891332,17956868,18022404,18087940,18153476,18219012,18284548,18350084,18415620,18481156,18546692,18612228,18677764,18743300,18808836,18874372,18939908,19005444,19070980,19136516,19202052,19267588,19333124,19398660,19464196,19529732,19595268,19660804,19726340,19791876,19857412,19922948,19988484,20054020,20119556,20185092,20250628,20316164,20381700,20447236,20512772,20578308,20643844,20709380,20774916,20840452,20905988,20971524,21037060,21102596,21168132,21233668,21299204,21364740,21430276,21495812,21561348,21626884,21692420,21757956,21823492,21889028,21954564,22020100,22085636,22151172,22216708,22282244,22347780,22413316,22478852,22544388,22609924,22675460,22740996,22806532,22872068,22937604,23003140,23068676,23134212,23199748,23265284,23330820,23396356,23461892,23527428,23592964,23658500,23724036,23789572,23855108,23920644,23986180,24051716,24117252,24182788,24248324,24313860,24379396,24444932,24510468,24576004,24641540,24707076,24772612,24838148,24903684,24969220,25034756,25100292,25165828,25231364,25296900,25362436,25427972,25493508,25559044,25624580,25690116,25755652,25821188,25886724,25952260,26017796,26083332,26148868,26214404,26279940,26345476,26411012,26476548,26542084,26607620,26673156,26738692,26804228,26869764,27000836,26935300,27066372,27131908,27197444,27262980,27328516,27394052,27459588,27525124,27590660,27656196,27721732,27787268,27852804,27918340,27983876,28049412,28114948,28180484,28246020,28311556,28377092,28442628,28508164,28573700,28639236,28704772,28770308,28835844,28901380,28966916,29032452,29097988,29163524,29229060,29294596,29360132,29425668,29491204,29556740,29622276,29687812,29753348,29818884,29884420,29949956,30015492,30081028,30146564,30212100,30277636,30343172,30408708,30474244,30539780,30605316,30670851,30736388,30801924,30867460,30932995,30998532,31064067,31129604,31195140,31260676,31326212,31391748,31457283,31522820,31588356,31653892,31719427,31784963,31850500,31916036,31981572,32047107,32112644,32178180,32243716,32309252,32374787,32440323,32505859,32571395,32636932,32702468,32768004,32833540,32899075,32964612,33030147,33095684,33161220,33226756,33292291,33357827,33423363,33488899,33554436,33619971,33685508,33751043,33816579,33882115,33947652,34013188,34144260,34078723,34209795,34275332,34340867,34406403,34471939,34537475,34603011,34668547,34734084,34799619,34865155,34930692,34996227,35061763,35127300,35192835,35258371,35323907,35389443,35454980,35520516,35586051,35651587,35717123,35782659,35848196,35913731,35979267,36044804,36110339,36175875,36241411,36306948,36372483,36438019,36503556,36569092,36634627,36700163,36765699,36831235,36896771,36962307,37027843,37093379,37158915,37224452,37289987,37355523,37421059,37486596,37552131,37617667,37683203,37748739,37814275,37879812,37945347,38010884,38076419,38141955,38207492,38273028,38338563,38469636,38404099,38535172,38600707,38666243,38731780,38797315,38862851,38928387,38993923,39059459,39124995,39190532,39321604,39256067,39387139,39452676,39518211,39583748,39649283,39714819,39780355,39845892,39911427,39976964,40042500,40108036,40173571,40239107,40304643,40370179,40435715,40501252,40566788,40697859,40632323,40763395,40828932,40894468,40960004,41025540,41091075,41156611,41222147,41287683,41353220,41418755,41484291,41549828,41615364,41680900,41746436,41811971,41877507,42008579,42074115,42139652,42205187,42270724,42336260,42401796,42467332,42532867,42598403,42663940,42729476,42795012,42860548,42926084,42991620,43057156,43122692,43188227,43253764,43319300,43384836,43450372,43515908,43581444,43646980,43712516,43778052,43843588,43909123,43974660,44040196,44105732,44171268,44236804,44302340,44367876,44433412,44498948,44564484,44630020,44695556,44761092,44826628,44892164,44957699,45023236,45154308,45088771,45219844,45285380,45350916,45416451,45481988,45547524,45613060,45678596,45744131,45809667,45875204,45940740,46006276,46071812,46137347,46202883,46268419,46333956,46399492,46465028,46530564,46596099,46661636,46727172,46792708,46858243,46923779,46989316,47054852,47120387,47185924,47251460,47316996,47382532,47448068,47513604,47579140,47644675,47710212,47775747,47841284,47906820,47972355,48037892,48103428,48168964,48234500,48300036,48365571,48431108,48496644,48562180,48627716,48693252,48758788,48824323,48889860,48955396,49020932,49086468,49152004,49217540,49283076,49348612,49414148,49479684,49545220,49610756,49676292,49741828,49807364,49872900,49938436,50003972,50069508,50135044,50200580,50266116,50331652,50397188,50462724,50528260,50593796,50659332,50724868,50790404,50855940,50921476,50987012,51052548,51118084,51183620,51249156,51314692,51380228,51445764,51511300,51576837,51642372,51707908,51773444,51838980,51904516,51970052,52035588,52101124,52166660,52232196,52297732,52363268,52428805,52494340,52559876,52625412,52690948,52756484,52822020,52887556,52953092,53018628,53084166,53149700,53215236,53280772,53346308,53411844,53477382,53542916,53608452,53673989,53739524,53805060,53870597,53936132,54001668,54067206,54132740,54198276,54263812,54329348,54394884,54460420,54525956,54591492,54657028,54722566,54788100,54853636,54919172,54984708,55050244,55115781,55181316,55246853,55312389,55377932,55443460,55508996,55574532,55640068,55705605,55771140,55836677,55902213,55967748,56033284,56098820,56164356,56229894,56295428,56360964,56426503,56492037,56557572,56623108,56688644,56754181,56819716,56885252,56950788,57016324,57081860,57147396,57212934,57278468,57344004,57409540,57475076,57540612,57606148,57671686,57737220,57802756,57868292,57933830,57999366,58064900,58130437,58195975,58261509,58327044,58392583,58458116,58523654,58589189,58654725,58720261,58785798,58851333,58916868,58982405,59047941,59113478,59179012,59244549,59310086,59375620,59441156,59506694,59572228,59637764,59703301,59768838,59834372,59899909,59965444,60030981,60096519,60162052,60227589,60293124,60358663,60424196,60489734,60555269,60620804,60686340,60751876,60817414,60882953,60948484,61014020,61079557,61145092,61210628,61276165,61341700,61407240,61472773,61538312,61603849,61669380],"machine":[8650753],"manipulate":[10944513],"mechanisms":[59441153],"modules":[38535169,41484290,47251457,47448065,48037889,52428803,54853633],"maxcachesize":[35389442,39583749,39780353,40697857,43384837,45023237,53084161,58523650,59899905],"marshaldecimalascurrency":[61669377],"mentioned":[13631489,23789569],"mechanism":[41549825,47251457,61669377],"management":[61669377]} \ No newline at end of file +{"movenextasync":[4063233,28377092,80936961],"marshalallint64asbigint":[76939267],"marshalalllongasbigint":[76939265],"manner":[11272193],"memory":[7077889,11010049,14876675,16318467,16973827,18874371,19070979,19136515,20905987,22020099,36241409,36372481,37486594,37945345,38273025,39387137,39518209,40239105,43515905,43581441,44433409,45547521,49545217,49741825,50724866,51511297,52625409,55246851,61014017,66191361,69730305,70975489,71041027,72155138,72220675,73859073,75366401,76087297,76152833,76939265,77398020,79233025,79757313,80674817],"method":[2097153,2752513,2818049,3276801,3342350,3473409,3866625,3997697,4390913,4980738,5570561,5701633,5767172,5963791,6029313,6291457,6356994,6619138,6684674,6815746,7208961,7405569,7471105,7536641,7602177,7733249,7798785,7929857,7995393,8060933,8192005,8257537,8323077,8388609,8454145,8519681,8585217,8650754,8781829,8847361,8912897,8978433,9043969,9109505,9175041,9568257,9633793,9699329,9764865,9961473,10027009,10092549,10158081,10223617,10289153,10354689,10420229,10485761,10551297,10616834,10682369,10747905,10813441,10878978,10944513,11075585,11141121,11272193,11337729,11468801,11534337,11599873,11665410,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12386305,12451841,12517377,12582913,12713985,12779521,12845057,12910593,13041665,13107201,13172737,13238273,13303811,13434881,13500417,13565953,13631489,13697025,13828097,13893633,13959171,14024705,14090241,14155778,14221313,14286849,14352385,14417922,14483458,14548994,14680065,14745601,14811137,14876674,14942210,15007745,15073281,15204353,15269890,15335426,15400961,15466498,15532033,15597569,15663106,15728642,15794177,15859713,15925249,15990785,16056321,16121857,16187394,16252933,16318466,16384002,16449537,16515074,16580611,16646145,16711690,16777217,16842753,16908289,16973826,17039365,17104898,17170437,17235969,17301505,17432577,17498113,17629185,17760257,17825793,17891330,17956869,18022402,18087937,18153473,18219012,18284545,18350081,18415621,18546689,18677761,18743297,18808838,18874370,18939905,19005441,19070978,19136514,19202049,19333121,19398661,19464194,19529729,19595265,19726337,19791873,19857410,19922950,19988481,20054022,20119553,20185089,20250626,20316161,20381698,20447233,20512769,20578305,20643841,20774913,20840449,20905986,21037058,21102594,21168129,21233669,21299201,21364738,21430277,21495809,21561346,21626882,21692417,21757956,21889025,21954561,22020098,22216705,22282241,22347777,22413313,22478849,22544385,22609922,22675457,22872066,22937601,23003139,23068673,23199754,23265281,23461889,23527425,23592961,23658498,23789569,23855106,23920641,23986177,24117249,24182785,24248321,24313858,24379393,24444929,24510465,24576002,24641538,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25231365,25296897,25362433,25427970,25493505,25559041,25624578,25690113,25821185,25886722,26017794,26083329,26148865,26214401,26279938,26345473,26411009,26476545,26542084,26607618,26673153,26738690,26804226,26869762,26935301,27000833,27066369,27131905,27328513,27459585,27525121,27590657,27656194,27721729,27787266,27852802,27918337,27983874,28049409,28114949,28246017,28180481,28377089,28442626,28508161,28573698,28639234,28704769,28770305,28835841,28901377,29032450,29097986,29163524,29229058,29294594,29360130,29425666,29491201,29556737,29622274,29687809,29753345,29818882,29884418,29949953,30015490,30081025,30146562,30212097,30277634,30343169,30408705,30474241,30539777,30605313,30670850,30736386,30801922,30867457,30932994,30998530,31064066,31129601,31195137,31260673,31326209,31391745,31522817,31588353,31653889,31719426,31784961,31850497,31916033,31981570,32047106,32112642,32178178,32243713,32309250,32374786,32440322,32571393,32636929,32702465,32768002,32833538,32964609,33030145,33095681,33226753,33292289,33357825,33423361,33488897,33619975,33685505,33751041,33816577,33882116,33947649,34078722,34209794,34275330,34340865,34406402,34471942,34537473,34603009,34668553,34865153,34930689,35127301,35323911,35389441,35454977,35520513,35586049,35651586,35717121,35848193,35913729,35979265,36044801,36175873,36241409,36306945,36372481,36503553,36569089,36634625,36700162,36831233,37093378,37158920,37224449,37289985,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879810,37945345,38010881,38076417,38207489,38273025,38338561,38404098,38600710,38666242,38797313,38862849,38928392,39059458,39124993,39190529,39256066,39321601,39387137,39452674,39518209,39583745,39780354,39845893,39911428,39976961,40042497,40108033,40173569,40239105,40370182,40435713,40501249,40566785,40632322,40697858,40828930,40894465,41025537,41156609,41222145,41287681,41353221,41418753,41484290,41549825,41615362,41746433,42008577,42074113,42139650,42205186,42401793,42467329,42598401,42663937,42729473,42795009,42860545,42926081,43057153,43122689,43188225,43319298,43450373,43515905,43581441,43646977,43712516,43778050,43843588,43909121,44040193,44171265,44302337,44367873,44433409,44564484,44630017,44695553,44826625,44957702,45023233,45088769,45154305,45285378,45350913,45416449,45481986,45613060,45547527,45678593,45744129,45875201,45940737,46137345,46202881,46268417,46333954,46399489,46465025,46596097,46661633,46727169,46792706,46858241,46923777,46989317,47120386,47513601,47579137,47644673,47710209,47775745,47841281,47906817,48037889,48168961,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48955395,49020929,49152001,49217537,49283076,49348609,49479681,49610753,49676289,49741825,49807361,49872900,49938433,50003969,50135042,50266113,50397185,50462721,50659329,50724865,50790401,50855937,50987009,51052545,51118082,51183617,51249153,51314689,51380228,51445761,51511297,51642369,51707914,51773441,51838977,51904513,51970049,52035585,52166657,52428802,52625409,52756482,52822017,52887553,53018625,53215233,53346305,53411841,53477377,53739521,53870593,54067201,54263809,54329345,54460417,54591489,54722561,54853633,54984705,55050241,55115777,55181313,55377921,56098817,56164353,56557569,56623105,56688644,56754177,57016321,57081857,57212929,57278465,57409537,57737221,57802753,57868290,58064897,58130437,58523650,58654726,58720257,58851329,58916867,60293127,60358657,60620801,61341697,61407237,61669377,61865985,62193669,62259202,62652417,62980097,63045637,63963137,64159746,64225281,64290819,64421890,64618497,64684037,65077250,65273861,65667073,66650116,67764225,68878338,69140482,69337089,69533701,72286210,72417283,72548353,72679425,73138177,73990146,74317826,74514434,74645505,74842118,74973187,75104261,75235330,75431940,75497473,75563010,75890689,76021762,76087303,76283905,76808193,76939265,77135873,77266945,77594625,77725697,77856773,78053377,78184449,78512133,78577665,78643201,78708739,78970881,79036417,79167492,79298561,79364097,79429634,79495169,79822849,79888386,79953925,80085007,80216068,80281605,80412676,80543758,80609285,81002501,81068037,81199105,81264645],"maxruntimestackusage":[60293121,71827460,76087297],"make":[6422530,7143426,19660802,20971522],"multiplier":[61014017,70975491,76152833],"mutable":[393217,524289,327681,69337089,78249985,79298561],"maxoldspacesize":[61014017,64094212,67829764,71041025,72220673,76152833],"mustinherit":[68943873,71172097,72613889,75431937,76480513,77266945,77332481,77856769,78577665,79691777,79953921,80084993,80543745,81068033],"marshal":[47120385],"mscorlib":[7995393,9109505],"making":[76939265],"maxarraybufferallocation":[61014017,71041025,72155140,72220673,76152833],"meta":[3735554,5373954,7077892,7405569,8716290,9043969,9306114,9502722,9633793,9699329,9830402,10682369,10813441,11010053,11206658,11403266,11993089,14942210,18022402,21561346,23330817,24313858,39518210,40173570,41418754,43515905,43909121,45547521,46858242,48365570,48496641,50003971,50987010,52822017,53018625,53870593,54001665,54460418,54853636,56426497,57409537,58261505,61734914,61931522,62914561,69337090,71172097,72482817,75104258,75366404,75825153,76087301,76480513,77725697,77856770,78512130,78839809,79298562,79953922,80281602,80674817,81002498,81068034,81264642],"manage":[7405569,9043969,10682369],"microsoft":[2,393218,131073,524290,589825,262145,655362,720897,327682,786434,851969,917506,983042,1048577,1114114,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2359298,2228225,2818049,2490369,2293761,2752513,2424833,2686977,2555905,2883585,2621441,2949121,3014657,3080193,3145729,3211265,3276801,3407873,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4653057,4587521,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505026,5570561,5636097,5701633,5832706,5963777,5898241,5767169,6029314,6094849,6160385,6225922,6291458,6356994,6422530,6488066,6553601,6619138,6684674,6750210,6815746,6881282,6946817,7012354,7077889,7143426,7208962,7274498,7340033,7405570,7471106,7536642,7602178,7667714,7733250,7798786,7864321,7929858,7995394,8060930,8126466,8192002,8257538,8323074,8388610,8454146,8519682,8585218,8650754,8781826,8716289,8847362,8912898,8978434,9043970,9109506,9175042,9240577,9306113,9371650,9437186,9502721,9568258,9633794,9699330,9764866,9830401,9895937,9961474,10027010,10092546,10158082,10223618,10289154,10354690,10420226,10485762,10551298,10616834,10682370,10747906,10813442,10878978,10944514,11010049,11075586,11141122,11272194,11206657,11337730,11403265,11468802,11534338,11599874,11665410,11730946,11796482,11862018,11927554,11993090,12058626,12124162,12189698,12255234,12320769,12386306,12451842,12517378,12582914,12648450,12713986,12779522,12845058,12910594,12976130,13041666,13107202,13172738,13238274,13303810,13369346,13434882,13500418,13565954,13631490,13697026,13762562,13828098,13893634,13959170,14024706,14090242,14155778,14221314,14286850,14352386,14417922,14483458,14548994,14614530,14680066,14745602,14811138,14876674,14942210,15007746,15073282,15138818,15204354,15269890,15335426,15400962,15466498,15532034,15597570,15663106,15728642,15794178,15859714,15925250,15990786,16056322,16121858,16187394,16252930,16318466,16384002,16449538,16515074,16580610,16646146,16711682,16777218,16842754,16908290,16973826,17039362,17104898,17170434,17235970,17301506,17367042,17432578,17498114,17563650,17629186,17694722,17760258,17825794,17891330,17956866,18022402,18087938,18153474,18219010,18284546,18350082,18415618,18481154,18546690,18612226,18677762,18743298,18808834,18874370,18939906,19005442,19070978,19136514,19202050,19267586,19333122,19398658,19464194,19529730,19595266,19660802,19726338,19791874,19857410,19922946,19988482,20054018,20119554,20185090,20250626,20316162,20381698,20447234,20512770,20578306,20643842,20709378,20774914,20840450,20905986,20971522,21037058,21102594,21168130,21233666,21299202,21364738,21430274,21495810,21561346,21626882,21692418,21757954,21823490,21889026,21954562,22020098,22085634,22151170,22216706,22282242,22347778,22413314,22478850,22544386,22609922,22675458,22740994,22806530,22872066,22937602,23003138,23068674,23134210,23199746,23265282,23330818,23396354,23461890,23527426,23592962,23658498,23724034,23789570,23855106,23920642,23986178,24051714,24117250,24182786,24248322,24313858,24379394,24444930,24510466,24576002,24641538,24707074,24772610,24838146,24903682,24969218,25034754,25100290,25165826,25231362,25296898,25362434,25427970,25493506,25559042,25624578,25690114,25755650,25821186,25886722,25952258,26017794,26083330,26148866,26214402,26279938,26345474,26411010,26476546,26542082,26607618,26673154,26738690,26804226,26869762,26935298,27000834,27066370,27131906,27197442,27262978,27328514,27394050,27459586,27525122,27590658,27656194,27721730,27787266,27852802,27918338,27983874,28049410,28114946,28246018,28180482,28311554,28377090,28442626,28508162,28573698,28639234,28704770,28770306,28835842,28901378,28966914,29032450,29097986,29163522,29229058,29294594,29360130,29425666,29491202,29556738,29622274,29687810,29753346,29818882,29884418,29949954,30015490,30081026,30146562,30212098,30277634,30343170,30408706,30474242,30539778,30605314,30670850,30736386,30801922,30867458,30932994,30998530,31064066,31129602,31195138,31260674,31326210,31391746,31457282,31522818,31588354,31653890,31719426,31784962,31850498,31916034,31981570,32047106,32112642,32178178,32243714,32309250,32374786,32440322,32505858,32571394,32636930,32702466,32768002,32833538,32899074,32964610,33030146,33095682,33161218,33226754,33292290,33357826,33423362,33488898,33554434,33619970,33685506,33751042,33816578,33882114,33947650,34013186,34078722,34144258,34209794,34275330,34340866,34406402,34471938,34537474,34603010,34668546,34734082,34799618,34865154,34930690,34996226,35061762,35127298,35192834,35258370,35323906,35389442,35454978,35520514,35586050,35651586,35717122,35782658,35848194,35913730,35979266,36044802,36110338,36175874,36241410,36306946,36372482,36438018,36503554,36569090,36634626,36700162,36765698,36831234,36896770,36962306,37027842,37093378,37158914,37224450,37289986,37355522,37421058,37486594,37552130,37617666,37683202,37748738,37814274,37879810,37945346,38010882,38076418,38141954,38207490,38273026,38338562,38404098,38469634,38535170,38600706,38666242,38731778,38797314,38862850,38928386,38993922,39059458,39124994,39190530,39256066,39321602,39387138,39452674,39518210,39583746,39649282,39714818,39780354,39845890,39911426,39976962,40042498,40108034,40173570,40239106,40304642,40370178,40435714,40501250,40566786,40632322,40697858,40763394,40828930,40894466,40960002,41025538,41091074,41156610,41222146,41287682,41353218,41418754,41484290,41549826,41615362,41680898,41746434,41811970,41877506,41943042,42008578,42074114,42139650,42205186,42270722,42336258,42401794,42467330,42532866,42598402,42663938,42729474,42795010,42860546,42926082,42991618,43057154,43122690,43188226,43253762,43319298,43384834,43450370,43515906,43581442,43646977,43712514,43778050,43843586,43909121,43974657,44040194,44105729,44171266,44236802,44302338,44367874,44433410,44498946,44564482,44630018,44695553,44761090,44826625,44892162,44957698,45023234,45088770,45154305,45219842,45285378,45350913,45416450,45481986,45547522,45613058,45678593,45744130,45809666,45875202,45940737,46006273,46071809,46137346,46202881,46268417,46333954,46399489,46465026,46530562,46596097,46661633,46727169,46792706,46858242,46923777,46989314,47054850,47120386,47185922,47251458,47316994,47382529,47448065,47513602,47579137,47644674,47710209,47775745,47841281,47906817,47972353,48037890,48103426,48168961,48234498,48300033,48365570,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889858,48955394,49020929,49086466,49152001,49217538,49283074,49348609,49414146,49479681,49545218,49610753,49676289,49741826,49807362,49872898,49938433,50003969,50069505,50135042,50200577,50266113,50331650,50397185,50462721,50528258,50593794,50659330,50724866,50790402,50855937,50921474,50987010,51052545,51118082,51183617,51249153,51314689,51380226,51445761,51511298,51576833,51642369,51707906,51773441,51838977,51904513,51970050,52035585,52101122,52166657,52232194,52297730,52363265,52428802,52494337,52559874,52625410,52690945,52756481,52822017,52887553,52953090,53018625,53084161,53149698,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673986,53739521,53805057,53870593,53936129,54001665,54067201,54132738,54198274,54263809,54329345,54394881,54460418,54525953,54591490,54657025,54722561,54788097,54853633,54919170,54984706,55050241,55115777,55181313,55246849,55312385,55377921,55443457,55508994,55574529,55640065,55705601,55771138,55836673,55902209,55967745,56033282,56098817,56164353,56229890,56295425,56360962,56426497,56492033,56557569,56623105,56688642,56754177,56819713,56885249,56950786,57016322,57081857,57147394,57212929,57278466,57344002,57409537,57475074,57540609,57606145,57671681,57737217,57802753,57868290,57933825,57999362,58064897,58130433,58195970,58261505,58327042,58392578,58458114,58523650,58589185,58654721,58785794,58720257,58851329,58916866,58982402,59047937,59113473,59179010,59244545,59310082,59375617,59441154,59506690,59572226,59637762,59703298,59768834,59834369,59899906,59965442,60030978,60096514,60162050,60227585,60293121,60358657,60489730,60424193,60555266,60620802,60686338,60751873,60817410,60882946,60948482,61014017,61079554,61145090,61210625,61276161,61341698,61407233,61472770,61538305,61669378,61734914,61800449,61865986,61931522,61997057,62062594,62128130,62193665,62259202,62324738,62390274,62455809,62521346,62586882,62652417,62717954,62783489,62849026,62914562,62980097,63045633,63111170,63176706,63242242,63307778,63373314,63438850,63504386,63569922,63635458,63700994,63766530,63832066,63897601,63963138,64028674,64094210,64159746,64225282,64290818,64356353,64421890,64487426,64552962,64618497,64684033,64749570,64815106,64880642,64946178,65011714,65077250,65142786,65208322,65273857,65339394,65404930,65470465,65536002,65601538,65732610,65667074,65798146,65863681,65929218,65994754,66060290,66125826,66191362,66256898,66322434,66387970,66453506,66519042,66584578,66650114,66715650,66781185,66846722,66912258,66977794,67043330,67108866,67174402,67239938,67305474,67371010,67436546,67502082,67567618,67633153,67698690,67764226,67829762,67895298,67960834,68026370,68091906,68157441,68222978,68288514,68354050,68419586,68485122,68550658,68616194,68681730,68747266,68812802,68878338,68943876,69009410,69074946,69140482,69206018,69271554,69337090,69402626,69468162,69533697,69599234,69664770,69730306,69795842,69861378,69926914,69992451,70057986,70123522,70189058,70254594,70320130,70385666,70451202,70516738,70582273,70647810,70713346,70778882,70844418,70909956,70975490,71041026,71106562,71172099,71237634,71303170,71368708,71434242,71499778,71565314,71630850,71696386,71761923,71827458,71892994,71958531,72024066,72089602,72155138,72220674,72286210,72351746,72417285,72482818,72548355,72613892,72679426,72744962,72810498,72876034,72941570,73007106,73072642,73138178,73203714,73269250,73334786,73400322,73465858,73531396,73596930,73662466,73728002,73793538,73859074,73924610,73990148,74055682,74121220,74186754,74252290,74317826,74383362,74448898,74514437,74579970,74645506,74711043,74776588,74842116,74907650,74973186,75038723,75104262,75169796,75235330,75300866,75366403,75431939,75497474,75563010,75628549,75694082,75759620,75825154,75890690,75956228,76021762,76087300,76152835,76218370,76283906,76349443,76414978,76480516,76546051,76611586,76677123,76742661,76808194,76873730,76939266,77004802,77070338,77135874,77201411,77266948,77332483,77398019,77463554,77529091,77594627,77660162,77725698,77791234,77856773,77922306,77987844,78053378,78118914,78184450,78249987,78315522,78381058,78446594,78512130,78577668,78643202,78708739,78774275,78839811,78905346,78970883,79036418,79101954,79167492,79233026,79298562,79364099,79429634,79495170,79560706,79626245,79691780,79757314,79822850,79888387,79953927,80019459,80084995,80150530,80216069,80281605,80347139,80412674,80478213,80543747,80609282,80674820,80740355,80805891,80871427,80936962,81002501,81068039,81133570,81199106,81264646,81330179],"multiple":[13303809,35389441,35520513,36044801,36175873,36241409,36372481,37289985,37552129,37748737,37945345,38076417,38207489,38273025,39387137,39518209,40042497,40108033,40173569,40239105,40435713,40894465,41025537,41287681,41418753,42074113,42401793,42467329,42598401,43057153,43122689,43515905,43581441,44040193,44302337,44433409,45023233,45744129,45875201,46858241,47513601,48037889,48365569,49217537,49545217,49741825,49807361,50659329,50987009,51970049,52625409,54460417,54984705,57016321,68419585,71172097],"min_safe_integer":[76939265],"message":[19267591,20709383,25755655,27262983,46006274,54788098,56950785,60358659,62455811,62980099,67108870,69664769,72548357,73334785,78905347,78970885],"marshalunsafeint64asbigint":[76939266],"management":[80412673],"max_safe_integer":[76939265],"multiplication":[3342337,5963777,80084993,80543745],"minimum":[59834369,60293121,68354049,72810497,75366401,76087297],"modified":[11075585,34406401,39976961,45285377,70385665],"malicious":[70975489],"maintains":[54198273],"memberwiseclone":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"makes":[74776577,76939265],"mechanisms":[77660161,77791233],"mentioned":[18219009,26542081],"modulecategory":[48103425,65470466,68616193,70123521,71958534],"maxyoungspacesize":[61014017,69402628,76152833],"members":[131073,589825,262145,720897,851969,1048577,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5570561,5636097,5701633,5767169,5963777,5898241,6094849,6160385,6488065,6553601,6946817,7077889,7340033,7864321,8192001,8323073,8454146,8716289,8978434,9240577,9306113,9502721,9830401,9895937,10092545,10158081,10354690,10420225,10878977,11010049,11206657,11272196,11337729,11403265,11468801,12320769,13172737,13238273,13434881,13500417,13697025,13828097,14024705,14286850,14352386,14417922,14745601,14811137,15073281,15335426,15400961,15466498,15597569,15794178,15859713,15925250,16711682,17235969,17301505,17760258,17825793,17891331,18087937,18284545,18546689,19202049,19988481,20119553,20250627,20316161,20381698,20512770,20578305,20774913,21102595,21495809,21692418,22216705,22478849,22544386,22609923,22937601,23199746,23527425,23592961,24117250,24182785,24379393,24903682,25100289,26017794,26476546,27066370,27983874,45547524,52690945,52756481,53084161,53280769,53542913,53608449,53805057,53936129,54001665,54394881,54525953,54657025,55246849,55574529,55640065,55705601,55902209,56033281,56426497,56492033,56557569,56819713,56885249,57278465,57540609,57606145,57671682,57737219,58130435,58261505,58589185,59113473,59244545,59375617,59834369,60227585,60293123,60358657,60751873,61014017,61210625,61276161,61407235,61538305,61800449,61997057,62193667,62259202,62324738,62455809,62717953,62783489,62980097,63045635,63897601,63963137,64356353,64684035,65273859,65470465,65863681,66781186,67043330,67633153,68157441,68419586,68943873,69533699,69861377,69992449,70320129,70582273,70909953,71172097,71303169,71368705,71499777,71761921,71958529,72024065,72286210,72417281,72548353,72613889,72744961,73138177,73269249,73531393,73990148,74121217,74317825,74514433,74645505,74711041,74842113,74973185,75038721,75104259,75169793,75300865,75366401,75431937,75497473,75628545,75694081,75759620,75956225,76021762,76087299,76152833,76283905,76349441,76414979,76480513,76546049,76677121,76742657,76808193,76873729,76939267,77004801,77135873,77201409,77266945,77332481,77398017,77529089,77594625,77660161,77791233,77856771,77987841,78118913,78184449,78249985,78446596,78512131,78577665,78708737,78774273,78839809,78905345,78970881,79101953,79167489,79233025,79364097,79429634,79495169,79560705,79626241,79691777,79757313,79888385,79953923,80019457,80084993,80150529,80216065,80281603,80347137,80412673,80478209,80543745,80674817,80740353,80805889,80871425,80936961,81002499,81068035,81133569,81199105,81264643,81330177],"member":[655361,983041,3342342,4653057,5963781,6619137,6684673,6815745,7471105,7733249,7798785,7929857,7995393,8060929,8192001,8323073,8388609,8454145,8519684,8585217,8650753,8781825,8847361,8912897,8978433,9109505,9175041,9568257,9633793,9699329,9764865,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10747905,10813441,10878977,10944513,11075585,11141121,11272193,11337729,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12386305,12451841,12517377,12582913,12713985,12779521,12845057,12910593,13041665,13107201,13565953,13631489,13893633,13959169,14221313,15204353,15990785,16711682,17039361,17170433,17956865,18415617,18808833,19005441,19398657,19922945,20054017,20840449,21233665,21889025,22151170,22347777,22806529,23199746,23396355,24051714,25165829,25231361,25624577,25952260,26279937,26869761,26935297,27328513,27394051,27525121,27656193,27787265,27852801,27918337,28246017,28311556,28442625,28508161,28573697,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29229057,29294593,29425665,29491201,29556737,29622273,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31522817,31588353,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32309249,32374785,32440321,32571393,32636929,32702465,32768001,32833537,32964609,33030145,33095681,33292289,33357825,33488897,33685505,33751041,33816577,33882113,33947649,34078721,34209793,34275329,34340865,34406401,34537473,34603009,34865153,34930689,35323905,35389441,35520513,35586049,35651585,35717121,35848193,35913729,35979265,36044801,36175873,36241409,36306945,36372481,36569089,36700161,36831233,37093377,37158913,37224449,37289985,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37945345,38076417,38207489,38273025,38338561,38404097,38666241,38797313,38862849,38928385,39059457,39124993,39190529,39256065,39387137,39452673,39518209,39583745,39780353,39976961,40042497,40108033,40173569,40239105,40435713,40566785,40828929,40894465,41025537,41222145,41287681,41418753,41549825,41615361,42008577,42074113,42205185,42401793,42467329,42598401,42729473,42795009,42926081,43057153,43122689,43188225,43515905,43581441,43712513,43778049,44040193,44302337,44367873,44433409,45023233,45088769,45285377,45481985,45416449,45547523,45744129,45875201,46137345,46792705,46858241,47120385,47513601,48037889,48365569,49217537,49741825,49807361,49872897,50659329,50724865,50790401,50987009,51118081,51970049,52625409,53542913,54198273,54460417,54591489,54984705,55312385,55508993,55771137,57016321,57475073,58130433,59310081,59441153,59768833,61341697,61734913,61931521,62586881,63373314,63438849,63504385,63635457,63700995,63766529,64028673,64094209,64225281,64487425,64749569,64880641,64946177,65011713,65077252,65142785,65536001,65863684,66060289,66191361,66256897,66584577,66715649,66977793,67174401,67436545,67698689,67829761,67895297,67960833,68026369,68157441,68354049,68419586,68550657,68616193,68681729,68747265,69009409,69271553,69402625,69599233,69730305,69861377,70123521,70189057,70385665,70451201,70516737,70778881,70844417,70975489,71041025,71434241,71499777,71565313,71630849,71696385,71827457,71892993,72155137,72220673,72744961,72810497,72876033,72941569,73007105,73072641,73203713,73400321,73596929,73859073,73924609,74055681,74186753,74383361,74448897,74579969,74842114,75235329,75563009,75825153,76021764,76218369,76414977,76611585,76873729,76939265,77004801,77070337,77660161,77791233,77856769,78118913,78315521,78446593,79167493,79233025,79429634,79560705,79757313,80084997,80150529,80216066,80412673,80543750],"monitoring":[68354049,70975489,71041028,71827457,72220676,72810497,73400321,77791233],"merged":[16711681,23199745],"meaning":[79233025],"match":[1769473,2031617,2949121,3145729,4653057,5046273,16711681,23199745,73990145,74842113,75038721,75759617,79167489,80216065],"metho":[29163521,34668545,37158913,56557569,61865985,69337089,74317825,80609281],"maxruntimeheapsize":[60293121,70975489,71041028,72810497,76087297,77791233],"maxheapsize":[59834369,68354049,70975489,72220676,75366401,77791233],"marshalnullasdispatch":[62128129,71237633,80412673],"manipulate":[12582913],"modeless":[9240577,41746435,81133569],"machine":[9175041],"maximum":[16449537,16646145,16777217,16842753,16908289,18153473,18677761,18743297,20185089,21168129,22282241,23986177,54198274,55640065,57344002,59375617,59834370,60293122,61014021,61997057,64094210,66584578,67829762,69402626,69468162,70778881,70975489,71827457,72155137,73400321,74383361,75169793,75366402,76087298,76152837,77332481,79691777],"marshalarraysbyvalue":[80412673],"marshaling":[76087297,78446593],"multidimensional":[16711681,23199745],"movenext":[4259841,9175041,24838148,70320129],"mib":[61014020,64094211,66584579,67829763,69402627,76152836],"maxstackusage":[59834369,73400324,75366401],"maxcachesize":[54198277,55640066,57344005,59375617,61997057,69468165,75169794,77332481,79691777],"merge":[7929857,7995393],"maps":[60162049,62128129,64552961,64815105,67305473,71237633,80871425],"methods":[851970,1638402,1703938,1769474,1835010,1900546,1966082,2031618,2097154,2162690,2228226,2293762,2424834,2490370,2555906,2621442,2686978,2752514,2818050,2883586,2949122,3014658,3080194,3145730,3211266,3276802,3342339,3407874,3473410,3538946,3604482,3670018,3735554,3801090,3866626,3932162,3997698,4063234,4128770,4194306,4259842,4325378,4390914,4456450,4521986,4587522,4653058,4718594,4784130,4849666,4915202,4980738,5046274,5111810,5177346,5242882,5308418,5373954,5439490,5570562,5636098,5701634,5767170,5963779,5898242,6094850,6160386,6356993,6553602,6946818,7077890,7340034,7864322,8060930,8192002,8323074,8454146,8716290,8781826,8978434,9240578,9306114,9502722,9830402,9895938,10092546,10158081,10354690,10420226,10878977,11010050,11206658,11337729,11403266,11468801,12320770,13172737,13238273,13434881,13500417,13697025,13828097,14024705,14286850,14352386,14417922,14745601,14811137,15073281,15335426,15400961,15466498,15597569,15794178,15859713,15925250,15990785,16711686,17039362,17170434,17235969,17301505,17760258,17825793,17891329,17956866,18087937,18284545,18415618,18546689,18808834,19202049,19398658,19922946,19988481,20054018,20119553,20250625,20316161,20381698,20512770,20578305,20774913,21102593,21233666,21495809,21692418,22216705,22478849,22544386,22609921,22937601,23199750,23527425,23592961,24117250,24182785,24379393,24903682,25100289,25231362,26017794,26476546,26935298,27066370,27983874,45547521,48103427,60620801,62390273,65667073,66519041,68943873,70320129,70713345,70909953,71172097,71303169,71368705,71761921,72417281,72548353,72613889,73138177,73269249,73531393,73990145,74121217,74514433,74645506,74711041,74842114,74907649,74973185,75038721,75104257,75169793,75235331,75366401,75431937,75497473,75563011,75628545,75694081,75759617,75956225,76087297,76152833,76283905,76349441,76414977,76480513,76546049,76677122,76742657,76808193,77135874,77266945,77332481,77398017,77529089,77594625,77856769,77987841,78184449,78249986,78512129,78577665,78708737,78774274,78839809,78970881,79101953,79167490,79364097,79495169,79626241,79691777,79888385,79953921,80019457,80084994,80216066,80281601,80347137,80478209,80543746,80674817,80740353,80805889,80871425,80936961,81002497,81068033,81133569,81199105,81264641,81330177],"marshaled":[60162049,62128129,64421889,64552961,64815105,67305473,68878337,71237633,75104257,76939266,79429633,79953921,80412676,81264641,81330177],"modify":[6422529,19660801,69337089,79298561],"mapping":[8454145,8978433,10158081,10354689,10878977,11337729,11468801,13172737,13238273,13434881,13500417,13697025,13828097,14024705,14286849,14352385,14417921,14745601,14811137,15073281,15335425,15400961,15466497,15597569,15794177,15859713,15925249,16711681,17235969,17301505,17760257,17825793,17891329,18087937,18284545,18546689,19202049,19988481,20119553,20250625,20316161,20381697,20512769,20578305,20774913,21102593,21495809,21692417,22216705,22478849,22544385,22609921,22937601,23199745,23527425,23592961,24117249,24182785,24379393,24903681,25100289,26017793,26476545,27066369,27983873],"mustoverride":[9043969,21954561,22413313,22675457,23658497,23789569,23920641,24444929,24510465,25690113,25821185,25886721,28114945,33423361,34668545,36503553,39321601,39911425,51511297,58392577,60489729,62390273,62521345,62914561,63569921,66125825,66912257,67502081,69074945,69926913],"monitor":[71827457,73400321],"misspelled":[61603841],"mechanism":[61734913,61931521,80412673],"max":[54198273,57344001,64094209,66584577,67829761,69402625,69468161,71041025,71827457,72155137,72220673,73400321],"map":[6619137,6684673,6815745,8650753,61538305,67174402,78839809],"module":[61734917,61931525,65470465,68616193,70123521,71958529,76611585,76939265,77004801],"moment":[68550658,70189058,71434242],"marshalunsafelongasbigint":[76939265],"managed":[3670018,5373953,8716289,9306113,9502721,9830401,11010049,11206657,11403265,18808834,19922946,21430274,41353218,46989314,51904513,56164353,56623105,75104257,76087297,76939265,77791233,77856769,78774274,79953921,80281601,80412673,81002497,81068033,81264641],"modules":[48103425,61734913,65470466,68616193,70123521,71958531,76611585],"marshaldatetimeasdate":[80412673],"maxexecutablesize":[61014017,64094212,76152833],"microseconds":[53805058,57540609,59834369,60293121,68550657,70189057,71434241,71565313,71761921,74055681,75366401,76087297,80019458],"memorystream":[65798145],"missing":[64815105,67305473,80871425],"marshaldecimalascurrency":[80412673],"maxnewspacesize":[61014017,66584580,69402628,76152833],"merges":[4521985,7995393,46596097,75956225]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_110.json b/docs/Reference/fti/FTI_110.json index 4ec317a2..2b2e10d6 100644 --- a/docs/Reference/fti/FTI_110.json +++ b/docs/Reference/fti/FTI_110.json @@ -1 +1 @@ -{"notifies":[2424833,13434881,57802753],"nonexistent":[50528257,51838977,60555265],"node":[524290,1048578,1179650,3801090,3997699,11599874,37093377,37617668,38141954,39321603,48562184,49807372,53608450,53673985,54394890,54919170,55115785,55508994,55902211,56033282,56688649,56754178,57081858,57475075,57737218,57868290],"noscriptaccessattribute":[2883586,21168133,38010881,42598402,53477377,54722568,59113473,60358657],"namespaces":[7143425,8060929,54067201,55377921],"num":[8126466],"numeric":[9699329,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12582913,13631490,13828097,19398657,23789570,37617666,55115778,55312385,57475073,57737217,61669377],"named":[2621443,2686979,2818051,3014657,3145731,3211267,3670019,4128771,4521987,5177347,6946818,7143428,8060932,13828097,14614529,15335425,17891329,19398657,21626881,24117249,24903681,35913729,35979265,36241409,36438017,36700161,36896769,36962305,37027841,37289985,37814273,38010881,38797313,39518209,40239105,41156609,42401793,47120385,47644673,48824321,54067204,55705601,56360961,57540609,58916868,59375620,59834372,60162052,60227588,60293124,60424196,60751876,61014020],"number":[524289,1048578,1179649,7602177,8126465,8388609,9306113,9568257,13631489,13828097,16056322,16711682,17301506,17432578,17498114,18219010,19398657,23789569,37617666,39583745,43384833,45023233,46858241,54919171,55115778,55902209,56033281,57081859,57540609,61145090],"names":[3014657,4521985,5898241,6160385,7143425,8060929,11272193,12386305,13828097,16973825,17629185,19398657,34537473,37027841,37814273,38797313,39518209,40239105,41156609,42663937,43188225,43515906,45809665,47120385,47644673,48824321,54067201,55705601,56426497,57409538,57999361,58916865,59375617,59834369,60162049,60227586,60293121,60424193,60751873,61014017,61145089],"needed":[3080193,5111809,18415617,23658497,26476545,58654721,58982401],"nodeid":[37617665,55115777,57475076],"nullsyncinvoker":[851971,1507330,6881282,30474242,31260674,31916034,35520514,39649281,40566785,58720263],"newvar":[3407873,5046273,12255237,41353217,45219841,58785793,59768833],"negation":[3014657,4521985,55705601,60227585],"notinheritable":[52428801,53477377,54722561,55115777,55246849,55312385,56754177,57212929,57933825,58261505,58589185,58851329,59047937,59506689,60030977,60817409,61079553,61276161],"new":[3014657,4521985,4915203,4980744,5308419,5373955,5570563,5636099,5701635,5767171,5832707,5898243,6160387,6619139,7077889,7143425,7208962,7340035,7667715,8192003,8388609,8650754,8781827,9109506,9306113,9502722,9568257,9633793,9830401,10092546,10354690,10747905,10944514,11141122,11272195,11403267,11534337,11796483,11927553,11993091,12255234,12320769,12386307,12648449,12713985,12779523,12845057,12976131,13041665,13107201,13303809,13369345,13500417,13697025,13828097,13959169,14024705,14090241,14155777,14286849,14417921,14483457,14876673,14942209,15007745,15138817,15269889,15597569,15925249,16318467,16384003,16449537,16777217,16842753,16973827,17170433,17235969,17563649,17629187,17760257,17891330,18022401,18087937,18350081,18481153,18612225,18743297,19070977,19136513,19267587,19398657,19660801,19857411,19922945,19988481,20119553,20185091,20381699,20578307,20643841,20709377,20774913,20840451,20905987,21037057,21168131,21364737,21430273,21561347,21495809,21692419,21954563,21889025,22020099,22151171,22347779,22413313,22478849,22609921,22675459,22740995,22872067,23199745,23265281,23330819,23396353,23855107,24182785,24248321,24313859,24510467,24838145,24903682,25034755,25100289,25231363,25427971,25624577,25690115,25755649,25886723,25952259,26214403,26673156,26738691,26804227,27328515,27459587,27590660,27656195,27852803,28114948,28180483,28508163,28639235,28835844,28901379,29097988,29163523,29360132,29425667,29622275,29687811,29818884,29884420,30015492,30081025,30408708,31129604,31326211,31522819,31719428,31850500,32243715,32309251,32571396,32702467,32833539,33161219,33554435,33685507,33816588,34144259,34275331,34340866,34406401,34471938,34734083,34799620,34865153,35127299,35454979,35651592,36044803,36306947,36503555,37224451,37486595,37552130,37683205,38076418,38207491,38338572,38469635,38993921,39124997,39190531,39321602,39976961,40173573,40370182,41091076,41287685,41418754,41811973,41877506,45613059,51576834,53084161,53149698,53477377,53870593,54067205,54722561,55312385,55705602,55836675,56426500,57999364,58130433,58195970,58261524,58392581,58523649,58589186,58654724,58785793,58982404,59113474,59179009,59310081,59441154,59506696,59768833,60096517,60227585,60358658,60489729,60686337,60817422,60882945,61145089,61407237,61538309,61603841,61669377],"net":[12910593,13631493,16252929,18546689,19333121,21299201,23789573,42336257,42795009,45875201,47382529,48889857,55377921,59637761,61145092],"nod":[37617674,53608449,54394881,54919169,55115786,55508993,56033282,56688641,57081857,57475073,57737217,57868289],"newer":[43057153,46465025],"null":[851969,1507329,3407874,5046274,5505025,5898241,6160385,6422529,6881281,7077891,7143425,8257538,8323074,8650754,9175044,11599873,12255234,12910594,13631490,16973825,17629185,19595265,23789570,25165825,30474241,31260673,31326210,31916033,35520513,38731777,39059458,39649281,40566785,40632322,41025537,42074114,42205186,42336260,42729473,43646977,43909122,44236801,44761089,44957698,45088770,45744131,45875204,46006273,46202883,46268418,46727169,46792705,47775746,48103425,48365572,48693249,49217537,49545217,49610757,50135041,50528257,50790405,51707905,51838977,52494337,52625409,54394881,56688641,58195970,58327042,58392578,58458116,58654723,58720258,58785794,58982403,59637762,59768834,60096514,60555265,60817410,60882946,61407234,61538306,61603842,61669377],"nullptr":[7077889,8323073,8650753,12255233,12910593,31326209],"normal":[39780353,43057153,45547521,46465025,52035585,56098817,59899905],"nested":[8126465,8454145,9437185,12713985,13041665,13500417,13697025,14286849,14483457,15007745,15138817,15269889,16384001,19136513,19922945,20709377,21037057,21430273,21889025,22675457,23199745,24248321,25100289,32571393,34799617,52035585,52494337,54722561,56098817,58654721,58982401,60358657],"numerical":[45744129,58654721],"natively":[9699329,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12582913,41353217,45219841],"newcomobj":[5046273,8650757,58785793],"namespace":[65537,131073,196609,262145,327681,393217,458753,524289,589826,655361,720898,786433,851969,917506,1048578,1114114,1179650,1245186,1376258,1441794,1507330,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259842,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915202,4980737,5046273,5111809,5177345,5242882,5308418,5373954,5439489,5505026,5570562,5636098,5701634,5767170,5832706,5898242,5963778,6029314,6094850,6160386,6225922,6291457,6356993,6422530,6488066,6553601,6619138,6684674,6750210,6815746,6881281,6946818,7012354,7077890,7143426,7208961,7274498,7340034,7405570,7471106,7536641,7602178,7667714,7733250,7798785,7864322,7929858,7995394,8060930,8126466,8192002,8257538,8323074,8388610,8454146,8519682,8585218,8650754,8716289,8781826,8847362,8912898,8978433,9043970,9109506,9175042,9240578,9306114,9371650,9437186,9502722,9568258,9633794,9699330,9764866,9830402,9895938,9961474,10027010,10092546,10158082,10223618,10289154,10354690,10420226,10485762,10551298,10616834,10682370,10747906,10813442,10878978,10944514,11010050,11075586,11141122,11206658,11272194,11337730,11403266,11468802,11534338,11599878,11665410,11730946,11796482,11862018,11927554,11993090,12058626,12124162,12189698,12255234,12320770,12386306,12451842,12517378,12582914,12648450,12713986,12779522,12845058,12910594,12976130,13041666,13107202,13172738,13238274,13303810,13369346,13434882,13500418,13565954,13631490,13697026,13762562,13828098,13893634,13959170,14024706,14090242,14155778,14221314,14286850,14352386,14417922,14483458,14548994,14614530,14680066,14745602,14811138,14876674,14942210,15007746,15073282,15138818,15204354,15269890,15335426,15400962,15466498,15532034,15597570,15663106,15728642,15794178,15859714,15925250,15990786,16056322,16121858,16187394,16252930,16318466,16384002,16515074,16449538,16580610,16646146,16711682,16777218,16842754,16908290,16973826,17039362,17104898,17170434,17235970,17301506,17367042,17432578,17498114,17563650,17629186,17694722,17760258,17825794,17891330,17956866,18022402,18087938,18153474,18219010,18284546,18350082,18415618,18481154,18546690,18612226,18677762,18743298,18808834,18874370,18939906,19005442,19070978,19136514,19202050,19267586,19333122,19398658,19464194,19529730,19595266,19660802,19726338,19791874,19857410,19922946,19988482,20054018,20119554,20185090,20250626,20316162,20381698,20447234,20512770,20578306,20643842,20709378,20774914,20840450,20905986,20971522,21037058,21102594,21168130,21233666,21299202,21364738,21430274,21495810,21561346,21626882,21692418,21757954,21823490,21889026,21954562,22020098,22085634,22151170,22216706,22282242,22347778,22413314,22478850,22544386,22609922,22675458,22740994,22806530,22872066,22937602,23003138,23068674,23134210,23199746,23265282,23330818,23396354,23461890,23527426,23592962,23658498,23724034,23789570,23855106,23920642,23986178,24051714,24117250,24182786,24248322,24313858,24379394,24444930,24510466,24576002,24641538,24707074,24772610,24838146,24903682,24969218,25034754,25100290,25165826,25231362,25296898,25362434,25427970,25493506,25559042,25624578,25690114,25755650,25821186,25886722,25952258,26017794,26083330,26148866,26214402,26279938,26345474,26411010,26476546,26542082,26607618,26673154,26738690,26804226,26869762,27000834,26935298,27066370,27131906,27197442,27262978,27328514,27394050,27459586,27525122,27590658,27656194,27721730,27787266,27852802,27918338,27983874,28049410,28114946,28180482,28246018,28311554,28377090,28442626,28508162,28573698,28639234,28704770,28770306,28835842,28901378,28966914,29032450,29097986,29163522,29229058,29294594,29360130,29425666,29491202,29556738,29622274,29687810,29753346,29818882,29884418,29949954,30015490,30081026,30146562,30212098,30277634,30343170,30408706,30474242,30539778,30605314,30670849,30736386,30801922,30867458,30932993,30998530,31064065,31129602,31195138,31260674,31326210,31391746,31457281,31522818,31588354,31653890,31719425,31784961,31850498,31916034,31981570,32047105,32112642,32178178,32243714,32309250,32374785,32440321,32505857,32571393,32636930,32702466,32768002,32833538,32899073,32964610,33030145,33095682,33161218,33226754,33292289,33357825,33423361,33488897,33554434,33619969,33685506,33751041,33816577,33882113,33947650,34013186,34144258,34078721,34209793,34275330,34340865,34406401,34471937,34537473,34603009,34668545,34734082,34799617,34865153,34930690,34996225,35061761,35127298,35192833,35258369,35323905,35389441,35454978,35520514,35586049,35651585,35717121,35782657,35848194,35913729,35979265,36044802,36110337,36175873,36241409,36306946,36372481,36438017,36503554,36569090,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224450,37289985,37355521,37421057,37486594,37552129,37617665,37683201,37748737,37814273,37879810,37945345,38010882,38076417,38141953,38207490,38273026,38338561,38469634,38404097,38535170,38600705,38666241,38731778,38797313,38862849,38928385,38993921,39059457,39124993,39190530,39321602,39256065,39387137,39452674,39518209,39583746,39649281,39714817,39780353,39845890,39911425,39976962,40042498,40108034,40173569,40239105,40304641,40370177,40435713,40501250,40566786,40697857,40632321,40763393,40828930,40894466,40960002,41025538,41091073,41156609,41222145,41287681,41353218,41418753,41484289,41549827,41615362,41680898,41746434,41811969,41877505,42008577,42074113,42139650,42205185,42270722,42336258,42401794,42467330,42532865,42598401,42663938,42729474,42795010,42860546,42926082,42991618,43057154,43122690,43188225,43253762,43319298,43384834,43450370,43515906,43581442,43646978,43712514,43778050,43843586,43909121,43974658,44040194,44105730,44171266,44236802,44302338,44367874,44433410,44498946,44564482,44630018,44695554,44761090,44826626,44892162,44957697,45023234,45154306,45088769,45219842,45285378,45350914,45416449,45481986,45547522,45613058,45678594,45744129,45809665,45875202,45940738,46006274,46071810,46137345,46202881,46268417,46333954,46399490,46465026,46530562,46596097,46661634,46727170,46792706,46858241,46923777,46989314,47054850,47120385,47185922,47251459,47316994,47382530,47448066,47513602,47579138,47644673,47710210,47775745,47841282,47906818,47972353,48037890,48103426,48168963,48234498,48300034,48365569,48431106,48496642,48562178,48627714,48693250,48758787,48824321,48889858,48955394,49020930,49086466,49152002,49217538,49283074,49348611,49414146,49479682,49545218,49610754,49676291,49741826,49807362,49872898,49938435,50003970,50069506,50135042,50200578,50266114,50331650,50397186,50462722,50528258,50593794,50659330,50724866,50790402,50855938,50921474,50987010,51052546,51118082,51183619,51249154,51314690,51380226,51445762,51511298,51576834,51642370,51707906,51773442,51838978,51904514,51970050,52035586,52101122,52166658,52232194,52297731,52363266,52428802,52494338,52559874,52625410,52690946,52756482,52822018,52887554,52953090,53018626,53084162,53149698,53215234,53280770,53346306,53411842,53477378,53542914,53608450,53673986,53739522,53805058,53870594,53936130,54001666,54067203,54132738,54198274,54263810,54329346,54394882,54460418,54525954,54591490,54657026,54722562,54788098,54853634,54919170,54984706,55050242,55115778,55181314,55246850,55312386,55377926,55443458,55508994,55574530,55640066,55705602,55771138,55836674,55902210,55967746,56033282,56098818,56164354,56229890,56295426,56360962,56426498,56492034,56557570,56623106,56688642,56754178,56819715,56885250,56950786,57016322,57081858,57147394,57212930,57278466,57344002,57409538,57475074,57540610,57606146,57671682,57737218,57802754,57868290,57933826,57999362,58064898,58130434,58195970,58261506,58327042,58392578,58458114,58523650,58589186,58654722,58720258,58785794,58851330,58916866,58982402,59047938,59113474,59179010,59244546,59310082,59375618,59441154,59506690,59572226,59637762,59703298,59768834,59834370,59899906,59965443,60030978,60096514,60162050,60227586,60293122,60358658,60424194,60489730,60555266,60620802,60686338,60751874,60817410,60882946,60948482,61014018,61079554,61145091,61210626,61276162,61341698,61407234,61472770,61538306,61603842,61669378],"nodes":[7143426,8060930,54067202,54394882],"necessary":[4980742,7208966,24969217,25493505,26083329,26542081,26607617,26935297,28311553,29491201,29949953,30736385,32178177,35192835,35848193,36372483,38666243,39714819,54853633,58261510,60817414],"nullexportvalue":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47775745,49610756,50790406,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"narrowing":[39059457,40632321,42074113,42205185,42795010,43909121,44957697,45088769,46268417,47775745,48889858,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"narrowest":[42795009,48889857],"nodefaultscriptaccessattribute":[3342338,20578309,38010881,42008578,53477384,59113473],"newarr":[3407874,5046273,9306113,9502726,9568258,10354695,34406402,58785793,59768834],"newobj":[3407876,5046276,8323073,9109509,9437186,9699329,10092550,10289153,10420225,10485761,10616833,10682369,10944518,11075585,11141127,11206657,11337729,11665409,12058625,12189697,12255233,12582913,12910593,13828097,19398657,34865156,58785796,59768836],"nullable":[1835009,6029316,6488068,7274499,51118085,58523649,61669378],"nextdouble":[11141122],"native":[13631491,13828097,19398657,23789571,46071809,55312385,57540609,61145090,61669378]} \ No newline at end of file +{"narrowest":[61669377,67764225],"native":[16711681,18219011,23199745,26542083,63635457,75038721,76414977,76939266,80412674],"null":[262145,786433,3538946,4521986,4915201,6553601,7143425,7536641,7602177,7929859,7995393,8847362,8912898,9175042,9437185,9895937,10616836,13107201,13959170,15990786,17498113,17694721,18219010,20971521,25624578,26279938,26542082,26869762,27656194,27787266,27852802,28442626,28573698,28901378,29032450,29097986,29229058,29294594,29425666,29622274,29818882,29884418,30015490,30146562,30277634,30670850,30736386,30801922,30932994,30998530,31064066,31719426,32047106,32112642,32178178,32309250,32374786,32440322,32768002,32833538,34078722,34209794,34275330,35651586,35979265,36831234,40632321,42139649,42729473,43319297,46333953,53477377,53673985,54591490,56950785,57737219,58130435,58458113,59113473,59965441,60096513,60162052,60293123,60358659,60555265,60948481,61407235,62128133,62193667,62455812,62586881,62980099,63045635,63176705,64421892,64552964,64684035,64815105,64880641,65273859,65536001,66256897,67305473,68026370,68419585,68812801,68878340,69271553,69533699,69599233,69664769,70647809,71237637,72548355,73334785,75104259,75956226,76087299,76349441,77529089,77856771,77987842,78512131,78905348,78970883,79364097,79429634,79953923,80281603,80412673,80805890,80871425,81002499,81068035,81264643],"num":[8978434],"nullexportvalue":[57737217,58130433,60293121,61407233,62128132,62193665,63045633,64684033,65273857,69533697,71237638,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"noscriptaccessattribute":[2949122,18612229,45547521,53542914,73990145,74842120,75759617,80216065],"natively":[10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,14221313,15204353,62062593,67567617],"nonexistent":[64815105,67305473,80871425],"nested":[8454145,8978433,10354689,14286849,14352385,14417921,15335425,15466497,15794177,15925249,17760257,20381697,20512769,20709377,21692417,22544385,24117249,24903681,26017793,26476545,27066369,27262977,27983873,46006273,54788097,68419585,72548353,73924609,74448897,74842113,78970881,80216065],"nodefaultscriptaccessattribute":[3145730,17367045,45547521,66781186,73990152,75759617],"normal":[57475073,59375617,60817409,66387969,73924609,74448897,77332481],"newobj":[3538948,4521988,8847361,9633797,10354690,10747905,10878983,10551297,11468806,11730945,11927553,12124161,12386305,12517377,12582918,12845057,12910593,13631489,13893633,13959169,14221313,15204353,15990785,16711681,23199745,46923780,75956228,77987844],"notifies":[2424833,13303809,76808193],"nullable":[2228225,4915202,7340035,7405572,9043971,9895939,10682372,27787271,30474247,30932999,34603015,38862855,51052546,51445762,54067202,63766533,75169793,76349443,77529091,79364098,80412674],"new":[3342337,5505027,5832707,5963777,6225923,6422531,6488067,6750211,6881283,7012355,7077896,7143427,7274499,7667715,7929857,7995393,8126467,8388609,8585217,9175042,9371651,9437187,9633794,10158082,10485761,10813441,10878978,10944513,11010050,11075585,11337730,11468802,12189699,12255235,12582914,12648451,12779521,12976131,13172737,13238273,13369347,13434881,13500417,13697025,13762563,13828097,13959170,14024705,14090241,14286849,14352385,14417921,14614531,14745601,14811137,15073281,15138819,15335425,15400961,15466497,15597569,15794177,15859713,15925249,16711681,17235969,17301505,17367043,17432577,17563651,17694723,17760257,17825793,17891329,18087937,18284545,18350081,18481155,18546689,18612227,19202049,19267587,19595265,19660803,19988481,20119553,20250625,20316161,20381697,20447234,20512769,20578305,20709379,20774913,20971523,21102593,21495809,21692417,21823491,22085635,22151171,22216705,22478849,22544385,22609921,22740995,22806531,22937601,23134211,23199745,23330819,23396355,23527425,23592961,23724035,23920641,24051715,24117249,24182785,24379393,24903681,25100289,25165827,25755651,25821186,25952259,26017793,26476545,27066369,27197443,27262979,27394051,27787267,27983873,28311555,28966915,30474243,30932995,31457283,32505859,32899075,33161219,33554435,33619971,34013187,34144259,34471939,34603011,34734083,34799619,34996227,35061763,35127299,35192835,35258371,35389441,35520513,35782659,36110339,36438019,36765699,36896771,36962307,37027843,37093379,37289985,37355523,38141955,38469635,38535172,38600707,38731779,38862851,38993923,39256067,39649283,39714819,39845891,40304644,40370179,40763396,40828931,40960003,41091075,41680900,41811971,41877508,41943043,42205187,42270723,42336259,42467329,42532868,42991620,43253763,43384835,43450371,43778051,43974661,44105730,44236803,44498948,44761092,44892163,44957699,45154305,45219843,45481987,45809667,46006276,46530563,46923777,47054852,47185923,47251459,47316995,47448066,47972364,48234499,48431106,48889859,49086468,49414147,49545218,50069512,50200578,50331651,50528259,50593795,50921476,51576837,52101123,52232193,52297731,52363266,52494344,52559875,52953091,53149699,53346306,53739524,54132739,54591491,54788100,54919171,55312392,55443461,55836684,55967748,56295428,56754180,57933826,58720262,59047941,60424197,61014017,66584578,71368708,72417284,72548356,73990145,74121221,74514436,74711041,74842113,75038721,75104261,75169793,75366420,75431937,75628548,75759618,75956225,76087310,76152834,76480513,76742658,76939265,77004801,77266945,77791234,77856770,77987841,78184451,78249987,78577665,78839810,78970884,79167496,79626248,79691777,79757313,79888385,79953921,80084993,80216066,80281605,80412673,80478216,80543746,80674817,81002501,81068033,81264645],"net":[15990785,18219013,26542085,61669377,64421889,67764225,67895297,68878337,74776577,76939271,79429633],"needed":[3014657,3407873,19726337,24707073,47120385,72548353,78970881],"negation":[3342337,5963777,80084993,80543745],"newer":[60817409,66387969],"newvar":[3538945,4521985,13959173,62062593,67567617,75956225,77987841],"narrowing":[57737217,58130433,60293121,61407233,61669378,62193665,63045633,64684033,65273857,67764226,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"nodes":[7995394,9109506,62586882,74121218],"namespaces":[7995393,9109505,74121217,74776577],"nullptr":[7929857,8847361,9175041,13959169,15990785,25624577,26279937,26869761,27656193,27787265,27852801,28442625,28573697,29032449,29097985,29229057,29294593,29425665,29622273,29818881,29884417,30015489,30146561,30277633,30670849,30736385,30801921,30932993,30998529,31064065,31719425,32047105,32112641,32178177,32309249,32374785,32440321,32768001,32833537,34078721,34209793,34275329,35651585,54591489],"nextdouble":[10878978],"node":[393218,327682,1572866,4128771,4718594,13107202,49545219,53805057,56819716,57540610,62586890,64028674,64487426,64946178,65142792,66715650,67436556,69271561,70451202,71761922,71892995,73007106,74186754,80019457,80347145,80740355],"namespace":[2,393218,131073,524290,589825,262145,655362,720897,327682,786434,851969,917506,983042,1048577,1114114,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2359298,2097153,2162689,2228225,2818049,2490369,2293761,2752513,2424833,2686977,2555905,2883586,2621441,2949121,3014657,3080193,3145729,3211265,3276801,3407873,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4653057,4587521,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505026,5570561,5636097,5701633,5832706,5963777,5898241,5767169,6029314,6094849,6160385,6225922,6291458,6356994,6422530,6488066,6553601,6619138,6684674,6750210,6815746,6881282,6946817,7012354,7077889,7143426,7208962,7274498,7340033,7405570,7471106,7536642,7602178,7667714,7733250,7798786,7864321,7929858,7995394,8060930,8126466,8192002,8257538,8323074,8388610,8454146,8519682,8585218,8650754,8781826,8716289,8847362,8912898,8978434,9043970,9109506,9175042,9240577,9306113,9371650,9437186,9502721,9568258,9633794,9699330,9764866,9830401,9895937,9961474,10027010,10092546,10158082,10223618,10289154,10354690,10420226,10485762,10551298,10616834,10682370,10747906,10813442,10878978,10944514,11010049,11075586,11141122,11272194,11206657,11337730,11403265,11468802,11534338,11599874,11665410,11730946,11796482,11862018,11927554,11993090,12058626,12124162,12189698,12255234,12320769,12386306,12451842,12517378,12582914,12648450,12713986,12779522,12845058,12910594,12976130,13041666,13107206,13172738,13238274,13303810,13369346,13434882,13500418,13565954,13631490,13697026,13762562,13828098,13893634,13959170,14024706,14090242,14155778,14221314,14286850,14352386,14417922,14483458,14548994,14614530,14680066,14745602,14811138,14876674,14942210,15007746,15073282,15138818,15204354,15269890,15335426,15400962,15466498,15532034,15597570,15663106,15728642,15794178,15859714,15925250,15990786,16056322,16121858,16187394,16252930,16318466,16384002,16449538,16515074,16580610,16646146,16711682,16777218,16842754,16908290,16973826,17039362,17104898,17170434,17235970,17301506,17367042,17432578,17498114,17563650,17629186,17694722,17760258,17825794,17891330,17956866,18022402,18087938,18153474,18219010,18284546,18350082,18415618,18481154,18546690,18612226,18677762,18743298,18808834,18874370,18939906,19005442,19070978,19136514,19202050,19267586,19333122,19398658,19464194,19529730,19595266,19660802,19726338,19791874,19857410,19922946,19988482,20054018,20119554,20185090,20250626,20316162,20381698,20447234,20512770,20578306,20643842,20709378,20774914,20840450,20905986,20971522,21037058,21102594,21168130,21233666,21299202,21364738,21430274,21495810,21561346,21626882,21692418,21757954,21823490,21889026,21954562,22020098,22085634,22151170,22216706,22282242,22347778,22413314,22478850,22544386,22609922,22675458,22740994,22806530,22872066,22937602,23003138,23068674,23134210,23199746,23265282,23330818,23396354,23461890,23527426,23592962,23658498,23724034,23789570,23855106,23920642,23986178,24051714,24117250,24182786,24248322,24313858,24379394,24444930,24510466,24576002,24641538,24707074,24772610,24838146,24903682,24969218,25034754,25100290,25165826,25231362,25296898,25362434,25427970,25493506,25559042,25624578,25690114,25755650,25821186,25886722,25952258,26017794,26083330,26148866,26214402,26279938,26345474,26411010,26476546,26542082,26607618,26673154,26738690,26804226,26869762,26935298,27000834,27066370,27131906,27197442,27262978,27328514,27394050,27459586,27525122,27590658,27656194,27721730,27787266,27852802,27918338,27983874,28049410,28114946,28246018,28180482,28311554,28377090,28442626,28508162,28573698,28639234,28704770,28770306,28835842,28901378,28966914,29032450,29097986,29163522,29229058,29294594,29360130,29425666,29491202,29556738,29622274,29687810,29753346,29818882,29884418,29949954,30015490,30081026,30146562,30212098,30277634,30343170,30408706,30474242,30539778,30605314,30670850,30736386,30801922,30867458,30932994,30998530,31064066,31129602,31195138,31260674,31326210,31391746,31457282,31522818,31588354,31653890,31719426,31784962,31850498,31916034,31981570,32047106,32112642,32178178,32243714,32309250,32374786,32440322,32505858,32571394,32636930,32702466,32768002,32833538,32899074,32964610,33030146,33095682,33161218,33226754,33292290,33357826,33423362,33488898,33554434,33619970,33685506,33751042,33816578,33882114,33947650,34013186,34078722,34144258,34209794,34275330,34340866,34406402,34471938,34537474,34603010,34668546,34734082,34799618,34865154,34930690,34996226,35061762,35127298,35192834,35258370,35323906,35389442,35454978,35520514,35586050,35651586,35717122,35782658,35848194,35913730,35979266,36044802,36110338,36175874,36241410,36306946,36372482,36438018,36503554,36569090,36634626,36700162,36765698,36831234,36896770,36962306,37027842,37093378,37158914,37224450,37289986,37355522,37421058,37486594,37552130,37617666,37683202,37748738,37814274,37879810,37945346,38010882,38076418,38141954,38207490,38273026,38338562,38404098,38469634,38535170,38600706,38666242,38731778,38797314,38862850,38928386,38993922,39059458,39124994,39190530,39256066,39321602,39387138,39452674,39518210,39583746,39649282,39714818,39780354,39845890,39911426,39976962,40042498,40108034,40173570,40239106,40304642,40370178,40435714,40501250,40566786,40632322,40697858,40763394,40828930,40894466,40960002,41025538,41091074,41156610,41222146,41287682,41353218,41418754,41484290,41549826,41615362,41680898,41746434,41811970,41877506,41943042,42008578,42074114,42139650,42205186,42270722,42336258,42401794,42467330,42532866,42598402,42663938,42729474,42795010,42860546,42926082,42991618,43057154,43122690,43188226,43253762,43319298,43384834,43450370,43515906,43581442,43646977,43712514,43778050,43843586,43909121,43974657,44040194,44105729,44171266,44236802,44302338,44367874,44433410,44498946,44564482,44630018,44695553,44761090,44826625,44892162,44957698,45023234,45088770,45154305,45219842,45285378,45350913,45416450,45481986,45547522,45613058,45678593,45744130,45809666,45875202,45940737,46006273,46071809,46137346,46202881,46268417,46333954,46399489,46465026,46530562,46596097,46661633,46727169,46792706,46858242,46923777,46989314,47054850,47120386,47185922,47251458,47316994,47382529,47448065,47513602,47579137,47644674,47710209,47775745,47841281,47906817,47972353,48037890,48103426,48168961,48234498,48300033,48365570,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889858,48955394,49020929,49086466,49152001,49217538,49283074,49348609,49414146,49479681,49545218,49610753,49676289,49741826,49807362,49872898,49938433,50003969,50069505,50135042,50200577,50266113,50331650,50397185,50462721,50528258,50593794,50659330,50724866,50790402,50855937,50921474,50987010,51052545,51118082,51183617,51249153,51314689,51380226,51445761,51511298,51576833,51642369,51707906,51773441,51838977,51904513,51970050,52035585,52101122,52166657,52232194,52297730,52363265,52428802,52494337,52559874,52625410,52690945,52756481,52822017,52887553,52953090,53018625,53084161,53149698,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673986,53739521,53805057,53870593,53936129,54001665,54067201,54132738,54198274,54263809,54329345,54394881,54460418,54525953,54591490,54657025,54722561,54788097,54853633,54919170,54984706,55050241,55115777,55181313,55246849,55312385,55377921,55443457,55508994,55574529,55640065,55705601,55771138,55836673,55902209,55967745,56033282,56098817,56164353,56229890,56295425,56360962,56426497,56492033,56557569,56623105,56688642,56754177,56819713,56885249,56950786,57016322,57081857,57147395,57212929,57278466,57344002,57409537,57475074,57540609,57606145,57671681,57737217,57802753,57868290,57933825,57999362,58064897,58130433,58195970,58261505,58327042,58392578,58458114,58523650,58589185,58654721,58785794,58720257,58851329,58916866,58982402,59047937,59113473,59179010,59244545,59310082,59375617,59441154,59506690,59572226,59637762,59703298,59768834,59834369,59899906,59965442,60030978,60096514,60162050,60227585,60293121,60358657,60489730,60424193,60555266,60620802,60686338,60751873,60817410,60882946,60948482,61014017,61079554,61145090,61210625,61276161,61341698,61407233,61472770,61538305,61669378,61734915,61800449,61865986,61931523,61997057,62062594,62128130,62193665,62259202,62324738,62390275,62455809,62521346,62586882,62652417,62717954,62783489,62849026,62914562,62980097,63045633,63111170,63176706,63242242,63307778,63373314,63438850,63504386,63569922,63635458,63700994,63766530,63832066,63897601,63963138,64028674,64094210,64159746,64225282,64290818,64356353,64421890,64487426,64552962,64618497,64684033,64749570,64815106,64880642,64946178,65011714,65077250,65142786,65208322,65273857,65339394,65404930,65470465,65536002,65601538,65732610,65667074,65798146,65863681,65929218,65994754,66060290,66125826,66191362,66256898,66322434,66387970,66453506,66519043,66584578,66650114,66715650,66781185,66846722,66912258,66977794,67043330,67108866,67174402,67239938,67305474,67371010,67436546,67502083,67567618,67633153,67698690,67764226,67829762,67895298,67960834,68026370,68091906,68157441,68222978,68288514,68354050,68419586,68485122,68550658,68616194,68681730,68747266,68812802,68878338,68943874,69009410,69074946,69140482,69206019,69271554,69337090,69402626,69468162,69533697,69599234,69664770,69730306,69795842,69861378,69926914,69992450,70057986,70123522,70189058,70254594,70320130,70385666,70451202,70516738,70582273,70647810,70713347,70778882,70844418,70909954,70975490,71041026,71106562,71172098,71237634,71303170,71368706,71434242,71499778,71565314,71630850,71696386,71761922,71827458,71892994,71958530,72024066,72089602,72155138,72220674,72286210,72351746,72417282,72482818,72548354,72613890,72679426,72744962,72810498,72876034,72941570,73007106,73072642,73138178,73203714,73269250,73334786,73400322,73465858,73531394,73596930,73662466,73728002,73793538,73859074,73924610,73990146,74055682,74121219,74186754,74252290,74317826,74383362,74448898,74514434,74579970,74645506,74711042,74776583,74842114,74907651,74973186,75038722,75104258,75169794,75235330,75300866,75366402,75431938,75497474,75563010,75628546,75694082,75759618,75825154,75890690,75956226,76021762,76087298,76152834,76218370,76283906,76349442,76414978,76480514,76546050,76611586,76677122,76742658,76808194,76873730,76939267,77004802,77070338,77135874,77201410,77266946,77332482,77398018,77463554,77529090,77594626,77660162,77725698,77791234,77856770,77922306,77987842,78053378,78118914,78184450,78249986,78315522,78381059,78446595,78512130,78577666,78643202,78708738,78774274,78839810,78905346,78970882,79036418,79101954,79167490,79233026,79298562,79364098,79429634,79495170,79560706,79626242,79691778,79757314,79822850,79888386,79953922,80019458,80084994,80150530,80216066,80281602,80347138,80412674,80478210,80543746,80609282,80674818,80740354,80805890,80871426,80936962,81002498,81068034,81133570,81199106,81264642,81330178],"necessary":[7077894,11010054,36175873,37552129,38207489,40108033,40435713,43122689,44040193,48037889,48365569,49217537,49807361,50003971,51642371,54460417,54853635,57212931,75366406,76087302,76611585],"notinheritable":[69992449,70909953,71761921,71958529,73531393,73990145,74514433,74842113,75038721,75366401,76087297,76152833,76546049,76677121,77201409,77594625,78774273,79167489,79626241,80347137],"nullsyncinvoker":[262147,786434,6553602,40632322,42139650,43319298,46333954,53477377,53673985,80805895],"nodeid":[56819713,71892996,80347137],"nullimportvalue":[57737217,58130433,60162054,60293121,61407233,62193665,63045633,64552964,64684033,65273857,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"nod":[56819722,62586881,64028673,64487425,64946177,66715650,69271553,70451201,71892993,73007105,74186753,80347146],"numeric":[10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,14221313,15204353,16711681,18219010,23199745,26542082,56819714,71892993,73007105,75038721,80347138,80412673],"newarr":[3538946,4521985,10158087,10944514,11075585,11337734,45154306,75956225,77987842],"newcomobj":[4521985,9175045,75956225],"numerical":[60358657,62980097,72548353,78970881],"number":[393217,327682,1572865,7733249,8388609,8978433,10944513,11075585,16449538,16646146,16711681,16777218,16842754,16908290,18153474,18219009,18677762,18743298,20185090,21168130,22282242,23199745,23986178,26542081,54198273,56819714,57344001,58589185,60227585,64487427,65011713,66715649,69468161,70451203,76414977,76939266,77529089,80347138,80740353],"named":[2097155,2752515,2818051,3276803,3342337,3473411,3801091,3997699,4390915,4456453,4784133,4980741,5242883,5570563,5963779,7995396,8519682,9109508,15007745,16711681,19333121,20447233,22413313,22675457,23199745,24969217,25034753,25559041,25821185,26214401,27590657,29687809,29753345,32243715,32636929,33685505,38010881,45547521,45940737,46071809,46268417,46399489,46661633,46727169,47382529,48627713,48693249,48824321,49348609,49676289,53608449,54525953,55050241,55181313,55574529,56098817,56885249,57081857,57802753,58064897,59244545,60030977,60751873,61079553,61210625,62783489,63897601,64356353,67371009,67633153,69926913,71303172,73138180,73269253,74121220,74645508,74973189,75497476,75694085,76283908,76414977,77135876,78184452,78577668,79495172,80084996,80543745,81199108],"names":[3342337,4456449,4784129,4980737,5963777,7143425,7995393,9109505,9437185,12976129,13369345,16711681,17694721,20971521,23199745,32243715,53084161,53608449,54394881,54525953,55574529,55705601,56885249,59244545,60030978,60751873,61210625,62521346,62783489,63242241,63897601,64356353,65339394,67371010,67633153,71303169,71368705,73138177,73269249,74121217,74645505,74973185,75497473,75628545,75694081,76283905,76939265,77135873,78184449,78577665,79495169,80084994,80543745,81199105]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_111.json b/docs/Reference/fti/FTI_111.json index 29de3009..ff7657a7 100644 --- a/docs/Reference/fti/FTI_111.json +++ b/docs/Reference/fti/FTI_111.json @@ -1 +1 @@ -{"overloads":[25952257,26804225,27656193,28180481,28901377,29622273],"omit":[7471105,7929857,7995393,8585217,9240577,9895937,16252929,17104897,17825793,18153473,18546689,19005441,19333121,19726337,20054017,20512769,21299201],"option":[57147393,59179009,59441154,59965442,60620801,61145098,61669381],"one":[3014657,4521985,5046274,5111809,7143426,8060930,9502721,9961473,10158081,10354689,10747905,11272193,11796481,12386305,12779521,12910593,13434881,13828098,17891329,19398658,24903681,26804225,27656193,28901377,29622273,30932994,37683204,40501249,41025537,42729473,43646977,44236801,45744131,46006273,46202883,46727169,48103425,48365573,48693249,49545217,50135041,50528257,51838977,52494337,54067205,55705601,58458117,58654724,58785794,58982403,59768833,60227585,60555265],"old":[38993921,52690948,53542914,58589185],"ownerhandle":[46596097,50397188,60948481],"objects":[3014657,4521985,8126465,8454145,9437185,12713985,13041665,13500417,13697025,13631491,13828098,14286849,14483457,15007745,15138817,15269889,19136513,19398658,19922945,20709377,21037057,21430273,21889025,23199745,23789571,24248321,25100289,38010881,39059458,40632322,42074114,42205186,43581441,43909122,44957698,45088770,46268418,47185921,47316993,47775746,49676289,49938433,51183617,52297729,52822018,53280769,53411841,55312385,55705601,57540609,58195970,58327042,58392578,59965442,60096514,60227586,60817410,60882946,61145092,61407234,61538306,61603842,61669378],"overload":[4915201,5373953,5570561,5636097,5767169,5832705,5898241,6160385,6815745,7143425,7405569,7471105,7864321,7929857,8060929,7995393,8126465,8388609,8454145,8519681,8585217,8847361,9109505,9240577,9306113,9371649,9437185,9502721,9633793,9764865,9895937,10027009,10092545,10223617,10354689,10551297,10813441,10878977,10944513,11010049,11141121,11272193,11468801,11534337,11796481,11862017,11927553,11993089,12124161,12320769,12386305,12451841,12517377,12648449,12779521,12845057,13041665,13107201,13172737,13238273,13303809,13369345,13500417,13565953,13697025,13631489,13762561,13893633,13828097,13959169,14024705,14090241,14155777,14286849,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15466497,15532033,15597569,15663105,15728641,15794177,15925249,16187393,16252929,16318465,16384001,16580609,16777217,16842753,16908289,16973825,17104897,17170433,17235969,17563649,17629185,17760257,17825793,17891329,18087937,18350081,18546689,18612225,18743297,18874369,18939905,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19726337,19660801,19857409,19922945,19988481,20119553,20185089,20250625,20381697,20447233,20512769,20643841,20709377,20774913,20840449,20905985,21037057,21102593,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21823489,22020097,22085633,22151169,22216705,22347777,22413313,22478849,22609921,22675457,22740993,22806529,22872065,23068673,23199745,23265281,23330817,23396353,23461889,23527425,23789569,23855105,23920641,24051713,24117249,24182785,24248321,24444929,24510465,24576001,24641537,24772609,24838145,24903681,24969217,25034753,25100289,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26214401,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26935297,27066369,27131905,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27852801,27983873,28049409,28114945,28180481,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28835841,28901377,28966913,29032449,29097985,29163521,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30343169,30408705,30474241,30670849,30736385,30932993,30998529,31064065,31129601,31260673,31391745,31457281,31522817,31719425,31784961,31850497,31981569,32047105,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32702465,32768001,32833537,32899073,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34603009,34668545,34734081,34799617,34865153,34930689,35061761,35127297,35192833,35258369,35323905,35454977,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36110337,36175873,36241409,36372481,36306945,36438017,36503553,36569089,36700161,36765697,36831233,36896769,36962305,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37683201,37748737,37879809,37945345,38076417,38207489,38273025,38338561,38469633,38600705,38666241,38862849,39124993,39190529,39452673,39649281,39714817,40173569,40370177,40763393,41091073,41287681,41418753,41680897,41811969,41877505,42401793,43122689,47316993,53411841,53477377,54591489,54722561,55771137,56360961,56950785],"occurs":[65538,131073,196609,262145,327681,589825,720897,917505,38010881,54067201,56426497,57999361,58261506,58654722],"onexposedtoscriptcode":[2424833,13434884,57802753],"owner":[46596097,50397186,60948481],"objec":[19791873,37027843,37814275,38797315,39518211,40239107,41156611,42991617,43515905,45940737,47120386,47644674,48824322,53280769,56885249,57409537,58916866,59375619,59834371,60162051,60227586,60293123,60424195,60751875,61014018,61145089],"owns":[37027841,37814273,38797313,39518209,40239105,40960001,41156609,47120385,47644673,48824321,55050241,58916865,59375617,59834369,60162049,60227585,60293121,60424193,60751873,61014017],"outcome":[12910593],"outside":[15728641,15794177,16580609,19202049,50200577,52101121,53936129],"obsolete":[22151169,34471937,38993922,40435713,42532865,52690945,54132737,54263809,54853633,57147393,58195969,58589186,59703297,60620801,61276161],"optional":[6029315,6488067,6815745,7077891,7274499,7405570,7602178,8126465,8323075,8650755,9109505,9437185,10092545,11141121,12124161,12255235,12517377,12910595,13041665,13500417,13697025,13762561,13828097,13893633,14221313,14286849,14614529,14680066,14745602,15400961,15990785,16646145,17891329,19136513,19398657,19922945,21102593,21233665,21626881,21757953,21823490,22085634,22282241,23003137,23199745,23592961,24248321,24444930,24772609,24903681,25493506,26083329,26411009,27394050,27525121,27721730,28311553,28377090,28573698,29556738,29753345,30736386,31326210,31981569,33095681,37617665,38010882,40304643,40894465,41222147,41549825,42401793,42926081,47251457,51118081,51576835,52232193,53608449,53870595,55115777,56360961,58785793,59768833],"operationcanceledexception":[58982405],"obj":[7077893,8650753,9109505,9764865,10092545,10223617,10944513,11141121,33751041,34865153],"occurrence":[2752513,57540609],"optionally":[3735554,4587523,6291459,6356995,6553603,7208963,7536643,8716291,8978435,13631489,16187393,18874369,23068673,23789569,32374785,33488897,34078721,35061761,36110337,36831233,37355521,37748737,38273025,40763393,43122689,58195971,58327042,58392579,60096515,60817411,60882947,61407235,61538307,61603843],"overridden":[2490370,2555906,2883586,3342338,3538946,4849666,5111809,11730945,53477378,54722562,55312386,58654721,59113474,59506690,60358658],"options":[3735566,4587534,4980741,6291470,6357006,6553614,7208975,7536654,8716302,8978446,11927554,13107202,13303810,13500418,13828098,14090242,14155778,14286850,14876674,14942210,15007746,15269890,15597570,15925250,17235970,17760258,18087938,18743298,19070978,19398658,19660802,19988482,20643842,21037058,22347778,22609922,22872066,23199746,24248322,24510466,25034754,25100290,25231362,25624578,25690114,25755650,26214402,26673154,26804226,27590658,27656194,28114946,28508162,28639234,28835842,28901378,29097986,29163522,29360130,29425666,29622274,29687810,29884418,30015490,31064068,32047108,32309250,32440321,32833538,33292292,33423364,33619969,33685506,33816584,34209796,34275330,34340865,34603009,34734082,35127298,35258372,35454978,35651588,35717121,36044801,36503554,37224450,38010884,38076417,38207490,38338568,38469634,39124995,39190530,39321606,39976961,40108033,40173571,40370180,41222145,41287683,41811971,42532865,45613057,46923777,50462721,53870593,54198274,55443458,57147394,58195982,58261517,58327054,58392593,59179010,59441153,59506694,59572226,59637762,59965442,60096529,60620801,60817431,60882958,61145090,61276161,61407249,61538321,61603854,61669378],"obsoleteattribute":[22151172,52690948,54132740,54263812,54853636],"object":[327681,1572875,1638411,1703942,1769483,1835019,1900555,1966091,2031627,2097163,2293770,2359307,2424834,2490377,2555913,2621452,2686988,2752523,2818060,2162699,2228235,2883593,2949123,3014676,3080193,3145741,3211276,3276811,3342345,3407916,3473419,3538953,3604491,3670028,3735566,3801094,3866635,3932171,3997707,4063243,4128781,4259851,4325387,4390923,4456459,4522015,4587544,4653067,4849673,4980747,5046317,5111817,5177358,5439499,6291479,6357015,6553623,6750213,6881291,6946818,7012357,7143426,7208983,7340033,7471110,7536663,7602181,7798795,7929875,8060930,7995398,8126477,8257550,8323077,8388621,8454150,8519688,8585236,8650760,8716311,8912905,8978455,9043981,9109518,9175045,9240588,9306127,9371650,9437196,9502727,9568268,9633806,9699335,9764873,9830407,9895949,9961484,10027011,10092565,10158087,10223619,10289159,10354694,10420231,10485767,10551303,10616833,10682375,10747921,10878979,10944516,11075591,11141132,11206663,11337735,11534349,11665415,11730953,11927556,12058631,12189703,12255239,12320772,12582919,12648451,12713986,12845057,12910609,13041666,13107201,13172741,13303813,13369348,13434885,13500418,13565960,13631495,13697026,13828107,13893637,13959173,14024707,14090241,14155779,14221322,14286850,14417931,14483458,14548997,14614541,14745605,14811138,14876676,14942209,15007746,15073285,15138818,15269890,15335426,15400974,15532037,15597571,15663111,15925249,15990797,16121862,16252934,16646156,16777217,16842756,17104902,17170440,17235971,17563649,17760257,17825798,17891336,18087940,18153488,18350081,18415618,18546694,18612225,18743297,18808837,19005456,19070979,19136514,19333126,19398669,19464198,19595270,19726342,19660801,19791873,19857409,19922946,19988484,20054030,20119565,20447238,20512774,20643841,20709378,20774915,21037058,21233670,21299206,21364737,21430274,21495812,21626894,21692417,21757965,21889026,22085638,22282255,22478851,22413313,22544386,22609925,22806534,23003152,23199746,23265281,23396357,23527426,23592973,23658498,23789576,24117250,24182793,24248322,24641542,24707073,24903689,25100290,25296903,26345473,27787265,30801922,31064072,31195146,31457282,31522817,31653890,32309249,32440325,32505867,32899074,33161217,33357826,33423368,33619971,33685505,33751045,34144257,34406401,34603013,34734081,34865159,35323906,35454977,35717123,35782660,35913731,35979267,36175875,36241412,36306945,36438020,36700164,36896772,36962309,37027845,37224449,37289989,37814277,38010883,38207489,38535171,38797317,38993923,39452677,39518214,39976962,40239109,40566785,40960002,41156613,41680905,42336260,42401808,42729478,42991617,43057153,43253767,43515905,43581441,43646983,45154306,45613057,45744129,45875204,45940737,46006279,46399490,46465025,46727176,46858245,47054856,47120389,47185921,47644677,48168961,48496647,48758785,48824325,49152008,49283080,49348609,49545223,49610760,49676296,49938439,50003973,50135048,50528263,50790409,51183623,51314690,51576839,51642375,51838984,52101121,52297736,52428801,52690948,53084172,53149697,53477386,53542913,53673996,53870604,54067214,54263809,54722570,55050242,55115788,55246849,55312395,55705621,55771145,55836684,55902215,56229900,56360977,56426520,56492044,56754188,56885249,56819713,57016321,57212940,57409537,57540639,57671692,57802755,57933836,57999372,58130444,58195993,58261516,58327054,58392600,58523660,58589199,58654733,58720268,58785838,58851340,58916882,58982401,59047947,59113482,59244556,59310092,59375633,59506698,59703308,59637763,59768877,59834385,59899916,59965442,60030977,60096536,60162065,60227620,60293139,60358666,60424209,60489740,60555276,60751889,60817432,60882968,61014035,61079556,61145096,61210629,61276161,61341706,61407256,61472782,61538328,61603864,61669379],"overridable":[5242881,5963777,6225921,6422529,6488065,6946817,18874369,19529729,23658497,24379393,39583745,44761089],"occupies":[52690948],"overriding":[52166657,57278465],"older":[43450369,47382529,49414145],"occupying":[30539777],"observed":[1179649,39321601,55902209,56033281],"overall":[61145089],"occurred":[983041],"overrides":[1835012,3866625,4390913,4587521,5111810,5242881,5505025,6094849,6029313,6291457,6356993,6553601,6684673,7208965,7536641,7798785,8716292,18415617,18677761,19791874,22544385,27197441,27918337,28246017,28770305,30801921,30867457,31588353,31653889,32112641,32964609,35389441,36634627,38273025,39059457,40632321,42074115,42467329,43122689,43384833,43778049,43909121,44367873,44957697,46268418,49348609,49676289,50921473,51445761,51970049,52297729,53805057,54329345,55967745,56295425,56492033,56623105,56819713,58195969,58392578,58523653,58654722,60096514,60489731,60555265,60817416,60882950,61407234,61472769,61538306],"overloaded":[9764866,10092545,10223617,10878977,11141121,13565954,13828097,19398657],"output":[9568257,9830401,15859714,19529730,27197442,30867458,31588354,32112642,32964610,41353217,45219841],"override":[589825,3014665,4521993,5242881,5505027,5963777,6029315,6094851,6225921,6422529,6488065,6684675,6946817,11730945,15859713,16121857,16842753,17039361,17235969,17694721,17760257,18087937,18415619,18612225,18677763,18743297,18874369,18939905,19070977,19136513,19398657,19464193,19529730,19595265,19660801,19791873,19922945,19988481,20119553,20250625,20447233,20643841,20709377,20774913,21037057,21102593,21233665,21364737,21430273,21495809,21757953,21823489,21889025,22085633,22216705,22413313,22478849,22544387,22609921,22806529,23003137,23068673,23199745,23265281,23396353,23658497,23789569,23920641,24248321,24379393,24576001,24641537,25100289,27197444,27918339,28246019,28770307,30212097,30474241,30801923,30867460,31260673,31588356,31653891,31916033,32112644,32964612,35520513,38273027,39583745,42467331,42663937,42795009,43057153,43122691,43253761,43384836,43450369,43712513,43778051,44171265,44236801,44367875,44630017,44761089,44892161,45219841,45481985,45875201,46006273,46333953,46465026,46727169,47054849,47185921,47316993,47513601,48103425,48234497,48627713,49020929,49152001,49283073,49348611,49545217,49676291,49741825,50135041,50659329,50790401,50921475,51314689,51445763,51838977,51904513,51970051,52297731,52953089,53411842,53477377,53805059,54001665,54329347,54525953,55443457,55705609,55967747,56295427,56623107,56819715,59113473,60227593],"open":[39321601,55377921],"operators":[55312385],"outermost":[52035585,54853633,56098817],"offset":[16711686,17432582,17498118,18219014,37814274,38797314,40239106,41156610,44564486,50266113,50855937,52756481,59834370,60162050,60424194,60751874],"operations":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014678,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4522006,4587521,4653057,4849665,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,13434882,19791873,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705622,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227606,60358657,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"outperform":[48168961,48758785,49348609,56819713],"optimized":[15859713,19529729,27197441,30867457,31588353,32112641,32964609,37617665,53608449,55115777],"operator":[8257537,8912897,10878977,13565953],"outattribute":[19595266,24444930,24969218,25362434,25493506,25559042,25821186,26017794,26083330,26411010,26542082,26607618,26935298,27066370,27525122,27983874,28049410,28311554,28377090,28573698,28704770,28966914,29294594,29491202,29556738,29949954,30343170,30736386,30998530,31391746,31981570,32178178,33095682,34013186,34930690,35848194,37879810],"operation":[6029315,6488066,7274499,9109506,9633793,10747905,11534337,11927553,12910593,13107201,13303809,13500417,13828097,14090241,14155777,14286849,14876673,14942209,15007745,15269889,15597569,15925249,16252929,16515073,17104897,17235969,17760257,17825793,18087937,18284545,18546689,18743297,18808833,19070977,19333121,19398657,19660801,19726337,19988481,20054017,20512769,20643841,21037057,21299201,22609921,23199745,24248321,24969217,25100289,25231361,25493505,25690113,26083329,26214401,26542081,26607617,26673153,26804225,26935297,27590657,27656193,28114945,28311553,28508161,28639233,28835841,28901377,29097985,29163521,29360129,29425665,29491201,29622273,29687809,29884417,29949953,30015489,30736385,32178177,32309249,32833537,33685505,34275329,34734081,35127297,35454977,35848193,36044801,36503553,37224449,38207489,38469633,39190529,45613057,47710209,48234497,52559873,57278465]} \ No newline at end of file +{"outside":[14876673,16318465,16973825,18874369,19070977,19136513,20905985,22020097,71041025,72155137,72220673],"old":[61014017,64094212,67829762,76152833],"occurs":[589825,655361,720897,983041,1114113,1245185,1310722,1376257,1507329,45547521,71368705,72548353,74121217,75366402,75628545,78970882],"owner":[70582273,73465858,81133569],"object":[851979,1245185,1507329,1638406,1703947,1769481,1835019,1900555,1966091,2031625,2097165,2162699,2228235,2293771,2424834,2490378,2555915,2621451,2686987,2752525,2818060,2883595,2949129,3014665,3080203,3145737,3211275,3276812,3342356,3407881,3473420,3538988,3604491,3670019,3735566,3866635,3932171,3997708,4128779,4194315,4325388,4390924,4456449,4522029,4653065,4587531,4718598,4784130,4849675,4915206,4980737,5046281,5111819,5177355,5242892,5308427,5373976,5439500,5570574,5636107,5701643,5767180,5963807,6094859,6160395,6553611,6946827,7012353,7077899,7340038,7733253,7798789,7864331,7995394,8060934,8192019,8323084,8388621,8454150,8519682,8585223,8716311,8781830,8847365,8912910,8978445,9109506,9175048,9306135,9502743,9568265,9633806,9699336,9764869,9830423,9895942,9961481,10027020,10092564,10158086,10223629,10289154,10354700,10420237,10485777,10551303,10616837,10747905,10813454,10878988,10944524,11010071,11075599,11141127,11206679,11272201,11337735,11403287,11468821,11665411,11730951,11862019,11927559,11993091,12124167,12386311,12517383,12582916,12779533,12845063,12910599,13041671,13172740,13238276,13303813,13434881,13500420,13631495,13697025,13828097,13893639,13959175,14024715,14155781,14221319,14286850,14352386,14417922,14680077,14745603,14811137,15007757,15073281,15204359,15335426,15400963,15466498,15597569,15728645,15794178,15859715,15925250,15990801,16056330,16121870,16252940,16711691,17039366,17170438,17235969,17301508,17498118,17563649,17629186,17760258,17825795,17891333,17956870,18022405,18087940,18219015,18284548,18350088,18415622,18546692,18808848,19005448,19202049,19333122,19398662,19464197,19529734,19726338,19857413,19922960,19988481,20054030,20119555,20250629,20316161,20381698,20447240,20512770,20578305,20643847,20774915,21037062,21102597,21233670,21364741,21495812,21692418,21757953,21954562,22216705,22347781,22413326,22478849,22544386,22609925,22675458,22872070,22937603,23199757,23527425,23592961,23724033,23789583,23920649,24117250,24182787,24248324,24313862,24379405,24510465,24576002,24707074,24772610,24903682,25100289,25231366,25362448,25427974,25493506,25559043,25690119,25821193,26017794,26214403,26345475,26476546,26542088,26673155,26738694,26935302,27066370,27590659,27721731,27983874,28049421,28114957,28180482,28639238,29753347,30539777,31457281,31522817,31653891,32243714,32505857,32636929,33161217,33226753,33423361,33619970,33685505,33882113,34406402,34471938,34668546,34734081,34799617,34996225,35061761,35127297,35323905,35454977,35782657,35913729,36503553,36634625,37158914,37486593,37617665,37814273,38010881,38141953,38469633,38600706,38666241,38928385,38993921,39321601,39714817,39845889,39911425,39976962,40370177,40697858,41091073,41484290,41615361,41943041,42270721,42663946,43384834,43450370,43646981,43712513,44957697,45088773,45154305,45219841,45285378,45350920,45547523,45940739,46071812,46268420,46399493,46661633,46727169,46792705,46923783,47251457,47382532,47579138,47775745,48103427,48168968,48300036,48562178,48627717,48824321,48889857,49152005,49348609,49479683,49610753,49872897,50200577,50331649,50724865,51118081,51707911,51773445,52035587,52166667,52232194,52297729,52559873,52690945,52887554,53149697,53608453,53673985,54329346,54525957,54919169,55181313,55377923,56098819,56885253,57081860,57147393,57278466,57606145,57802753,57868295,57999367,58064897,58458119,58589189,58654721,58785794,58851329,59244549,59572233,59965447,60162057,60358657,60489729,60555272,60686344,60751878,60817409,60948488,61014019,61079568,61210625,62128136,62324737,62390279,62521345,62652417,62783493,62980097,63111169,63307777,63832065,63897605,63963138,64094212,64356357,64421892,64552968,64618497,64815112,65208322,65339393,65732615,66125826,66322433,66387969,66519047,66584577,66912265,67043329,67305479,67371009,67502081,67633157,67829761,68288520,68812806,68878340,68943884,69074945,69140488,69206017,69402625,69861386,69926929,69992449,70647815,70713352,70909964,71172108,71237641,71368716,71761932,71958529,72155137,72417293,72548364,72613900,73138193,73269249,73531404,73990154,74121230,74514445,74645521,74711052,74842122,74907656,74973185,75038731,75104280,75169804,75300866,75366412,75431953,75497489,75628568,75694083,75759626,75890691,75956270,76087320,76152847,76283923,76349448,76415007,76480524,76546060,76677131,76742670,76808195,76939273,77135889,77201409,77266959,77332492,77398028,77529096,77594625,77725701,77856793,77987885,78053378,78184469,78249996,78381057,78446594,78512142,78577679,78643202,78708748,78774276,78839815,78970893,79036419,79101953,79167498,79233032,79364103,79429635,79495186,79626252,79691788,79888396,79953944,80019468,80085028,80216074,80281624,80347148,80412675,80478220,80543765,80609282,80674828,80740359,80805900,80871436,81002520,81068056,81199123,81264664,81330190],"overriding":[69337089,79298561],"optional":[6684673,7405571,7733250,7929859,8650754,8847363,8978433,9043971,9175043,9633793,10354689,10682371,10878977,11468801,11599873,12713985,13959171,14155778,14352385,14483458,14680065,15007745,15925249,15990787,16056321,16121857,16252929,16515073,16711681,17760257,20447233,20512769,21037058,21364737,21626882,21692417,22413313,22544385,23199745,23789569,24117249,24903681,25362433,25624579,25821185,26279939,26607617,26738689,26869763,27656195,27787267,27852803,28049409,28114945,28442627,28573699,29032451,29097987,29229059,29294595,29425667,29622275,29818883,29884419,30015491,30146563,30277635,30670851,30736387,30801923,30932995,30998531,31064067,31719427,32047107,32112643,32178179,32309251,32374787,32440323,32768003,32833539,34078723,34209795,34275331,35651587,36175873,38207489,40894466,42074114,43057153,43581442,44433410,45023233,45547522,45744130,47513602,48037890,49741825,49807362,51970049,52625409,52756483,54591490,54984705,56819713,61079553,61341697,61538307,61734913,61931521,63766529,64225281,67174401,69926913,74186753,75956225,77987841,78839811,79888387,80347137],"occupying":[51511297],"optimized":[16580609,23003137,43843585,44564481,45613057,49283073,51380225,56819713,74186753,80347137],"override":[1114113,3342345,5963785,6029313,6291459,6356993,7208961,7405569,7536643,7602177,8257539,8519681,10682371,11272193,16580609,17498113,18087937,18284545,18546689,18939905,19529729,19726339,19791873,19988481,20119553,20316161,20381697,20578305,20774913,21037057,21102593,21299203,21430273,21495809,21561345,21626881,21692417,21757953,22216705,22478849,22544385,22609921,22872065,22937601,23003138,23199745,23527425,23592961,23855105,24117249,24182785,24313857,24379393,24576003,24641537,24707075,24903681,25100289,25362433,25427969,25296897,26017793,26083331,26476545,26542081,26607617,26738689,26804225,27066369,27983873,28049409,28639233,29360129,33226753,35454977,36634625,37879811,38010881,40501251,40632321,40697859,41353219,41484291,42139649,43319297,43843588,44171267,44564484,45613060,46333953,46465025,46989315,48955395,49283076,50135043,51380228,52428803,57344001,58458113,58916865,59179009,59965441,60096513,60162049,60555265,60620801,60686337,60817410,60948481,61669377,62259201,62324737,62717953,62849025,63242241,63963137,64159745,64815105,65601537,65732609,65798147,65994753,66322433,66387969,66453505,66650113,67239937,67371009,67567617,68091907,68288513,68878337,69140481,69206019,69468164,69664769,69795841,70057987,70254593,70713347,71106561,71237633,72089601,72286210,72351745,72482819,73334785,73662467,73793537,73990145,74252291,74907651,75759617,77070337,77463555,77922307,78381059,80085001,80543753],"operationcanceledexception":[62980097,72548358],"overall":[76939265],"overhead":[51707905,74776577],"outermost":[73924609,74448897,76611585],"occurred":[458753],"options":[3735566,5373966,7077893,8716302,9306126,9502734,9830414,11010063,11206670,11403278,13500418,13697026,14352386,14745602,14811138,15400962,15466498,15794178,15925250,16711682,17235970,17301506,17891330,18284546,19202050,19988482,20119554,20316162,21102594,21495810,22478850,22544386,22937602,23199746,23527426,24903682,25165826,25952258,26017794,27066370,27394050,28311554,35520514,36896770,37027842,37289986,38535170,38731778,39256066,39649282,40304642,40828930,40960002,41943042,42270722,42336258,42532866,43253762,43778050,44498946,44761090,44892162,45219842,45350916,45481986,45547524,45809666,47054850,47710212,47972360,48168964,48234498,48431105,48889858,49086466,49152001,49414146,49545222,50593794,50855940,50921474,51183620,51576835,51773441,52035585,52101122,52232193,52297730,52756481,52953089,53149697,53346305,54132738,54722564,54919170,55312388,55377921,55443459,55836680,58720260,59047939,59768833,60424195,61276161,63700993,65863681,72744962,75104273,75366413,76087319,76873730,76939266,77004802,77070338,77201409,77791233,77856782,78446594,78512142,79167494,79429634,79560705,79888385,79953934,80150530,80281617,80412674,81002513,81068046,81264657],"overloads":[37093377,39256065,40828929,42205185,43778049,45481985],"offset":[16449542,16646150,16842758,18153478,18677766,20185094,21168134,23986182,56885250,58195974,59244546,62783490,64356354,68550657,70189057,71434241,74645506,75497474,77135874,78184450],"overridable":[6029313,6356993,7208961,7405569,7602177,8519681,21430273,23003137,57344001,60096513],"operators":[75038721],"operation":[7405570,9043971,9633794,10485761,10682371,10813441,12779521,13500417,13697025,14352385,14745601,14811137,15400961,15466497,15794177,15925249,15990785,16711681,17039361,17170433,17235969,17301505,17891329,17956865,18284545,18415617,19202049,19398657,19988481,20054017,20119553,20316161,20840449,21102593,21233665,21495809,21889025,22347777,22478849,22544385,22937601,23199745,23527425,24903681,25231361,25624577,26017793,26279937,26869761,26935297,27066369,27525122,27656193,27787265,27852801,27918338,28246018,28442625,28508162,28573697,28704770,28770306,28835842,29032449,29097985,29229057,29294593,29425665,29491202,29556738,29622273,29818881,29884417,29949954,30015489,30081026,30146561,30212098,30277633,30343170,30408706,30474242,30605314,30670849,30736385,30801921,30867458,30932993,30998529,31064065,31129602,31195138,31260674,31326210,31588354,31719425,31784962,31850498,31916034,32047105,32112641,32178177,32309249,32374785,32440321,32571394,32702466,32768001,32833537,32964610,33030146,33095682,33357826,33816578,33947650,34209793,34078721,34275329,34340866,34537474,34603010,35586050,35651585,35848194,36175873,36896769,37027841,37552129,38207489,38535169,38731777,39256065,39649281,40108033,40304641,40435713,40828929,40960001,41943041,42270721,42336257,42532865,43122689,43253761,43778049,44040193,44498945,44761089,44892161,45219841,45481985,45809665,47054849,48037889,48234497,48365569,48889857,49086465,49217537,49414145,49807361,50593793,50921473,52101121,52297729,52953089,53149697,54132737,54460417,54919169,56229889,62980097,66453505,67698689,69337089,72548353],"output":[8585217,10944513,16580610,23003138,43843586,44564482,45613058,49283074,51380226,62062593,67567617],"operations":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342358,3407873,3538945,3604481,3866626,3932161,4128769,4194305,4325378,4456449,4521985,4653057,4587521,4718593,4784129,4849665,4915201,4980737,5046273,5111810,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963798,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,13303810,21757953,24248321,24772609,25493505,25559041,26214401,26345473,26673153,27000833,27590657,27721729,28180481,29163521,29753345,31457281,31653889,32243713,34013185,34471937,34734081,35782657,36110337,36765697,36962305,38469633,39845889,39976961,41091073,43384833,43450369,44957697,46661633,48824321,49348609,50069505,50200577,51707907,53739521,55902210,56557570,57606146,58064897,61472774,61865990,63832070,68943873,70909953,71172097,71368705,71761921,72024066,72417282,72548353,72613889,73269250,73531393,73990145,74121217,74317826,74514433,74711041,74842113,74973186,75038721,75104257,75169793,75300866,75366401,75431937,75628545,75694082,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742658,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80085014,80216065,80281601,80347137,80478210,80543766,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"obj":[7929861,9175041,9568257,9633793,10878977,11468801,11665409,12582913,43646977,46923777],"observed":[393217,49545217,66715649,80740353],"owns":[53608449,54525953,56885249,58785793,59244545,60751873,62783489,63897601,64356353,66125825,67633153,73138177,74645505,75497473,76283905,77135873,78184449,79495169,80084993,81199105],"operator":[8912897,9961473,11862017,19005441],"option":[72744961,76939274,77004801,77791234,78446594,79560705,80412677],"onexposedtoscriptcode":[2424833,13303812,76808193],"overridden":[1769474,2031618,2949122,3014657,3145730,3407873,4653058,5046274,11272193,72548353,73990146,74842114,75038722,75759618,78970881,79167490,80216066],"occurrence":[3211265,76414977],"outcome":[15990785],"objec":[4456450,4784130,4980738,21757953,24772610,25493506,53608451,54525954,56885251,57606145,59244547,60489729,60751875,62521345,62783491,63111169,63307777,63832065,63897602,64356355,65339393,67633154,73138179,73269250,74645507,74973186,75300865,75497475,75563009,75694082,76283907,76939265,77135875,78184451,79495170,80084994,81199106],"outattribute":[17498114,25559042,27525122,27918338,28246018,28508162,28704770,28770306,28835842,29491202,29556738,29949954,30081026,30212098,30343170,30408706,30474242,30605314,30867458,31129602,31195138,31260674,31326210,31588354,31784962,31850498,31916034,32571394,32702466,32964610,33030146,33095682,33357826,33816578,33947650,34340866,34537474,34603010,35586050,35848194,36044802,36175874,36241410,36372482,37552130,37748738,37945346,38076418,38207490,38273026,39387138,39518210,40042498,40108034,40239106,40435714,42401794,43122690,43515906,43581442,44040194,44433410,45744130,45875202,46858242,47513602,48037890,48365570,49217538,49741826,49807362,50987010,51970050,52625410,54460418,54984706],"optionally":[3735554,5373955,8716291,9306115,9502723,9830403,11010051,11206659,11403267,15269889,18219009,21430273,26542081,26804225,41353217,43909121,46989313,48496641,51904513,52822017,53018625,53870593,56164353,56623105,57409537,75104259,76087299,77856771,78512130,79953923,80281603,81002499,81068035,81264643],"overload":[6225921,6422529,6488065,6619137,6684673,6815745,6881281,7143425,7667713,7995393,8060929,8192001,8323073,8388609,8454145,8650753,8781825,8978433,9109505,9437185,9568257,9633793,9699329,10092545,10158081,10289153,10354689,10420225,10813441,10878977,11075585,11141121,11337729,11468801,11534337,11599873,11665409,11796481,11862017,11993089,12058625,12189697,12255233,12451841,12582913,12713985,12779521,12976129,13172737,13238273,13369345,13434881,13500417,13565953,13697025,13762561,13828097,14024705,14155777,14286849,14352385,14483457,14548993,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15269889,15335425,15400961,15466497,15597569,15728641,15794177,15859713,15925249,16187393,16318465,16384001,16449537,16515073,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17170433,17235969,17301505,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18284545,18219009,18350081,18415617,18481153,18546689,18677761,18743297,18874369,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19660801,19857409,19988481,20119553,20185089,20250625,20316161,20447233,20512769,20578305,20643841,20709377,20774913,20905985,20971521,21037057,21102593,21168129,21233665,21364737,21430273,21495809,21561345,21626881,21692417,21823489,21954561,22020097,22085633,22151169,22216705,22282241,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23134209,23199745,23265281,23396353,23461889,23527425,23592961,23724033,23855105,23920641,23986177,24051713,24117249,24182785,24313857,24379393,24641537,24903681,24969217,25034753,25100289,25165825,25231361,25427969,25559041,25690113,25296897,25755649,25821185,25952257,26017793,26214401,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26935297,27066369,27131905,27197441,27262977,27394049,27459585,27525121,27590657,27721729,27918337,27983873,28246017,28311553,28508161,28639233,28704769,28770305,28835841,28966913,29360129,29491201,29556737,29687809,29753345,29949953,30081025,30212097,30343169,30408705,30474241,30539777,30605313,30867457,31129601,31195137,31260673,31326209,31457281,31522817,31588353,31653889,31784961,31850497,31916033,32505857,32571393,32636929,32702465,32899073,32964609,33030145,33095681,33226753,33292289,33357825,33423361,33554433,33619969,33685505,33751041,33816577,33947649,33882113,34013185,34340865,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,35061761,35127297,35192833,35258369,35323905,35389441,35454977,35520513,35586049,35717121,35782657,35848193,35913729,36044801,36110337,36175873,36241409,36306945,36438017,36372481,36503553,36569089,36634625,36765697,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37552129,37617665,37748737,37814273,37945345,38010881,38076417,38141953,38207489,38273025,38469633,38535169,38600705,38666241,38731777,38797313,38862849,38928385,39256065,39387137,39518209,39583745,39649281,39714817,39845889,39911425,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40566785,40632321,40763393,40828929,40894465,40960001,41025537,41091073,41222145,41287681,41353217,41418753,41615361,41680897,41811969,41877505,41943041,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42795009,42860545,42991617,43057153,43122689,43253761,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43909121,43974657,44040193,44105729,44236801,44302337,44367873,44433409,44498945,44630017,44695553,44761089,44826625,44892161,44957697,45023233,45088769,45154305,45219841,45350913,45481985,45416449,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268417,46399489,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47710209,47775745,47841281,47906817,47972353,48037889,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,49020929,49086465,49152001,49217537,49348609,49414145,49479681,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51445761,51576833,51642369,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52297729,52363265,52494337,52559873,52625409,52822017,52887553,53018625,53215233,53346305,53411841,53477377,53739521,53870593,54067201,54132737,54263809,54329345,54460417,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55312385,55377921,55443457,55836673,55967745,56098817,56164353,56295425,56623105,56754177,57016321,57081857,57212929,57409537,57802753,57933825,58064897,58654721,58720257,58851329,59047937,59572225,60424193,61079553,62259201,62652417,64618497,65077249,66912257,69926913,72286209,73990145,74842113,76021761],"obsoleteattribute":[22085636,64094212,69402628,76218372,76611588],"omit":[8060929,8192001,8323073,8781825,10092545,10420225,17039361,17170433,17956865,18415617,18808833,19398657,19922945,20054017,21233665,25231361,26935297],"outperform":[57147393,67502081,69206017,78381057],"one":[3014657,3407873,3342337,4521986,5963777,7995394,9109506,10027009,10158081,10485761,11337729,12976129,13041665,13303809,13369345,13762561,15138817,15990785,16711682,20447233,23199746,25821185,39256065,40828929,43778049,43974660,45481985,46596098,56950785,58458113,59703297,59965441,60162049,60358659,60555265,60948481,62455813,62980099,63176705,64552961,64815105,67305473,68419585,68812801,69664769,70647809,72548356,73334785,74121221,75956226,77987841,78905349,78970884,80084993,80543745,80871425],"objects":[3342337,5963777,8454145,8978433,10354689,14286849,14352385,14417921,15335425,15466497,15794177,15925249,16711682,17760257,18219011,20381697,20512769,21692417,22544385,23199746,24117249,24903681,26017793,26476545,26542083,27066369,27983873,45547521,57737218,58130434,60293122,61407234,62193666,62259201,62324737,62390273,63045634,64684034,65273858,66519041,67043329,69533698,70713345,72286209,74907649,75038721,75104258,75235330,75431937,75563009,76087298,76414977,76939268,77856770,78446594,78512130,79953922,80084994,80281602,80412674,80543745,81002498,81068034,81264642],"overloaded":[9568258,10878977,11468801,11665409,11862017,16711681,19005442,23199745],"occupies":[64094212],"open":[49545217,74776577],"older":[56360961,62849025,67895297],"ownerhandle":[70582273,73465860,81133569],"obsolete":[22085633,52363265,56426497,61014018,61276161,64094209,69402625,71172097,72744961,76152834,76218369,76611585,76939266,77201409,77856769,79560705],"overrides":[2228228,3014658,3407874,3932161,5177345,5373953,5636097,6291457,6356993,7536641,8257537,8716292,9306113,9830401,10682369,11010053,11206657,11403265,19726337,21299201,21757954,24576001,24707073,26083329,37879809,40501249,40697857,41353217,41484289,43843585,44171265,44564481,45613057,46989313,48955393,49283073,50135041,51380225,52428801,54001667,55640065,57737217,60293123,62193665,63045633,65273857,65798145,68091905,69206017,69468161,69533698,70057985,70713345,72482817,72548354,73662465,74252289,74907649,75104258,75169797,76087304,77463553,77856769,77922305,78381057,78708737,78970882,80281602,80674819,80871425,81002498,81068038,81264642,81330177]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_112.json b/docs/Reference/fti/FTI_112.json index 7f744ee7..20f5ab53 100644 --- a/docs/Reference/fti/FTI_112.json +++ b/docs/Reference/fti/FTI_112.json @@ -1 +1 @@ -{"process":[15859713,19529729,27197441,30867457,31588353,32112641,32964609,50200578,50724865,53936130,54460417,59441154],"precedence":[6815745,7405569,7864321,8847361,49610753,50790401],"parameters":[5242882,5373953,5505025,5570561,5767169,5832705,5898241,6094849,6029313,6160385,6225921,6422529,6488065,6750209,6815745,6946817,7012353,7077890,7143425,7274497,7405569,7471105,7602178,7864321,7929857,8060929,7995393,8126465,8257538,8323073,8388610,8454145,8519681,8585217,8650753,8847361,8912898,9043970,9109505,9175041,9240578,9306115,9371649,9437185,9502721,9568258,9633793,9699330,9764865,9830403,9895938,9961473,10027009,10092545,10158081,10223617,10289154,10354690,10420226,10485762,10551297,10616834,10682370,10747905,10813441,10878977,11010049,11075586,11141122,11206658,11272193,11337730,11468801,11534337,11599873,11665410,11730945,11796481,11862017,11927553,12058626,12124161,12189698,12255234,12320769,12386305,12451841,12517377,12582914,12648449,12713986,12779521,12845057,12910593,13041666,13107201,13172737,13238273,13303810,13369345,13434881,13500418,13565953,13631489,13697026,13762561,13828097,13893633,13959170,14024705,14090241,14155777,14221313,14286850,14352385,14417921,14483458,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007746,15073281,15138818,15204353,15269890,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794178,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16580610,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104898,17170433,17235969,17301505,17432577,17498113,17563649,17629185,17694721,17760257,17825794,17891329,18087937,18153473,18219009,18284545,18350081,18415617,18546690,18612225,18743297,18808833,18874369,18939905,19005441,19070977,19136514,19202049,19333122,19398657,19464193,19529729,19595265,19660801,19726337,19857409,19922946,19988481,20054017,20119553,20250625,20381697,20447233,20512769,20643841,20709378,20774913,20905985,21037058,21102593,21233665,21299201,21364737,21430274,21495809,21561345,21626881,21692417,21757953,21823489,21889026,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22609922,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23199746,23265281,23396354,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248322,24444929,24510465,24641537,24772609,24838145,24903681,24969217,25034753,25100290,25165825,25231361,25296897,25362433,25493505,25559041,25624577,25690113,25755649,25821185,25886721,26017793,26083329,26214401,26411009,26476545,26542081,26607617,26673153,26738689,26804225,27000833,26935297,27066369,27131905,27197441,27394049,27459585,27525121,27590657,27656193,27721729,27852801,27918337,27983873,28049409,28114945,28180481,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29884417,29949953,30015489,30081025,30146561,30343169,30408705,30474241,30605313,30736385,30867457,30998529,31129601,31260674,31326210,31391745,31522817,31588353,31850497,31981569,32112641,32178177,32309249,32768001,32833537,32964609,33095681,33161217,33226753,33554433,33685505,33947650,34013185,34144257,34275329,34734081,34930689,35127297,35454977,35848193,36044801,36306945,36503553,36569089,37224449,37486593,37879809,38207489,38273025,38469633,38731777,39190529,39452673,41680897,42401793,42467329,43122689,45613057,49152001,50003969,52166657,55771137,55836673,56360961,57212929,57278465,57933825,60751873],"propertynames":[37027841,37814273,38797313,39518209,40239105,41156609,43515908,47120385,47644673,48824321,57409541,58916865,59375617,59834369,60162049,60227585,60293121,60424193,60751873,61014017],"populate":[8323073,9306113,9568257,9830401,12255233,18415617,23658497],"place":[13828097,19398657,61145089],"propertychangedeventargs":[589826],"progress":[50724865,54460417],"persists":[983041],"protected":[6619139,7340035,7667715,18874372,19791873,19857411,21692419,22151171,22740995,34734083,35127299,36044803,38207491,38273028,39190531,43122692,45613059],"patching":[61669379],"public":[589827,720899,917507,1048579,1114115,1179651,1245187,1376259,1441795,1507331,4915203,5242883,5308419,5373955,5505027,5570563,5636099,5701635,5767171,5832707,5898243,5963779,6029315,6094851,6160387,6225923,6422531,6488067,6684675,6750211,6815747,6946819,7012355,7077891,7143427,7274499,7405571,7471107,7602179,7733251,7864323,7929859,7995395,8060931,8126467,8192003,8257539,8323075,8388611,8454147,8519683,8585219,8650755,8781827,8847363,8912899,9043971,9109507,9175043,9240579,9306115,9371651,9437187,9502723,9568259,9633795,9699331,9764867,9830403,9895939,9961475,10027011,10092547,10158083,10223619,10289155,10354691,10420227,10485763,10551299,10616835,10682371,10747907,10813443,10878979,10944515,11010051,11075587,11141123,11206659,11272195,11337731,11403267,11468803,11534339,11599875,11665411,11730947,11796483,11862019,11993091,12058627,12124163,12189699,12255235,12386307,12451843,12517379,12582915,12779523,12910595,12976131,13565955,16121859,16252931,16318467,16384003,16515075,16842755,16973827,17039363,17104899,17235971,17629187,17694723,17760259,17825795,18087939,18153475,18284547,18415619,18546691,18612227,18677763,18743299,18808835,18874369,18939907,19005443,19070979,19136515,19267587,19333123,19398659,19464195,19529731,19595267,19660803,19726339,19922947,19988483,20054019,20119555,20185091,20250627,20316163,20381699,20447235,20512771,20578307,20643843,20709379,20774915,20840451,20905987,20971523,21037059,21102595,21168131,21233667,21299203,21364739,21430275,21495811,21561347,21626883,21757955,21823491,21889027,21954563,22020099,22085635,22216707,22282243,22347779,22413315,22478851,22544387,22609923,22675459,22806531,22872067,22937603,23003139,23068675,23134211,23199747,23265283,23330819,23396355,23461891,23527427,23592963,23658499,23724035,23789571,23855107,23920643,23986179,24051715,24117251,24182787,24248323,24313859,24379395,24444931,24510467,24576003,24641539,24707075,24772611,24838147,24903683,24969219,25034755,25100291,25165827,25231363,25296899,25362435,25427971,25493507,25559043,25624579,25690115,25755651,25821187,25886723,25952259,26017795,26083331,26148867,26214403,26279939,26345475,26411011,26476547,26542083,26607619,26673155,26738691,26804227,26869763,27000835,26935299,27066371,27131907,27197443,27262979,27328515,27394051,27459587,27525123,27590659,27656195,27721731,27787267,27852803,27918339,27983875,28049411,28114947,28180483,28246019,28311555,28377091,28442627,28508163,28573699,28639235,28704771,28770307,28835843,28901379,28966915,29032451,29097987,29163523,29229059,29294595,29360131,29425667,29491203,29556739,29622275,29687811,29753347,29818883,29884419,29949955,30015491,30081027,30146563,30212099,30343171,30408707,30474243,30539779,30736387,30801923,30867459,30998531,31129603,31260675,31326211,31391747,31522819,31588355,31653891,31850499,31916035,31981571,32112643,32178179,32243715,32309251,32702467,32768003,32833539,32964611,33095683,33161219,33554435,33685507,34013187,34144259,34275331,34930691,35520515,35454979,35848195,36306947,36503555,36569091,37224451,37486595,37879811,38273025,38469635,38731779,39452675,39583747,40108035,40894467,41549827,41746435,42270723,42467331,42663939,42795011,42860547,42926083,43122689,43253763,43319299,43384835,43450371,43712515,43778051,43843587,43974659,44171267,44236803,44302339,44367875,44498947,44630019,44695555,44761091,44892163,45023235,45219843,45285379,45481987,45547523,45875203,46006275,46071811,46333955,46465027,46661635,46727171,46792707,47054851,47185923,47251459,47382531,47448067,47513603,47579139,48037891,48103427,48234499,48431107,48562179,48627715,48758787,49020931,49086467,49152003,49217539,49283075,49348611,49479683,49545219,49676291,49741827,49807363,49872899,50003971,50069507,50135043,50200579,50266115,50331651,50462723,50593795,50659331,50724867,50790403,50855939,50921475,50987011,51118083,51183619,51249155,51314691,51380227,51445763,51511299,51576835,51707907,51773443,51838979,51904515,51970051,52035587,52101123,52166659,52232195,52297731,52363267,52428803,52494339,52559875,52625411,52690947,52756483,52822019,52887555,52953091,53018627,53084163,53149699,53215235,53280771,53346307,53411843,53477380,53542915,53608451,53673987,53739523,53805059,53870595,53936131,54001667,54067204,54132739,54198275,54263811,54329347,54394883,54460419,54525955,54591491,54657027,54722564,54788099,54853635,54919171,54984707,55050243,55115779,55181315,55246851,55312388,55443459,55508995,55574531,55640067,55705604,55771139,55836675,55902211,55967747,56033283,56098819,56164355,56229891,56295427,56360963,56426499,56492035,56557571,56623107,56688643,56754179,56819715,56885251,56950787,57016323,57081859,57147395,57212932,57278467,57344003,57409539,57475075,57540611,57606147,57671683,57737219,57802755,57868291,57933828,57999364,58064899,58130435,58195971,58261507,58327043,58392580,58458115,58523652,58589187,58654724,58720259,58785796,58851332,58916867,58982404,59047939,59113476,59179011,59244547,59310083,59375619,59441155,59506692,59572227,59637763,59703299,59768835,59834371,59899907,59965444,60030979,60096516,60162051,60227588,60293123,60358660,60424195,60489732,60555267,60620803,60686339,60751875,60817412,60882948,60948483,61014019,61079555,61145091,61210627,61276163,61341699,61407236,61472771,61538308,61603844,61669379],"particularly":[43057153,46465025],"path":[8650753,10616834,43843585,46071809,59572228],"programming":[7471105,7929857,7995393,8585217,9240577,9895937,16252929,17104897,17825793,18153473,18546689,19005441,19333121,19726337,20054017,20512769,21299201],"propertyindices":[37027841,37814273,38797313,39518209,40239105,41156609,42991620,47120385,47644673,48824321,56885253,58916865,59375617,59834369,60162049,60227585,60293121,60424193,60751873,61014017],"polluting":[41549825,47251457],"periodically":[45678593,51904513],"previously":[4980748,7208972,24969217,25362433,25493505,26083329,26411009,26542081,26607617,26935297,27066369,27983873,28049409,28311553,28377089,28573697,29294593,29491201,29949953,30343169,30736385,31981569,32178177,34013185,35192838,35848193,36372486,37879809,38666246,39714822,58261516,60817420],"pending":[7208961,26869761,60817409],"properties":[1769473,3276801,4259841,8126466,8454146,8519681,9371649,9437186,9502721,9633793,10027009,10092545,10354689,10551297,10944513,11141121,11534337,11927553,12255233,12320769,12648449,12713986,12845057,12910593,13041666,13107201,13303809,13369345,13500418,13697026,13828100,13959169,14024705,14090241,14155777,14286850,14417921,14483458,14876673,14942209,15007746,15138818,15269890,15597569,15925249,16515073,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19136514,19398660,19660801,19922946,19988481,20119553,20643841,20709378,20774913,21037058,21364737,21430274,21495809,21889026,22413313,22478849,22609921,23199746,23265281,23396353,24248322,25100290,34537474,34996226,35389442,36634626,37027842,37093378,37617666,37814274,38010883,38141954,38404098,38535170,38797314,38928386,38993922,39059458,39256066,39321601,39387138,39518210,39780354,39911426,40239106,40304642,40435714,40632322,40697858,41156610,41222146,41484290,41549825,42008578,42074114,42205186,42532866,42598402,43057154,43188226,43909122,44957698,45088770,45416450,45744130,45809666,46137346,46202882,46268418,46465026,46596098,46858242,46923778,47120386,47251457,47644674,47775746,47972354,48365570,48824322,49676289,49938433,51183617,51576833,52166657,52297729,52428801,52822017,53084161,53280769,53477377,53673985,53870593,54067202,54722562,55115777,55312385,56426498,56754177,56950785,57278465,57540612,57999362,58130433,58195969,58261505,58327041,58392577,58458114,58523649,58589185,58654721,58851329,58916865,58982401,59113473,59244545,59310081,59375617,59506690,59703297,59834370,59899905,60030978,60096513,60162049,60227585,60293121,60358658,60424194,60489729,60751873,60817409,60882945,60948481,61014017,61276162,61407233,61538305,61603841],"profile":[1048577,1179649,3604483,4980739,7208963,23134211,23724035,24838148,25165829,25624582,25755654,26148865,27262977,30081028,34340867,37093377,38076419,38404097,38731781,39321603,42074113,48562177,49217538,49807361,50266114,50855938,50987010,52756482,53215233,53608449,53673988,54198274,54394881,54919169,55115777,55508993,55574530,55902209,56033281,56688641,56754178,57081857,57475074,57737217,57868289,58261508,60817412],"procedure":[3735553,4587521,6291457,6356993,6553601,7208961,7536641,8716289,8978433,14221314,21757954,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"passed":[9699329,9830401,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12255234,12582913,12910593,61472769,61669377],"promis":[20054017],"performs":[2621441,2686977,2818049,3145729,3211265,3407873,3670017,3735554,4128769,4521985,4587523,4980738,5046273,5177345,6291459,6356995,6553603,7208963,7536643,8716291,8978435,9109505,12910593,14352385,19791873,22937601,23986177,24576001,24707073,27918337,30212097,31916033,34865153,36110337,36831233,40763393,42467329,57147393,58195971,58261506,58327042,58392579,58785793,58916865,59375617,59768833,59834369,60096515,60162049,60227585,60293121,60424193,60751873,60817411,60882947,61014017,61407235,61538307,61603843],"profiles":[4980737,7208961,24838145,25624577,25755649,26148865,27262977,30081025,50987009,55574529,58261505,60817409],"prevent":[50200577,53936129],"post":[59441153],"port":[4980738,25231362,26214402,26804226,27590658,27656196,28835842,28901378,29163522,29425666,29622276,29884418,30015490,33816580,38338564,39387138,40370178,55181318,58261510,58851330,60817412],"policy":[51773441,53346305,59441153],"point":[9043969,39059457,40632321,42074113,42205185,42795010,43909121,44957697,45088769,46268417,47775745,48889858,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"progid":[3735560,4587528,6291464,6357000,6553608,7208968,7536648,8323079,8650759,8716296,8978440,11927560,12320776,12845064,14024712,14942216,15597576,15925256,16842761,18350088,18612233,19070985,19660809,19988489,20643849,22478857,23265289,31064068,32047108,33423364,34209796,34734087,35127303,36044807,38207495,39190535,45613063,58195976,58327048,58392584,60096520,60817416,60882952,61407240,61538312,61603848],"particular":[2752513,13303809,13959169,22609921,23396353,57540609],"paths":[41222145,43843585,45416449,46071809,53870593,60030977],"presentation":[13631489,14548993,16187393,16908289,22151169,22740993,23068673,23789569,23920641,24641537,24969217,25362433,26673153,26738689,27459585,27590657,28180481,28508161,28639233,28901377,28966913,29097985,29163521,29425665,29622273,29884417,29949953,30146561,31129601,31391745,31850497,33161217,33554433,33685505,34275329,34734081,35127297,36044801,36306945,36569089,37224449,37486593,37879809,38207489,38469633,39190529,45613057],"perform":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4653057,4849665,4980737,5046273,5111809,5439489,6881281,6946817,7798785,9109505,14352385,22937601,23986177,27918337,42336257,42467329,45875201,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58261505,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59637761,59703297,59768833,59899905,60227585,60358657,60489729,60555265,61145091,61472769],"power":[61145089],"processing":[24969217,25493505,26083329,26542081,26607617,26935297,28311553,29491201,29949953,30736385,32178177,35848193,39321601,59441153,60686338],"proc":[3407873,5046273,9568262,58785793,59768833],"ptr":[15728641,15794177,16580609,19202049],"params":[7143425,8060929,8126465,9109505,9437185,9502721,9961473,10092545,10158081,10354689,10616833,10747905,11141121,11272193,11796481,12124161,12386305,12517377,12713985,12779521,13041665,13500417,13697025,14221313,14286849,14614529,15400961,15990785,16646145,17891329,19136513,19922945,21626881,21757953,21889025,22282241,23003137,23199745,23592961,24248321,24903681,42401793,56360961],"programmatic":[3735560,4587528,6291464,6357000,6553608,7208968,7536648,8323073,8650753,8716296,8978440,11927554,12320770,12845058,14024706,14942210,15597570,15925250,16842754,18350082,18612226,19070978,19660802,19988482,20643842,22478850,23265282,31064068,32047108,33423364,34209796,34734082,35127298,36044801,38207490,39124993,39190530,40173569,41287681,41811969,45613057,58195976,58327048,58392585,60096521,60817416,60882952,61407241,61538313,61603848],"physical":[39911425,49872898,59244545],"private":[45023233],"promises":[61145090],"privateaccess":[59965441],"propert":[52822017,53280769],"propertychanged":[131073,196609,262145,589830,54067201,56426497,57999361],"propagation":[38404097,42074113,52035586,56098818,58261505,60817409],"performance":[5242881,26476545,38010881,39321601,55377921,55705601,61145092],"parser":[60620804],"protocol":[23134209,23724033],"packages":[9699329,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12582913],"promise":[2949129,16252933,17104900,17825797,18546692,19333125,19726340,20054023,20512773,21299204,38862857,59441153,61079561,61145090,61341698],"populates":[3080193,5111809,18415617,23658497,58654721,58982401],"possibilities":[49610753,50790401],"propertychangedeventhandler":[589832],"pass":[8388609,9306113,9568257,61669377],"provides":[3014669,4521997,5177345,9109505,13631489,13828097,19398657,23789569,31195137,36634625,38010892,39256065,39321601,39976961,40566786,44302337,50921473,55246849,55705613,56229889,56426497,56492033,57278465,57671681,57999361,58195969,58523649,58720257,58785793,58851329,59310082,59768833,60227598,60489730,60882945,61014017,61145089,61603841],"processed":[24969217,25493505,26083329,26542081,26607617,26935297,28311553,29491201,29949953,30736385,32178177,35848193,52035585,56098817],"page":[983041,41943044],"processes":[24444929,24969217,25493505,25559041,25821185,26017793,26083329,26542081,26607617,26935297,27525121,28311553,28704769,28966913,29491201,29556737,29949953,30736385,30998529,31391745,32178177,33095681,34930689,35848193],"possible":[13631489,23789569,59965441],"parent":[7077889,7143425,8060929,52035585,54067201,56098817],"propertybag":[131073,196610,262145,589825,1769486,3276809,4259854,5373953,10944517,11599877,16121858,16318472,16515074,16973831,17039363,17629190,17694722,18284546,18808834,19595266,20185094,31719433,34537480,38010881,42663938,43188230,43253762,45809672,48431106,49152002,54067228,56426521,57999388],"permitted":[38404097,39059457,40632321,42074114,42205185,43057153,43909121,44957697,45088769,45154306,46268417,46465025,47775745,50724865,51314690,54460417,58195969,58261505,58327041,58392577,60096513,60817410,60882945,61407233,61538305,61603841],"platforms":[47382529,61145089],"preventing":[59441154],"passing":[9699329,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12255233,12582913,15728641,15794177,16580609,19202049,55836673],"present":[13631489,14548993,15466497,15532033,16187393,16908289,22216705,22806529,23068673,23789569,23920641,24641537,50593793,61210625],"paramarray":[7143425,8060929,8126465,9109505,9437185,9502721,9961473,10092545,10158081,10354689,10616833,10747905,11141121,11272193,11796481,12124161,12386305,12517377,12713985,12779521,13041665,13500417,13697025,14221313,14286849,14614529,15400961,15990785,16646145,17891329,19136513,19922945,21626881,21757953,21889025,22282241,23003137,23199745,23592961,24248321,24903681,42401793,56360961],"profiler":[1179649,39321601,55902209,56033281],"past":[50266113,50855937,52756481],"part":[44433409,50659329],"platform":[16252929,18546689,19333121,21299201,47382529],"property":[131074,196610,262145,589827,1769479,2621446,2686982,2818054,3014658,3145734,3211270,3276807,3407878,3670022,4128774,4259846,4521992,4915202,5046278,5177350,5373954,5898242,6160386,7143427,8060931,8519685,9175041,9371653,9633798,9830401,10027013,10551301,10878977,10944513,11534342,12255233,13565953,13828100,14614533,14811140,15335428,15663108,16121860,16318466,16515073,16973826,17039364,17170436,17629186,17694724,17891333,18284549,18808837,19398660,19595270,20185090,21626885,23527428,24117252,24182788,24903685,25296900,31719427,33357827,34537477,35323907,35782659,35913731,35979267,36241411,36438019,36700163,36896771,36962307,37027844,37289987,37814276,38797316,39059458,39518212,39583749,39845892,40042503,40108036,40239108,40501252,40632322,40828932,40894468,40960004,41025540,41091075,41156612,41353221,41549829,41615364,41680902,42074114,42139652,42205186,42270724,42336263,42401799,42663942,42729476,42795014,42860548,42926084,42991622,43057157,43188229,43253766,43319300,43384837,43450373,43515910,43581444,43646980,43712516,43843588,43909122,43974660,44040196,44105732,44171271,44236804,44302340,44433413,44498948,44564484,44630020,44761093,44826628,44892164,44957698,45023237,45088770,45154309,45219845,45285380,45350916,45481988,45547524,45678596,45809668,45875207,45940740,46006276,46071813,46268418,46333958,46399492,46465029,46530564,46661636,46727172,46792709,46989316,47054853,47120388,47185924,47251461,47316999,47382533,47448068,47513604,47579140,47644676,47710213,47775746,47841284,47906821,48037892,48103428,48168965,48234501,48300036,48431110,48496644,48562180,48627716,48693252,48758789,48824324,48889862,48955396,49020932,49086468,49152007,49217541,49283076,49348613,49414149,49479684,49545220,49610758,49676293,49741828,49807364,49872900,49938437,50003969,50069508,50135044,50200582,50266116,50331652,50397188,50462724,50528261,50659333,50724869,50790406,50855940,50921477,50987013,51052550,51118084,51183621,51249157,51314693,51380228,51445765,51511301,51642373,51707910,51773444,51838981,51904516,51970052,52035589,52101126,52232196,52297733,52363268,52494342,52559877,52625413,52690948,52756484,52822023,52887557,52953092,53018628,53149700,53215236,53280774,53346308,53411847,53542916,53608452,53739524,53805061,53936134,54001669,54067214,54132740,54263812,54329349,54394885,54460421,54525956,54591493,54657028,54722564,54788100,54853637,54919172,54984708,55050244,55181316,55443461,55508996,55574533,55640068,55705602,55771142,55967749,56033284,56098821,56164356,56295429,56360967,56426510,56557572,56623109,56688645,56819717,56885254,57081860,57344004,57409542,57475076,57606148,57737220,57868292,57999374,58195970,58327042,58392578,58785798,58916874,59375626,59506692,59637762,59768838,59834378,60096514,60162058,60227596,60293130,60358660,60424202,60751882,60817410,60882946,61014026,61145090,61407234,61538306,61603842,61669378],"pairs":[45744129,58654721],"provider":[8519681,9109505,9633793,10027009],"provide":[3014657,4521985,7143425,8060929,26476545,38535169,39059457,39321601,39976961,40566785,40632321,42074113,42205185,43581441,43909121,44957697,45088769,45744129,46268417,47185921,47382529,47775745,54067201,55377924,55705601,58195969,58327041,58392577,58654721,60096513,60227585,60817409,60882945,61407233,61538305,61603841],"provided":[2752513,8519681,9109505,9371649,9633793,9961473,10027009,10092545,10158081,10551297,10747905,10944513,11141121,11534337,57540609,60686341],"predicate":[4259842,11272198,11468806,12451846,12779526,36765698,37683202,54067204],"profil":[37093381,38141953,39321601,48562177,49217537,49807361,50855937,52756481,53215233,53673989,55115777,56754177],"pause":[50593793,61145089],"predate":[52690945,53149697,53542913,54263809],"parameter":[7471105,7929857,7995393,8585217,9240577,9699329,9895937,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12255233,12582913,16252929,17104897,17825793,18153473,18546689,18874369,19005441,19333121,19726337,20054017,20512769,21299201,38273025,43122689],"prepared":[45023233]} \ No newline at end of file +{"presentation":[15269889,16384001,18219009,19464193,22085633,22740993,26542081,26804225,28639233,29360129,35258369,36372481,36896769,37027841,38731777,39387137,39649281,39714817,41287681,41680897,41943041,42205185,42270721,42401793,42532865,42991617,43778049,44040193,44302337,44498945,44761089,45219841,45481985,45875201,46530561,47316993,48234497,49086465,49217537,50331649,50528257,50593793,52101121,52297729,52953089,53149697,54132737],"point":[10223617,57737217,58130433,60293121,61407233,61669378,62193665,63045633,64684033,65273857,67764226,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"present":[15269889,15728641,16187393,16384001,18219009,19464193,22872065,23855105,26542081,26804225,28639233,29360129,77660161,78118913,79233028],"propagation":[59834369,60293121,73924610,74448898,75366401,76087297],"platform":[67895297],"page":[458753,61603844],"process":[16580609,23003137,43843585,44564481,45613057,49283073,51380225,71041026,71827457,72220674,73400321,77791234],"polluting":[61734913,61931521],"policy":[70778881,74383361,77791233],"preventing":[77791234],"proc":[3538945,4521985,10944518,75956225,77987841],"patching":[80412675],"provider":[9633793,9699329,10813441,11993089],"params":[7995393,8978433,9109505,9633793,10027009,10158081,10354689,10485761,10747905,10878977,11337729,11468801,11599873,12713985,12976129,13041665,13369345,13762561,14352385,14417921,14680065,15007745,15138817,15925249,16056321,16121857,16252929,17760257,20381697,20447233,20512769,21692417,22413313,22544385,23789569,24117249,24903681,25362433,25821185,28049409,28114945,61079553,69926913],"prepares":[3866625,4325377,5111809,5242881,5439489,5701633,6946817,34406401,39976961,45285377,51707905,72417281,74514433,75890689,76742657,77266945,78577665,79626241,80478209],"populates":[3014657,3407873,19726337,24707073,72548353,78970881],"propertychangedeventhandler":[1114120],"power":[76939265],"protocol":[41549825,43188225],"parameter":[8060929,8192001,8323073,8781825,10092545,10420225,10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,13959169,14221313,15204353,17039361,17170433,17956865,18415617,18808833,19398657,19922945,20054017,21233665,21430273,25231361,26935297,41353217,46989313],"profiler":[393217,49545217,66715649,80740353],"particular":[3211265,17891329,20250625,21102593,22609921,76414977],"pause":[76939265,78118913],"perform":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8519681,9633793,9895937,15532033,24444929,39190529,40501249,44171265,64421889,68878337,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75169793,75366401,75431937,75628545,75759617,75956225,76152833,76349441,76480513,76546049,76742657,76939268,77266945,77332481,77398017,77529089,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79429633,79626241,79691777,79888385,80019457,80084993,80216065,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81330177],"propertybag":[589826,720897,1114113,1376257,1966094,2883598,3080201,6422529,12582917,13107205,17498114,17694726,18481158,18939907,19529730,19660808,19791874,20840450,20971527,21889026,22347778,45547521,53084168,54394886,55705608,55967753,59310082,60686338,63242242,65732610,71368732,74121244,75628569],"preparing":[31457281,32505857,33619969,34471937,34668545,34734081,34799617,35061761,35782657,37158913,38141953,38469633,38600705,39976961,43384833,43450369],"paramarray":[7995393,8978433,9109505,9633793,10027009,10158081,10354689,10485761,10747905,10878977,11337729,11468801,11599873,12713985,12976129,13041665,13369345,13762561,14352385,14417921,14680065,15007745,15138817,15925249,16056321,16121857,16252929,17760257,20381697,20447233,20512769,21692417,22413313,22544385,23789569,24117249,24903681,25362433,25821185,28049409,28114945,61079553,69926913],"platforms":[67895297,76939265],"physical":[55246849,69730306,77398017],"possibilities":[62128129,71237633],"passing":[10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,13959169,14221313,14876673,15204353,16318465,16973825,18874369,19070977,19136513,20905985,22020097,78249985],"prevent":[71041025,72220673],"predicate":[2883586,12451846,13369350,13565958,13762566,43974658,50462722,74121220],"profiles":[7077889,11010049,35389441,35520513,37289985,38338561,39124993,42467329,71565313,74055681,75366401,76087297],"progid":[3735560,5373960,8716296,8847367,9175047,9306120,9502728,9830408,11010056,11206664,11403272,13238280,13697032,13828104,15400968,15597576,15859720,17301512,18546697,19202056,20119561,20316169,20578313,20774921,21495817,23527433,25100297,42270727,45219847,45350916,47710212,48168964,50593799,51183620,52953095,53149703,54132743,75104264,76087304,77856776,78512136,79953928,80281608,81002504,81068040,81264648],"provide":[3342337,5963777,7995393,9109505,47120385,48103425,49545217,52232193,53673985,57737217,58130433,60293121,60358657,61407233,62193665,62324737,62980097,63045633,64684033,65273857,67043329,67895297,69533697,72548353,74121217,74776580,75104257,76087297,77856769,78512129,78970881,79953921,80084993,80281601,80543745,81002497,81068033,81264641],"proxy":[51707905],"permitted":[57278466,57737217,58130433,59834369,60293122,60817409,61407233,62193665,63045633,63963138,64684033,65273857,66387969,69533697,71827457,73400321,75104257,75366401,76087298,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"processing":[36175873,37552129,38207489,40108033,40435713,43122689,44040193,48037889,48365569,49217537,49545217,49807361,54460417,77791233,79757314],"path":[9175041,10747906,55508993,63635457,76873732],"predate":[64094209,66584577,67829761,69402625],"provides":[3342349,5570561,5963789,9633793,16711681,18219009,23199745,26542081,33882113,41615361,42663937,43712513,45547532,49545217,51118081,51707912,52232193,53673986,54001665,58261505,58392577,65798145,68943873,69337089,71368705,72417281,72613889,74514433,75169793,75431937,75628545,75956225,76480514,76546049,76742657,76939265,77266945,77594625,77856769,77987841,78577665,78708737,79036417,79626241,79953921,80085006,80478209,80543757,80674818,80805889,81068033,81199105],"post":[77791233],"port":[7077890,38731778,39256066,39649282,40304642,40828932,42336258,43778050,44498946,44892162,45481988,47972356,49086466,50921474,55836676,58720258,61800450,71696390,75366406,76087300,76546050],"populate":[8585217,8847361,10944513,11075585,13959169,19726337,24707073],"pairs":[60358657,62980097,72548353,78970881],"previously":[7077900,11010060,36175873,36241409,36372481,37552129,37945345,38207489,38273025,39387137,39518209,40108033,40239105,40435713,43122689,43515905,43581441,44040193,44433409,48037889,48365569,49217537,49741825,49807361,50003974,51642374,52625409,54460417,54853638,57212934,75366412,76087308],"provided":[3211265,9633793,9699329,10027009,10289153,10485761,10813441,10878977,11141121,11468801,11993089,12582913,12779521,13041665,76414977,79757317],"programming":[8060929,8192001,8323073,8781825,10092545,10420225,17039361,17170433,17956865,18415617,18808833,19398657,19922945,20054017,21233665,25231361,26935297],"propertynames":[53608449,54525953,56885249,59244545,60751873,62521349,62783489,63897601,64356353,65339396,67633153,73138177,74645505,75497473,76283905,77135873,78184449,79495169,80084993,81199105],"packages":[10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,14221313,15204353],"public":[3,393219,524291,655363,327683,786435,917507,983043,1114115,2359299,5832707,6029315,6225923,6291459,6356995,6422531,6488067,6619139,6684675,6815747,6881283,7143427,7208963,7274499,7405571,7471107,7536643,7602179,7667715,7733251,7798787,7929859,7995395,8060931,8126467,8192003,8257539,8323075,8388611,8454147,8519683,8585219,8650755,8781827,8847363,8912899,8978435,9043971,9109507,9175043,9371651,9437187,9568259,9633795,9699331,9764867,9961475,10027011,10092547,10158083,10223619,10289155,10354691,10420227,10485763,10551299,10616835,10682371,10747907,10813443,10878979,10944515,11075587,11141123,11272195,11337731,11468803,11534339,11599875,11665411,11730947,11796483,11862019,11927555,11993091,12058627,12124163,12189699,12255235,12386307,12451843,12517379,12582915,12648451,12713987,12779523,12845059,12910595,12976131,13041667,13107203,13369347,13565955,13631491,13762563,13893635,13959171,14221315,14614531,15138819,15204355,15990787,17039363,17170435,17367043,17498115,17694723,17956867,18087939,18284547,18415619,18481155,18546691,18612227,18808835,18939907,19005443,19267587,19398659,19529731,19660803,19726339,19791875,19922947,19988483,20054019,20119555,20316163,20381699,20578307,20709379,20774915,20840451,20971523,21037059,21102595,21233667,21299203,21430273,21495811,21561347,21626883,21692419,21823491,21889027,21954563,22151171,22216707,22347779,22413315,22478851,22544387,22609923,22675459,22806531,22872067,22937603,23003139,23134211,23199747,23330819,23396355,23527427,23592963,23658499,23789571,23855107,23920643,24051715,24117251,24182787,24313859,24379395,24444931,24510467,24576003,24641539,24707075,24903683,25100291,25165827,25231363,25296899,25362435,25427971,25624579,25690115,25755651,25821187,25886723,25952259,26017795,26083331,26279939,26476547,26542083,26607619,26738691,26804227,26869763,26935299,27066371,27197443,27262979,27328515,27394051,27525123,27656195,27787267,27852803,27918339,27983875,28049411,28114947,28246019,28311555,28442627,28508163,28573699,28639235,28704771,28770307,28835843,28901379,28966915,29032451,29097987,29229059,29294595,29360131,29425667,29491203,29556739,29622275,29818883,29884419,29949955,30015491,30081027,30146563,30212099,30277635,30343171,30408707,30474243,30539779,30605315,30670851,30736387,30801923,30867459,30932995,30998531,31064067,31129603,31195139,31260675,31326211,31391747,31457283,31522819,31588355,31719427,31784963,31850499,31916035,31981571,32047107,32112643,32178179,32309251,32374787,32440323,32505859,32571395,32636931,32702467,32768003,32833539,32899075,32964611,33030147,33095683,33226755,33292291,33357827,33423363,33488899,33554435,33619971,33685507,33751043,33816579,33882115,33947651,34013187,34078723,34144259,34209795,34275331,34340867,34471939,34537475,34603011,34668547,34734083,34799619,34865155,34930691,35061763,35127299,35192835,35258371,35323907,35389443,35454979,35520515,35586051,35651587,35717123,35782659,35848195,35913731,35979267,36044803,36110339,36175875,36241411,36306947,36372483,36438019,36503555,36569091,36634627,36700163,36765699,36831235,36896771,36962307,37027843,37093379,37158915,37224451,37289987,37355523,37421059,37486595,37552131,37617667,37683203,37748739,37814275,37879811,37945347,38010883,38076419,38141955,38207491,38273027,38338563,38404099,38469635,38535171,38600707,38666243,38731779,38797315,38862851,38928387,39059459,39124995,39190531,39256067,39321603,39387139,39452675,39518211,39583747,39649283,39714819,39780355,39845891,39911427,39976963,40042499,40108035,40173571,40239107,40304643,40370179,40435715,40501251,40566787,40632323,40697859,40763395,40828931,40894467,40960003,41025539,41091075,41222147,41287683,41353217,41418755,41484291,41549827,41615363,41680899,41811971,41877507,41943043,42008579,42074115,42139651,42205187,42336259,42401795,42467331,42532867,42598403,42729475,42795011,42926083,42991619,43057155,43122691,43188227,43253763,43319299,43384835,43450371,43515907,43581443,43712515,43778051,43843587,44040195,44171267,44236803,44302339,44367875,44433411,44498947,44564483,44761091,44892163,44957699,45023235,45088771,45416451,45481987,45613059,45744131,45809667,45875203,46137347,46333955,46465027,46530563,46792707,46858243,46989313,47054851,47120387,47185923,47251459,47316995,47513603,48037891,48234499,48365571,48889859,48955395,49086467,49217539,49283075,49414147,49741827,49807363,49872899,50135043,50331651,50528259,50659331,50724867,50790403,50921475,50987011,51118083,51380227,51511299,51970051,52101123,52297731,52428803,52559875,52625411,54198275,54460419,54591491,54919171,54984707,55508995,55771139,57016323,57344003,57475075,58392579,58458115,58916867,59179011,59310083,59441155,59768835,59965443,60096515,60162051,60489731,60555267,60620803,60686339,60817411,60948483,61341699,61669379,61734915,61931523,62324739,62390275,62521347,62586883,62717955,62849027,62914563,63242243,63373315,63438851,63504387,63569923,63635459,63700995,63766531,63963139,64028675,64094211,64159747,64225283,64487427,64749571,64815107,64880643,64946179,65011715,65077251,65142787,65536003,65601539,65732611,65798147,65994755,66060291,66125827,66191363,66256899,66322435,66453507,66584579,66650115,66715651,66912259,66977795,67174403,67239939,67371011,67436547,67502083,67567619,67698691,67829763,67895299,67960835,68026371,68091907,68288515,68354051,68419587,68550659,68616195,68681731,68747267,68878339,68943875,69009411,69074947,69140483,69206019,69271555,69337091,69402627,69468163,69599235,69664771,69730307,69795843,69861379,69926915,69992451,70057987,70123523,70189059,70254595,70320131,70385667,70451203,70516739,70713347,70778883,70844419,70909956,70975491,71041027,71106563,71172099,71237635,71303171,71368708,71434243,71499779,71565315,71630851,71696387,71761923,71827459,71892995,71958531,72024067,72089603,72155139,72220675,72286211,72351747,72417284,72482819,72548356,72613891,72679427,72744963,72810499,72876035,72941571,73007107,73072643,73138179,73203715,73269251,73334787,73400323,73531396,73596931,73662467,73793539,73859075,73924611,73990148,74055683,74121220,74186755,74252291,74317827,74383363,74448899,74514436,74579971,74645507,74711043,74842116,74907651,74973187,75038724,75104260,75169796,75235331,75300867,75366403,75431939,75497475,75563011,75628547,75694083,75759620,75825155,75890691,75956228,76021763,76087300,76152835,76218371,76283907,76349443,76414979,76480515,76546052,76611587,76677123,76742659,76808195,76873731,76939267,77004803,77070339,77135875,77201411,77266947,77332483,77398019,77463555,77529091,77594627,77660163,77725699,77791235,77856771,77922307,77987843,78053379,78118915,78184451,78249987,78315523,78381059,78446596,78512131,78577668,78643203,78708739,78774275,78839811,78905347,78970884,79036419,79101955,79167492,79233027,79298563,79364099,79429635,79495171,79560707,79626244,79691779,79757315,79822851,79888387,79953924,80019459,80084996,80150531,80216068,80281604,80347139,80412675,80478212,80543748,80609283,80674820,80740355,80805891,80871427,80936963,81002500,81068036,81133571,81199107,81264644,81330179],"performs":[2097153,2752513,2818049,3276801,3473409,3538945,3735554,3997697,4063233,4259841,4390913,4521985,5373955,5570561,5963777,7077890,8716291,9306115,9502723,9633793,9830403,11010051,11206659,11403267,15532033,15990785,21757953,24444929,24510465,25296897,39190529,40501249,43319297,44171265,46465025,46923777,51904513,56164353,56623105,70320129,72744961,73138177,74645505,75104259,75366402,75497473,75956225,76087299,76283905,77135873,77856771,77987841,78184449,78512130,79495169,79953923,80084993,80281603,80936961,81002499,81068035,81199105,81264643],"prepared":[34406401,39976961,45285377,54198273],"properties":[1966081,2883585,3080193,3801089,4456450,4784130,4980738,5767169,8454146,8978434,9699329,10158081,10289153,10354690,10813441,10878977,11141121,11337729,11468801,11993089,12582913,12779521,13172737,13238273,13434881,13500417,13697025,13828097,13959169,14024705,14286850,14352386,14417922,14745601,14811137,15073281,15335426,15400961,15466498,15597569,15794178,15859713,15925250,15990785,16711684,17235969,17301505,17760258,17825793,17891329,18087937,18284545,18546689,19202049,19988481,20119553,20250625,20316161,20381698,20512770,20578305,20774913,21102593,21495809,21692418,21889025,22216705,22478849,22544386,22609921,22937601,23199748,23265281,23461889,23527425,23592961,24117250,24182785,24379393,24903682,24969217,25034753,25100289,26017794,26411009,26476546,27066370,27131905,27459585,27983874,28180483,29687809,32243715,33882113,34668545,35323905,37158913,38666241,38928385,39321603,39911425,41615361,43712513,45547523,46792705,48103426,48693249,49545217,49676289,49872897,51118081,51707906,52690947,52756482,53084162,53280770,53411841,53542914,53608450,53805058,53936130,54001666,54394882,54525954,54657026,55050241,55246850,55574533,55640066,55705602,55902210,56426498,56492034,56557570,56819714,56885250,57540610,57606146,57671682,57737218,58130434,58261506,58589186,59113474,59244546,59375618,59834370,60030978,60227586,60293122,60358658,60751874,60817410,61014018,61210628,61276162,61407234,61538306,61800450,61734913,61931521,61997058,62193666,62390273,62455810,62783490,62980098,63045634,63897602,64356354,64684034,65273858,65470466,65863682,66322433,66387970,66519041,66781186,67371009,67633154,68157442,69074946,69337089,69533698,69992450,70582274,70713345,71172097,71303173,71368706,71761921,71958529,72024065,72548353,73138177,73269250,73728002,73990145,74121218,74317825,74645506,74711041,74842114,74907649,74973186,75038721,75104257,75169793,75235329,75300865,75366401,75431939,75497473,75563009,75628546,75694082,75759617,76021761,76087297,76152833,76283905,76349441,76414980,76480513,76546049,77135874,77201410,77332481,77398017,77529089,77856769,78184449,78512129,78577668,78839809,78905346,78970881,79167490,79298561,79364097,79495169,79691777,79888385,79953921,80019457,80084993,80216066,80281601,80347137,80674817,81002497,81068033,81133569,81199105,81264641],"performance":[6356993,45547521,47120385,49545217,74776577,76939269,80543745],"parent":[7929857,7995393,9109505,33619973,35127301,38600709,40370181,73924609,74121217,74448897],"passed":[8585217,10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,13959170,14221313,15204353,15990785,51707906,76349441,77529089,80412673,81330177],"persists":[458753],"promise":[3670025,17039365,17170437,17956869,18415620,19398660,20054023,21233668,25231365,26935300,54263817,69861378,76939266,77791233,78774281,79233028],"possible":[7340051,9895955,18219009,26542081,27525121,27918337,28246017,28508161,28704769,28770305,28835841,29491201,29556737,29949953,30081025,30212097,30343169,30408705,30474241,30605313,30867457,31129601,31195137,31260673,31326209,31588353,31784961,31850497,31916033,32571393,32702465,32964609,33030145,33095681,33357825,33816577,33947649,34340865,34537473,34603009,35586049,35848193,51052563,54067219,76349459,77529107,78446593],"parameters":[6225921,6291457,6356994,6422529,6488065,6619137,6684673,6815745,7143425,7208961,7405569,7536641,7602177,7667713,7733250,7798785,7929858,7995393,8060929,8192001,8323074,8388610,8454145,8519681,8585219,8650753,8781825,8847361,8912898,8978433,9043969,9109505,9175041,9437185,9568257,9633793,9699329,9764865,9961474,10027009,10092545,10158082,10223618,10289153,10354689,10420226,10485761,10551298,10616833,10682369,10747906,10813441,10878978,10944514,11075587,11141121,11272193,11337729,11468801,11534337,11599873,11665409,11730946,11796481,11862017,11927554,11993089,12058625,12124162,12386306,12451841,12517378,12713985,12779521,12845058,12910594,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631490,13697025,13762561,13828097,13893634,13959170,14024705,14155777,14221314,14286850,14352386,14417922,14483457,14548993,14680065,14745601,14811137,14876674,14942209,15007745,15073281,15138817,15204354,15269889,15335426,15400961,15466498,15532033,15597569,15728641,15794178,15859713,15925250,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973826,17039361,17170433,17235969,17301505,17498113,17563649,17629185,17694721,17760258,17825793,17891330,17956866,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18546689,18677761,18743297,18808833,18874370,18939905,19005441,19070977,19136514,19202049,19267585,19333121,19398658,19464193,19529729,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250626,20316161,20381698,20447233,20512770,20578305,20643841,20709377,20774913,20840449,20905986,20971521,21037057,21102594,21168129,21233665,21364737,21430273,21495809,21561345,21626881,21692418,21954561,22020098,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544386,22609922,22675457,22740993,22872065,22937601,23003137,23068673,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23724033,23789569,23855105,23920641,23986177,24051713,24117250,24182785,24248321,24313857,24379393,24444929,24641537,24707073,24772609,24903682,24969217,25034753,25100289,25165825,25231362,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25952257,26017794,26148865,26214401,26279937,26345473,26411009,26476546,26542081,26607617,26673153,26738689,26804225,26869761,26935298,27000833,27066370,27131905,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787266,27852801,27918337,27983874,28049409,28114945,28246017,28180481,28311553,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474242,30539777,30605314,30670849,30736385,30801921,30867457,30932994,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850498,31916033,31981569,32047105,32112641,32178178,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768002,32833537,32899073,32964609,33030145,33095681,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882114,33947649,34013185,34078721,34209793,34275329,34340865,34406401,34471937,34537473,34603010,34668545,34734081,34799617,34865153,34930689,35061761,35127297,35192833,35258369,35323905,35389441,35454977,35520513,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36306945,36438017,36372481,36503553,36569089,36634625,36765697,36896769,36962305,37027841,37158913,37224449,37289985,37355521,37421057,37552129,37617666,37748737,37814274,37945345,38010881,38076417,38141953,38207489,38273025,38469633,38535169,38600705,38666241,38731777,38797313,38862850,38928385,39059457,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40501249,40435713,40566786,40632321,40828929,40894465,40960001,41025537,41222145,41287681,41353217,41418753,41615362,41680897,41746433,41877505,41943041,42008577,42074113,42139650,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42729473,42795009,42860545,42991617,43057153,43122689,43188225,43253761,43384833,43450369,43515905,43581441,43712514,43778049,43843585,44040193,44171265,44302337,44367873,44433409,44498945,44564481,44630018,44761089,44892161,44957697,45023233,45088769,45219841,45285377,45481985,45416449,45613057,45744129,45809665,45875201,46137345,46530561,46792705,46858241,46989313,47054849,47120385,47251457,47316993,47513601,48037889,48234497,48365569,48889857,49086465,49217537,49283073,49414145,49741825,49807361,49872897,50331649,50528257,50593793,50659329,50921473,50987009,51118082,51380225,51970049,52101121,52297729,52559873,52625409,52953089,53149697,54132737,54460417,54591490,54919169,54984705,57016321,59572225,60686337,61079553,66912257,69337089,69926913,70909953,72417281,73531393,74514433,75431937,75890690,76742657,77266945,77725697,78053378,78184449,78249985,78577665,78643202,79036418,79298561,79822849,80478209,80609282],"propertyindices":[53608449,54525953,56885249,59244545,60489733,60751873,62783489,63111172,63897601,64356353,67633153,73138177,74645505,75497473,76283905,77135873,78184449,79495169,80084993,81199105],"pending":[11010049,38404097,76087297,79233026],"pattern":[77266945,78577665],"promis":[20054017],"processed":[36175873,37552129,38207489,40108033,40435713,43122689,44040193,48037889,48365569,49217537,49807361,54460417,73924609,74448897],"processes":[36044801,36175873,37552129,37748737,38076417,38207489,40042497,40108033,40435713,42401793,43122689,44040193,45744129,45875201,46858241,47513601,48037889,48365569,49217537,49807361,50987009,51970049,54460417,54984705],"promises":[76939266],"position":[4063234,4259842,23068674,24838146,26148866,28377090,70320130,80936962],"place":[16711681,23199745,76939265],"profile":[393217,327681,6160387,7077891,11010051,35389444,35520518,35979269,37289990,38338561,39124993,41549827,42467332,42729477,43188227,48431107,49545219,53346307,53805057,59834369,60293121,62586881,64028673,64487425,64946177,65142785,66256898,66715649,67436545,68550658,69271553,70189058,70451201,71434242,71565314,71761922,71892994,72941569,73007105,74055682,74186753,75366404,76087300,80019460,80150530,80347137,80740353],"progress":[71827457,73400321],"programmatic":[3735560,5373960,8716296,8847361,9175041,9306120,9502728,9830408,11010056,11206664,11403272,13238274,13697026,13828098,15400962,15597570,15859714,17301506,18546690,19202050,20119554,20316162,20578306,20774914,21495810,23527426,25100290,42270722,45219842,45350916,47710212,48168964,50593794,51183620,51576833,52953089,53149697,54132738,55443457,59047937,60424193,75104265,76087304,77856776,78512136,79953928,80281609,81002505,81068040,81264649],"pass":[8388609,10944513,11075585,14876673,18874369,19136513,20905985,27000833,29163521,79822849,80412673,80609281],"parser":[79560708],"profil":[49545217,53805061,57540609,65142785,66256897,67436545,70189057,71434241,71761921,72941569,80019461,80347137],"private":[51707909,54198273,72417281,74514433,76742657,79626241,80478209],"ptr":[14876673,16318465,16973825,18874369,19070977,19136513,20905985,22020097],"periodically":[58982401,65601537],"past":[68550657,70189057,71434241],"part":[56033281,62717953,75431937],"particularly":[60817409,66387969],"propert":[75235329,75563009],"propertychangedeventargs":[1114114],"protected":[5505027,6750211,7012355,17563651,21430276,21757953,22085635,22740995,23724035,33161219,34406403,34996227,38993923,41353220,42270723,45219843,45285379,46989316,50593795,52953091,53149699,54132739],"procedure":[3735553,5373953,8716289,9306113,9502721,9830401,11010049,11206657,11403265,16056322,28049410,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"propertychanged":[589825,720897,1114118,1376257,71368705,74121217,75628545],"paths":[52756481,54657025,55508993,63635457,69992449,79888385],"precedence":[6619137,6684673,6815745,8650753,62128129,71237633],"privateaccess":[78446593],"property":[589826,720898,1114115,1376257,1966087,2097158,2752518,2818054,2883590,3080199,3276806,3342338,3473414,3538950,3801096,3997702,4390918,4456456,4521990,4784136,4980744,5242888,5570566,5963784,5767176,6422530,7143426,7995395,8585217,9109507,9437186,9699333,10289157,10616833,10813446,11141125,11862017,11993093,12189698,12582913,12779526,13959169,15007749,16711684,17498118,17629188,17694722,18350084,18481154,18939908,19005441,19333124,19529732,19660802,19791876,20447237,20643844,20840453,20971522,21889025,21954564,22347781,22413317,22675460,23199748,23265284,23461892,23920644,24969220,25034756,25559046,25624577,25690116,25821189,26214405,26279937,26345477,26411012,26673158,26869761,27131907,27459588,27590662,27656193,27721733,27787265,27852801,28180481,28442625,28573697,29032449,29097985,29229057,29294593,29425665,29622273,29687811,29753349,29818881,29884417,30015489,30146561,30277633,30539780,30670849,30736385,30801921,30932993,30998529,31064065,31522820,31653893,31719425,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32636932,32768001,32833537,33226756,33685508,33882118,34078721,34209793,34275329,35454979,35651585,36634628,38010883,38666247,39911434,41615363,43712518,45940739,46071811,46268419,46399491,46661635,46727171,46792709,47382531,47579139,48300035,48627715,48693251,48824323,49348611,49676291,49872904,51118083,51707908,53084165,53411843,53608452,54198277,54329347,54394885,54525956,55050243,55181315,55508996,55705604,55771140,55967747,56033285,56098819,56229893,56295427,56360965,56688646,56885252,56950788,57081859,57147397,57278469,57344005,57475076,57737218,57802755,57868293,57999364,58064899,58130434,58195972,58327044,58392580,58458116,58523655,58785796,58851331,58916869,58982404,59179012,59244548,59310086,59441156,59506692,59572230,59637764,59703300,59768836,59899908,59965444,60030981,60096517,60162053,60293122,60489734,60555268,60620804,60686343,60751876,60817413,60882948,60948484,61079559,61145092,61341700,61407234,61472772,61669382,61734917,61865988,61931525,62062597,62128134,62193666,62259207,62324740,62390277,62521350,62586885,62652421,62717957,62783492,62849029,62914564,63045634,63111174,63176708,63242246,63307780,63373316,63438852,63504388,63569924,63635461,63700996,63766532,63832068,63897604,63963141,64028676,64094212,64159751,64225284,64290821,64356356,64421895,64487428,64552965,64618501,64684034,64749572,64815109,64880646,64946180,65011716,65077253,65142788,65208324,65273858,65339398,65404932,65536005,65601540,65732614,65667076,65798149,65929220,65994756,66060292,66125828,66191364,66256901,66322437,66387973,66453509,66519045,66584580,66650118,66715652,66846724,66912262,66977796,67043332,67108868,67174404,67239940,67305477,67371013,67436548,67502085,67567621,67633156,67698693,67764230,67829764,67895301,67960836,68026372,68091909,68222980,68288516,68354053,68419590,68485124,68550660,68616196,68681732,68747268,68812804,68878343,69009412,69074948,69140485,69206021,69271557,69402628,69468165,69533698,69599237,69664772,69730308,69795844,69926919,70057989,70123524,70189060,70254596,70385668,70451204,70516740,70647812,70713349,70778884,70844420,70975493,71041030,71106564,71237638,71303176,71368718,71434244,71499780,71565317,71630852,71696388,71827461,71892996,72089604,72155142,72220678,72286215,72351748,72482820,72810501,72876036,72941572,73007108,73072644,73138186,73203716,73269256,73334788,73400325,73465860,73596932,73662469,73728005,73793540,73859076,73924613,74055685,74121230,74186756,74252293,74383364,74448901,74579972,74645514,74842116,74907653,74973192,75104258,75235335,75431944,75497482,75563014,75628558,75694088,75825156,75956230,76087298,76218372,76283914,76611589,76939267,77070341,77135882,77463557,77660167,77725697,77856770,77922309,77987846,78053380,78184458,78315524,78381061,78512130,78577672,78643204,79167492,79364097,79429634,79495178,79953922,80085004,80216068,80281602,80412674,80543746,81002498,81068034,81199114,81264642]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_113.json b/docs/Reference/fti/FTI_113.json index dc9ba210..baad2302 100644 --- a/docs/Reference/fti/FTI_113.json +++ b/docs/Reference/fti/FTI_113.json @@ -1 +1 @@ -{"qux":[12255233],"qualified":[1703937,3801089,8126465,9437185,10878977,12124161,12517377,13041665,13500417,13565953,13697025,14286849,19136513,19922945,23199745,24248321,51576833,55902209]} \ No newline at end of file +{"qux":[13959169],"qualified":[1638401,4718593,4915201,7340033,8978433,9895937,10354689,11599873,11862017,12713985,14352385,15925249,17760257,19005441,20512769,21692417,22544385,24117249,24903681,76349441,77529089,78839809,79364097,80740353],"queryproperty":[4456450,4784130,4980738,27721733,29753349,48824322,73269250,74973186,75694082],"query":[27721730,29753346,48824321]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_114.json b/docs/Reference/fti/FTI_114.json index e2afeb8e..dfd14c24 100644 --- a/docs/Reference/fti/FTI_114.json +++ b/docs/Reference/fti/FTI_114.json @@ -1 +1 @@ -{"relies":[47382529,59441153],"referenced":[5046273,7077889,58785793],"resource":[1572865,5242889,25231362,27459586,27852802,28114946,28639234,28835842,29097986,29425666,29687810,29884418,30408706,31850498,33816582,38338566,39321601,50200577,53936129,58130433,58261510,58589185,60817414,61145089],"receive":[47316993,53411841,53477377,54591489,54722561,56950785],"removeelement":[3407873,5046273,10158084,58785793,59768833],"recently":[25165825,38731777],"replacement":[47382529],"randomt":[11141122],"removed":[9371649,10027009,10158081,14811137,15335425,17694721,18284545,23527425,24117249,59179009,61145089],"resetting":[2621441,2686977,2818049,3145729,3211265,3670017,3735553,4128769,4521985,4587521,4980737,5177345,6291457,6356993,6553601,7208961,7536641,8716289,8978433,24576001,24707073,30212097,36110337,36831233,40763393,58195969,58261505,58327041,58392577,58916865,59375617,59834369,60096513,60162049,60227585,60293121,60424193,60751873,60817409,60882945,61014017,61407233,61538305,61603841],"reclaim":[30539777],"removes":[1769475,2621442,2686978,2752515,2818050,3145730,3211266,3276803,3407875,3670018,4128770,4259843,4521986,5046275,5177346,9371649,10027009,10158081,13631489,14811137,15335425,16187393,16515073,17694721,18284545,23068673,23527425,23789569,24117249,35323906,35913730,35979266,54067203,56426499,57540611,57999363,58785795,58916866,59375618,59768835,59834370,60162050,60227586,60293122,60424194,60751874,61014018],"requests":[6029313,6488065,7274497],"recommended":[39059457,40042497,40632321,42074113,42205185,42795009,43909121,44105729,44171265,44957697,45088769,46268417,47579137,47775745,48889857,51511297,53805057,54329345,55967745,56295425,56623105,58195969,58327041,58392577,60096513,60817409,60882945,61145089,61407233,61538305,61603841],"running":[2293766,2949128,7471105,7929857,7995393,8585217,9240577,9895937,16252929,17104897,17825793,18546689,19333121,19726337,20512769,21299201,31784962,32505860,38862856,40042497,44171265,44433409,45154305,46333953,50659329,51052545,51314689,59047942,61079560],"relative":[50266114,50855938,52756482,59572225],"registered":[3735568,4587536,6291472,6357008,6553616,7208976,7536656,8323073,8650753,8716304,8978448,11927554,12320770,12648450,12845058,13107202,13369346,14024706,14090242,14155778,14876674,14942210,15597570,15925250,16777218,16842754,17235970,17563650,17760258,18087938,18350082,18612226,18743298,19070978,19660802,19988482,20643842,20774914,21364738,21495810,22413314,22478850,23265282,31064072,32047112,33423368,34209800,58195984,58327056,58392592,60096528,60817424,60882960,61407248,61538320,61603856],"request":[7208961,26869761,60817409],"reserved":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6094849,6029313,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,8060929,7995393,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13697025,13631489,13762561,13893633,13828097,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19726337,19660801,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20381697,20316161,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26148865,26083329,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35520513,35454977,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36372481,36306945,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38469633,38404097,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40697857,40632321,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43909121,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,44957697,45023233,45088769,45154305,45219841,45285377,45350913,45416449,45481985,45547521,45613057,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268417,46333953,46399489,46465025,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47644673,47710209,47775745,47841281,47906817,47972353,48037889,48103425,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55377921,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669377],"retrieves":[10878977,13565953,38010881,50003969],"rely":[46333953,51052545],"recursion":[50724865,54460417],"retrieved":[39059457,40632321,42074113,42205185,43450369,43909121,44957697,45088769,46268417,47775745,49414145,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"removeproperty":[3407874,5046274,9371653,10027013,35323906,58785794,59768834],"rethrown":[12910593],"return":[5242881,5505025,6094849,6029314,6225921,6422529,6488066,6750209,6946817,7012353,7077889,7143425,7274498,7471105,7602177,7929857,8060929,7995393,8126466,8257537,8323073,8388611,8454145,8519681,8585217,8650753,8912898,9043969,9109505,9175042,9240577,9306115,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10878977,10944513,11075585,11141121,11206657,11337729,11534337,11599873,11665409,11730945,12058625,12189697,12255233,12582913,12910594,13172738,13565953,13631490,13893634,14221314,14548994,14614529,14745602,14811137,15073282,15335425,15400961,15532034,15663105,15794179,15859713,15990785,16056321,16252929,16449537,16580611,16646145,16711681,17039361,17104897,17301505,17367041,17432577,17498113,17694721,17825793,18022401,18153473,18219009,18284545,18481153,18546689,18677761,19005441,19333121,19464194,19529729,19595265,19726337,20054017,20316161,20447234,20512769,21233666,21299201,21626881,21757954,22085634,22282241,22544385,22806530,23003137,23134209,23461889,23527425,23592961,23789570,24051713,24117249,24379393,24444929,24641538,24772609,24838145,24969217,25165825,25296897,25362433,25493505,25559041,25624577,25755649,25821185,25952257,26017793,26083329,26345473,26411009,26542081,26607617,26804225,26935297,27066369,27131905,27197442,27394049,27525121,27656193,27721729,27787265,27983873,28049409,28180481,28246017,28311553,28377089,28442625,28573697,28704769,28901377,28966913,29032449,29294593,29491201,29556737,29622273,29753345,29949953,30081025,30146561,30343169,30736385,30801921,30867458,30998529,31195137,31260675,31326209,31391745,31588354,31653889,31981569,32112642,32178177,32636929,32768001,32964610,33095681,33947651,34013185,34930689,35520513,35848193,36569089,37879809,38731777,39059458,39452674,40042497,40632322,41680897,41746433,42074114,42205186,42336258,42401793,43778049,43909122,44171265,44957698,45088770,45875202,46268418,47054849,47775746,49152001,50003969,51445761,51642369,53805057,54329345,55771137,55967745,56295425,56360961,56492034,56623105,57278465,58064897,58195970,58327042,58392578,59637762,60096514,60817410,60882946,61407234,61538306,61603842,61669377],"readonly":[1114114,1376258,1441794,1507330,39845889,40501249,40960001,41025537,41615361,42139649,42663937,42729473,42860545,42991617,43253761,43515905,43646977,43712513,43974657,44040193,44105729,44236801,44302337,44498945,44564481,44761089,44826625,44892161,45285377,45350913,45481985,45547521,45940737,46006273,46399489,46727169,46989313,47448065,47513601,47579137,47841281,48037889,48103425,48168961,48431105,48562177,48627713,48693249,48758785,48955393,49020929,49086465,49217537,49348609,49479681,49545217,49676289,49741825,49807361,49872897,49938433,50069505,50135041,50266113,50331649,50397185,50855937,50921473,51183617,51445761,51707905,51970049,52297729,52363265,52494337,52625409,52756481,53018625,53215233,53608449,53739521,53805057,54132737,54329345,54394881,54657025,54788097,54919169,54984705,55050241,55181313,55312385,55508993,55640065,55967745,56033281,56164353,56295425,56557569,56623105,56688641,56819713,56885249,56950785,57081857,57409537,57606145,57868289],"reference":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6094849,6029314,6160385,6225921,6291457,6356993,6422529,6488066,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274498,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,8060929,7995393,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830402,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255236,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13697025,13631490,13762561,13893633,13828097,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19726337,19660801,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20381697,20316161,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789570,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26148865,26083329,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35520513,35454977,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36372481,36306945,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38076417,38141953,38207489,38273025,38338561,38469633,38404097,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059458,39124993,39190529,39256065,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40697857,40632322,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353219,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,42008577,42074114,42139649,42205186,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43909122,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,44957698,45023233,45088770,45154305,45219843,45285377,45350913,45416449,45481985,45547521,45613057,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268418,46333953,46399489,46465025,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47644673,47710209,47775746,47841281,47906817,47972353,48037889,48103425,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610754,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790402,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55377921,55312386,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195970,58261505,58327042,58392578,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096514,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817410,60882946,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407234,61472771,61538306,61603842,61669377],"results":[13434881,39321601,45154305,50200577,51314689,53936129,60620801,60686337,61407233,61538305,61603841],"regardless":[12910593,52822018,53280769],"removepropertynocheck":[1769473,3276801,4259841,5373953,16318465,18284548,54067201,56426497,57999361],"runtime":[65538,720897,917505,3014657,4521985,4980737,5111809,7208962,9764865,10092545,10223617,10878977,11141121,13565953,13828097,19398657,24838145,25231361,25624577,25690113,25952257,26148865,26214401,26673153,26738689,26804227,27262977,27328513,27459585,27590657,27656195,27787267,27852801,28114946,28180481,28508161,28639233,28835842,28901379,29097986,29163521,29229057,29360129,29425665,29622275,29687809,29818881,29884418,30015489,30408706,31129601,31850498,33816588,38404098,38993921,39321605,39387137,40042497,42074114,44171265,45023233,50200579,50724868,50987009,51249153,51773441,52035586,52101121,52559873,53936130,54460418,54657025,54984705,55574529,55705601,56098819,58261522,58589186,58654721,58851329,59179009,59244545,59441155,60227585,60686337,60817412],"responsible":[52494337],"relevant":[7077889],"runtimeheapsizesampleinterval":[42074113,51249156,60817409],"response":[38404097,39321601,42074113,51773441,53346305,58261505,59441153,60817409],"recompilation":[4980742,7208966,24444930,25559042,25821186,26017794,27525122,28049409,28442625,28704770,28966915,29556738,29949953,30998531,31391746,32178177,32768001,33095682,34013185,34930691,35192835,35848193,36372483,36569089,37879809,38666243,39321601,39714819,58261510,59703297,60620802,60817414],"remarks":[1179649,5242881,5373953,6094849,6029313,6225921,6488065,6815745,7143425,7274497,7405569,7864321,8060929,8126465,8257537,8323073,8388609,8454145,8519681,8650753,8847361,8912897,9043969,9109505,9175041,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10878977,10944513,11075585,11141121,11206657,11337729,11534337,11665409,11730945,11927553,12058625,12189697,12255233,12320769,12582913,12648449,12713985,12845057,12910593,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13697025,13631490,13762561,13828098,13893633,13959169,14024705,14090241,14155777,14286849,14417921,14483457,14548993,14680065,14745601,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15466497,15532033,15597569,15728641,15794177,15859713,15925249,16187393,16252929,16318465,16515073,16580609,16777217,16842753,16908289,17235969,17367041,17563649,17760257,17891329,17956865,18087937,18153474,18284545,18350081,18546689,18612225,18743297,18808833,18874369,18939905,19005442,19070977,19136513,19202049,19333121,19398658,19464193,19529729,19660801,19791873,19922945,19988481,20054018,20119553,20250625,20316161,20447233,20643841,20709377,20774913,20971521,21037057,21102593,21233665,21299201,21364737,21430273,21495809,21823489,21889025,22085633,22216705,22413313,22478849,22544385,22609921,22806529,23068673,23134209,23199745,23265281,23396353,23724033,23789570,23920641,24248321,24444929,24641537,24838145,24903681,24969217,25100289,25165825,25362433,25493505,25559041,25624577,25755649,25821185,25952257,26017793,26083329,26279937,26411009,26476545,26542081,26607617,26673153,26804225,26869761,27000833,26935297,27066369,27197441,27525121,27590657,27656193,27983873,28049409,28114946,28180481,28246017,28311553,28377089,28573697,28704769,28770305,28835842,28901377,28966913,29097986,29229057,29294593,29360129,29491201,29556737,29622273,29818881,29884418,29949953,30015489,30081025,30343169,30408706,30474241,30539777,30736385,30801921,30867457,30998529,31129601,31260673,31391745,31588353,31653889,31850498,31916033,31981569,32112641,32178177,32964609,33095681,34013185,34734081,34930689,35127297,35520513,35848193,36044801,37879809,38207489,38273025,38731777,39190529,39452673,39583745,40042497,41353217,41549825,42336257,42795009,43057153,43122689,43384833,43450369,43778049,44171265,44367873,44433409,44761089,45023233,45154305,45219841,45613057,45678593,45875201,46071809,46333953,46465025,46530561,46792705,47054849,47251457,47316993,47382529,47710209,47906817,48168961,48234497,48758785,48889857,49217537,49348609,49414145,49610753,49676289,49938433,50200577,50266113,50528257,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51183617,51249153,51314689,51445761,51511297,51642369,51707905,51838977,51904513,52035585,52101121,52166657,52297729,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53149697,53280769,53411841,53477377,53542913,53805057,53870593,53936129,54001665,54067201,54263809,54329345,54394881,54460417,54591489,54722561,54853633,54919169,55312385,55443457,55574529,55836673,55967745,56033281,56098817,56295425,56492033,56623105,56688641,56819713,57081857,57278465,57475073,57540609,58392577,58720257,59113473,59506689,59768833,60096513,60358657,60555265,60751873,60817409,60882945,61407233,61472769,61538305,61603841],"requesting":[6029313,6488065,7274497],"reassignment":[54853633,55443457],"reclaims":[52101121],"runtimeheapsizeviolationpolicy":[42074113,50200577,51773444,60817409],"read":[1769475,3276803,3670017,4259843,5373954,5898241,12255235,13828097,16056325,16318466,16515073,16711681,16973825,17432577,18284545,18808833,19398657,36634625,39256065,44302337,46858241,50921473,54067203,56426499,56950785,57278465,57540609,57999363,59310081,60489729,60751873],"restricted":[7929857,8585217,9240577,9895937,13303809,13959169,22609921,23396353,32505857,33619969,35717121,40042497,44171265,59637761],"resumed":[50724865,54460417],"returning":[3407873,5046273,8257537,58785793,59768833],"resumes":[7208961,26279937,60817409],"removing":[47710209,48234497,52559873],"rank":[7602183],"requirement":[40042497,44171265,59572225],"root":[5111809,37093377,48168961,48562178,48758785,49348609,49676289,49938433,51183617,52297729,53673985,56819713,58654721,59572225,59965441],"returned":[13631491,23789571,24969217,25493505,26083329,26542081,26607617,26935297,28311553,29491201,29949953,30736385,32178177,35848193,61669377],"remove":[589825,720897,917505,1769473,2752514,3276801,4259841,9371651,10027011,10158083,14811137,15335425,17694728,18284546,23527425,24117249,35323905,54067201,56426497,57540610,57999361],"remote":[59179009,61145089],"returns":[1572865,1638401,1703938,1769473,1900545,1835009,1966081,2031617,2097153,2359297,2490372,2555908,2621442,2686978,2752513,2818050,2162689,2228225,2883588,3014658,3080193,3211266,3276801,3342340,3407876,3473409,3538948,3604482,3670018,3801090,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521986,4587521,4653057,4784130,4849668,4980739,5046275,5111810,5439489,6291457,6356993,6553601,6881283,7208963,7536641,7798785,8388611,8716289,8978433,9306115,9568259,10223617,12910593,13631489,15728641,15794177,16580609,17367041,18153473,18677761,19005441,19202049,20054017,20316161,22544386,23134209,23789569,24379393,25165825,26345473,27787265,28246017,30474241,30801922,31260673,31653890,32899074,33226753,33947649,35520513,37421058,37945346,38010881,38600706,38731777,39649282,41549825,43778050,44761089,45678593,46792705,47054850,47251457,49217537,50724865,50921473,51576834,51642370,51707906,51904513,52494337,52625409,53084161,53477380,53673986,53870593,54067201,54394881,54460417,54722564,55115777,55312388,55705602,55836673,55902210,56229889,56426497,56492035,56688641,56754177,57016322,57212929,57540609,57671681,57933825,57999361,58130433,58195969,58261507,58392577,58523649,58589185,58654722,58720259,58785795,58851329,58982401,59113476,59244545,59310081,59375618,59506692,59703297,59768836,59834370,59899905,60096513,60162050,60227586,60358660,60424194,60489729,60555265,60751874,60817411,60882945,61407233,61472769,61538305,61603841],"release":[18874370,30539777,38273026,43122690,59179009,61145089],"relaxes":[59572225],"required":[6029313,6488065,7274497,9830401,13828097,19398657,58392577,60096513,60882945],"releases":[4063233,4587523,6291459,6356995,6553603,7208963,7536643,8716291,8978435,18874370,19791873,30539777,36110338,36831234,38273026,40763394,43122690,47382529,58195971,58392579,59703297,60096515,60817411,60882947,61407235,61538307,61603843],"random":[11141125],"restore":[43450369,49414145],"reason":[37617665,53608450,55115777],"references":[30539777],"reduces":[46333953,51052545],"restrictions":[39059457,40632321,42074113,42205185,43057154,43909121,44957697,45088769,46268417,46465026,47775745,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"retain":[9699329,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12582913],"represent":[7143426,8060930,11927553,12320769,12648449,12713985,12845057,13041665,13107201,13303809,13369345,13500417,13697025,13828097,13959169,14024705,14090241,14155777,14286849,14417921,14483457,14876673,14942209,15007745,15138817,15269889,15597569,15925249,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19136513,19398657,19660801,19922945,19988481,20119553,20643841,20709377,20774913,21037057,21364737,21430273,21495809,21889025,22413313,22478849,22609921,23199745,23265281,23396353,24248321,25100289,50528257,51838977,54067202,60555265],"releasing":[2621441,2686977,2818049,3145729,3211265,3670017,3735553,4128769,4521985,4587521,4980737,5177345,6291457,6356993,6553601,7208961,7536641,8716289,8978433,24576001,24707073,30212097,36110337,36831233,40763393,58195969,58261505,58327041,58392577,58916865,59375617,59834369,60096513,60162049,60227585,60293121,60424193,60751873,60817409,60882945,61014017,61407233,61538305,61603841],"result":[655361,1376257,3407873,4390913,6029313,7274497,8257537,8388612,9043969,9109505,9175041,9633793,9699329,10289153,10420225,10485761,10616833,10682369,10747905,11075585,11206657,11337729,11534337,11665409,12058625,12189697,12255234,12582913,13172738,13631491,13893634,14548994,14745602,15073282,15400961,15532034,15859713,15990785,16646145,17104897,17825793,18546689,19333121,19464194,19529729,20447234,21233666,22085634,22282241,22806530,23003137,23592961,23789571,24641538,24969218,25493506,26083330,26476546,26542082,26607618,26935298,27197441,28311554,29491202,29949954,30736386,30867457,31588354,31653889,32112641,32178178,32899073,32964610,35848194,38010881,39059457,39452674,40632321,42074113,42205185,42336257,42795009,43909121,44957697,45088769,45875201,46268417,47054851,47775745,48889857,51642371,56492034,58195969,58327041,58392577,59768833,60096513,60686337,60817409,60882945,61145089,61407233,61538305,61603841],"runtimes":[24444929,25559041,25821185,26017793,27525121,28704769,29556737,31391745,33095681,39321601,58851329],"rejection":[59441153],"readbytes":[2621441,2686977,2818049,3211265,3670017,16711684,17432580,59375617,59834369,60162049,60424193,60751873],"resolution":[61145089],"rejected":[47316993,53411841,53477377,54591489,54722561,56950785],"related":[46071809,57147393],"reflection":[5242881,39059458,40632322,42074114,42205186,43909122,44957698,45088770,45154307,46268418,46333956,47775746,47906817,51052548,51314691,54001665,58195970,58327042,58392578,60096514,60817410,60882946,61407234,61538306,61603842],"retrieve":[41549825,47251457],"reclaimed":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849665,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,19791873,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"redirected":[1],"rights":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6094849,6029313,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,8060929,7995393,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13697025,13631489,13762561,13893633,13828097,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19726337,19660801,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20381697,20316161,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26148865,26083329,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35520513,35454977,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36372481,36306945,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38469633,38404097,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40697857,40632321,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43909121,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,44957697,45023233,45088769,45154305,45219841,45285377,45350913,45416449,45481985,45547521,45613057,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268417,46333953,46399489,46465025,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47644673,47710209,47775745,47841281,47906817,47972353,48037889,48103425,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55377921,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669377],"released":[52101121],"ref":[458753,1245185,4194305,4653057,7077889,8257537,12255234,24969217,25493505,26083329,26542081,26607617,26935297,28311553,29491201,29949953,30736385,31326209,32178177,35848193,52166657,52428801,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55246850,55312385,55705601,55836674,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,58982401,59047937,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60030977,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61079553,61276161,61407233,61472769,61538305,61603841],"resourc":[59965443],"reaches":[61145089],"removal":[10944513],"replace":[6094856,6225928],"runtim":[7208961,25362433,26411009,27066369,27983873,28049409,28377089,28573697,29229057,29294593,30343169,31981569,34013185,37879809,38404099,42074114,50200578,51380225,51773441,52101121,53346305,53936130,58261507,60686337,60817411],"representation":[3604482,3735553,4587521,6291457,6356993,6553601,7208961,7536641,8716289,8978433,13631489,17367041,20316161,23134210,23724033,23789569,28246017,38010881,42795009,43778049,45744129,48889857,53673986,58195969,58327041,58392577,58654721,59310081,60096513,60817409,60882945,61407233,61538305,61603841],"remainder":[31588353,32964609],"requested":[6029314,6488066,7274498,13762561,13893633,14680066,14745602,21102593,21233665,21823490,22085634,24444930,24772609,25493506,26083329,26411009,27394050,27525121,27721730,28311553,28377090,28573698,29556738,29753345,30736386,31981569,33095681,41943041,59572225],"range":[7143425,8060929,8126465,9830401,15728641,15794177,16580609,19202049],"represents":[1179649,1572865,1638401,1769473,1900545,1835009,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3080193,3276801,3342337,3407873,3473409,3538945,3604481,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849665,4980737,5046273,5111809,5439489,6029314,6291457,6356993,6488065,6553601,6750209,6881281,7012353,7143425,7208961,7274498,7536641,7798785,8060929,8716289,8978433,11599873,13631489,16252929,17104897,17825793,18546689,18677762,19333121,19726337,20054017,20512769,21299201,22544386,23789569,24379394,30801922,31195137,31653890,38010896,38535172,39321607,39976964,40566787,41615361,45481985,45744129,46202881,48365569,49020929,50003969,52166657,53084162,53477377,53673986,53870594,54067203,54722561,55115778,55312385,55705601,55836673,55902209,56033281,56229889,56426497,56492034,56754178,57016321,57212930,57278466,57540609,57671681,57933826,57999361,58064897,58130434,58195969,58261506,58327041,58392578,58458113,58523649,58589185,58654722,58720257,58785793,58851329,58916865,58982402,59113473,59244545,59310081,59375617,59506689,59703298,59768833,59899906,60096514,60162049,60227585,60293121,60358657,60489729,60555266,60751873,60817410,60882945,61014017,61145089,61407234,61472770,61538306,61603841],"replaces":[41353217,45219841],"require":[13828098,19398658],"representing":[9502721,10354689],"rootnode":[37093377,48562180,53673985],"retrieval":[13434881,14614529,21626881],"refers":[8126465,8454145,9437185],"restrict":[13303809,13959169,22609921,23396353],"resources":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2621441,2686977,2818049,2162689,2228225,2883585,3014657,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063234,4128769,4259841,4325377,4390913,4456449,4521986,4587524,4653057,4849665,4980738,5046273,5111809,5177345,5439489,6291460,6356996,6553604,6881281,7208964,7536644,7798785,8716292,8978436,18874372,19791873,24576001,24707073,30212097,30539777,36110339,36831235,38010881,38273028,39059459,40042497,40632323,40763395,41549825,42074115,42205187,43122692,43909123,44171265,44433412,44957699,45088771,46071809,46268419,47251457,47775747,48168962,48758786,49348610,49676289,49938433,50659332,51183617,51576833,52297729,53084161,53477377,53673985,53870593,54067201,54722561,54853633,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,56819714,57212929,57671681,57933825,57999361,58130433,58195975,58261506,58327044,58392583,58523649,58589185,58654721,58720257,58785793,58851329,58916865,59113473,59244545,59310081,59375617,59506689,59703298,59768833,59834369,59899905,59965441,60096519,60162049,60227586,60293121,60358657,60424193,60489729,60555265,60751873,60817415,60882951,61014017,61407239,61472769,61538311,61603847],"runaway":[51511297],"representative":[7077889],"retrievable":[52822017,53280769],"remain":[52035585,52822017,53280769,56098817],"replaced":[131073,196609,262145,589825,54067201,56426497,57999361],"restriction":[2293764,3735554,4587522,6291458,6356994,6553602,7208962,7536642,7929858,8585218,8716290,8978434,9240578,9895938,13303809,13959169,22609921,23396353,32505860,33619970,35717122,39059458,40042498,40632322,42074114,42205186,43450371,43909122,44171266,44957698,45088770,46268418,47775746,49414147,58195972,58327044,58392580,59047940,60096516,60817412,60882948,61407236,61538308,61603844],"reside":[61210625],"resolve":[6029313,6488065,7274497]} \ No newline at end of file +{"rank":[7733255],"response":[49545217,59834369,60293121,70778881,74383361,75366401,76087297,77791233],"requesting":[7405569,9043969,10682369],"recompilation":[7077894,11010054,36044802,37748738,38076418,38273025,39387137,40042499,41418753,42401794,43122689,43515905,44302337,45744130,45875203,46858242,47513602,49217537,49545217,50003971,50987011,51642371,51970050,54460417,54853635,54984706,57016321,57212931,71172097,75366406,76087302,79560706],"range":[7995393,8585217,8978433,9109505,14876673,16318465,16973825,18874369,19070977,19136513,20905985,22020097],"restore":[56360961,62849025],"recommended":[57737217,58130433,58523649,60293121,61407233,61669377,62193665,63045633,63569921,64159745,64684033,65273857,67764225,68091905,68485121,69533697,70975489,73662465,74252289,75104257,76087297,76939266,77463553,77856769,77922305,78512129,79953921,80281601,81002497,81068033,81264641],"readonly":[2,786434,917506,2359298,55771137,56950785,57147393,57475073,58195969,58327041,58392577,58458113,58785793,59179009,59310081,59506689,59637761,59703297,59965441,60030977,60096513,60489729,60555265,60948481,61145089,61472769,61865985,62390273,62521345,62586881,62914561,63111169,63176705,63242241,63307777,63373313,63438849,63569921,63832065,64028673,64487425,64880641,64946177,65011713,65142785,65208321,65339393,65404929,65732609,65798145,65929217,66060289,66125825,66191361,66256897,66322433,66519041,66715649,66846721,66977793,67108865,67239937,67371009,67436545,67502081,67960833,68026369,68091905,68222977,68419585,68485121,68550657,68616193,68681729,68747265,68812801,69206017,69271553,69599233,69664769,69730305,69795841,70057985,70123521,70189057,70385665,70451201,70516737,70647809,70713345,70844417,71106561,71434241,71499777,71630849,71696385,72089601,72351745,72482817,72941569,73072641,73203713,73334785,73465857,73596929,73662465,73728001,73793537,73859073,74186753,74252289,74579969,74907649,75038721,75825153,76021761,76218369,76349441,77463553,77529089,77922305,78315521,78381057,79364097],"removepropertynocheck":[1966081,2883585,3080193,6422529,19660801,20840452,71368705,74121217,75628545],"resourc":[78446595],"releasing":[2097153,2752513,2818049,3276801,3473409,3735553,3997697,4063233,4259841,4390913,5373953,5570561,5963777,7077889,8716289,9306113,9502721,9830401,11010049,11206657,11403265,24510465,25296897,46465025,51904513,56164353,56623105,70320129,73138177,74645505,75104257,75366401,75497473,76087297,76283905,77135873,77856769,78184449,78512129,79495169,79953921,80084993,80281601,80936961,81002497,81068033,81199105,81264641],"readonlyspan":[2818049,3276801,3473409,3997697,4390914,4915202,7340035,9895939,16842757,22282245,23986181,26869767,28704775,30081031,35651591,41222151,44826625,49020929,51052546,51249153,51445762,54067202,73138177,74645505,75497473,76349443,77135873,77529091,78184450,79364098],"regardless":[15990785,75235330,75563009],"resolution":[76939265],"relative":[68550658,70189058,71434242,76873729],"registered":[3735568,5373968,8716304,8847361,9175041,9306128,9502736,9830416,11010064,11206672,11403280,13172738,13238274,13434882,13500418,13697026,13828098,14745602,14811138,15073282,15400962,15597570,15859714,17235970,17301506,17825794,18087938,18284546,18546690,19202050,19988482,20119554,20316162,20578306,20774914,21495810,22216706,22478850,22937602,23527426,23592962,24182786,25100290,45350920,47710216,48168968,51183624,75104272,76087312,77856784,78512144,79953936,80281616,81002512,81068048,81264656],"reclaimed":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,21757953,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"runtim":[11010049,36241409,36372481,37945345,38273025,39387137,39452673,39518209,40239105,43515905,43581441,44433409,49741825,52625409,59834371,60293122,70778881,71041026,72155137,72220674,72876033,74383361,75366403,76087299,79757313],"removing":[56229889,66453505,67698689],"returned":[18219011,26542083,36175873,37552129,38207489,40108033,40435713,43122689,44040193,48037889,48365569,49217537,49807361,51707905,54460417,79364097,80412673],"readbytes":[2818050,3276802,3473410,3997698,4390914,16449541,16646149,18153477,18677765,47906818,53215234,73138178,74645506,75497474,77135874,78184450],"runaway":[70975489],"relevant":[7929857],"representing":[10158081,11337729],"runtimeheapsizesampleinterval":[60293121,72810500,76087297],"remainder":[43843585,44564481],"resource":[851969,6357001,35192834,35258370,36896770,39649282,40960002,41877506,42336258,42991618,44761090,47054850,47972358,49086466,49545217,50921474,55836678,71041025,72220673,74711041,75366406,76087302,76152833,76939265],"rejected":[62259201,65077249,72286209,73990145,74842113,76021761,79233027],"represents":[393217,851969,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4849665,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7405569,7798785,7864321,7995393,8716289,9043970,9109505,9306113,9502721,9764865,9830401,10682370,11010049,11206657,11403265,13107201,17039361,17170433,17956865,18219009,18415617,19398657,20054017,21233665,21299202,24576002,25231361,26083330,26542081,26935297,33619969,35127297,38600705,40370177,40697858,41484290,42663937,45547536,48103428,49545223,51707923,52232196,53673987,59179009,60358657,62455809,62980097,65404929,66715649,68943873,69337090,70320129,70909954,71172098,71303169,71368705,71761922,72024065,72089601,72417281,72548354,72613889,72679425,73138177,73269249,73531394,73990145,74121219,74317825,74514433,74711042,74842113,74973185,75038721,75104258,75169793,75300865,75366402,75431938,75497473,75628545,75694081,75759617,75890689,75956225,76087298,76152833,76283905,76349441,76414977,76480513,76546049,76742657,76939265,77266945,77332482,77398017,77529089,77725697,77856769,77987841,78053377,78184449,78249985,78512129,78577665,78643201,78708738,78905345,78970882,79036417,79101953,79167489,79298561,79364097,79495169,79626241,79691778,79822849,79888386,79953921,80019458,80084993,80216065,80281602,80347138,80478209,80543745,80609281,80674817,80740353,80805889,80871426,80936961,81002498,81068033,81199105,81264642,81330178],"retrieval":[13303809,15007745,22413313,77660161],"requiredargcount":[32505861,33619973,34013189,34471941,34668549,35782661,36110341,36438021,37355525,38141957,38469637,38928389,40370181,44957701],"resumed":[71827457,73400321],"resumes":[11010049,36700161,76087297],"running":[2490374,3670024,8060929,8192001,8323073,8781825,10092545,10420225,17039361,17170433,17956865,18415617,19398657,21233665,25231361,26935297,50397186,52166660,54263816,56033281,56688641,57278465,58523649,62717953,63963137,64159745,66650113,76677126,78774280],"referenced":[4521985,7929857,75956225],"required":[5767170,7405569,8585217,9043969,10682369,16711681,23199745,32505858,33619970,34013186,34471938,34668546,35782658,36110338,36438018,37355522,38141954,38469634,38928386,40370178,44957698,50069508,52494340,53739522,56754178,58654722,72417282,74514434,75431939,79626244,80281601,80478212,81002497,81068033],"removal":[12582913],"requests":[7405569,9043969,10682369],"reduces":[56688641,66650113],"representation":[3735553,5373953,6160386,8716289,9306113,9502721,9830401,11010049,11206657,11403265,15663105,18219009,23658497,26542081,41549826,43188225,45547521,48955393,52428801,60358657,61669377,62980097,67764225,72548353,75104257,76087297,76480513,77856769,78512129,78970881,79953921,80019458,80281601,81002497,81068033,81264641],"runtime":[655361,983041,1310722,3014657,3342337,3407873,5963777,7077889,9568257,10878977,11010050,11468801,11665409,11862017,16711681,19005441,23199745,35192833,35258369,35389441,36896769,37027841,37093377,37289985,38338561,38535169,38731777,39124993,39256067,39452673,39649281,40304641,40763393,40828931,40960001,41680897,41811969,41877506,42205185,42336257,42532865,42991618,43253761,43778051,44498945,44761090,44892161,45481987,47054850,47316993,47972364,49086466,49545221,50724867,50921474,54198273,58523649,59834370,60293122,61014017,61800449,64159745,67698689,70516737,71041027,71565313,71827460,72155137,72220674,72548353,72810497,73400322,73596929,73924610,74055681,74383361,74448899,75366418,76087300,76152834,76546049,77004801,77398017,77791235,78970881,79757313,80084993,80543745],"replaced":[589825,720897,1114113,1376257,71368705,74121217,75628545],"refers":[8454145,8978433,10354689],"representative":[7929857],"relaxes":[76873729],"recently":[35979265,42729473],"reclaims":[72155137],"release":[21430274,41353218,46989314,51511297,76939265,77004801],"related":[63635457,72744961],"require":[16711682,23199746],"result":[917505,1179649,3538945,4915222,5177345,8388612,8912897,9043969,9633793,10223617,10485761,10551297,10616833,10682369,10747905,10813441,11730945,11927553,12124161,12386305,12517377,12779521,12845057,12910593,13631489,13893633,13959170,14155778,14221313,14680065,15204353,15728642,16121857,16252929,16580609,17956865,18022402,18219011,19398657,19464194,19857410,21037058,21364738,22872066,23003137,23265281,23789569,24313858,24969217,25231361,25362433,25427970,25559041,26345473,26542083,26738690,26935297,27000837,28114945,28377089,28639234,29163525,30539777,32636929,33292291,33751043,34865155,34930691,35717123,36175874,36306947,36569091,36831234,37224451,37421059,37552130,37683202,38207490,38797315,38862851,39583747,40108034,40435714,40566788,40697857,41222147,42008579,42795011,43122690,43843586,44040194,44367875,44564482,45088770,45416451,45547521,45613057,46137347,47120386,48037890,48365570,49217538,49283073,49807362,51380225,51445780,51707905,52887553,53280770,54460418,57737217,57868291,58130433,60293121,61407233,61669377,62193665,63045633,64421889,64684033,65273857,67764225,68878337,69140483,69533697,70385667,75104257,76087297,76939265,77856769,77987841,78512129,78708738,79364120,79757313,79822853,79953921,80281601,80609285,81002497,81068033,81264641],"ref":[524289,1441793,5308417,7929857,8912897,12320769,13959170,36175873,37552129,38207489,40108033,40435713,43122689,44040193,48037889,48365569,49217537,49807361,54460417,54591489,68943873,69992449,70909953,71172097,71368705,71761921,71958529,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76677121,76742657,77201409,77266945,77332481,77398017,77529089,77594626,77856769,77987841,78249986,78577665,78708737,78774273,78970881,79036417,79167489,79298561,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80805889,80871425,81002497,81068033,81264641,81330177],"root":[3014657,3407873,53805057,57147393,62390273,65142786,66519041,67502081,69206017,70713345,72548353,74907649,76873729,78381057,78446593,78970881,80019457],"redirected":[196609],"released":[72155137],"results":[13303809,49545217,57278465,63963137,71041025,72220673,75104257,79560705,79757313,79953921,81264641],"request":[11010049,38404097,76087297],"rethrown":[15990785],"releases":[4587521,5373955,8716291,9306115,9502723,9830403,11010051,11206659,11403267,21430274,21757953,41353218,46989314,51511297,51904514,56164354,56623106,67895297,71172097,75104259,76087299,77856771,79953923,80281603,81002499,81068035,81264643],"relies":[67895297,77791233],"remarks":[393217,6291457,6356993,6422529,6619137,6684673,6815745,7208961,7405569,7995393,8388609,8454145,8585217,8650753,8847361,8912897,8978433,9043969,9109505,9175041,9568257,9633793,9699329,9961473,10027009,10158081,10223617,10289153,10354689,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11075585,11141121,11272193,11337729,11468801,11665409,11730945,11862017,11927553,11993089,12124161,12386305,12517377,12582913,12779521,12845057,12910593,13041665,13172737,13238273,13303809,13434881,13500417,13631489,13697025,13828097,13893633,13959169,14024705,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14745601,14811137,14876673,14942209,15073281,15204353,15269889,15335425,15400961,15466497,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16187393,16318465,16384001,16515073,16580609,16711682,16973825,17104897,17235969,17301505,17760257,17825793,17891329,18022401,18087937,18219010,18284545,18546689,18808834,18874369,19005441,19070977,19136513,19202049,19464193,19660801,19857409,19922946,19988481,20054018,20119553,20250625,20316161,20381697,20447233,20512769,20578305,20774913,20840449,20905985,21037057,21102593,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21889025,22020097,22216705,22347777,22478849,22544385,22609921,22872065,22937601,23003137,23199746,23527425,23592961,23658497,23855105,24117249,24182785,24313857,24379393,24576001,24641537,24903681,25100289,25427969,25624577,25821185,25886721,26017793,26279937,26476545,26542082,26607617,26738689,26804225,26869761,27066369,27656193,27787265,27852801,27983873,28442625,28573697,28639233,29032449,29097985,29229057,29294593,29360129,29425665,29622273,29818881,29884417,30015489,30146561,30277633,30670849,30736385,30801921,30932993,30998529,31064065,31719425,31981569,32047105,32112641,32178177,32309249,32374785,32440321,32768001,32833537,33882113,34078721,34209793,34275329,34406401,34668545,35323905,35389441,35520513,35651585,35979265,36044801,36175873,36241409,36372481,36700161,37093377,37158913,37289985,37552129,37748737,37879809,37945345,38076417,38207489,38273025,38404097,38535169,38666241,38928385,39059457,39256065,39387137,39452673,39518209,39780353,39911425,39976961,40042497,40108033,40239105,40304641,40435713,40632321,40697857,40763393,40828929,41353217,41484289,41549825,41615361,41680897,41877506,42139649,42205185,42270721,42401793,42467329,42532865,42729473,42991618,43122689,43188225,43319297,43515905,43581441,43712513,43778049,43843585,44040193,44433409,44498945,44564481,44761090,45088769,45219841,45285377,45481985,45613057,45744129,45875201,46333953,46792705,46858241,46989313,47054850,47120385,47513601,48037889,48365569,48955393,49086466,49217537,49283073,49741825,49807361,49872897,50135041,50593793,50921474,50987009,51118081,51380225,51511297,51970049,52428801,52625409,52953089,53149697,54132737,54198273,54460417,54984705,56033281,56229889,56360961,56688641,57147393,57278465,57344001,57868289,58523649,58916865,58982401,60096513,60162049,60817409,60882945,61669377,61734913,61931521,62062593,62128129,62259201,62390273,62586881,62717953,62849025,63635457,63963137,64094209,64159745,64290817,64421889,64487425,64552961,64815105,64880641,65077249,65536001,65601537,65798145,66256897,66387969,66453505,66519041,66584577,66650113,66715649,67305473,67502081,67567617,67698689,67764225,67829761,67895297,68091905,68354049,68419585,68550657,68878337,69140481,69206017,69271553,69337089,69402625,69468161,69599233,70057985,70189057,70254593,70385665,70451201,70713345,70975489,71041025,71237633,71434241,71565313,71827457,71892993,72155137,72220673,72286209,72810497,73400321,73662465,73924609,73990145,74055681,74121217,74252289,74448897,74842113,74907649,75038721,75104257,75235329,75431937,75563009,75759617,76087297,76414977,76611585,77070337,77266945,77463553,77922305,77987841,78184449,78249985,78381057,78577665,78708737,79167489,79298561,79888385,79953921,80216065,80281601,80805889,80871425,81002497,81068033,81264641,81330177],"restricted":[8192001,8323073,10092545,10420225,17891329,20250625,21102593,22609921,52035585,52166657,55377921,58523649,64159745,79429633],"represent":[7995394,9109506,13172737,13238273,13434881,13500417,13697025,13828097,14024705,14286849,14352385,14417921,14745601,14811137,15073281,15335425,15400961,15466497,15597569,15794177,15859713,15925249,16711681,17235969,17301505,17760257,17825793,17891329,18087937,18284545,18546689,19202049,19988481,20119553,20250625,20316161,20381697,20512769,20578305,20774913,21102593,21495809,21692417,22216705,22478849,22544385,22609921,22937601,23199745,23527425,23592961,24117249,24182785,24379393,24903681,25100289,26017793,26476545,27066369,27983873,60162049,64552961,64815105,67305473,74121218,80871425],"return":[6291457,6356993,7208961,7405570,7536641,7602177,7733249,7798785,7929857,7995393,8060929,8192001,8323073,8388611,8454145,8519681,8585217,8781825,8847361,8912897,8978434,9043970,9109505,9175041,9568257,9633793,9699329,9764865,9961474,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616834,10682370,10747905,10813441,10878977,10944513,11075587,11141121,11272193,11337729,11468801,11665409,11730945,11862017,11927553,11993089,12124161,12386305,12517377,12582913,12779521,12845057,12910593,13041665,13107201,13631489,13893633,13959169,14090241,14155778,14221313,14680065,14876675,15007745,15204353,15663105,15728642,15990786,16056322,16121857,16252929,16449537,16580609,16646145,16777217,16842753,16908289,16973827,17039361,17170433,17432577,17498113,17629185,17956865,18022402,18153473,18219010,18415617,18677761,18743297,18808833,18939905,19005441,19136515,19333121,19398657,19464194,19595265,19791873,19857410,19922945,20054017,20185089,20643841,20840449,21037058,21168129,21233665,21299201,21364738,21954561,22020099,22282241,22413313,22675457,22872066,23003137,23068673,23265281,23658497,23789569,23986177,24248321,24313858,24576001,24772609,24838145,24969217,25231361,25362433,25427970,25493505,25559042,25624577,25690113,26083329,26148865,26279937,26345473,26411009,26542082,26673153,26738690,26869761,26935297,27000834,27328513,27459585,27525122,27590657,27656193,27721729,27787265,27852801,27918338,28049410,28114945,28246018,28180481,28377089,28442625,28508162,28573697,28639234,28704770,28770306,28835842,28901377,29032449,29097985,29163522,29229057,29294593,29425665,29491202,29556738,29622273,29753345,29818881,29884417,29949954,30015489,30081026,30146561,30212098,30277633,30343170,30408706,30474242,30539777,30605314,30670849,30736385,30801921,30867458,30932993,30998529,31064065,31129602,31195138,31260674,31326210,31391745,31588354,31719425,31784962,31850498,31916034,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32571394,32636929,32702466,32768001,32833537,32964610,33030146,33095682,33226753,33357826,33488897,33816578,33947650,34078721,34209793,34275329,34340866,34537474,34603010,35389441,35520513,35586050,35651585,35848194,35979265,36044801,36175873,36241409,36372481,36634625,37093377,37289985,37486593,37552129,37748737,37945345,38076417,38207489,38273025,39256065,39387137,39518209,40042497,40108033,40173569,40239105,40435713,40697857,40828929,40894465,41025537,41156609,41287681,41418753,41484289,41549825,42074113,42139651,42205185,42401793,42467329,42598401,42663937,42729473,42926081,43057153,43122689,43515905,43581441,43778049,43843586,44040193,44302337,44433409,44564482,44630019,45023233,45088770,45481985,45613058,45744129,45875201,46333953,46858241,47513601,48037889,48365569,48955393,49217537,49283074,49741825,49807361,50659329,50724865,50987009,51380226,51970049,52428801,52625409,54460417,54591489,54984705,57016321,57737218,57868289,58130434,58523649,59572225,60293122,60686337,61079553,61407234,62193666,63045634,64159745,64421890,64684034,65273858,66912257,68091905,68878338,69140481,69337089,69533698,69926913,70057985,72679425,73662465,74252289,75104258,76087298,77463553,77725697,77856770,77922305,78053377,78512130,78708738,79036417,79429634,79822850,79953922,80281602,80412673,80609282,81002498,81068034,81264642],"resolve":[7405569,9043969,10682369],"recursion":[71827457,73400321],"requested":[7405570,9043970,10682370,14155778,14483458,16515073,21037058,21364737,21626882,26607617,26738689,36175873,38207489,40894466,42074114,43057153,43581442,44433410,45023233,45744130,47513602,48037890,49741825,49807362,51970049,52625409,54984705,61603841,76873729],"runtimes":[36044801,37748737,38076417,42401793,45744129,46858241,47513601,49545217,51970049,54984705,76546049],"reside":[79233025],"removeproperty":[3538946,4521986,10289157,11993093,47579138,75956226,77987842],"random":[10878981],"reclaim":[51511297],"readable":[4456449,4784129,4980737,24248323,73269249,74973185,75694081],"requirement":[58523649,64159745,76873729],"reassignment":[76611585,77070337],"rootnode":[53805057,65142788,80019457],"restriction":[2490372,3735554,5373954,8192002,8323074,8716290,9306114,9502722,9830402,10092546,10420226,11010050,11206658,11403266,17891329,20250625,21102593,22609921,52035586,52166660,55377922,56360963,57737218,58130434,58523650,60293122,61407234,62193666,62849027,63045634,64159746,64684034,65273858,69533698,75104260,76087300,76677124,77856772,78512132,79953924,80281604,81002500,81068036,81264644],"reason":[56819713,74186754,80347137],"removeelement":[3538945,4521985,13041668,75956225,77987841],"rely":[56688641,66650113],"resetting":[2097153,2752513,2818049,3276801,3473409,3735553,3997697,4063233,4259841,4390913,5373953,5570561,5963777,7077889,8716289,9306113,9502721,9830401,11010049,11206657,11403265,24510465,25296897,46465025,51904513,56164353,56623105,70320129,73138177,74645505,75104257,75366401,75497473,76087297,76283905,77135873,77856769,78184449,78512129,79495169,79953921,80084993,80281601,80936961,81002497,81068033,81199105,81264641],"rejection":[77791233],"replace":[6291464,7208968],"read":[1966083,2883587,3080195,4390914,5767172,6422530,7143425,13959171,16449537,16646145,16711681,16777222,16842753,18153473,18677761,18743302,19660802,20840449,20971521,21889025,22282241,22347777,23199745,23986177,28704769,30081025,33882113,41222145,46792705,47906817,49872897,50266115,51118081,53215233,54001665,58261505,58392577,58589185,64618500,65798145,69337089,71368707,74121219,75431940,75628547,76021761,76414977,76480513,78184450,80674817],"returns":[851969,1638402,1703937,1769476,1835009,1900545,1966081,2031620,2162689,2228225,2293761,2555905,2621441,2686977,2818052,2883585,2949124,3014658,3080193,3145732,3211265,3276804,3342338,3407874,3473412,3538948,3604481,3866625,3932161,3997700,4128769,4194305,4325377,4390916,4521987,4653060,4587521,4718594,4849665,4915202,5046276,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963778,5898242,5767169,6094849,6160386,6553603,6946817,7077891,7340034,7864321,8388611,8716289,9306113,9502721,9830401,9895938,10944515,11010051,11075587,11206657,11403265,11665409,14876673,15663105,15990785,16318465,16973825,18219009,18808833,18874369,19070977,19136513,19922945,20054017,20905985,21299201,22020097,23658497,24576002,26083329,26542081,35979265,37486593,40632321,40697858,41484290,41549825,42139649,42729473,42860545,44630017,45547521,46202884,46333953,48758786,48955394,49938436,50724865,52428801,52887554,53477378,57868290,58982401,60096513,61734913,61931521,62586881,64880642,65536001,65601537,65798145,66256897,68419585,68943873,69140482,69271553,69599233,70909953,71172097,71368705,71761921,71827457,72417281,72548354,72613889,73138180,73400321,73531393,73990148,74121217,74514433,74645508,74711041,74842116,75038724,75104257,75169793,75366403,75431937,75497476,75628545,75759620,75956227,76087299,76152833,76349442,76414977,76480513,76546049,76742657,77135876,77266945,77332481,77398017,77529090,77856769,77987844,78184452,78249985,78577665,78708739,78839810,78970882,79101954,79167492,79364098,79626241,79691777,79888385,79953921,80019458,80084994,80216068,80281601,80347137,80478209,80543746,80674817,80740354,80805891,80871425,81002497,81068033,81264641,81330177],"retrievable":[75235329,75563009],"replaces":[62062593,67567617],"restrict":[17891329,20250625,21102593,22609921],"replacement":[67895297],"reflection":[6356993,56688644,57278467,57737218,58130434,58916865,60293122,61407234,62193666,63045634,63963139,64290817,64684034,65273858,66650116,69533698,75104258,76087298,77856770,78512130,79953922,80281602,81002498,81068034,81264642],"retain":[10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,14221313,15204353],"returning":[3538945,4521985,8912897,75956225,77987841],"runtimeheapsizeviolationpolicy":[60293121,71041025,74383364,76087297],"recurring":[77266945,78577665],"references":[51511297,60162049,64552961],"reference":[1,393217,131073,524289,589825,262145,655361,720897,327681,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2818049,2490369,2293761,2359297,2752513,2424833,2686977,2555905,2883585,2621441,2949121,3014657,3080193,3145729,3211265,3276801,3407873,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4653057,4587521,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5832705,5963777,5898241,5767169,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405570,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8519681,8454145,8585218,8650753,8781825,8716289,8847361,8912897,8978433,9043970,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10616833,10682370,10747905,10813441,10551297,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13107201,13041665,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959172,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18284545,18219010,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25362433,25427969,25493505,25559041,25624577,25690113,25296897,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542082,26607617,26673153,26738689,26804225,26869761,26935297,27000833,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28246017,28180481,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33947649,33882113,34013185,34144257,34209793,34078721,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35454977,35520513,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36306945,36438017,36372481,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38404097,38469633,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40501249,40435713,40566785,40632321,40697857,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,41943041,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43909121,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,44957697,45023233,45088769,45154305,45219841,45285377,45350913,45416449,45481985,45613057,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268417,46333953,46399489,46465025,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47644673,47710209,47775745,47841281,47906817,47972353,48037889,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55312385,55377921,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56754177,56688641,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737218,57802753,57868289,57933825,57999361,58064897,58130434,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293122,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407234,61472769,61538305,61669377,61800449,61734913,61865985,61931521,61997057,62062595,62128130,62193666,62259201,62324737,62390273,62455809,62521345,62586881,62652417,62717953,62783489,62849025,62914561,62980097,63045634,63111169,63176705,63242241,63307777,63373313,63438849,63504385,63569921,63635457,63700993,63766529,63832065,63897601,63963137,64028673,64094209,64159745,64225281,64290817,64356353,64421889,64487425,64552961,64618497,64684034,64749569,64815105,64880641,64946177,65011713,65077249,65142785,65208321,65273858,65339393,65404929,65470465,65536001,65601537,65732609,65667073,65798145,65863681,65929217,65994753,66060289,66125825,66191361,66256897,66322433,66387969,66453505,66519041,66584577,66650113,66715649,66781185,66846721,66912257,66977793,67043329,67108865,67174401,67239937,67305473,67371009,67436545,67502081,67567619,67633153,67698689,67764225,67829761,67895297,67960833,68026369,68091905,68157441,68222977,68288513,68354049,68419585,68485121,68550657,68616193,68681729,68747265,68812801,68878337,68943873,69009409,69074945,69140481,69206017,69271553,69337089,69402625,69468161,69533698,69599233,69664769,69730305,69795841,69861377,69926913,69992449,70057985,70123521,70189057,70254593,70320129,70385665,70451201,70516737,70582273,70647809,70713345,70778881,70844417,70909953,70975489,71041025,71106561,71237634,71172097,71303169,71368705,71434241,71499777,71565313,71630849,71696385,71761921,71827457,71892993,71958529,72024065,72089601,72155137,72220673,72286209,72351745,72417281,72482817,72548353,72613889,72679425,72744961,72810497,72876033,72941569,73007105,73072641,73138177,73203713,73269249,73334785,73400321,73465857,73596929,73531393,73662465,73728001,73793537,73859073,73924609,73990145,74055681,74121217,74186753,74252289,74317825,74383361,74448897,74514433,74579969,74645505,74711041,74776577,74842113,74907649,74973185,75038722,75104258,75169793,75235329,75300865,75366401,75431937,75497473,75563009,75628545,75694081,75759617,75825153,75890689,75956225,76021761,76087298,76152833,76218369,76283905,76349441,76414977,76480513,76546049,76611585,76677121,76742657,76808193,76873729,76939265,77004801,77070337,77135873,77201409,77266945,77332481,77398017,77463553,77529089,77594625,77660161,77725697,77791233,77856770,77922305,77987841,78053377,78118913,78184449,78249985,78315521,78381057,78446593,78512130,78577665,78643201,78708737,78774273,78839809,78905345,78970881,79036418,79101953,79167489,79233025,79298561,79364097,79429633,79495169,79560705,79626241,79691777,79757313,79822849,79888385,79953922,80019457,80084993,80150529,80216065,80281602,80347137,80412673,80478209,80543745,80609281,80674817,80740353,80805889,80871425,80936961,81002498,81068034,81133569,81199105,81264642,81330179],"retrieves":[11862017,19005441,45547521,77725697],"retrieved":[56360961,57737217,58130433,60293121,61407233,62193665,62849025,63045633,64684033,65273857,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"responsible":[68419585],"remove":[655361,983041,1114113,1966081,2883585,3080193,3211266,10289155,11993091,13041667,17629185,19333121,19791880,20840450,21954561,22675457,47579137,71368705,74121217,75628545,76414978],"remote":[76939265,77004801],"receive":[62259201,65077249,72286209,73990145,74842113,76021761],"restrictions":[57737217,58130433,60293121,60817410,61407233,62193665,63045633,64684033,65273857,66387970,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"reaches":[76939265],"remain":[73924609,74448897,75235329,75563009],"removed":[10289153,11993089,13041665,17629185,19333121,19791873,20840449,21954561,22675457,76939265,77004801],"retrieve":[61734913,61931521],"removes":[1966083,2097154,2752514,2818050,2883587,3080195,3211267,3276802,3473410,3538947,3997698,4390914,4521987,5570562,5963778,10289153,11993089,13041665,15269889,17629185,18219009,19333121,19791873,20840449,21889025,21954561,22675457,26542081,26804225,45940738,47579138,56098818,71368707,73138178,74121219,74645506,75497474,75628547,75956227,76283906,76414979,77135874,77987843,78184450,79495170,80084994,81199106],"randomt":[10878978],"resources":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3276801,3342337,3407873,3473409,3538945,3604481,3735553,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4521985,4587522,4653057,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373956,5439489,5570561,5636097,5701633,5963778,5767169,6094849,6160385,6553601,6946817,7077890,7340033,7864321,8716292,9306116,9502724,9830404,9895937,11010052,11206660,11403268,21430276,21757953,24510465,25296897,41353220,45547521,46465025,46989316,51511297,51707905,51904515,56033284,56164355,56623107,57147394,57737219,58130435,58523649,60293123,61407235,61734913,61931521,62193667,62390273,62717956,63045635,63635457,64159745,64684035,65273859,66519041,67502082,68943873,69206018,69533699,70320129,70713345,70909953,71172098,71368705,71761921,72417281,72548353,72613889,73138177,73531393,73990145,74121217,74514433,74645505,74711041,74776577,74842113,74907649,75038721,75104263,75169793,75366402,75431937,75497473,75628545,75759617,75956225,76087303,76152833,76283905,76349441,76480513,76546049,76611585,76742657,77135873,77266945,77332481,77398017,77529089,77856775,77987841,78184449,78249985,78381058,78446593,78512132,78577665,78708737,78839809,78970881,79167489,79364097,79495169,79626241,79691777,79888385,79953927,80019457,80084994,80216065,80281607,80347137,80478209,80543745,80674817,80740353,80805889,80871425,80936961,81002503,81068039,81199105,81264647,81330177]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_115.json b/docs/Reference/fti/FTI_115.json index a45d915c..5c62dedc 100644 --- a/docs/Reference/fti/FTI_115.json +++ b/docs/Reference/fti/FTI_115.json @@ -1 +1 @@ -{"smart":[61669377],"stale":[60686338],"standards":[61669377],"scenarios":[42795009,48889857,50200577,53936129],"system":[2031620,6815747,7143427,7405571,7864323,8060931,8126469,8257537,8650753,8847364,8912897,9043969,9306115,9437188,9568259,9699330,9830405,10289154,10354689,10420226,10485762,10616838,10682370,10878977,11075586,11141121,11206658,11337730,11665410,12058626,12189698,12255234,12582914,12910595,13565953,13631492,23789572,30670853,51576834,52428801,53084161,53477378,53673985,53870597,54067201,54722562,55115777,55246849,55312386,55705602,55836673,55902210,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654724,58720257,58785793,58851330,58982401,59047937,59113474,59244545,59310081,59506690,59572225,59703297,59768833,59899905,60030977,60096513,60227586,60358658,60489729,60555265,60817409,60882945,61079553,61145089,61276161,61407233,61472769,61538305,61603841],"speed":[14352385,22937601,23986177,27918337,42467329],"scriptexception":[42729476,45744129,46006278,46202881,48365569,49545222,58458113,58654721,58982401],"sbyte":[3407873,5046273,10289159,58785793,59768833,60751873],"state":[327681,30539777,52035585,56098817,58654721],"scriptengine":[2293763,2949124,4587522,6291503,6357039,6553647,7209011,7536687,7995397,8585221,8716339,8978479,9895941,13434885,16252933,16842753,17235969,17760257,17825797,18087937,18612225,18743297,18874369,18939905,19070977,19136513,19333125,19398657,19464193,19529729,19660801,19791873,19922945,19988481,20119553,20250625,20316161,20447233,20512773,20643841,20709377,20774913,20971521,21037057,21102593,21233665,21364737,21430273,21495809,21757953,21823489,21889025,22085633,22151177,22216705,22413313,22478849,22609921,22740997,22806529,23068673,23199745,23265281,23396353,23789569,23920641,23986177,24248321,24576001,24641537,25100289,31784961,32374785,32505858,33030145,33423361,33488897,33882113,34209793,34471939,34603009,35258369,35717121,36110337,38010881,38862852,39059479,40632343,40960006,42074137,42205207,42795009,43450369,43909143,44171265,44630017,44957719,45088770,45219841,45875201,46268441,46333953,46465025,47054849,47185921,47579137,48234497,48758785,49283073,49741825,50659329,50790401,51183617,51314689,51838977,51904513,52494343,52953089,53411841,54001665,54525953,55050246,58195976,58392647,59047939,60096583,60817489,60883025,61079556,61407303,61538375,61603911],"shared":[720897,917505,1114113,1376257,1441793,1507329,7471105,7929857,7995393,8585217,9240577,9895937,16252929,17104897,17825793,18153473,18546689,19005441,19333121,19726337,20054017,20512769,21299201,31326209,42860545,44498945,45547521,46071809,46792705,47382529,47448065,48037889,52494337,53018625,54853633,55443457,61210626],"scheme":[10616833],"serializeobjectstate":[327681,58654721],"similar":[8257537,8912897,10878977,13565953,15859713,19529729,26476545,27197441,30867457,31588353,32112641,32964609,42336257,45875201,59637761],"starttimestamp":[37093377,50855940,53673985],"summarizes":[13631489,23789569],"statement":[12910593,13238273,13762561,14680065,15204353,15466497,15859713,16187393,16908289,18939905,19529729,20250625,21102593,21823489,22216705,23068673,23920641,27197441,30867457,31588354,32112641,32964610],"setproperty":[2621442,2686978,2818050,3145730,3211266,3407874,3670018,4128770,4521986,5046274,5177346,9633797,11534341,17170437,17891333,24182790,24903686,35782658,36962306,37289986,58785794,58916866,59375618,59768834,59834370,60162050,60227586,60293122,60424194,60751874,61014018],"simpler":[47382529],"segment":[59572225],"synchronous":[33685505,34734081,37224449,38207489,39124994,40173570,45613057,58392578,60096514,60882945],"searched":[7077889],"suitable":[25362433,26411009,27066369,27983873,28049409,28377089,28573697,29294593,30343169,31981569,34013185,37879809,60686337],"successfully":[6029313,6488065,7274497,12910593,14811137,15335425,17694721,23527425,24117249,24838145,25165825,25624577,25755649,30081025,38731777],"syncinvoker":[31522821,32309253,33161221,33685509,34144261,34734085,35454981,36306949,37224453,38207493,39059457,40632321,42205185,43909121,44957697,45613061,46268417,50069508,58392577,60096513,60882945,61407233,61538305,61603841],"statements":[13172737,13238273,13631489,13762561,13893633,14548993,14680065,14745601,15073281,15204353,15466497,15532033,16187393,16908289,18939905,19464193,20250625,20447233,21102593,21233665,21823489,22085633,22216705,22806529,23068673,23789569,23920641,24641537,31588353,32964609],"shallow":[1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849665,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"strictly":[43057153,46465025,61472769],"schedule":[50593793,61145089],"server":[3735560,4587528,6291464,6357000,6553608,7208968,7536648,8323073,8650753,8716296,8978440,11927554,12320770,12845058,13369346,14090242,14876674,15925250,16842754,17563650,18087938,18612226,18743298,19988482,20643842,21495810,22413314,31064068,32047108,33423364,34209796,58195976,58327048,58392585,60096521,60817416,60882953,61407240,61538312,61603848],"sourceinfo":[6029318,6488070,7274501],"search":[1310721,5505025,6422529,6946818,41222145,41943041,43843586,45416449,46071810,53870593,60030977],"source":[1900545,2097154,2162689,2228226,6750210,7012354,7733249,17301510,17498118,18219014,19857409,21692417,38010884,39321601,40304641,45744129,51576833,52232194,55377921,56229890,57212930,57671683,57933827,58654721,61669377],"specifies":[8323073,8454145,8650753,38010887,39321601,39583745,43384833,45023233,50266113,50593793,50855937,52756481,53477377,54198274,54722561,55312385,56950787,57147396,58064897,58589185,59113473,59179012,59441154,59506689,59572229,59637763,59965445,60358657,60620801,61145105,61669386],"specifier":[6029318,6488070,7274501,13172741,13238277,13762565,13893637,14680069,14745605,20250630,20447238,21102598,21233670,21823494,22085638,24051717,24444933,24772613,25493509,25559045,26017797,26083333,26411013,26542085,26935301,27066373,27394053,27525125,27721733,28311557,28377093,28573701,29032453,29294597,29556741,29753349,30736389,31981573,33095685],"setpropertynocheck":[1769473,3276801,4259841,5373953,16318465,18808836,54067201,56426497,57999361],"specified":[1572866,1638401,1703937,1769474,1835009,1900545,1966081,2031620,2097154,2293767,2359297,2490370,2555906,2621442,2686978,2752515,2818050,2162689,2228226,2883586,2949124,3014659,3211266,3276802,3342338,3407902,3473409,3538946,3604481,3670020,3735601,3801089,3866625,3932161,3997697,4063233,4259846,4325377,4390913,4456449,4521986,4587570,4653057,4849666,4980755,5046306,5111809,5242881,5439489,5570561,5767169,5832705,6291506,6357042,6553650,6750209,6815746,6881281,6946817,7012353,7143425,7209022,7405570,7536690,7602177,7798785,7864321,7929858,7995393,8126465,8257538,8388609,8454145,8519681,8585219,8650754,8716338,8847363,8912899,8978482,9043970,9175041,9240578,9306116,9568257,9633794,9699329,9764865,9830401,9895939,9961473,10092547,10223617,10289153,10354690,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878979,11075585,11141123,11206657,11272193,11337729,11468801,11534338,11665409,11730945,11927555,12058625,12124161,12189697,12255235,12320770,12386305,12517377,12582913,12648449,12713985,12845058,12910593,13041665,13107202,13172737,13238273,13303809,13369346,13500418,13565955,13697025,13631491,13762562,13828097,13893634,13959169,14024705,14090243,14155778,14286850,14548995,14614529,14680066,14745602,14876675,14942210,15007745,15073282,15204354,15269889,15466498,15532034,15597570,15663105,15728641,15794177,15859713,15925251,16056321,16252929,16187395,16384001,16580609,16711681,16777217,16842754,16908291,17039362,17235970,17301505,17432577,17498113,17563650,17760258,17825793,18087939,18219009,18350081,18612226,18743299,18939906,19070978,19136513,19202049,19333121,19398657,19464194,19529729,19660802,19922945,19988483,20250625,20381697,20447233,20512769,20643843,20774913,20905985,21037057,21102594,21233666,21364737,21495810,21561345,21626881,21823490,21889025,22020097,22085634,22216706,22347777,22413314,22478849,22609921,22675457,22740993,22806530,22872065,23068675,23199746,23265281,23396353,23461889,23789571,23855105,23920643,24248322,24444929,24510465,24641539,24772609,25034753,25100289,25231361,25296897,25493505,25624577,25690113,25755649,25821185,25886721,26083329,26214401,26411009,26607617,26673153,26738689,26804225,27197441,27394049,27459585,27525121,27590657,27656193,27721729,27852801,28114945,28180481,28311553,28377089,28442625,28508161,28573697,28639233,28835841,28901377,29097985,29163521,29360129,29425665,29556737,29622273,29687809,29753345,29884417,30015489,30343169,30408705,30670851,30736385,30867457,30998529,31064080,31129601,31457282,31588354,31784961,31850497,31981569,32047120,32112641,32178177,32309249,32374785,32440321,32505862,32571394,32833537,32899073,32964610,33030146,33095681,33161217,33292296,33423376,33488897,33554433,33619970,33685505,33751042,33816587,33882114,34078721,34209808,34275329,34340865,34406401,34471937,34603009,34668546,34734081,34799618,34865156,35061761,35127297,35192835,35258376,35454977,35586050,35651591,35717122,36044801,36175876,36306945,36372488,36503553,36765698,37158914,37224449,37355521,37486593,37552129,37683202,37748737,38076417,38207489,38338571,38469633,38666244,38862852,39124996,39190529,39714824,40173572,40370181,41025537,41287684,41418753,41549825,41680897,41811972,41877506,42401793,42729473,43646977,45613057,45744130,46006273,46202882,46727169,46858241,47251457,48365571,49545217,50135041,50200577,50724865,51511297,51576835,51707905,52101121,52625409,53084161,53477378,53673985,53870596,53936129,54067208,54460417,54722562,55115777,55312386,55705603,55771137,55836673,55902209,56229889,56360961,56426498,56492033,56754177,57212929,57540612,57671682,57933826,57999362,58130434,58196019,58261534,58327089,58392630,58458115,58523649,58589185,58654725,58720257,58785826,58851329,58982404,59047943,59113475,59179009,59244545,59310081,59375618,59506697,59703297,59768862,59834370,59899905,60096566,60162050,60227586,60358659,60424194,60489729,60555265,60686337,60751876,60817481,60882995,61079556,61145094,61407286,61472769,61538358,61603891,61669379],"samples":[37093377,38404098,42074114,49217542,50987009,51249153,52887553,53673985,55574529,58261506,60817410],"securely":[41549825,47251457],"stringdictt":[9437186,12255234],"scriptengineexception":[327682,5111810,16384006,18415617,18677761,19267590,19857414,20381702,32571401,38010881,43712513,44236801,44892161,45481985,45744130,46006273,46727169,58654734],"simply":[49610753,50790401],"simultaneously":[24838145,25624577,25755649,30081025],"selector":[8126466,9306114],"scriptmemberflags":[22347781,22872069,24510469,25034757,35651588,38010881,50462727,59506692,59637764],"scriptinterruptedexception":[3080194,20840454,21692422,22020102,22675462,23658497,24379393,34799625,38010881,46202882,47513601,48103425,48627713,49020929,49545217,50135041,52035585,56098817,58982414],"standard":[8323073,8650753,11927553,12320769,12845057,14024705,14942209,15597569,15925249,16842753,18350081,18612225,19070977,19660801,19988481,20643841,22478849,23265281,34734081,35127297,36044801,38207489,39190529,41484290,41549825,45613057,47251457,48037894,52428802],"synchronously":[61407233,61538305,61603841],"script":[327681,524289,1179650,1900545,2097153,2293769,2424833,2555905,2621449,2686985,2818057,2162689,2228225,2883585,2949135,3080193,3145738,3211273,3342337,3407877,3538945,3670025,3735595,4063233,4128777,4521994,4587566,4784132,4849665,4980758,5046276,5111809,5177354,5242881,5570564,5636097,6291503,6357039,6553647,6750210,6881284,7012354,7209026,7471106,7536687,7733249,7864321,7929859,7995397,8126465,8388613,8454145,8519681,8585222,8716336,8978480,9109505,9240579,9306117,9371649,9437185,9502721,9568261,9633793,9699330,9830406,9895942,9961473,10027009,10092546,10158081,10289154,10354689,10420226,10485762,10551297,10682370,10747905,10878977,10944513,11075586,11141122,11206658,11337730,11534337,11665410,11927555,12058626,12189698,12320771,12582914,12648451,12713988,12845059,12910597,13041668,13107203,13172740,13238275,13303813,13369347,13434885,13500420,13565953,13631505,13697028,13762562,13828105,13893635,13959173,14024707,14090243,14155779,14286852,14417923,14483460,14548999,14614529,14680066,14745603,14811137,14876675,14942211,15007748,15073286,15138820,15204357,15269892,15335425,15400961,15466501,15532038,15597571,15663105,15859715,15925251,15990785,16187401,16252933,16384001,16515073,16646145,16777219,16842756,16908294,17104898,17170433,17235972,17367045,17563651,17760260,17825797,17891329,17956866,18087940,18153475,18284545,18350083,18415617,18546690,18612228,18677761,18743300,18808833,18874370,18939910,19005443,19070980,19136517,19267585,19333125,19398666,19464199,19529732,19660804,19726338,19791874,19857409,19922949,19988484,20054017,20119556,20250628,20316166,20381697,20447237,20512773,20578305,20643844,20709381,20774916,20840449,20905986,20971523,21037061,21102595,21168129,21233668,21299202,21364740,21430277,21495812,21561349,21626882,21692417,21757953,21823491,21889029,22020097,22085636,22151170,22216710,22282242,22347784,22413316,22478852,22609926,22675457,22740994,22806535,22872069,23003138,23068682,23199749,23265284,23330817,23396358,23461893,23527426,23592962,23658497,23789586,23855108,23920647,23986177,24051715,24117250,24182786,24248325,24379393,24444930,24510471,24576001,24641544,24707073,24772610,24903682,24969223,25034756,25100293,25296898,25362441,25427969,25493508,25559043,25755649,25821189,25886724,25952260,26017795,26083332,26279938,26411014,26476551,26542085,26607623,26673154,26804232,26869761,26935301,27066375,27131908,27197443,27394050,27525122,27590658,27656200,27721730,27983880,28049416,28114946,28180484,28246021,28311556,28377094,28442628,28573702,28704772,28770306,28835842,28901384,28966917,29032451,29097986,29294599,29360130,29491206,29556738,29622280,29753346,29818882,29884418,29949958,30015490,30081025,30146565,30277633,30343177,30408706,30474242,30539781,30736388,30867459,30998533,31064072,31129602,31195137,31260674,31391749,31588355,31784963,31850498,31916033,31981574,32047112,32112643,32178182,32309249,32374789,32440322,32505862,32571393,32636930,32768003,32833537,32899074,32964611,33030146,33095682,33226754,33292296,33423369,33488901,33619970,33685505,33882114,33947650,34013191,34078724,34209801,34275329,34471939,34603011,34668545,34734081,34799617,34930692,35061764,35127297,35192844,35258377,35454977,35520514,35586049,35651593,35717123,35848197,35913730,35979267,36044803,36110338,36241410,36372484,36438019,36503553,36569092,36700162,36831233,36896771,36962306,37027845,37224449,37289987,37355525,37552130,37617670,37748741,37814277,37879816,38010907,38207489,38273025,38338572,38404098,38469633,38535170,38600706,38666252,38797317,38862861,38928386,39059478,39190529,39321605,39452680,39518214,39649282,39714820,39780353,39845889,39976966,40042498,40239109,40370183,40435714,40566788,40632342,40763394,40828929,40960001,41156613,41353221,41418754,41549825,41680897,41746435,42008578,42074133,42205207,42401793,42467329,42598402,42729474,42795010,42991617,43122690,43450370,43515905,43581441,43646978,43712514,43778055,43909141,43974658,44105730,44171267,44236801,44367875,44433412,44630018,44695554,44892162,44957717,45023234,45088789,45154308,45219846,45481985,45547525,45613059,45678597,45744133,45875201,45940737,46006275,46202885,46268439,46333954,46399489,46465025,46530562,46596097,46727171,46923780,47054853,47120390,47185922,47251457,47316994,47513602,47579139,47644678,47710211,47775763,47841281,47906817,47972354,48103425,48168964,48234500,48365572,48496641,48627714,48758789,48824325,48889857,48955393,49020929,49283074,49348612,49414145,49545219,49610756,49676299,49741826,49938440,50069506,50135043,50200577,50397185,50462722,50528259,50593796,50659333,50724865,50790405,51052545,51183626,51314693,51511298,51642372,51838980,51904518,52035587,52297739,52494340,52559874,52822017,52953091,53280769,53411843,53477380,53608449,53739521,53805058,53936129,54001666,54067201,54132737,54329346,54460417,54525953,54591491,54722564,54788098,54919169,55050242,55115782,55377923,55312385,55508993,55771138,55902210,55967746,56033281,56098819,56229890,56295426,56360962,56492034,56623106,56819717,56885250,56950790,57016325,57081857,57212930,57344002,57409538,57540612,57606146,57671681,57737218,57802754,57868290,57933825,58064899,58196037,58261528,58327103,58392644,58458117,58654727,58720261,58785798,58916879,58982406,59047946,59113476,59179010,59375630,59441155,59506701,59637762,59703300,59768840,59834382,59899905,59965445,60096580,60162062,60227600,60293135,60358660,60424206,60555265,60620803,60686340,60751886,60817510,60883016,60948482,61014032,61079567,61145099,61210625,61341697,61407304,61472769,61538376,61603915,61669383],"scriptobject":[4521986,13631489,21626881,22282241,23003137,23527425,23592961,23789569,24117249,24182785,24707073,24903681,25296897,35979265,36438017,36896769,37289985,38010881,47644674,48168967,48758791,49348616,55050241,55771137,56360961,56819720,56885249,57409537,60227590],"sole":[393217,655361,786433,851969,1114113,1376257,1441793,1507329,56492033,58720257,60555265,61472769],"scriptfunc":[6750213,7012357,8388614,9306117,9568261,9830405],"strongly":[3407885,5046285,8388609,9306113,9568257,9699330,10289154,10420226,10485762,10616835,10682370,11075586,11206658,11337730,11665410,12058626,12189698,12255233,12582914,58785805,59768845],"setelement":[3407873,5046273,10747908,58785793,59768833],"safety":[46333953,51052545],"specific":[2752514,8126465,8454145,9437186,12713985,13041665,13500417,13697025,13631490,14286849,14483457,15007745,15138817,15269889,19136513,19922945,20709377,21037057,21430273,21889025,23199745,23789570,24248321,25100289,38535169,42795009,45744129,46333953,48889857,51052545,55377921,57540610,58654721,60751873,61669377],"safely":[17956865,20971521,26279937,26869761,28770305,44367873],"sync":[851969,1507329,6881281,30474241,31260673,31916033,35520513,39649281,50069505,58720257],"setting":[3014657,4521985,5570562,21561346,22347778,23855106,24510466,25886722,35651588,37552129,38928385,39059457,40042497,40632321,41418753,42008577,42074113,42205185,42598401,42795009,43909121,43974657,44171265,44433409,44957697,45088769,46268417,46923777,47316993,47775745,47972353,48889857,50659329,52035585,52822017,53280769,53411841,53477377,54722561,55705601,56098817,56950788,57606145,58195969,58327041,58392577,59113474,59506693,60096513,60227585,60358658,60817409,60882945,61407233,61538305,61603841],"selecting":[11272193,11468801,12451841,12779521],"selects":[11927553,13107201,13303809,13500417,13828097,14090241,14155777,14286849,14876673,14942209,15007745,15269889,15597569,15925249,17235969,17760257,18087937,18743297,19070977,19398657,19660801,19988481,20643841,21037057,22609921,23199745,24248321,25100289,25165825,25231361,25690113,26214401,26673153,26804225,27590657,27656193,28114945,28508161,28639233,28835841,28901377,29097985,29163521,29360129,29425665,29622273,29687809,29884417,30015489,32309249,32833537,33685505,34275329,34734081,35127297,35454977,36044801,36503553,37224449,38207489,38469633,38731777,39190529,45613057,60620802],"start":[37617666,50855937,54919169,55115778,57081857],"sub":[4915201,5308417,5373953,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6160385,6619137,6684673,6815745,7340033,7405569,7667713,7733249,7864321,8192001,8781825,8847361,10813441,11010049,11272193,11403265,11468801,11796481,11862017,11927553,11993089,12124161,12320769,12386305,12451841,12517377,12648449,12713985,12779521,12845057,12976129,13041665,13107201,13238273,13303809,13369345,13434881,13500417,13697025,13762561,13828097,13959169,14024705,14090241,14155777,14286849,14352385,14417921,14483457,14680065,14876673,14942209,15007745,15138817,15204353,15269889,15466497,15597569,15728641,15925249,16121857,16187393,16318465,16384001,16515073,16777217,16842753,16908289,16973825,17170433,17235969,17563649,17629185,17760257,17891329,17956865,18087937,18350081,18415617,18612225,18743297,18808833,18874369,18939905,19070977,19136513,19202049,19267585,19398657,19660801,19791873,19857409,19922945,19988481,20119553,20185089,20250625,20381697,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21364737,21430273,21495809,21561345,21692417,21823489,21889025,21954561,22020097,22151169,22216705,22347777,22413313,22478849,22609921,22675457,22740993,22872065,22937601,23068673,23199745,23265281,23330817,23396353,23658497,23724033,23855105,23920641,23986177,24182785,24248321,24313857,24510465,24576001,24707073,24903681,25034753,25100289,25231361,25427969,25690113,25886721,26148865,26214401,26279937,26476545,26673153,26738689,26869761,27000833,27262977,27328513,27459585,27590657,27852801,27918337,28114945,28508161,28639233,28770305,28835841,29097985,29163521,29229057,29360129,29425665,29687809,29818881,29884417,30015489,30212097,30277633,30408705,30474241,30539777,30605313,31129601,31522817,31850497,31916033,32243713,32309249,32702465,32833537,33161217,33226753,33554433,33685505,34144257,34275329,34734081,35127297,35454977,36044801,36306945,36503553,37224449,37486593,38207489,38273025,38469633,39190529,42467329,43122689,44367873,44695553,45613057,52166657],"sum":[9830403],"second":[9306113,9568257],"stripped":[11730945],"stripping":[47710209,48234497,52559873],"scripts":[39780353,45547521,46333953,50200577,50724865,51052545,51511297,53936129,54460417,59899905,61145089],"scriptid":[37617665,55115777,57737220],"sampl":[38141954,49807361,50266113,56754178],"sealedattribute":[51576833,52428801,53477377,54722561,55115777,55246849,55312385,55902209,56754177,57212929,57933825,58261505,58589185,58851329,59047937,59506689,60030977,60817409,61079553,61276161],"special":[50528257,51838977,60555265,61472769],"send":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6094849,6029313,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,8060929,7995393,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13697025,13631489,13762561,13893633,13828097,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19726337,19660801,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20381697,20316161,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26148865,26083329,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35520513,35454977,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36372481,36306945,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38469633,38404097,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40697857,40632321,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43909121,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,44957697,45023233,45088769,45154305,45219841,45285377,45350913,45416449,45481985,45547521,45613057,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268417,46333953,46399489,46465025,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47644673,47710209,47775745,47841281,47906817,47972353,48037889,48103425,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55377921,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669377],"suppressextensionmethodenumeration":[42074113,52822020,60817409],"schema":[23134209,23724033],"semicolon":[22740993,34734081,35127297,36044801,38207489,39190529,41222146,42270721,43843585,45416449,45613057,46071809,53870594,60030977],"sensitive":[31588353,32964609,61145089],"store":[6094849,6225921,16056321,16711681,17301505,17432577,17498113,18219009],"sourcemapuri":[40304641,51576833,52232196],"space":[51511297,53149697,53542913,54263809],"sort":[1310721],"stringify":[61145089],"soft":[38404097,42074113,50200577,53936129,58261505,60817409],"selectively":[41549825,47251457],"suppressinstancemethodenumeration":[42074113,52822017,53280772,60817409],"scripting":[8323074,8650754,38010881,43057153,46465025,55377921,55705601],"scriptmemberattribute":[3538946,20905990,21561350,22347782,22872070,23330822,23855110,24510470,25034758,35651601,38010881,46923778,50462721,53477377,54591489,59113473,59506710,60358657],"structures":[38010881,39321601,61145089],"serialization":[18415617,19857409,21692417,23658497],"snapshot":[4980737,7208961,27000836,29229060,58261505,60817409],"short":[60751873],"stores":[1835009,1966081,6094849,6225921,53084161,58523649],"streaming":[19857409,21692417],"serialized":[327682,19857410,21692418,32571393,34799617,58654723,58982401],"stack":[1179649,3735553,4587521,6291457,6356993,6553601,7208961,7536641,8716289,8978433,17367044,20316164,28246020,38404097,42074113,43778052,45744129,50724869,54460421,56033281,58195969,58261505,58327041,58392577,58654721,60096513,60817410,60882945,61407233,61538305,61603841],"suppresses":[59965441,61145089],"structs":[13631489,23789569,53477377,55312385,59113473],"suppressfinalize":[19791873],"stringcontents":[36634625,52363268,60489729],"starting":[2752513,37093377,50855937,53673985,57540609],"sorry":[983041,41943041],"stacktrace":[45744129,58654721],"sets":[1769473,2621442,2686978,2818050,3145730,3211266,3276801,3407875,3670018,4128770,4259841,4521986,5046275,5177346,9633793,10747905,11534337,17170433,17891329,18808833,24182785,24903681,34537473,35389441,35782658,36700162,36896770,36962306,37027842,37289986,37814274,38404102,38797314,38993926,39059464,39518210,39583745,39780353,40108033,40239106,40304644,40632328,40697857,40828929,41156610,41222149,41549825,41680897,42074124,42205192,42270721,42401793,42532865,43188225,43319297,43384833,43843585,43909128,44630017,44957704,45023233,45088775,45416450,45678593,45744131,45809665,46071809,46268424,46530561,46661633,46792705,46858241,46923778,47054849,47120386,47251457,47316993,47644674,47775751,48824322,49152001,49610753,50200577,50462721,50528257,50724865,50790401,50987009,51118081,51249153,51380225,51511297,51576836,51642369,51773441,51838977,51904513,52101121,52232193,52690945,52887553,52953089,53084161,53149697,53346305,53411841,53542913,53870597,53936129,54067202,54263809,54460417,54591489,55443457,55574529,55771137,56360961,56426498,57344001,57540609,57999362,58195975,58261510,58327047,58392584,58523649,58589190,58654723,58785795,58916868,59375620,59441154,59506690,59768835,59834372,59899905,60030978,60096520,60162052,60227588,60293124,60424196,60751876,60817420,60882952,61014020,61276161,61407240,61538312,61603848],"single":[3407873,5046273,11075591,13828097,15859713,19398657,19529729,27197441,30867457,31588353,32112641,32964609,58785793,59768833],"specify":[3014665,4521993,52690945,53149697,53542913,54263809,55705609,60227593],"subclasses":[47316993,53411841],"stringdocument":[3473410,21954565,36634626,38010881,50921474,51445762,51970049,52363265,59310081,60489736],"servername":[8323079,8650759,11927557,12320773,12845061,13369349,14090245,14876677,15925253,16842758,17563653,18087942,18612230,18743302,19988486,20643846,21495814,22413318],"sealed":[16121857,16842753,17039361,17235969,17694721,17760257,18087937,18612225,18743297,18939905,19070977,19136513,19398657,19464193,19595265,19660801,19922945,19988481,20119553,20250625,20447233,20643841,20709377,20774913,21037057,21102593,21233665,21364737,21430273,21495809,21757953,21823489,21889025,22085633,22216705,22413313,22478849,22609921,22806529,23003137,23068673,23199745,23265281,23396353,23789569,23920641,24248321,24576001,24641537,25100289,30212097,30474241,31260673,31916033,35520513,42663937,42795010,43253761,43450370,43712513,44171266,44236801,44630018,44892161,45219842,45481985,45875202,46006273,46333954,46465026,46727169,47054850,47185922,47513601,48103425,48234498,48627713,49020929,49152002,49283074,49545217,49741825,50135041,50659330,50790402,51314690,51838978,51904514,52428801,52953090,53411842,53477378,54001666,54525954,54722562,55115778,55246849,55312386,56754178,57212930,57933826,58261506,58589186,58851330,59047937,59506690,60030977,60817410,61079553,61276161],"selected":[4259842,9764865,10092545,10223617,10878977,11141121,11272193,11468801,12451841,12779521,13565953,13828097,15466497,15532033,19398657,22216705,22806529,36765698,37683202,54067204,54198273,57147393,59179009,59572225,59637761,59965441,61145089,61669377],"serializableattribute":[58654724,58982404],"select":[8126465,9306113],"significant":[13172737,13238273,13631489,13762561,13893633,14548993,14680065,14745601,15073281,15204353,15466497,15532033,16187393,16908289,18939905,19464193,20250625,20447233,21102593,21233665,21823489,22085633,22216705,22806529,23068673,23789569,23920641,24641537,61145089],"settings":[2031617,6029319,6488071,6815745,7274502,7405569,7864321,8192001,8847361,30670849,38010881,38404097,39059457,40108033,40632321,40828930,40894465,41222145,41549825,42074113,42205185,42270721,42926081,43319297,43843585,43909121,44630018,44957697,45088769,45416449,46071809,46268417,46792705,47382529,47775745,51380226,53870593,56950785,58195969,58261505,58327041,58392577,60030977,60096513,60817409,60882945,61407233,61538305,61603841],"searches":[1835009,1966081,5505025,6422529,53084161,58523649],"step":[12910593],"signature":[9830401],"sample":[4325379,4980737,7208961,10616833,26148866,27262978,37093377,38141955,39321602,49217543,49807362,50266114,50987009,51249153,52887553,53673985,54198273,55574529,56754184,58261505,60817409],"sourceindex":[17301509,17498117,18219013],"slower":[50200577,53936129],"systemexception":[58654721],"serves":[1572865,1638401,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2162689,2228225,3014657,3276801,3407873,3473409,3604481,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,53084161,53673985,53870593,54067201,55115777,55705601,55836673,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59244545,59310081,59703297,59768833,59899905,60096513,60227585,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"scriptusageattribute":[4849666,25427974,25886726,37552133,38010881,42598401,46923777,47316993,47972354,53411841,53477377,54722566,57606145,59113473,59506694,60358666],"syntactic":[13172737,13238273,13631489,13762561,13893633,14548993,14680065,14745601,15073281,15204353,15466497,15532033,16187393,16908289,18939905,19464193,20250625,20447233,21102593,21233665,21823489,22085633,22216705,22806529,23068673,23789569,23920641,24641537],"streamingcontext":[5111809,18415624,19857413,21692421,23658503,32571393,34799617,58654722,58982401],"site":[983041],"size":[6029313,6488065,7274497,35389441,37027842,37814274,38404099,38797314,38993924,39583746,39780353,39911431,40239106,40697857,41156610,42074115,43384834,44826630,45023234,45350918,49086466,49479682,49872898,50200582,50331650,51249155,51511298,51773442,52690946,52887555,53084161,53149698,53346306,53542914,53936134,54263810,55640066,56164354,56557570,58261507,58523649,58589188,59244551,59375618,59834370,59899905,60162050,60424194,60751874,60817411],"scriptable":[7143425,8060929,38010882,54067202,57540609],"struct":[7077889,8257537,31326210,38010881,51576834,53477380,54722564,55312391,55836674,55902210,59113476,60358660],"separate":[26673153,27590657,28114945,28835841,29097985,29360129,29818881,29884417,30015489,30408705,31129601,31850497],"strings":[8126465,9306114,9568257,10354689],"searchpath":[41222145,43843588,53870593],"scope":[54853633],"stringt":[8126467,9306115,9437190,9568258,10354690,10878978,12255236],"syntax":[589825,720897,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,4915201,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6422529,6488065,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7143425,7274497,7340033,7405569,7471106,7602177,7667713,7733249,7864321,7929858,7995394,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585218,8650753,8781825,8847361,8912897,9043969,9109505,9175041,9240578,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895938,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828098,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252930,16318465,16384001,16515073,16449537,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104898,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825794,17891329,17956865,18022401,18087937,18153474,18219009,18284545,18350081,18415617,18481153,18546690,18612225,18677761,18743297,18808833,18874369,18939905,19005442,19070977,19136513,19202049,19267585,19333122,19398658,19464193,19529729,19595265,19660801,19726338,19791873,19857409,19922945,19988481,20054018,20119553,20185089,20250625,20316161,20381697,20447233,20512770,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299202,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30736385,30801921,30867457,30998529,31129601,31195137,31260673,31326209,31391745,31522817,31588353,31653889,31850497,31916033,31981569,32112641,32178177,32243713,32309249,32636929,32702465,32768001,32833537,32964609,33095681,33161217,33226753,33554433,33685505,33947649,34013185,34144257,34275329,34734081,34930689,35127297,35520513,35454977,35848193,36044801,36306945,36503553,36569089,37224449,37486593,37879809,38207489,38273025,38469633,38731777,39190529,39452673,39583745,39845889,40042497,40108033,40501249,40828929,40894465,40960001,41025537,41353217,41549825,41615361,41680897,41746433,42139649,42270721,42336257,42401793,42467329,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,45023233,45154305,45219841,45285377,45350913,45481985,45547521,45613057,45678593,45875201,45940737,46006273,46071809,46333953,46399489,46465025,46530561,46661633,46727169,46792705,46989313,47054849,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47710209,47841281,47906817,48037889,48103425,48168961,48234497,48300033,48431105,48496641,48562177,48627713,48693249,48758785,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540610,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669377],"set":[3014658,3407873,4521986,5046273,9633795,9830401,10616838,10747907,10878977,11534339,13565953,17170434,17891330,18808834,18874370,24182786,24903682,25362433,26411009,27066369,27983873,28049409,28377089,28573697,29294593,30343169,31981569,34013185,35782657,36962305,37289985,37879809,38273026,39583749,40042501,40108036,40828932,40894469,41222146,41353221,41549828,41680901,42270724,42336261,42401797,42795014,42926085,43057157,43122690,43319300,43384837,43450374,43581444,43843588,44171270,44433412,44630021,45023236,45154309,45219846,45678596,45875206,46071812,46333959,46465030,46530564,46661636,46792708,47054853,47185925,47251460,47316996,47382532,47710213,47906821,48234502,48300036,48496644,48889861,49152006,49283077,49414149,49610756,50200582,50462724,50528260,50659333,50724869,50790405,50987012,51052550,51118084,51249156,51314694,51380228,51511301,51642372,51773444,51838981,51904517,52035588,52101124,52232196,52559877,52690948,52822021,52887556,52953093,53149700,53280772,53346308,53411845,53542916,53870594,53936134,54001670,54263812,54460421,54525957,54591492,54853637,55443461,55574532,55705602,55771141,56098820,56360965,57344004,57475076,57737220,58785793,59768833,60227586,61145091],"stored":[12255233,24444929,24969217,25493505,25559041,25821185,26017793,26083329,26542081,26607617,26935297,27525121,28311553,28704769,28966913,29491201,29556737,29949953,30736385,30998529,31391745,32178177,33095681,34930689,35848193,57540609],"scriptaccess":[5570565,21561349,22347781,23855109,24510469,25886725,35651588,37552129,38010881,41418753,43974662,47316999,53411848,56950788,57606150,59113473,59506692,60358657],"smaller":[60620801],"specifying":[6029313,6488065,7274497,13172737,13238273,13762561,13893633,14680065,14745601,20250625,20447233,21102593,21233665,21823489,22085633,24051713,24444929,24772609,25493505,25559041,26017793,26083329,26411009,26542081,26935297,27066369,27394049,27525121,27721729,28311553,28377089,28573697,29032449,29294593,29556737,29753345,30736385,31981569,33095681,52166657,57278465],"subsequent":[5111809,6029313,6488065,7274497,13434881,54853633,55443457,58654721],"satisfy":[55312385],"structure":[524289,1048577,1179649,1703937,3801089,5767170,5832706,6029313,6488065,7274497,15073281,15204353,18939905,19464193,21954561,23461889,25821185,26607617,28049409,28442625,30343169,30998529,31326209,32178177,36634625,38010881,39256065,39321601,40304641,41877507,45285377,46661633,47251457,50003969,51118081,51576836,51707905,51970049,52166657,52232193,52625409,55836673,55902210,57278465,59310081,60489729],"serializationinfo":[3080193,5111810,18415625,19857413,21692421,23658504,32571393,34799617,58654723,58982402],"selectort":[8126466],"significantly":[50200577,53936129],"scriptexceptionasobject":[43646980,45744129,46202881,46727174,48365569,50135046,58458113,58654721,58982401],"setvalue":[9306115,9568259,13828097,19398657],"suppress":[52822017,53280769],"safe":[38010881,57999361,60817409],"simulate":[41353217,45219841],"supports":[2949122,3014657,4521985,10944513,13828097,18153474,19005442,19398657,26804225,27656193,28901377,29622273,31588353,32964609,38010881,39059457,40632321,42205185,43909121,44957697,46268417,49676289,49938433,51183617,52297729,54853636,55705601,57344001,58392577,59506689,60096513,60227585,60882945,61079554,61407233,61538305,61603841],"settimerresolution":[61145089],"subroutine":[47054849,51642369,56492033],"string":[1572865,1638401,1769473,1835010,1900545,1966081,2031624,2097153,2359297,2490369,2555905,2621443,2686979,2752522,2818051,2162689,2228225,2883585,3014657,3080193,3145731,3211267,3276801,3342337,3407879,3473410,3538945,3604481,3670019,3735619,3866625,3932161,3997697,4063233,4128771,4259846,4325377,4390913,4456449,4521988,4587588,4653057,4849665,4980770,5046284,5111809,5177347,5439489,5832710,5898247,6029319,6160391,6291525,6357061,6488071,6553669,6815757,6881281,6946822,7143430,7209059,7274502,7405581,7536709,7798785,7864333,8060934,8126478,8257537,8323082,8388610,8519686,8650762,8716356,8847366,8912897,8978500,9043969,9306116,9371654,9437194,9568258,9633798,9699329,9830403,10027014,10289153,10354690,10420225,10485761,10551302,10616834,10682369,10813446,10878978,11075585,11141121,11206657,11272198,11337729,11468806,11534342,11599877,11665409,11927571,12058625,12124172,12189697,12255234,12320787,12386310,12517382,12582913,12648455,12713985,12845075,12910595,13041683,13107207,13172745,13238279,13303815,13369357,13500435,13565953,13631502,13697037,13762567,13828102,13893641,13959175,14024717,14090253,14155783,14221317,14286861,14417927,14483463,14549006,14614534,14680071,14745609,14876685,14942221,15007751,15073288,15138817,15204358,15269889,15335430,15466502,15532040,15597581,15859724,15925267,16121862,16187404,16384006,16646149,16777223,16842777,16908300,16973831,17039366,17235977,17367048,17563661,17629191,17694726,17760265,17891334,18087953,18284549,18350093,18612249,18677769,18743313,18808837,18939912,19070993,19136537,19398664,19464202,19529743,19595270,19660817,19922961,19988505,20119561,20250633,20316168,20381702,20447243,20643865,20709385,20774921,20905990,21037057,21102601,21233675,21364745,21495825,21430273,21561350,21626887,21757959,21823497,21954567,21889025,22020102,22085643,22151182,22216712,22347782,22413329,22478865,22544393,22609929,22675462,22741004,22806538,22872070,23068688,23134213,23199769,23265297,23396361,23461894,23592966,23789586,23920656,24051719,24117255,24248337,24379401,24444935,24641554,24772615,24838150,24903687,24969228,25100297,25165829,25362446,25493511,25559047,25624582,25755654,25821191,26017799,26083335,26411015,26542087,26607622,26673158,26738694,26935303,27066375,27131910,27197456,27394055,27459590,27525127,27590662,27721735,27983879,28049415,28180486,28246025,28311559,28377095,28442630,28508166,28573703,28639238,28704775,28901382,28966926,29032455,29097990,29163526,29294599,29425670,29491206,29556743,29622278,29753351,29884422,29949964,30081030,30146572,30343175,30670855,30736391,30801929,30867472,30932994,30998535,31064080,31129606,31391758,31457283,31588367,31653897,31719426,31850502,31981575,32047120,32112656,32178182,32374790,32440322,32571394,32768006,32964623,33030147,33095687,33161222,33292300,33357826,33423376,33488902,33554438,33619970,33685510,33816582,33882115,34013191,34078726,34209808,34275334,34340866,34471939,34603010,34668547,34734098,34799618,34930695,35061766,35127314,35192848,35258380,35323906,35586051,35651588,35717122,35782658,35848198,35913729,35979265,36044815,36241409,36306950,36372492,36438017,36569100,36634626,36700161,36765698,36896769,36962305,37027841,37158915,37224454,37289985,37355526,37486598,37617665,37683202,37748742,37814273,37879822,38076418,38207506,38338566,38469638,38666256,38731781,38797313,39124997,39190546,39452674,39518209,39714828,40173573,40239105,40370179,41091074,41156609,41287685,41811973,41877505,42139654,42270727,42401799,42663943,43515910,43712519,43778058,43843591,44105734,44236807,45613071,45744129,46071815,46858245,47120385,47513607,47579142,47644673,47841286,48103431,48431110,48693254,48824321,48955398,49152006,49741831,50003973,50921473,51445761,51576833,51707911,51970049,52363273,53084161,53215238,53477377,53608455,53673985,53805063,53870600,54067208,54132742,54329351,54591495,54657030,54722561,54984710,55115778,55312385,55508998,55705601,55836673,55967751,56229889,56295431,56360968,56426511,56492033,56623111,56754177,57212929,57409542,57540635,57671681,57868294,57933825,57999363,58130433,58196039,58261544,58327107,58392650,58523650,58589185,58654724,58720257,58785804,58851329,58916868,58982403,59113473,59244545,59310081,59375620,59506693,59703297,59768839,59834372,59899905,60096586,60162052,60227589,60293124,60358657,60424196,60489731,60555265,60751876,60817513,60883012,61014020,61407306,61472769,61538378,61603908,61669377],"successful":[8257537,42795009,48889857],"started":[39845890,44892162,45744129,46202881,48365569,48627714,58458113,58654721,58982401],"support":[8519681,9109505,9371649,9633793,9699329,9961473,10027009,10092546,10158081,10289153,10420225,10485761,10551297,10682369,10747905,10944513,11075585,11141121,11206657,11337729,11534337,11665409,12058625,12189697,12255233,12582913,13631489,23789569,38010881,39059457,40632321,41353217,42074113,42205185,43909121,44957697,45088769,45219841,46268417,47775745,47906817,48300033,50528257,51838977,54001665,54525953,55377921,57540609,58195969,58327041,58392577,60096513,60555265,60817409,60882945,61145092,61407233,61538305,61603841,61669377],"serialize":[3080193,5111809,18415617,23658497,58654721,58982401,60817409],"scriptname":[37617665,55115777,57868292],"stream":[4980737,7208961,27000844,29229068,36634625,39256065,44302343,50921480,57278470,58261505,59310081,60489729,60817409],"shares":[25952257,26804225,27656193,28180481,28901377,29622273],"synchronization":[30474241,31260673,61145089],"systems":[61145089],"supported":[22740994,34471937,34734082,35127298,36044802,38207490,39124993,39190530,40173569,41222145,41287681,41811969,42270721,45023233,45613058,53870593,58195969,58392577,59965442,60096513,60882945,61407233,61538305,61603841],"static":[720898,917506,1114115,1376259,1441795,1507331,3407873,5046273,7471107,7929859,7995395,8126465,8454145,8585219,9240579,9437185,9764865,9895939,11730949,12713985,13041665,13500417,13565953,13697025,14286849,14483457,15007745,15138817,15269889,16252931,17104899,17825795,18153475,18546691,19005443,19136513,19333123,19726339,19922945,20054019,20512771,20709377,21037057,21299203,21430273,21889025,23199745,24248321,25100289,31326211,39059457,40632321,42074113,42205185,42860547,43581442,43909121,44498947,44957697,45088769,45547523,46071811,46268417,46792707,47185922,47382531,47448067,47775745,48037891,52428801,52494339,53018627,54853635,55246849,55443459,58195969,58327041,58392577,58785793,59047937,59768833,60030977,60096513,60817409,60882945,61079553,61276161,61407233,61538305,61603841]} \ No newline at end of file +{"span":[2818051,3276803,3473411,3997699,4390918,16777224,16842755,18153480,18677768,22282243,23986179,26869761,28704769,30081025,35651585,41222145,44826625,47906818,49020929,50266114,51249153,53215234,73138179,74645507,75497475,77135875,78184454],"supports":[3342337,3670018,5963777,12582913,16711681,18808834,19922946,23199745,34471937,39256065,39845889,40828929,43450369,43778049,43843585,44564481,44957697,45481985,45547521,57737217,62193665,62390273,63045633,64684033,65273857,66519041,69009409,69533697,70713345,72417281,74514433,74907649,75104257,76611588,78774274,79167489,79953921,80084993,80281601,80543745,81002497,81068033,81264641],"stringcontents":[54001665,73072644,80674817],"server":[3735560,5373960,8716296,8847361,9175041,9306120,9502728,9830408,11010056,11206664,11403272,13172738,13238274,13434882,13500418,13697026,13828098,17235970,17301506,18087938,18284546,18546690,20316162,20578306,21495810,22478850,23592962,45350916,47710212,48168964,51183620,75104264,76087304,77856776,78512136,79953928,80281609,81002505,81068041,81264648],"setdynamicproperty":[3801090,5242882,23461893,25034757,31522821,33685509,46727170,55050242,71303170,78577666],"speed":[15532033,24444929,39190529,40501249,44171265],"step":[15990785],"scriptfunc":[7798789,8388614,8585221,9764869,10944517,11075589],"scriptinterruptedexception":[1245186,3407874,21823494,23724038,24707073,25755654,26083329,27262982,45547521,54788105,59179009,59965441,60948481,62980098,72351745,72548366,73334785,73793537,73924609,74448897],"space":[66584577,67829761,69402625,70975489],"setter":[38666246,39911430,78643201],"sync":[262145,786433,6553601,40632321,42139649,43319297,46333953,53477377,71630849,80805889],"selectively":[61734913,61931521],"stringdocument":[3604482,23330821,45547521,54001666,65798146,70057986,72482817,73072641,76480513,80674824],"setasyncenumeratorfactory":[5767170,36503557,37814277,47775746,75431938],"snapshot":[7077889,11010049,39059460,39452676,75366401,76087297],"serialize":[3014657,3407873,19726337,24707073,72548353,76087297,78970881],"selecting":[12451841,13369345,13565953,13762561],"scriptaccess":[6488069,23396357,24051717,25165829,25952261,28966917,45547521,47448065,55312388,57933825,62259207,63373318,71499782,72286216,75759617,76021764,79167492,80216065],"search":[65537,7536641,7602177,8519682,25559041,26345473,26411009,27459585,27721729,28180481,29753345,32243713,33226753,36634625,52756481,54657025,55508994,61603841,63635458,69992449,78053377,79888385],"syntactic":[14155777,14483457,14548993,14942209,15269889,15728641,16187393,16384001,16515073,18022401,18219009,19464193,19857409,21037057,21364737,21561345,21626881,22872065,23855105,24313857,24641537,25427969,26542081,26607617,26738689,26804225,28639233,29360129],"sensitive":[43843585,44564481,76939265],"scriptable":[7995393,9109505,45547522,74121218,75431937,76414977],"servername":[8847367,9175047,13172741,13238277,13434885,13500421,13697029,13828101,17235973,17301509,18087942,18284550,18546694,20316166,20578310,21495814,22478854,23592966],"schedule":[76939265,78118913],"scripts":[56688641,57475073,59375617,66650113,70975489,71041025,71827457,72220673,73400321,76939265,77332481],"stripped":[11272193],"safe":[45547521,71368705,76087297],"separate":[38535169,40304641,40763393,41680897,41877505,42532865,42991617,44498945,44761089,47054849,49086465,50921473],"stores":[2162689,2228225,6291457,7208961,75169793,79691777],"scenarios":[61669377,67764225,71041025,72220673],"signed":[29229057,30212097,30867457,32374785,42795009],"sub":[5505025,5832705,6029313,6225921,6422529,6488065,6619137,6684673,6750209,6815745,6881281,7012353,7143425,7274497,7471105,7667713,8126465,8257537,8650753,9371649,9437185,11534337,11599873,11796481,12058625,12189697,12255233,12451841,12648449,12713985,12976129,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13697025,13762561,13828097,14024705,14286849,14352385,14417921,14483457,14548993,14614529,14745601,14811137,14942209,15073281,15138817,15269889,15335425,15400961,15466497,15532033,15597569,15794177,15859713,15925249,16187393,16318465,16384001,16515073,16711681,17104897,17235969,17301505,17367041,17563649,17694721,17760257,17825793,17891329,18087937,18284545,18350081,18481153,18546689,18612225,18874369,19070977,19202049,19267585,19529729,19660801,19726337,19988481,20119553,20250625,20316161,20381697,20447233,20512769,20578305,20709377,20774913,20905985,20971521,21102593,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,22085633,22151169,22216705,22347777,22478849,22544385,22609921,22740993,22806529,22937601,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23724033,23855105,23920641,24051713,24117249,24182785,24379393,24444929,24510465,24641537,24707073,24903681,24969217,25034753,25100289,25165825,25296897,25559041,25755649,25821185,25886721,25952257,26017793,26148865,26214401,26345473,26476545,26607617,26804225,27000833,27066369,27131905,27197441,27262977,27394049,27983873,28311553,28966913,29163521,29360129,29687809,30539777,31457281,31522817,31653889,31981569,32505857,32636929,32899073,33161217,33292289,33423361,33554433,33619969,33685505,33751041,33882113,34013185,34144257,34406401,34471937,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35454977,35717121,35782657,35913729,36110337,36306945,36438017,36503553,36569089,36700161,36765697,36831233,36896769,36962305,37027841,37158913,37224449,37355521,37421057,37617665,37683201,37814273,37879809,38010881,38141953,38338561,38404097,38469633,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39321601,39452673,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40304641,40370177,40501249,40566785,40632321,40763393,40960001,41091073,41222145,41353217,41615361,41680897,41746433,41811969,41877505,41943041,42008577,42270721,42336257,42532865,42795009,42860545,42991617,43188225,43253761,43319297,43384833,43450369,43712513,44171265,44236801,44367873,44498945,44761089,44892161,44957697,45219841,45285377,45416449,45809665,46137345,46465025,46530561,46792705,46989313,47054849,47120385,47185921,47251457,47316993,47644673,48234497,48889857,49086465,49414145,49872897,50135041,50331649,50528257,50593793,50790401,50921473,51118081,51511297,52101121,52297729,52559873,52953089,53149697,54132737,54919169,75890689,78053377,78643201,79298561,79822849,80609281],"sum":[8585219],"summarizes":[18219009,26542081],"scriptengineexception":[1507330,3014658,17563654,19267590,19726337,20709382,21299201,23134214,45547521,46006281,58458113,60358658,60555265,67239937,69664769,71106561,72089601,78970894],"scriptengine":[2490371,3670020,5373954,8716339,8781829,9306159,9502767,9830447,10092549,10420229,11010099,11206703,11403311,13303813,17039365,17170437,17956869,18087937,18284545,18546689,19988481,20119553,20316161,20381697,20578305,20774913,21037057,21102593,21430273,21495809,21561345,21626881,21692417,21757953,22085641,22216705,22478849,22544385,22609921,22740997,22872065,22937601,23003137,23199745,23527425,23592961,23658497,23855105,24117249,24182785,24313857,24379393,24444929,24641537,24903681,25100289,25231365,25427969,25296897,25886721,26017793,26476545,26542081,26607617,26738689,26804225,27066369,27983873,28049409,28639233,29360129,45547521,47841281,48168961,48496641,50397185,51183617,51314689,51773441,52166658,52363267,54263812,54722561,55377921,56164353,57409537,57737240,58130434,58785798,58916865,60162049,60293146,60620801,60817409,61669377,62193688,62324737,62390273,62717953,62849025,63045656,63569921,63963137,64159745,64684056,64815105,65273880,65601537,65994753,66125830,66453505,66650113,67502081,67567617,68288513,68419591,68878337,69140481,69533722,69795841,70254593,71237633,72286209,75104328,76087378,76677123,77856776,78774276,79953992,80281672,81002568,81068114,81264712],"subclasses":[62259201,72286209],"setundefined":[4915201,37683204,79364097],"selectort":[8978434],"searches":[2162689,2228225,7536641,7602177,75169793,79691777],"schema":[41549825,43188225],"start":[56819714,64487425,70189057,70451201,80347138],"settings":[1835009,6619137,6684673,6815745,7274497,7405575,8650753,9043974,10682375,45678593,45547521,52756481,54657025,55508993,57737217,58130433,59768833,59834369,59899906,60293121,61341697,61407233,61931521,62193665,63045633,63504385,63635457,64225281,64684033,64749569,65273857,65536001,65994754,67895297,69533697,69992449,72876034,75104257,75366401,76021761,76087297,77856769,78512129,79888385,79953921,80281601,81002497,81068033,81264641],"selected":[2883586,9568257,10878977,11468801,11665409,11862017,12451841,13369345,13565953,13762561,15728641,16187393,16711681,19005441,22872065,23199745,23855105,43974658,50462722,72744961,74121220,76873729,76939265,77004801,78446593,79429633,80150529,80412673],"suppressfinalize":[21757953],"synchronous":[41943041,42270721,45219841,51576834,52297729,53149697,55443458,80281602,81002498,81068033],"store":[6291457,7208961,16449537,16646145,16777217,16842753,16908289,18153473,18677761,18743297,20185089,21168129,22282241,23986177],"subroutine":[57868289,69140481,78708737],"structures":[45547521,49545217,51707905,76939265],"suppressextensionmethodenumeration":[60293121,75235332,76087297],"settled":[79233025],"standards":[80412673],"structure":[393217,327681,1572865,1638401,4718593,4915201,6225922,7340033,7405569,7667714,9043969,9895937,10682369,14942209,18022401,21561345,23330817,24313857,25624577,26279937,26869761,27328513,27525121,27656193,27787266,27852801,27918337,28246017,28377089,28442625,28508161,28573697,28704769,28770305,28835841,28901377,29032449,29097985,29229057,29294593,29425665,29491201,29556737,29622273,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474242,30605313,30670849,30736385,30801921,30867457,30932994,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31588353,31719425,31784961,31850497,31916033,32047105,32112641,32178177,32309249,32374785,32440321,32571393,32702465,32768001,32833537,32964609,33030145,33095681,33292289,33357825,33488897,33751041,33816577,33947649,34209793,34078721,34275329,34340865,34537473,34603010,34865153,34930689,35586049,35651585,35717121,35848193,36306945,36569089,36831233,37224449,37421057,37683201,38797313,38862850,39518209,39583745,40173569,40566785,41222145,41418753,42008577,42795009,43515905,44105731,44367873,45416449,45547521,46137345,46858241,48365569,49545217,50987009,51052545,51445761,51707905,53280769,54001665,54067201,54460417,54591489,58261505,59113473,59441153,60227585,61538305,61734913,62914561,63438849,63766529,64880641,65011713,66060289,67174401,68026369,68681729,69337089,69599233,70385665,72482817,76349442,76480513,77529090,77725697,78184449,78249985,78839812,79298561,79364098,80674817,80740354],"short":[27656195,27852801,28770305,30801921,31326211,33292291,33357827,34209795,34537473,34865153,78184449],"struct":[7929857,8912897,27787266,30474242,30932994,34603010,38862850,45547521,54591490,73990148,74842116,75038727,75759620,76349442,77529090,78184450,78249986,78839810,79364098,80216068,80740354],"shared":[1,655361,786433,917505,983041,2359297,5242881,5439489,8060929,8192001,8323073,8781825,10092545,10420225,17039361,17170433,17956865,18415617,18808833,19398657,19922945,20054017,21233665,25231361,26935297,31981569,34406402,39780353,45285378,51707906,54591489,55771137,57475073,63635457,65536001,67895297,67960833,68419585,68616193,70123521,76611585,77070337,77266947,78315521,78577667,79233026],"site":[458753],"size":[7405569,9043969,10682369,53608450,54198274,55246855,55640065,56885250,57344002,59244546,59375617,59506694,59834371,60293123,61014020,61145094,61997057,62783490,64094210,64356354,66191362,66584578,66977794,67829762,68354051,68747266,69402626,69468162,69730306,70778882,70844418,70975490,71041030,72220678,72810499,73138178,73203714,73859074,74383362,74645506,75169793,75366403,75497474,76087299,76152836,77135874,77332481,77398023,78184450,79691777],"stale":[79757314],"synchronization":[40632321,42139649,76939265],"suppressinstancemethodenumeration":[60293121,75235329,75563012,76087297],"support":[9633793,9699329,10027009,10289153,10485761,10813441,10551297,10878977,11141121,11468802,11730945,11927553,11993089,12124161,12386305,12517377,12582913,12779521,12845057,12910593,13041665,13631489,13893633,13959169,14221313,15204353,18219009,26542081,45547521,51707906,57737217,58130433,58916865,60162049,60293121,60620801,61407233,62062593,62193665,63045633,64290817,64552961,64684033,64815105,65273857,65667073,67305473,67567617,69533697,74776578,75104257,76087297,76414977,76939268,77856769,78512129,78577665,79953921,80281601,80412673,80871425,81002497,81068033,81264641],"serializeobjectstate":[1245185,1507329,72548353,78970881],"smart":[80412673],"scriptexception":[58458118,59965446,60358657,62455809,62980097,68812804,72548353,78905345,78970881],"scriptusageattribute":[5046274,27197446,28966918,45547521,47448069,53542913,62259201,63373313,65863681,68157442,72286209,73990145,74842118,75759617,79167494,80216074],"strings":[8978433,10158081,10944513,11075586],"stringt":[8978435,10158082,10354694,10944514,11075587,11862018,13959172],"stringify":[76939265],"simpler":[67895297],"slower":[71041025,72220673],"stacktrace":[60358657,62980097,72548353,78970881],"sealed":[17498113,18087937,18284545,18546689,18939905,19529729,19791873,19988481,20119553,20316161,20381697,20578305,20774913,21037057,21102593,21495809,21561345,21626881,21692417,22216705,22478849,22544385,22609921,22872065,22937601,23199745,23527425,23592961,23855105,24117249,24182785,24313857,24379393,24641537,24903681,25100289,25362433,25427969,25296897,26017793,26476545,26542081,26607617,26738689,26804225,27066369,27983873,28049409,28639233,29360129,33226753,35454977,36634625,38010881,40632321,42139649,43319297,46333953,46465025,58458113,58916866,59179009,59965441,60162050,60555265,60620802,60686338,60817410,60948481,61669378,62324738,62717954,62849026,63242241,63963138,64159746,64815106,65601538,65732609,65994754,66322433,66453506,66650114,67239937,67371009,67567618,68288514,68878338,69140482,69664769,69795841,69992449,70254594,70909954,71106561,71237634,71761922,71958529,72089601,72286210,72351745,73334785,73531394,73793537,73990146,74514434,74842114,75038722,75366402,76087298,76152834,76546050,76677121,77201409,77594625,78774273,79167490,79626242,80347138],"suppress":[75235329,75563009],"securely":[61734913,61931521],"successful":[8912897,61669377,67764225],"scope":[76611585],"stripping":[56229889,66453505,67698689],"scriptexceptionasobject":[60358657,60555270,60948486,62455809,62980097,70647812,72548353,78905345,78970881],"stored":[13959169,36044801,36175873,37552129,37748737,38076417,38207489,40042497,40108033,40435713,42401793,43122689,44040193,45744129,45875201,46858241,47513601,48037889,48365569,49217537,49807361,50987009,51970049,54460417,54984705,76414977],"setproperty":[2097154,2752514,2818050,3276802,3473410,3538946,3997698,4390914,4456450,4521986,4784130,4980738,5570562,5963778,10813445,12779525,18350085,20447237,23920646,25821190,26214405,31653893,46399490,48300034,48627714,49348610,73138178,73269250,74645506,74973186,75497474,75694082,75956226,76283906,77135874,77987842,78184450,79495170,80084994,81199106],"samples":[53805057,59834370,60293122,66256902,68354049,71565313,72810497,74055681,75366402,76087298,80019457],"strictly":[60817409,66387969,81330177],"scriptmemberflags":[25165829,25952261,27394053,28311557,45547521,55312388,63700999,79167492,79429636],"succeeded":[27525122,27918338,28246018,28508162,28704770,28770306,28835842,29491202,29556738,29949954,30081026,30212098,30343170,30408706,30474242,30605314,30867458,31129602,31195138,31260674,31326210,31588354,31784962,31850498,31916034,32571394,32702466,32964610,33030146,33095682,33357826,33816578,33947650,34340866,34537474,34603010,35586050,35848194],"serializationinfo":[3014658,3407874,17563653,19726345,23724037,24707081,46006273,54788097,72548355,78970883],"sealedattribute":[69992449,70909953,71761921,71958529,73531393,73990145,74514433,74842113,75038721,75366401,76087297,76152833,76349441,76546049,76677121,77201409,77529089,77594625,78774273,78839809,79167489,79364097,79626241,80347137,80740353],"system":[1835012,6619139,6684675,6815748,7995395,8585221,8650755,8912897,8978437,9109507,9175041,9961473,10158081,10223617,10354692,10747910,10551298,10878977,10944515,11075587,11730946,11862017,11927554,12124162,12386306,12517378,12845058,12910594,13631490,13893634,13959170,14221314,15204354,15990787,18219012,19005441,26542084,45678597,68943873,69992449,70909953,71172097,71368705,71761921,71958529,72417281,72548356,72613889,73531393,73990146,74121217,74514433,74711041,74842114,75038722,75104257,75169793,75366401,75431937,75628545,75759618,75956225,76087297,76152833,76349442,76480513,76546050,76677121,76742657,76873729,76939265,77201409,77266945,77332481,77398017,77529090,77594625,77856769,77987841,78249985,78577665,78708737,78774273,78839810,78970884,79167490,79364098,79626241,79691777,79888389,79953921,80019457,80084994,80216066,80281601,80347137,80478209,80543746,80674817,80740354,80805889,80871425,81002497,81068033,81264641,81330177],"script":[393218,1245185,1507329,1572865,1703937,1769473,2097161,2293761,2424833,2490377,2555905,2686977,2752522,2818057,2949121,3014657,3145729,3276809,3407873,3473417,3538949,3670031,3735595,3997705,4390921,4521988,4587521,4653057,5046273,5373998,5570570,5963786,5898244,6356993,6488068,6553604,6619137,6881281,7077910,7471105,7798786,8060930,8192003,8323075,8388613,8454145,8585222,8716336,8781829,8978433,9306159,9502768,9633793,9699329,9764866,9830447,10027009,10092550,10158081,10289153,10354689,10420230,10485761,10551298,10813441,10878978,10944517,11010114,11075589,11141121,11206703,11337729,11403311,11468802,11730946,11862017,11927554,11993089,12124162,12386306,12517378,12582913,12779521,12845058,12910594,13041665,13172739,13238275,13303813,13434883,13500419,13631490,13697027,13828099,13893634,14024707,14155779,14221314,14286852,14352388,14417924,14483458,14548995,14680065,14745603,14811139,14942213,15007745,15073283,15204354,15269897,15335428,15400963,15466500,15597571,15663109,15728646,15794180,15859715,15925252,15990789,16121857,16187397,16252929,16384006,16515074,16580611,16711689,17039365,17104898,17170437,17235971,17301507,17367041,17563649,17629185,17760260,17825795,17891333,17956869,18022406,18087940,18219025,18284548,18350081,18415618,18546692,18612225,18808835,19005441,19202051,19267585,19333121,19398658,19464199,19726337,19857412,19922947,19988484,20054017,20119556,20250629,20316164,20381701,20447233,20512772,20578308,20643841,20709377,20774916,20840449,21037060,21102598,21233666,21299201,21364739,21430274,21495812,21561350,21626883,21692421,21757954,21823489,21889025,21954562,22085634,22151170,22216708,22347777,22413314,22478852,22544389,22609926,22675458,22740994,22806529,22872071,22937604,23003140,23134209,23199754,23396357,23527428,23592964,23658502,23724033,23789570,23855110,23920642,24051716,24117253,24182788,24313863,24379396,24444929,24510465,24641540,24707073,24903685,25100292,25165832,25231365,25296897,25362434,25427973,25690114,25755649,25821186,25886723,25952263,26017797,26083329,26476549,26542098,26607619,26738692,26804234,26935298,27066373,27197441,27262977,27394052,27983877,28049409,28114946,28311557,28639240,28966916,29360135,35520513,36044803,36175876,36241416,36372489,36700162,37093380,37552133,37748739,37879810,37945351,38076420,38207492,38273031,38404097,38535170,39256072,39387144,39518217,40042500,40108038,40173573,40239111,40304642,40435717,40632322,40763394,40828936,40894466,41025539,41156610,41287685,41353217,41418756,41680898,41877506,41943041,42074114,42139650,42205188,42270721,42401797,42467329,42532866,42598403,42663937,42860546,42926083,42991618,43122693,43057154,43319297,43515912,43581446,43778056,43843587,43909124,44040199,44171265,44302340,44433414,44498946,44564483,44630018,44695553,44761090,45023234,45088776,45219841,45350920,45481992,45547547,45613059,45744130,45809665,45875205,45940738,46006273,46071811,46268418,46333954,46399491,46858245,46989314,47054850,47120391,47382530,47448066,47513602,47644673,47710216,47841282,48037892,48103426,48168969,48234497,48365575,48496645,48627714,48758786,48889857,48955399,49086466,49152002,49217542,49283075,49414145,49545221,49741830,49807364,50003980,50135043,50397187,50593793,50659332,50790402,50855944,50921474,50987013,51183625,51314690,51380227,51511301,51642372,51707907,51773443,51904513,51970050,52035586,52101121,52166662,52232198,52297729,52363267,52428805,52625414,52822021,52887554,52953091,53018628,53149699,53477378,53542914,53608453,53673988,53870597,54132737,54198274,54263821,54460422,54525958,54722569,54788097,54853644,54919169,54984706,55115777,55312393,55377923,55836684,56033284,56098819,56164354,56229891,56360961,56426498,56623106,56688641,56819718,56885253,57016323,57081859,57147396,57212932,57278468,57409541,57475077,57671682,57737239,57868292,57933826,57999361,58130454,58327041,58458115,58523650,58720263,58785793,58916866,58982405,59179009,59244549,59375617,59572225,59637761,59834370,59899905,59965443,60162052,60293142,60358661,60489730,60555267,60620801,60751878,60817409,60882946,60948483,61079553,61407252,61669378,61734913,61931521,62062597,62128132,62193687,62259202,62324738,62390282,62455812,62521346,62717957,62783493,62849026,62980101,63045654,63111169,63307777,63373314,63569923,63700994,63897605,63963141,64028674,64159747,64290817,64356357,64487425,64552963,64684056,64815108,64946177,65077251,65208321,65273878,65339393,65601542,65863684,65994754,66125826,66453508,66519048,66650114,66715649,66781186,66912258,67043329,67239938,67305475,67502085,67567622,67633158,67698690,67764225,68091906,68157442,68222977,68288514,68419588,68485122,68812802,68878337,68943874,69009410,69140485,69206020,69533720,69664769,69795842,69861377,69926914,70254595,70451201,70582273,70647810,70713355,70909954,70975490,71041025,71106562,71172100,71237637,71499778,71630850,71827457,72089601,72220673,72286211,72351746,72548358,72613889,72679427,73007106,73138190,73334785,73400321,73465857,73531393,73662466,73793538,73924611,73990148,74121217,74186753,74252290,74448899,74579970,74645518,74776579,74842116,74907659,75038721,75104329,75235329,75366424,75497486,75563009,75759620,75825153,75956230,76021766,76087399,76218369,76283919,76349441,76414980,76677130,76808194,76939277,77004802,77135886,77332481,77463554,77529089,77791235,77856838,77922306,77987848,78118916,78184462,78381061,78446597,78512192,78708738,78774287,78905349,78970887,79101957,79167501,79233025,79429634,79495183,79560707,79757316,79953996,80085008,80216068,80281669,80347142,80412679,80740354,80805893,80871425,81002565,81068105,81133570,81199120,81264713,81330177],"select":[8978433,11075585],"set":[3342338,3538945,4521985,4915219,5963778,8585217,10485763,10747910,10813443,11862017,12779523,18350082,19005441,20447234,21430274,22347778,23461890,23920642,25034754,25821186,26214403,27721729,29753345,31522818,31653891,33292294,33423361,33685506,33751046,34865158,34930694,35717126,35913729,36241409,36306950,36372481,36503553,36569094,36831233,37224454,37421062,37617665,37683201,37814273,37945345,38273025,38797318,38862854,39321601,39387137,39518209,39583750,40239105,40566790,41222150,41353218,42008582,42795014,43515905,43581441,44367878,44433409,45416454,46137350,46399489,46727169,46989314,47775745,48300033,48627713,49348609,49610753,49741825,51445780,51707905,52625409,52756482,53280769,54198276,55050241,55508996,56033284,56229893,56360965,56688646,57278469,57344005,57868292,57999364,58523653,58916870,58982404,59441156,59572229,59768836,59899908,60162053,60620805,60686342,60817414,60882948,61079557,61341701,61669382,61734916,61931524,62062597,62128132,62259204,62324741,62717957,62849030,63504388,63635460,63700996,63766532,63963142,64094212,64159750,64225285,64290821,64421893,64552964,64749572,64815109,65077252,65536004,65601541,65667076,65994757,66387973,66453510,66584580,66650119,66912261,67043332,67174404,67305476,67567622,67698693,67764229,67829764,67895300,68288517,68354052,68878342,69009412,69074948,69140485,69402628,69468165,69926917,70254597,70385667,70778884,70975493,71041030,71237637,71303169,71565316,71827461,71892996,72155140,72220678,72286213,72810500,72876036,73007108,73400325,73924612,74055684,74383364,74448900,75235333,75563012,75956225,76611589,76939267,77070341,77987841,78643201,79364116,79888386,80084994,80543746],"syncinvoker":[39714821,41943045,42270725,45219845,47251461,48889861,50331653,52297733,52559877,53149701,54919173,57737217,62193665,63045633,64684033,65273857,69533697,71630852,75104257,79953921,80281601,81002497,81068033,81264641],"sort":[65537],"statement":[14483457,14548993,14942209,15269889,15990785,16187393,16384001,16515073,16580609,21561345,21626881,23003137,23855105,24641537,26607617,26804225,29360129,43843586,44564482,45613057,49283073,51380225],"soft":[59834369,60293121,71041025,72220673,75366401,76087297],"streaming":[17563649,23724033],"scriptname":[56819713,64028676,80347137],"sets":[1966081,2097154,2752514,2818050,2883585,3080193,3276802,3473410,3538947,3801090,3997698,4390914,4456450,4521987,4784130,4915221,4980738,5242882,5570562,5963778,5767174,10485761,10813441,12779521,18350081,20447233,22347777,23461889,23920641,25034753,25821185,26214401,31522817,31653889,33292289,33423361,33685505,33751041,34865153,34930689,35717121,35913729,36306945,36503553,36569089,36831233,37224449,37421057,37617665,37683201,37814273,38666241,38797313,38862849,39321601,39583745,39911425,40566785,41222145,42008577,42795009,44367873,45416449,46071810,46137345,46399490,46727170,47382530,47775746,48300034,48627714,49348610,49610755,51445779,51707905,52756485,53084161,53608450,54198273,54394881,54525954,54657026,55050242,55508993,55640065,55705601,56885250,57344001,57737225,57868289,58130440,58589185,58982401,59244546,59375617,59441153,59572225,59768833,59834374,59899905,60162049,60293133,60358659,60686337,60751874,60882945,61014022,61079553,61276161,61407240,61538308,61734913,61931521,61997057,62128129,62193673,62259201,62783490,62980099,63045641,63504385,63635457,63700993,63766529,63897602,64094209,64356354,64552961,64684041,64749569,64815105,65077249,65273865,65536001,65601537,65863682,65994753,66584577,66912257,67174401,67305473,67633154,67829761,68354049,69009409,69140481,69402625,69468161,69533705,69926913,69992450,70254593,70778881,70975489,71041025,71237633,71303170,71368706,71565313,71827457,72155137,72220673,72286209,72548355,72810497,72876033,73138180,73269250,73400321,74055681,74121218,74383361,74645508,74973186,75104265,75169793,75366406,75431942,75497476,75628546,75694082,75956227,76087309,76152838,76283908,76414977,77070337,77135876,77201409,77332481,77791234,77856776,77987843,78184452,78512136,78577666,78643201,78839812,78970883,79167490,79364117,79495172,79691777,79888389,79953929,80084996,80281609,81002505,81068041,81199108,81264649],"shares":[37093377,39256065,40828929,42205185,43778049,45481985],"sbyte":[3538945,4521985,4915202,7340035,9895939,11927559,29229063,30212103,30867463,32374791,42795015,51052546,51445762,54067202,75956225,76349443,77529091,77987841,78184449,79364098],"serialized":[1245186,1507330,17563650,23724034,46006273,54788097,72548355,78970883],"specifying":[7405569,9043969,10682369,14155777,14483457,14548993,16515073,19857409,21037057,21364737,21626881,24641537,25427969,26607617,26738689,36044801,36175873,37552129,37748737,37945345,38207489,40239105,40435713,40894465,41025537,42074113,42598401,43057153,43581441,44433409,45023233,45744129,47513601,48037889,49741825,49807361,51970049,52625409,54984705,69337089,79298561],"shallow":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"successfully":[7405569,9043969,10682369,15990785,35389441,35520513,35979265,37289985,42467329,42729473],"specific":[3211266,8454145,8978433,10354690,14286849,14352385,14417921,15335425,15466497,15794177,15925249,17760257,18219010,20381697,20512769,21692417,22544385,24117249,24903681,26017793,26476545,26542082,27066369,27983873,48103425,56688641,60358657,61669377,62980097,66650113,67764225,72548353,74776577,76414978,78184449,78970881,80412673],"scripting":[8847362,9175042,45547521,60817409,66387969,74776577,80543745],"statements":[14155777,14483457,14548993,14942209,15269889,15728641,16187393,16384001,16515073,18022401,18219009,19464193,19857409,21037057,21364737,21561345,21626881,22872065,23855105,24313857,24641537,25427969,26542081,26607617,26738689,26804225,28639233,29360129,43843585,44564481],"strongly":[3538957,4521997,8388609,10551298,10747907,10944513,11075585,11730946,11927554,12124162,12386306,12517378,12845058,12910594,13631490,13893634,13959169,14221314,15204354,75956237,76939265,77987853],"stringdictt":[10354690,13959170],"scheme":[10747905],"serialization":[17563649,19726337,23724033,24707073],"starting":[3211265,53805057,70189057,76414977,80019457],"suitable":[36241409,36372481,37945345,38273025,39387137,39518209,40239105,43515905,43581441,44433409,49741825,52625409,79757313],"supported":[22740994,42270722,45219842,50593794,51576833,51707907,52363265,52756481,52953090,53149698,54132738,54198273,55443457,59047937,60424193,63504385,73269249,74973185,75104257,75694081,77856769,78446594,79888385,79953921,80281601,81002497,81068033,81264641],"serializableattribute":[72548356,78970884],"started":[58327042,60358657,62455809,62980097,71106562,72548353,73793538,78905345,78970881],"settimerresolution":[76939265],"sampl":[57540610,67436545,68550657,71761922],"subsequent":[3014657,3407873,7405569,9043969,10682369,13303809,72548353,76611585,77070337,78970881],"scriptmemberattribute":[4653058,22151174,22806534,23396358,24051718,25165830,25952262,27394054,28311558,45547521,55312401,63700993,65077249,65863682,73990145,75759617,79167510,80216065],"setpropertynocheck":[1966081,2883585,3080193,6422529,19660801,22347780,71368705,74121217,75628545],"segment":[76873729],"setnull":[4915201,36831236,79364097],"smaller":[79560705],"signature":[8585217],"sourceinfo":[7405574,9043973,10682374],"significant":[14155777,14483457,14548993,14942209,15269889,15728641,16187393,16384001,16515073,18022401,18219009,19464193,19857409,21037057,21364737,21561345,21626881,22872065,23855105,24313857,24641537,25427969,26542081,26607617,26738689,26804225,28639233,29360129,76939265],"sole":[1,131073,262145,786433,917505,1048577,1179649,2359297,78708737,80805889,80871425,81330177],"single":[3538945,4521985,4915202,7340035,9895939,12910599,16580609,16711681,23003137,23199745,27918341,29097989,31064069,31129605,43843585,44367877,44564481,45613057,49283073,51052546,51380225,51445762,54067202,75956225,76349443,77529091,77987841,79364098],"special":[60162049,64552961,64815105,67305473,80871425,81330177],"specifies":[8454145,8847361,9175041,45547527,49545217,54198273,57344001,68550657,69468161,70189057,71434241,72679425,72744964,73990145,74842113,75038721,75759617,76021763,76152833,76873733,76939282,77004804,77791234,78118913,78446597,79167489,79429635,79560705,80150530,80216065,80412682],"specifier":[7405574,9043973,10682374,14155781,14483461,14548997,16515077,19857413,21037062,21364741,21626886,24641542,25427974,26607622,26738694,36044805,36175877,37552133,37748741,37945349,38207493,40239109,40435717,40894469,41025541,42074117,42598405,43057157,43581445,44433413,45023237,45744133,47513605,48037893,49741829,49807365,51970053,52625413,54984709],"specified":[851970,1638401,1703938,1769474,1835012,1900545,1966082,2031618,2162689,2228225,2293761,2490375,2555905,2621441,2686978,2818052,2883590,2949122,3014657,3080194,3145730,3211267,3276804,3342339,3407873,3473412,3538974,3604481,3670020,3735601,3801090,3866625,3932161,3997700,4128769,4194305,4325377,4390920,4456449,4522018,4653058,4587521,4718593,4784129,4849665,4915202,4980737,5046274,5111809,5177345,5242883,5308417,5374002,5439489,5636097,5701633,5767176,5963778,6094849,6160385,6225921,6356993,6488065,6553601,6619137,6684674,6815747,6946817,7077907,7340033,7667713,7733249,7798785,7864321,7995393,8192002,8323074,8388609,8454145,8519681,8585217,8650754,8716338,8781825,8912898,8978433,9175042,9306162,9502770,9568257,9699329,9764865,9830450,9895979,9961475,10027009,10092547,10158082,10223618,10420227,10485761,10551297,10616833,10747905,10813442,10878979,10944513,11010110,11075588,11141121,11206706,11272193,11403314,11468803,11534337,11599873,11665409,11730945,11862019,11927553,12124161,12386305,12451841,12517377,12713985,12779522,12845057,12910593,12976129,13172738,13238274,13369345,13434882,13500419,13631489,13697027,13828098,13893633,13959171,14155778,14221313,14352386,14417921,14483458,14548993,14745602,14811138,14876673,14942210,15007745,15073281,15204353,15269891,15400962,15466497,15597569,15728642,15794177,15859713,15925250,15990785,16187394,16318465,16384003,16449537,16515074,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17170433,17235971,17301507,17760257,17825793,17891329,17956865,18022402,18087938,18153473,18284547,18219011,18546690,18677761,18743297,18874369,18939906,19005443,19070977,19136513,19202050,19267585,19464195,19857409,19988482,20119554,20185089,20250625,20316163,20381697,20512769,20578306,20643841,20709377,20774913,20905985,21037058,21102593,21168129,21364738,21495811,21561346,21626882,21692417,22020097,22151169,22216705,22282241,22413313,22478851,22544386,22609921,22740993,22872066,22937602,23003137,23199745,23396353,23527426,23592962,23855106,23986177,24051713,24117249,24182785,24248322,24313858,24641537,24772609,24903682,25100289,25165825,25231361,25427969,25493505,25624578,25690113,25755649,25952257,26017793,26279938,26411009,26542083,26607618,26738690,26804227,26869762,27066369,27262977,27328514,27394049,27459585,27525122,27656194,27787265,27852802,27918338,28246018,28311553,28442626,28508162,28639235,28835842,28901378,28966913,29229058,29360131,29425666,29491202,29622274,29818882,29949954,30015490,30081026,30474241,30670850,30867458,30998530,31064066,31260674,31326210,31391746,31457281,31588354,31719426,31850497,32047106,32505857,32571394,32768001,32833538,32899073,33226753,33488898,33619969,33882113,33947650,34013185,34340866,34471937,34537474,34668545,34734081,34799617,35061761,35192833,35258369,35520513,35586050,35782657,36110337,36175873,36438017,36634625,36896769,36962305,37027841,37158913,37289985,37355521,38141953,38207489,38469633,38535169,38600705,38731777,38928385,39256065,39518209,39649281,39714817,39911425,40173569,40304641,40370177,40828929,40894465,40960001,41222146,41418753,41680897,41877505,41943041,42074113,42205185,42270721,42336257,42532865,42991617,43057153,43253761,43384833,43450369,43581441,43646978,43712513,43778049,43843586,43909121,43974658,44105730,44433409,44498945,44564482,44695554,44761089,44826626,44892161,44957697,45023233,45154305,45219841,45350928,45481985,45613057,45678595,45744129,45809665,46006274,46530561,46858241,46923780,47054849,47316993,47448065,47513601,47710224,47841282,47906818,47972363,48037889,48168976,48234497,48365569,48431105,48496641,48562178,48889857,49020930,49086465,49152001,49283073,49414145,49479684,49741825,49807361,49872897,50003971,50069511,50200577,50266114,50331649,50397185,50462722,50528257,50593793,50855944,50921473,50987009,51052563,51183632,51249154,51314690,51380225,51445761,51576836,51642376,51773441,51838978,51970049,52035586,52101121,52166662,52297729,52363265,52494343,52625409,52822017,52887553,52953089,53018625,53149697,53215234,53346305,53411842,53739523,53870593,54132737,54263812,54460417,54722568,54788098,54853636,54919169,54984705,55115778,55312391,55377922,55443460,55836683,56754179,57212936,57409537,57933825,58458113,58589185,58654723,58720261,58851330,59047940,59572225,59965441,60358658,60424196,60555265,60948481,61079553,61734913,61931521,62455811,62652418,62980098,63176705,64618498,64880641,66912257,68812801,68943873,69599233,69926913,70647809,70909953,70975489,71041025,71172097,71303170,71368706,71761921,71827457,72155137,72220673,72417284,72548357,72613890,73138180,73269249,73400321,73531394,73990146,74121224,74514436,74645508,74711042,74842114,74973185,75038722,75104310,75169793,75366430,75431944,75497476,75628546,75694081,75759619,75956258,76087369,76152833,76349441,76414980,76480513,76546049,76677127,76742658,76939270,77004801,77135876,77266945,77332481,77398017,77529131,77856819,77987870,78184456,78249985,78512177,78577667,78708737,78774276,78839811,78905347,78970885,79167497,79364098,79626248,79691777,79757313,79888388,79953971,80019457,80084994,80216067,80281654,80347137,80412675,80478216,80543747,80674817,80740353,80805889,80871425,81002550,81068083,81264694,81330177],"scriptobject":[5963778,18219009,21954561,22413313,22675457,23789569,23920641,24510465,25362433,25690113,25821185,26542081,28114945,45547521,46071809,46399489,56098817,57081857,57147399,60489729,62521345,66125825,66912257,67502087,67633154,69206024,69926913,78381064,80084998],"string":[851969,1703937,1769473,1835016,1900545,1966081,2031617,2097155,2162689,2228226,2293761,2555905,2621441,2686977,2752515,2818051,2883590,2949121,3014657,3080193,3145729,3211274,3276803,3342337,3407873,3473411,3538951,3604482,3735619,3801092,3866625,3932161,3997699,4128769,4194305,4325377,4390915,4456452,4521996,4653057,4587521,4784132,4849665,4915203,4980740,5046273,5111809,5177345,5242885,5308417,5374020,5439489,5570563,5636097,5701633,5767181,5963780,6094849,6160385,6553601,6619149,6684685,6815750,6946817,7077922,7143431,7340037,7405575,7667718,7864321,7995398,8388610,8519686,8650765,8585219,8716356,8847370,8912897,8978446,9043974,9109510,9175050,9306181,9437191,9502788,9699334,9830469,9895941,9961473,10158082,10223617,10289158,10354698,10682375,10747906,10813446,10551297,10878977,10944514,11010147,11075588,11141126,11206725,11403333,11534342,11599884,11730945,11862018,11927553,11993094,12124161,12386305,12451846,12517377,12713990,12779526,12845057,12910593,12976134,13107205,13172749,13238291,13369350,13434893,13500429,13631489,13697043,13828115,13893633,13959170,14024711,14155785,14221313,14286855,14352397,14417921,14483463,14548999,14745607,14811143,14942214,15007750,15073287,15204353,15269900,15335425,15400973,15466497,15597581,15663112,15728648,15794183,15859725,15925267,15990787,16056325,16187398,16252933,16384012,16515079,16580620,16711686,17235981,17301523,17498118,17694727,17760275,17825799,17891335,18022408,18087953,18219022,18284561,18546713,18939910,19005441,19202061,19267590,19333126,19464206,19529734,19791878,19857417,19988489,20119569,20250631,20316185,20381697,20447238,20512781,20578329,20709382,20774929,20840453,20971527,21037067,21102601,21299209,21364745,21495833,21561352,21626889,21692441,22085646,22151174,22216713,22347781,22413319,22478865,22544409,22609929,22675463,22741004,22872074,22937609,23003151,23199752,23330823,23396358,23527441,23592977,23658504,23855112,24117265,24182793,24248325,24313866,24379401,24576009,24641545,24903697,24969222,25034758,25100305,25165830,25427979,25559046,25624581,25755654,25821191,26017793,26083337,26214406,26279941,26476553,26542098,26607625,26738699,26804240,26869767,27066377,27262982,27459590,27590662,27656197,27787269,27852805,27983873,28049415,28114950,28311558,28442629,28573701,28639250,28704770,29032453,29097989,29229061,29294597,29360144,29425669,29622277,29687814,29753350,29818885,29884429,30015493,30081026,30146565,30277637,30670853,30736389,30801925,30932997,30998533,31064069,31260680,31719429,32047109,32112645,32178181,32243717,32309253,32374789,32440325,32636934,32768005,32833549,32899078,33095688,33619974,33685510,33751048,33882118,34078725,34209797,34275333,34471942,34668550,34734086,34799622,35127302,35258374,35323910,35389446,35520518,35651591,35979269,36044807,36110342,36175879,36241415,36372494,36438022,36634632,36896774,36962310,37027846,37158918,37289990,37552135,37748743,37945351,38010888,38076423,38141958,38207495,38273031,38469638,38600710,38666246,38731782,38928390,39387150,39518215,39649286,39714822,39845894,39911430,40042503,40108038,40173574,40239111,40370182,40435719,40697865,40894471,41025543,41222146,41287692,41418758,41484297,41549829,41615366,41680902,41943046,42074119,42205190,42270738,42401806,42467334,42532870,42598407,42729477,42991622,43057159,43122694,43450374,43515911,43581447,43712518,43778054,43843599,43909126,43974658,44040204,44105729,44302348,44433415,44498950,44564495,44695555,44761094,44957702,45023239,45088770,45219858,45350928,45481990,45613072,45678599,45744135,45875214,45940737,46006274,46071809,46268417,46399489,46530566,46596098,46661633,46727169,46792710,46858247,47316998,47382529,47513607,47579138,47710224,47841283,47972358,48037895,48168976,48234502,48300034,48365574,48431106,48496646,48562179,48627713,48693249,48824321,48955402,49086470,49152002,49217548,49283088,49348609,49676289,49741831,49807367,49872902,50003984,50069508,50331654,50462722,50528262,50593810,50659334,50855948,50987015,51052547,51118086,51183632,51314691,51380240,51445763,51576837,51642380,51773442,51838979,51970055,52035586,52101126,52297734,52363267,52428809,52494340,52625415,52822022,52953103,53018630,53149711,53346306,53411841,53608449,53739524,53870598,54001666,54067203,54132754,54329346,54460422,54525953,54722572,54788098,54853648,54984711,55050241,55115779,55181313,55312388,55377922,55443461,55508999,55836678,55967746,56098817,56295426,56754180,56819713,56885249,56950790,57016326,57081857,57212940,57409542,57802753,58064897,58589189,58654724,58720259,58851329,59047941,59244545,59310086,59637766,60030982,60358657,60424197,60686342,60751873,61079559,62521350,62652420,62783489,62980097,63242247,63504391,63569926,63635463,63897601,64028678,64356353,64618500,64880647,64946182,65077255,65339398,65798145,67108870,67239943,67371015,67633153,68091911,68222982,68485126,68943873,69664775,69795847,69926920,70057985,70516742,70909953,71172097,71303172,71368707,71761921,72351751,72417285,72482817,72548356,72613889,72941574,73072649,73138180,73269252,73334791,73596934,73531393,73662471,73990145,74121224,74186759,74252295,74514437,74645508,74711041,74842113,74973188,75038721,75104330,75169794,75366440,75431949,75497476,75628559,75694084,75759617,75956236,76087401,76152833,76218374,76283908,76349445,76415003,76480513,76546049,76742657,77135876,77266945,77332481,77398017,77463559,77529093,77725701,77856839,77922311,77987847,78184452,78249985,78512195,78577669,78708737,78839809,78970884,79167493,79364099,79495172,79626245,79691777,79888392,79953988,80019457,80084997,80216065,80281674,80347138,80412673,80478213,80543745,80674819,80805889,80871425,81002570,81068100,81199108,81264714,81330177],"sourcemapuri":[61538305,67174404,78839809],"sorry":[458753,61603841],"source":[1703938,2293761,2555905,2686978,7471105,7798786,9764866,16842758,16908294,17563649,20185094,21168134,22282246,23724033,23986182,45547524,49545217,60358657,61538305,62980097,67174402,68943874,70909954,72548353,72613891,73531395,74776577,78839809,78970881,80412673],"simply":[60162049,62128129,64552961,71237633],"static":[3,655362,786435,917507,983042,2359299,3538945,4521985,8060931,8192003,8323075,8454145,8781827,8978433,9568257,10092547,10354689,10420227,11272197,14286849,14352385,14417921,15335425,15466497,15794177,15925249,17039363,17170435,17760257,17956867,18415619,18808835,19005441,19398659,19922947,20054019,20381697,20512769,21233667,21692417,22544385,24117249,24903681,25231363,26017793,26476545,26935299,27066369,27983873,31981571,34406404,39780355,45285380,54591491,55771139,57475075,57737217,58130433,60293121,61407233,62193665,62324738,63045633,63635459,64684033,65273857,65536003,67043330,67895299,67960835,68419587,68616195,69533697,69992449,70123523,71958529,75104257,75956225,76087297,76611587,76677121,77070339,77201409,77266945,77594625,77856769,77987841,78315523,78512129,78577665,78774273,79953921,80281601,81002497,81068033,81264641],"state":[1245185,1507329,51511297,72548353,73924609,74448897,78970881],"streamingcontext":[3014657,3407873,17563653,19726344,23724037,24707080,46006273,54788097,72548354,78970882],"starttimestamp":[53805057,70189060,80019457],"synchronously":[75104257,79953921,81264641],"systemexception":[72548353,78970881],"simultaneously":[35389441,35520513,37289985,42467329],"suppresses":[76939265,78446593],"satisfy":[75038721],"semicolon":[22740993,42270721,45219841,50593793,52756482,52953089,53149697,54132737,54657025,55508993,63504385,63635457,69992449,79888386],"specify":[3342345,5963785,64094209,66584577,67829761,69402625,76939265,80085001,80543753],"systems":[76939265],"significantly":[71041025,72220673],"structs":[18219009,26542081,73990145,75038721,75759617],"setelement":[3538945,4521985,10485764,75956225,77987841],"setvalue":[10944515,11075587,16711681,23199745],"similar":[8912897,9961473,11862017,16580609,19005441,23003137,43843585,44564481,45613057,47120385,49283073,51380225,64421889,68878337,79429633],"simple":[31981569,39780353],"syntax":[1,393217,524289,655361,327681,786433,917505,983041,1114113,2359297,5505025,5832705,6029313,6225921,6291457,6356993,6422529,6488065,6619137,6684673,6750209,6815745,6881281,7012353,7143425,7208961,7274497,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7929857,7995393,8060930,8126465,8192002,8257537,8323074,8388609,8454145,8519681,8585217,8650753,8781826,8847361,8912897,8978433,9043969,9109505,9175041,9371649,9437185,9568257,9633793,9699329,9764865,9961473,10027009,10092546,10158081,10223617,10289153,10354689,10420226,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11075585,11141121,11272193,11337729,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711682,16777217,16842753,16908289,16973825,17039362,17104897,17170434,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956866,18022401,18087937,18153473,18219009,18284545,18350081,18415618,18481153,18546689,18612225,18677761,18743297,18808834,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398658,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922946,19988481,20054018,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233666,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199746,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231362,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,26935298,27000833,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28246017,28180481,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35454977,35520513,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36306945,36372481,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38404097,38469633,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40632321,40697857,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,41943041,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43712513,43778049,43843585,44040193,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44761089,44892161,44957697,45023233,45088769,45219841,45285377,45416449,45481985,45613057,45744129,45809665,45875201,46137345,46333953,46465025,46530561,46792705,46858241,46989313,47054849,47120385,47185921,47251457,47316993,47513601,47644673,48037889,48234497,48365569,48889857,48955393,49086465,49217537,49283073,49414145,49741825,49807361,49872897,50135041,50331649,50528257,50593793,50659329,50724865,50790401,50921473,50987009,51118081,51380225,51511297,51970049,52101121,52297729,52428801,52559873,52625409,52953089,53149697,54132737,54198273,54460417,54591489,54919169,54984705,55508993,55771137,56033281,56229889,56360961,56688641,56950785,57016321,57147393,57278465,57344001,57475073,57868289,57999361,58195969,58327041,58392577,58458113,58523649,58785793,58916865,58982401,59179009,59310081,59441153,59506689,59572225,59637761,59703297,59768833,59899905,59965441,60030977,60096513,60162049,60489729,60555265,60620801,60686337,60817409,60882945,60948481,61079553,61145089,61341697,61472769,61669377,61734913,61865985,61931521,62062593,62128129,62259201,62324737,62390273,62521345,62586881,62717953,62849025,62914561,63111169,63176705,63242241,63307777,63373313,63438849,63504385,63569921,63635457,63700993,63766529,63832065,63963137,64028673,64094209,64159745,64225281,64290817,64421889,64487425,64552961,64749569,64815105,64880641,64946177,65011713,65077249,65142785,65208321,65339393,65404929,65536001,65601537,65732609,65667073,65798145,65929217,65994753,66060289,66125825,66191361,66256897,66322433,66387969,66453505,66519041,66584577,66650113,66715649,66846721,66912257,66977793,67043329,67108865,67174401,67239937,67305473,67371009,67436545,67502081,67567617,67698689,67764225,67829761,67895297,67960833,68026369,68091905,68222977,68288513,68354049,68419585,68485121,68550657,68616193,68681729,68747265,68812801,68878337,68943873,69009409,69074945,69140481,69206017,69271553,69337089,69402625,69468161,69599233,69664769,69730305,69795841,69861377,69926913,69992449,70057985,70123521,70189057,70254593,70320129,70385665,70451201,70516737,70647809,70713345,70778881,70844417,70909953,70975489,71041025,71106561,71172097,71237633,71303169,71368705,71434241,71499777,71565313,71630849,71696385,71761921,71827457,71892993,71958529,72024065,72089601,72155137,72220673,72286209,72351745,72417281,72482817,72548353,72613889,72679425,72744961,72810497,72876033,72941569,73007105,73072641,73138177,73203713,73269249,73334785,73400321,73465857,73531393,73596929,73662465,73728001,73793537,73859073,73924609,73990145,74055681,74121217,74186753,74252289,74317825,74383361,74448897,74514433,74579969,74645505,74711041,74842113,74907649,74973185,75038721,75104257,75169793,75235329,75300865,75366401,75431937,75497473,75563009,75628545,75694081,75759617,75825153,75890689,75956225,76021761,76087297,76152833,76218369,76283905,76349441,76414978,76480513,76546049,76611585,76677121,76742657,76808193,76873729,76939265,77004801,77070337,77135873,77201409,77266945,77332481,77398017,77463553,77529089,77594625,77660161,77725697,77791233,77856769,77922305,77987841,78053377,78118913,78184449,78249985,78315521,78381057,78446593,78512129,78577665,78643201,78708737,78774273,78839809,78905345,78970881,79036417,79101953,79167489,79233025,79298561,79364097,79429633,79495169,79560705,79626241,79691777,79757313,79822849,79888385,79953921,80019457,80084993,80150529,80216065,80281601,80347137,80412673,80478209,80543745,80609281,80674817,80740353,80805889,80871425,80936961,81002497,81068033,81133569,81199105,81264641,81330177],"searchpath":[52756481,55508996,79888385],"stream":[7077889,11010049,39059468,39452684,54001665,58261505,58392583,65798152,69337094,75366401,76087297,76480513,80674817],"selects":[13500417,13697025,14352385,14745601,14811137,15400961,15466497,15794177,15925249,16711681,17235969,17301505,17891329,18284545,19202049,19988481,20119553,20316161,21102593,21495809,22478849,22544385,22937601,23199745,23527425,24903681,26017793,27066369,35979265,36896769,37027841,38535169,38731777,39256065,39649281,40304641,40828929,40960001,41943041,42270721,42336257,42532865,42729473,43253761,43778049,44498945,44761089,44892161,45219841,45481985,45809665,47054849,48234497,48889857,49086465,49414145,50593793,50921473,52101121,52297729,52953089,53149697,54132737,54919169,79560706],"second":[10944513,11075585],"serves":[851969,1703937,1835009,1900545,1966081,2162689,2228225,2293761,2555905,2621441,2686977,2883585,3014657,3080193,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4587521,4849665,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7864321,8716289,9306113,9502721,9830401,11010049,11206657,11403265,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,74121217,74514433,74711041,75104257,75169793,75366401,75431937,75628545,75956225,76087297,76152833,76480513,76546049,76742657,77266945,77332481,77398017,77856769,77987841,78249985,78577665,78708737,78970881,79626241,79691777,79888385,79953921,80019457,80084993,80281601,80347137,80478209,80543745,80674817,80805889,80871425,81002497,81068033,81264641,81330177],"standard":[8847361,9175041,13238273,13697025,13828097,15400961,15597569,15859713,17301505,18546689,19202049,20119553,20316161,20578305,20774913,21495809,23527425,25100289,42270721,45219841,50593793,52953089,53149697,54132737,61734913,61931521,65470466,70123526,71958530],"scriptid":[56819713,73007108,80347137],"simulate":[62062593,67567617],"sourceindex":[16842757,16908293,20185093,21168133,22282245,23986181],"setenumeratorfactory":[5767171,33423365,35913733,37617669,49610755,75431939],"selector":[8978434,11075586],"sample":[4194307,7077889,10747905,11010049,38338562,39124994,49545218,53805057,57540611,66256903,67436546,68354049,68550658,71565313,71761928,72810497,74055681,75366401,76087297,80019457,80150529],"setting":[3342337,5963777,6488066,23396354,24051714,25165826,25952258,28966914,47448065,53542913,55312388,56033281,57671681,57737217,57933825,58130433,58523649,60293121,61407233,61669377,62193665,62259201,62717953,63045633,63373313,64159745,64684033,65273857,65863681,66781185,67764225,68157441,69533697,71499777,72286209,73924609,73990145,74448897,74842113,75104257,75235329,75563009,75759618,76021764,76087297,77856769,78512129,79167493,79953921,80084993,80216066,80281601,80543745,81002497,81068033,81264641],"stack":[393217,3735553,5373953,8716289,9306113,9502721,9830401,11010049,11206657,11403265,15663108,23658500,48955396,52428804,59834369,60293121,60358657,62980097,66715649,71827461,72548353,73400325,75104257,75366401,76087298,77856769,78512129,78970881,79953921,80281601,81002497,81068033,81264641],"setdynamicpropertiesgetter":[5767169,39321604,75431937],"safety":[56688641,66650113],"safely":[17104897,25886721,36700161,37879809,38404097,50135041],"searched":[7929857]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_116.json b/docs/Reference/fti/FTI_116.json index c89f45e7..d244ec58 100644 --- a/docs/Reference/fti/FTI_116.json +++ b/docs/Reference/fti/FTI_116.json @@ -1 +1 @@ -{"total":[39911429,49086466,49479682,49872898,51511297,56164354,56557570,59244549],"typed":[3407885,3670019,5046285,8388609,9306113,9568257,9699330,10289154,10420226,10485762,10616835,10682370,11075586,11206658,11337730,11665410,12058626,12189698,12255233,12582914,16056322,16449538,17301506,38535170,40239105,41156609,46989313,58785805,59768845,60424194,60751880,61210625,61341697],"types":[3735553,4259844,4587521,5046274,6291457,6356993,6553601,7143430,7208961,7536641,8060933,8126466,8388609,8454146,8716289,8978433,9437186,9699329,9764866,10092546,10223617,10289153,10420225,10485761,10616833,10682369,10813442,11075585,11206657,11272195,11337729,11468803,11665409,11796482,11862018,12058625,12189697,12386306,12451843,12582913,12713994,12779523,12910593,13041666,13172737,13500418,13565954,13697026,13631494,13828097,13893633,14286850,14483458,14548993,14745601,15007746,15073281,15138818,15269890,15532033,19136514,19398657,19464193,19922946,20447233,20709378,21037058,21233665,21430274,21889035,22085633,22806529,23199746,23789574,24248322,24641537,25100290,30932994,36765700,37683204,38010883,38535169,39059458,39321601,39452673,39976961,40042498,40566785,40632322,42074114,42205186,43057156,43581441,43909122,44171266,44957698,45088770,46268418,46465028,47185921,47316993,47775746,53411841,54067211,54722561,55377925,55312385,58195971,58327043,58392579,58785795,60096515,60358657,60817411,60882947,61407235,61538307,61603843,61669377],"throws":[9043969,10616833,10878977,12910593,13565953,45678593,45744129,51904513,58654721],"try":[983041,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4653057,4849665,4980737,5046273,5111809,5439489,6881281,7798785,12910594,19595265,41943041,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58261505,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60227585,60358657,60489729,60555265,61472769],"totalexternalsize":[39911425,56557572,59244545],"target":[3080193,5111809,7929861,8519685,8585221,9109509,9240581,9371653,9633797,9895941,9961477,10027013,10158085,10551301,10747909,11534341,13303813,13828101,13959173,14417925,18415617,19398662,20119558,20905985,21561346,22347779,22609926,22872066,23396358,23658497,23855105,24510466,25034753,25886721,38010884,42598401,46923779,47972353,50462721,54591490,54722562,55312385,57606145,58654721,58982401,59506692,60358658],"tostatictype":[3407873,5046273,11730948,58785793,59768833],"termination":[50200578,50724865,53936130,54460417,59441154],"throw":[3735553,4587521,6291457,6356993,6553601,7208961,7536641,8716289,8978433,17956865,20971521,28770305,44367873,58195969,58327041,58392577,59441154,60096513,60817409,60882945,61407233,61538305,61603841],"trace":[17367042,20316162,28246018,43778050],"tvalue":[2752516,16121858,17039361,17694721,19595266,42663937,43253761,46858242,49152001,57540614],"tobyte":[3407873,5046273,10420229,58785793,59768833],"typeid":[38928385,42008577,42598401,46137345,46923777,47972353,53477377,54722561,55312385,59113473,59506689,60358657],"table":[13631489,13828097,19398657,23789569,45416449,47382532,60030977,60751873,61669379],"tresult":[2949124,17104897,17825793,18546689,19333121,38862852,61079556,61145089],"trygetvalue":[1769473,2752513,3276801,4259841,12255233,19595270,54067201,56426497,57540609,57999361],"tosbyte":[3407873,5046273,10289157,58785793,59768833],"targetsite":[45154305,45744129,51314689,58654721],"typo":[41943041],"tas":[6029313,7274497,16252929,17104898,17825794,18546690,19333122,19726337,20512769,21299201],"trysetmember":[3014657,4521985,55705601,60227585],"todecimal":[3407873,5046273,12058629,58785793,59768833],"todouble":[3407873,5046273,9699333,58785793,59768833],"timespan":[51249159,52887559,55312385],"toenumerable":[2949121,19005444,61079553],"task":[2949129,6029319,7274502,16252930,17104910,17825806,18546690,19333122,19726350,20054026,20512782,21299202,38862856,57278470,61079561,61145091],"third":[9306113,9568257],"temporary":[50593793],"tochar":[3407873,5046273,11206661,58785793,59768833],"times":[1179649,13434881,28049409,28442625,28966913,29949953,30998529,32178177,32768001,34013185,34930689,35848193,36569089,37879809,39321601,56033281,59703297],"typelibenums":[5046273,7077892,58785793],"timestamp":[37093378,38141954,50266119,50855939,52756483,53673986,56754178],"totask":[2949121,20054020,61079553],"trydeleteindex":[3014657,4521985,55705601,60227585],"touppercase":[9306113],"totalavailablesize":[39911425,56164356,59244545],"threw":[12910593],"tryfunc":[12910600],"true":[5242881,5373953,5898241,6094849,6225921,6946818,8912897,9175041,9371649,9764865,10027009,10158081,10223618,12910594,13631489,14352385,14811137,15335425,15400961,16187393,16318465,16973825,17039361,17694721,18284545,18874370,19595265,22282241,22937601,23068673,23527425,23789569,23986177,24117249,24838145,25362433,25624577,25755649,26411009,27066369,27918337,27983873,28049409,28377089,28573697,29294593,30081025,30343169,30605313,31981569,32636929,34013185,35520514,37879809,38273026,40042498,41353217,41746433,42336257,42467329,42795010,43057153,43122690,43450369,44171266,45154305,45219841,45875201,46333954,46465025,47710209,47906817,48234497,48889858,49414145,51052546,51314689,52035585,52559873,52822018,53280769,54001665,54853633,56098817,58064897],"tree":[37093377,38141953,39321601,48562177,49807361,53673985,55115777,56754177],"title":[1310721],"tosingle":[3407873,5046273,11075589,58785793,59768833],"toarray":[3670017,7143425,8060929,8126465,9306113,9830401,16449540,60751873],"tryunaryoperation":[3014657,4521985,55705601,60227585],"tryconvert":[3014657,4521985,55705601,60227585],"time":[38404098,41549825,42074114,47251457,50987009,51249153,51707905,52625409,52887553,54853633,55443457,55574529,57147394,58261506,60817410,61145089,61669378],"tib":[52690945,53149697,53542913,54263809],"tojson":[3604481,23134212,53673985],"typedarray":[61341697],"type":[65537,131073,196609,262146,327681,393217,458753,524289,655361,786433,851969,1572867,1638402,1703939,1769474,1835010,1900546,1966082,2031618,2097154,2293775,2359298,2424833,2490370,2555906,2621441,2686977,2752513,2818049,2162690,2228226,2883586,2949121,3014660,3080193,3145729,3211265,3276802,3342338,3407898,3473410,3538946,3604482,3670017,3735585,3801091,3866626,3932162,3997698,4063234,4128769,4194305,4259862,4325378,4390914,4456450,4521988,4587554,4653058,4718593,4784129,4849666,4980738,5046311,5111810,5177345,5242887,5439490,5570561,6291490,6357026,6553634,6881282,7077896,7143432,7208994,7471123,7536674,7602184,7798786,7929872,7995412,8060932,8126483,8257543,8323076,8388609,8454170,8585232,8650755,8716322,8912904,8978466,9043974,9240581,9306122,9437203,9502722,9568261,9699335,9764870,9830409,9895941,10092556,10223624,10289159,10354694,10420231,10485767,10616839,10682375,10813442,10878994,11010064,11075591,11141129,11206663,11272200,11337735,11468808,11599874,11665415,11730950,11796482,11862018,11993090,12058631,12124175,12189703,12255241,12386306,12451848,12517389,12582919,12713992,12779528,12845059,12910596,13041681,13107202,13303811,13500433,13565970,13697039,13631490,13828103,13959171,14090243,14286863,14483474,14942210,15007762,15138834,15269906,15794178,15925251,16252929,16580610,16777218,17104899,17563651,17760258,17825795,18153473,18350082,18546691,18612227,18743299,19005441,19136531,19333123,19398663,19660802,19726337,19922961,20054017,20512769,20643843,20709397,20905985,21037077,21299201,21364738,21430293,21561346,21889034,22347779,22413315,22609923,22872066,23199763,23265282,23396355,23789570,23855105,24248337,24510466,25034753,25100309,25886721,30932993,31260674,31326210,31457289,31784967,32047112,32505864,32899073,33292311,33619970,33751045,33947650,34209800,34406402,34537473,34865158,34996225,35258391,35389441,35717122,36175879,36634625,36765703,37027841,37093377,37158926,37617665,37683208,37814273,38010887,38141953,38404097,38797313,38928386,38993921,39059459,39256065,39387137,39518209,39780353,39911425,40042498,40239105,40304641,40435713,40632323,40697857,41156609,41222145,41484289,42008578,42074115,42205187,42336257,42532865,42598402,43057154,43188225,43450371,43909123,43974657,44171266,44433416,44957699,45088771,45416449,45744129,45809666,45875201,46137345,46202881,46268419,46333953,46465026,46596097,46858241,46923780,47120385,47644673,47775747,47906817,47972354,48365569,48824321,49414147,50003969,50462721,50593793,50659337,51052545,51576836,52166657,52428802,52822017,53084163,53477382,53673987,53870595,54001665,54067234,54198273,54591490,54722565,55115779,55246850,55312387,55705605,55836677,55902212,56229891,56426499,56492035,56754179,56950789,57016322,57147393,57212933,57278465,57540610,57606145,57671683,57802754,57933829,57999363,58064897,58130436,58196005,58261507,58327076,58392613,58458114,58523651,58589187,58654723,58720259,58785832,58851331,58916866,58982402,59047952,59113478,59179009,59244547,59310083,59375618,59441153,59506695,59572225,59637764,59703299,59768859,59834370,59899907,59965441,60030978,60096549,60162050,60227589,60293122,60358661,60424194,60489731,60555267,60620801,60686337,60751876,60817445,60882981,60948482,61014018,61079554,61145090,61210625,61276162,61341697,61407269,61472772,61538341,61603877,61669383],"top":[65537,131073,196609,262145,327681,393217,458753,524289,655361,786433,851969,1179649,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4980737,5046273,5111809,5177345,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,30670849,30932993,31064065,31457281,31719425,31784961,32047105,32374785,32440321,32505857,32571393,32899073,33030145,33292289,33357825,33423361,33488897,33619969,33751041,33816577,33882113,34078721,34209793,34340865,34406401,34471937,34537473,34603009,34668545,34799617,34865153,34996225,35061761,35192833,35258369,35323905,35389441,35586049,35651585,35717121,35782657,35913729,35979265,36110337,36175873,36241409,36372481,36438017,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37289985,37355521,37421057,37552129,37617665,37683201,37748737,37814273,37945345,38076417,38141953,38338561,38404097,38600705,38666241,38797313,38862849,38928385,38993921,39059457,39124993,39256065,39387137,39518209,39649281,39714817,39780353,39911425,40173569,40239105,40304641,40370177,40435713,40697857,40632321,40763393,41091073,41156609,41222145,41287681,41418753,41484289,41811969,41877505,41943041,42008577,42074113,42205185,42532866,42598401,43188225,43909121,44957697,45088769,45416449,45744129,45809665,46137345,46202881,46268417,46596097,46858241,46923777,47120385,47644673,47775745,47972353,48365569,48824321,51576835,52428801,53084163,53477379,53673986,53870595,54067204,54722563,54853640,55115778,55246849,55312387,55705602,55836674,55902210,56033281,56229889,56426500,56492034,56754178,57016321,57147393,57212929,57540610,57671681,57802753,57933825,57999364,58130435,58195971,58261508,58327042,58392579,58458113,58523651,58589187,58654724,58720258,58785794,58851330,58916866,58982403,59047937,59113475,59244546,59310083,59375618,59506691,59572225,59703298,59768834,59834370,59899906,60030977,60096515,60162050,60227586,60293122,60358659,60424194,60489731,60555266,60751874,60817411,60882947,60948482,61014018,61079553,61276162,61407235,61472770,61538307,61603843],"typeargs":[12124165,12517381,13041669,13500421,13697029,14286853,19136518,19922950,23199750,24248326],"trygetmember":[3014657,4521985,55705601,60227585],"torestrictedhostobject":[2293764,7929861,8585221,9240581,9895941,32505860,59047940],"trybinaryoperation":[3014657,4521985,55705601,60227585],"topic":[1,65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6094849,6029313,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,8060929,7995393,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13697025,13631489,13762561,13893633,13828097,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19726337,19660801,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20381697,20316161,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26148865,26083329,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35520513,35454977,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36372481,36306945,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38469633,38404097,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40697857,40632321,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43909121,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,44957697,45023233,45088769,45154305,45219841,45285377,45350913,45416449,45481985,45547521,45613057,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268417,46333953,46399489,46465025,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47644673,47710209,47775745,47841281,47906817,47972353,48037889,48103425,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55377921,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669377],"trycreateinstance":[3014657,4521985,55705601,60227585],"trailing":[47710209,48234497,52559873],"tohosttype":[2293762,7471109,7995397,31784962,59047938],"trygetindex":[3014657,4521985,55705601,60227585],"toasyncenumerable":[2949121,18153476,61079553],"totalphysicalsize":[39911425,49872900,59244545],"tryinvokemember":[3014657,4521985,55705601,60227585],"trydeletemember":[3014657,4521985,55705601,60227585],"topromise":[2949128,16252933,17104901,17825797,18546693,19333125,19726341,20512773,21299205,38862856,61079560],"timestamps":[50266113,50855937,52756481],"tasks":[2621441,2686977,2818049,3145729,3211265,3670017,3735553,4128769,4521985,4587521,4980737,5177345,6291457,6356993,6553601,7208961,7536641,8716289,8978433,24576001,24707073,30212097,36110337,36831233,40763393,57147393,58195969,58261505,58327041,58392577,58916865,59375617,59834369,60096513,60162049,60227585,60293121,60424193,60751873,60817409,60882945,61014017,61407233,61538305,61603841],"totalheapsizeexecutable":[39911425,49479684,59244545],"treated":[44433409,50659329],"thread":[2293763,2949124,4784132,6291458,6356994,6553602,6881284,7471105,7536642,7929857,8716290,8978434,9240577,17104897,17956865,18546689,19726337,20971521,21299201,26279937,26869761,28770305,30277633,30474242,31260674,31522817,31784961,31916033,32309249,32505858,32636930,33161217,33226754,33685505,33947650,34144257,34734081,35520514,35454977,36306945,37224449,38010881,38207489,38600706,38862852,39649282,40566785,41746434,44367873,44695553,45088769,45613057,52494339,57016325,57999361,58195969,58392579,58720262,59047939,60096515,60817411,60882947,61079556,61407237,61538309,61603845],"tracked":[50200577,53936129],"tkey":[2752517,16121858,17039362,17694722,19595266,42663937,43253761,46858242,49152002,57540615],"typeof":[3407874,5046274,10878984,13565960,36175874,45154306,51314690,58785794,59768834],"typename":[5242881,7077889,7602177,8257537,8912897,9043969,9240577,9306113,9830401,9895937,10223617,10354689,10616833,10878977,11141121,12124165,12255233,12517381,13041669,13303809,13500421,13697029,13959169,14286853,15794177,16580609,17104897,17825793,18546689,19136518,19333121,19922950,22609921,23199750,23396353,24248326,31260673,31326209,33947649,55836673,57212929,57933825,60751873],"trycatch":[3407873,5046273,12910597,58785793,59768833],"tostring":[1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3080193,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866626,3932161,3997697,4063233,4259841,4325377,4390914,4456449,4521985,4587521,4653057,4849665,4980737,5046273,5111810,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798786,8716289,8978433,12910593,18677765,22544389,24379397,27197441,30801925,30867457,31653893,32112641,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492034,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654722,58720257,58785793,58851329,58982401,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227585,60358657,60489729,60555266,60817409,60882945,61407233,61472770,61538305,61603841],"trysetindex":[3014657,4521985,55705601,60227585],"test":[8912898,9175042,9764865],"text":[3604481,17367041,20316161,23724034,28246017,38010881,43778049,53673985,60489729],"textwriter":[23724037],"thrown":[12910593,16384001,22675457,38010882,39845889,41025537,42729473,43646977,44892161,45744131,46006273,46202883,46727169,48365572,48627713,49545217,50135041,58458116,58654724,58982404,61145090],"tunneling":[39059457,40632321,41353217,42074113,42205185,43909121,44957697,45088769,45219841,46268417,47775745,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"typ":[8126465,8454145,9437185,12713986,13041665,13500417,13697025,14286849,14483457,15007745,15138817,15269889,19136513,19922945,20709377,21037057,21430273,21889026,23199745,24248321,25100289,44433409,50659329],"tcp":[25231361,26214401,26804225,27590657,27656194,28835841,28901377,29163521,29425665,29622274,29884417,30015489,39387137,55181313,58851329],"timers":[61145089],"totalheapsize":[39911425,49086468,59244545],"terminates":[45678593,50200577,51904513,53936129],"tryinvoke":[3014657,4521985,55705601,60227585]} \ No newline at end of file +{"truthy":[9895937,31391747,59113473,68681730,76349441,77529089],"tasks":[2097153,2752513,2818049,3276801,3473409,3735553,3997697,4063233,4259841,4390913,5373953,5570561,5963777,7077889,8716289,9306113,9502721,9830401,11010049,11206657,11403265,24510465,25296897,46465025,51904513,56164353,56623105,70320129,72744961,73138177,74645505,75104257,75366401,75497473,76087297,76283905,77135873,77856769,78184449,78512129,79495169,79953921,80084993,80281601,80936961,81002497,81068033,81199105,81264641],"terminates":[58982401,65601537,71041025,72220673],"toint64":[3538945,4521985,15204357,75956225,77987841],"trygetvalue":[1966081,2883585,3080193,3211265,13959169,17498118,71368705,74121217,75628545,76414977],"typeof":[3538946,4521986,11862024,19005448,49479682,57278466,63963138,75956226,77987842],"totask":[3670017,20054020,78774273],"tresult":[2818052,3276804,3473412,3670020,3997700,4390916,14876688,16973840,17956865,19136528,19398657,22020112,25231361,26935297,46202884,49938436,54263812,73138180,74645508,75497476,76939265,77135876,78184452,78774276],"try":[458753,851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,9895937,15990786,17498113,27525121,27918337,28246017,28508161,28704769,28770305,28835841,29491201,29556737,29949953,30081025,30212097,30343169,30408705,30474241,30605313,30867457,31129601,31195137,31260673,31326209,31588353,31784961,31850497,31916033,32571393,32702465,32964609,33030145,33095681,33357825,33816577,33947649,34340865,34537473,34603009,35586049,35848193,51052545,54067201,61603841,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75169793,75366401,75431937,75628545,75759617,75956225,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,80019457,80084993,80216065,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81330177],"timespan":[68354055,72810503,75038721],"termination":[71041026,71827457,72220674,73400321,77791234],"tobyte":[3538945,4521985,12386309,75956225,77987841],"tryinvokemember":[3342337,5963777,80084993,80543745],"trailing":[56229889,66453505,67698689],"table":[16711681,18219009,23199745,26542081,54657025,67895300,69992449,78184449,80412675],"tunneling":[57737217,58130433,60293121,61407233,62062593,62193665,63045633,64684033,65273857,67567617,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"typ":[8454145,8978433,10354689,14286849,14352385,14417922,15335425,15466497,15794177,15925249,17760257,20381698,20512769,21692417,22544385,24117249,24903681,26017793,26476545,27066369,27983873,56033281,62717953],"trygetindex":[3342337,5963777,80084993,80543745],"thrown":[15990785,20709377,27262977,45547522,58327041,58458113,59965441,60358659,60555265,60948481,62455812,62980099,63176705,68812801,70647809,71106561,72548356,73793537,76939266,78905348,78970884],"trygetmember":[3342337,5963777,80084993,80543745],"tryget":[7340051,9895955,27525125,27918341,28246021,28508165,28704773,28770309,28835845,29491205,29556741,29949957,30081029,30212101,30343173,30408709,30474245,30605317,30867461,31129605,31195141,31260677,31326213,31588357,31784965,31850501,31916037,32571397,32702469,32964613,33030149,33095685,33357829,33816581,33947653,34340869,34537477,34603013,35586053,35848197,51052563,54067219,76349459,77529107],"tkey":[3211269,17498114,18939906,19529730,19791874,58589186,60686338,63242241,65732609,76414983],"typedarray":[69861377],"takes":[2818050,3276802,3473410,3997698,4390914,14876673,18874369,19136513,20905985,46202882,49938434,73138178,74645506,75497474,77135874,78184450],"trace":[15663106,23658498,48955394,52428802],"trycatch":[3538945,4521985,15990789,75956225,77987841],"tracked":[71041025,72220673],"time":[29294593,29556737,29818881,31588353,42008577,59834370,60293122,61734913,61931521,64880641,68354049,69599233,71565313,72744962,72810497,74055681,75366402,76087298,76611585,76939265,77070337,80412674],"throw":[3735553,5373953,8716289,9306113,9502721,9830401,11010049,11206657,11403265,17104897,25886721,37879809,50135041,75104257,76087297,77791234,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"toarray":[4390913,7995393,8585217,8978433,9109505,11075585,19595268,78184449],"threw":[15990785],"typelibenums":[4521985,7929860,75956225],"touint32":[3538945,4521985,12517381,75956225,77987841],"tochar":[3538945,4521985,12124165,75956225,77987841],"true":[6291457,6356993,6422529,7143425,7208961,8519682,9568257,9961473,10289153,10616833,11665410,11993089,13041665,15269889,15532033,15990786,16121857,17498113,17629185,18219009,18939905,19333121,19660801,19791873,20840449,20971521,21430274,21954561,22675457,23789569,24444929,24838145,25559041,26411009,26542081,26673153,26804225,27000833,27328513,27459585,27525121,27590657,27918337,28246017,28377089,28508161,28704769,28770305,28835841,28901377,29491201,29556737,29949953,30081025,30212097,30343169,30408705,30474241,30605313,30867457,31129601,31195137,31260673,31326209,31391745,31588353,31784961,31850497,31916033,31981570,32571393,32702465,32964609,33030145,33095681,33226753,33357825,33488897,33816577,33947649,34340865,34537473,34603009,35389441,35520513,35586049,35848193,36241409,36372481,36634625,37289985,37945345,38273025,39190529,39387137,39518209,39780353,40239105,40501249,41156609,41353218,41746433,42467329,42926081,43515905,43581441,44171265,44433409,46333954,46989314,49741825,52625409,56229889,56360961,56688642,57278465,58523650,58916865,60817409,61669378,62062593,62849025,63963137,64159746,64290817,64421889,66387969,66453505,66650114,67567617,67698689,67764226,68878337,72679425,73924609,74448897,75235330,75563009,76611585,79822849],"tree":[49545217,53805057,57540609,65142785,67436545,71761921,80019457,80347137],"titem":[5767172,37617675,37814283,47775746,49610754,75431940],"trydeletemember":[3342337,5963777,80084993,80543745],"toint32":[3538945,4521985,11730949,75956225,77987841],"todecimal":[3538945,4521985,13893637,75956225,77987841],"temporary":[78118913],"tryconvert":[3342337,5963777,80084993,80543745],"total":[55246853,66191362,66977794,68747266,69730306,70975489,73859074,77398021],"torestrictedhostobject":[2490372,8192005,8323077,10092549,10420229,52166660,76677124],"test":[9568257,9961474,10616834],"text":[6160385,15663105,23658497,43188226,45547521,48955393,52428801,80019457,80674817],"toasyncenumerable":[3670017,18808836,78774273],"tryfunc":[15990792],"times":[393217,13303809,38273025,39387137,40042497,41418753,43122689,43515905,44302337,45875201,49217537,49545217,50987009,54460417,57016321,66715649,71172097],"typeid":[53542913,56492033,57671681,65863681,66781185,68157441,73990145,74842113,75038721,75759617,79167489,80216065],"tostatictype":[3538945,4521985,11272196,75956225,77987841],"totalphysicalsize":[55246849,69730308,77398017],"trysetmember":[3342337,5963777,80084993,80543745],"tcp":[38731777,39256065,39649281,40304641,40828930,42336257,43778049,44498945,44892161,45481986,49086465,50921473,61800449,71696385,76546049],"tohosttype":[2490370,8060933,8781829,50397186,76677122],"typeargs":[11599877,12713989,14352389,15925253,17760261,20512773,21692422,22544390,24117254,24903686],"throws":[10223617,10747905,11862017,15990785,19005441,25624577,26279937,26869761,27656193,27787265,27852801,28442625,28573697,29032449,29097985,29229057,29294593,29425665,29622273,29818881,29884417,30015489,30146561,30277633,30670849,30736385,30801921,30932993,30998529,31064065,31719425,31981569,32047105,32112641,32178177,32309249,32374785,32440321,32768001,32833537,34078721,34209793,34275329,35651585,39780353,58982401,60358657,62980097,65601537,72548353,78970881],"topic":[196609],"toint16":[3538945,4521985,12845061,75956225,77987841],"tfunction":[5111811,31457290,34013188,34734090,35782666,36110340,36765700,36962308,38469642,50069526,51707905,76742657,80478244],"treated":[56033281,62717953],"tostring":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014658,3080193,3145729,3342337,3407874,3538945,3604481,3866625,3932162,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177346,5242881,5308417,5373953,5439489,5636098,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,15990785,21299205,24576005,26083333,40697861,41484293,45613057,49283073,51380225,68943873,70909953,71172097,71368705,71761921,72417281,72548354,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708738,78839809,78970882,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871426,81002497,81068033,81264641,81330178],"totalavailablesize":[55246849,73859076,77398017],"tryinvoke":[3342337,5963777,80084993,80543745],"totalexternalsize":[55246849,66191364,77398017],"todouble":[3538945,4521985,10551301,75956225,77987841],"toenumerable":[3670017,19922948,78774273],"trysetindex":[3342337,5963777,80084993,80543745],"timers":[76939265],"trycreateinstance":[3342337,5963777,80084993,80543745],"touint64":[3538945,4521985,14221317,75956225,77987841],"timestamp":[53805058,57540610,68550663,70189059,71434243,71761922,80019458],"targ":[2818054,3276806,3473414,3997702,4390918,14876689,18874385,19136529,20906001,46202886,49938438,73138182,74645510,75497478,77135878,78184454],"topromise":[3670024,17039365,17170437,17956869,18415621,19398661,21233669,25231365,26935301,54263816,78774280],"tib":[64094209,66584577,67829761,69402625],"targetsite":[57278465,60358657,62980097,63963137,72548353,78970881],"textwriter":[43188229],"tmethod":[3866627,34471946,39845892,43450378,44957700,51707905,53739532,72417306,76742657],"tosingle":[3538945,4521985,12910597,75956225,77987841],"totalheapsizeexecutable":[55246849,68747268,77398017],"trydeleteindex":[3342337,5963777,80084993,80543745],"typename":[6356993,7733249,7929857,8323073,8585217,8912897,9961473,10158081,10223617,10420225,10747905,10878977,11075585,11599877,11665409,11862017,12713989,13959169,14352389,14876674,15925253,16973825,17760261,17891329,17956865,18874369,19136514,19398657,20250625,20512773,20905985,21102593,21692422,22020097,22544390,22609921,24117254,24903686,25231361,26935297,27787265,30474241,30605313,30932993,31850497,32178177,32768001,33882113,34603009,37617665,37814273,38862849,40566785,41615361,42139649,43712513,44630017,51118081,54591489,70909953,72417282,73531393,74514433,75431937,75890689,76742657,77266945,78053377,78184449,78249985,78577665,78643201,79036418,80478209,80609281],"tfield":[5767176,33882123,41615371,43712523,51118091,51707905,62652420,64618500,75431944,79036426],"typo":[61603841],"tojson":[6160385,41549828,80019457],"type":[131073,589825,262145,720897,851971,1048577,1179649,1245185,1310721,1376258,1441793,1507329,1572865,1638403,1703938,1769474,1835010,1900546,1966082,2031618,2097153,2162690,2228226,2293762,2424833,2490383,2555906,2621442,2686978,2752513,2818049,2883606,2949122,3014658,3080194,3145730,3211265,3276801,3342340,3407874,3473409,3538970,3604482,3670017,3735585,3801089,3866626,3932162,3997697,4063233,4128770,4194306,4259841,4325378,4390913,4456449,4522023,4587522,4653058,4718595,4784129,4849666,4915205,4980737,5046274,5111810,5177346,5242882,5308418,5373986,5439490,5570561,5636098,5701634,5767170,5963780,5898241,6094850,6160386,6356999,6488065,6553602,6946818,7077890,7340039,7733256,7864322,7929864,7995400,8060947,8192016,8323077,8388609,8454170,8585225,8716322,8781844,8847364,8912903,8978451,9109508,9175043,9240577,9306146,9502754,9568262,9830434,9895943,9961480,10092560,10158086,10223622,10354707,10420229,10551303,10747911,10878985,10944517,11010082,11075594,11206690,11272198,11337730,11403298,11468812,11534338,11599887,11665416,11730951,11796482,11862034,11927559,12058640,12124167,12255234,12320769,12386311,12451848,12517383,12713997,12845063,12910599,12976130,13107202,13369352,13434883,13565960,13631495,13697027,13762568,13828099,13893639,13959177,14221319,14286866,14352399,14417928,14811138,14876675,15073282,15138818,15204359,15335442,15466514,15597570,15794194,15925265,15990788,16711687,16973826,17039361,17170433,17235971,17760273,17891331,17956867,18219010,18415617,18808833,18874370,19005458,19136515,19202050,19398659,19922945,19988482,20054017,20250627,20316163,20381706,20512783,20578307,20905986,21102595,21233665,21692435,22020098,22151169,22216706,22478851,22544403,22609923,23199751,23396354,23527426,23592963,24051713,24117265,24903697,25100290,25165827,25231363,25952258,26017813,26476565,26542082,26935299,27066389,27394049,27787268,27983893,28311554,28966913,30474244,30605316,30932996,31850500,32178180,32768004,33882114,34603012,37617666,37814274,38862852,40566788,41615362,42139650,43646981,43712514,43974664,44630018,45154306,45547527,46596097,46923782,47710216,48562185,49479687,50397191,50462727,50855959,51052546,51118082,51183624,51445762,51838990,52035586,52166664,52690945,52756481,52887553,53084161,53280769,53542914,53608449,53805057,53936129,54001665,54067202,54394881,54525953,54591490,54657025,54722583,55246849,55377922,55574529,55640065,55705602,55902209,56033288,56360963,56426497,56492033,56557569,56688641,56819713,56885249,57540609,57606145,57671682,57737219,58130435,58261505,58523650,58589185,58916865,59113473,59244545,59375617,59834369,60227585,60293123,60358657,60751873,60817410,61014017,61210625,61276161,61407235,61538305,61800449,61997057,62193667,62455809,62717961,62783489,62849027,62980097,63045635,63373313,63700993,63897601,64159746,64290817,64356353,64421889,64684035,65077250,65273859,65470465,65863684,66387970,66650113,66781186,67633153,68157442,68878337,68943875,69337089,69533699,69861377,69992450,70320130,70582273,70909957,71172099,71303170,71368707,71499777,71761923,71958530,72024066,72417286,72548355,72613891,72679425,72744961,73138178,73269250,73531397,73990150,74121250,74317826,74514437,74645506,74711044,74842117,74973186,75038723,75104293,75169795,75235329,75300866,75366403,75431942,75497474,75628547,75694082,75759622,75890691,75956264,76021765,76087333,76152835,76283906,76349448,76414978,76480515,76546051,76677136,76742661,76808194,76873729,76939267,77004801,77135874,77201410,77266950,77332483,77398019,77529096,77594626,77660161,77725697,77791233,77856805,77987867,78053379,78118913,78184452,78249989,78446593,78512164,78577670,78643203,78708739,78774274,78839812,78905346,78970883,79036420,79101954,79167495,79233025,79298561,79364102,79429636,79495170,79560705,79626243,79691779,79757313,79822849,79888387,79953957,80019459,80084997,80150529,80216069,80281637,80347139,80412679,80478213,80543749,80609283,80674819,80740356,80805891,80871427,80936962,81002533,81068069,81133570,81199106,81264677,81330180],"title":[65537],"template":[77266945,78577665],"target":[3014657,3407873,8192005,8323077,9633797,9699333,10027013,10092549,10289157,10420229,10485765,10813445,11141125,11993093,12779525,13041669,14024709,16711685,17891333,19726337,20250629,21102598,22151169,22609926,23199750,23396354,24051713,24379398,24707073,25165827,25952258,27394049,28311554,28966913,34471941,39845893,43450373,44957701,45547524,53542913,63373313,63700993,65077250,65863683,68157441,72548353,74842114,75038721,78970881,79167492,80216066],"tvalue":[3211268,17498114,18939905,19529730,19791873,58589186,60686337,63242241,65732609,76414982],"timestamps":[68550657,70189057,71434241],"tryunaryoperation":[3342337,5963777,80084993,80543745],"typed":[3538957,4390917,4521997,8388609,10551298,10747907,10944513,11075585,11730946,11927554,12124162,12386306,12517378,12845058,12910594,13631490,13893634,13959169,14221314,15204354,16777218,16908290,18743298,19595266,22282242,48103426,50266114,51249154,62783489,64356353,65929217,69861377,75956237,76939265,77135874,77987853,78184458,79233025],"types":[2883588,3735553,4521986,5373953,7995398,8388609,8454146,8716289,8978434,9109509,9306113,9502721,9568258,9830401,10354690,10747905,10551297,11010049,11206657,11403265,11468802,11534338,11665409,11730945,11796482,11927553,12124161,12386305,12451843,12517377,12845057,12910593,12976130,13369347,13565955,13631489,13762563,13893633,14155777,14221313,14286850,14352386,14417930,15138818,15204353,15335426,15466498,15728641,15794178,15925250,15990785,16711681,17760258,18022401,18219014,19005442,19464193,19857409,20381707,20512770,21037057,21364737,21692418,22544386,22872065,23199745,24117250,24313857,24903682,25427969,26017794,26476546,26542086,26738689,27066370,27983874,28639233,43974660,45088769,45547523,46596098,48103425,49545217,50462724,51707905,52232193,53673985,57737218,58130434,58523650,60293122,60817412,61407234,62193666,62259201,62324737,63045634,64159746,64684034,65273858,66387972,67043329,69533698,72286209,74121227,74776582,74842113,75038721,75104259,75956227,76087299,77856771,78512131,79953923,80216065,80281603,80412673,81002499,81068035,81264643],"token":[62980097,72548353],"touint16":[3538945,4521985,13631493,75956225,77987841],"tas":[9043969,10682369,17039361,17170433,17956866,18415617,19398658,21233665,25231362,26935298],"tosbyte":[3538945,4521985,11927557,75956225,77987841],"tobject":[3866629,4325380,5111810,5242884,5439492,5701637,5767198,6946818,30539778,31522818,32636930,33161219,33226754,33423370,33619990,33685506,33882120,34406408,34471952,34668558,34996227,35127312,35323912,35454978,35913738,36503562,36634626,37158926,37617674,37814282,38010882,38600726,38666254,38928392,38993923,39321609,39845904,39911438,39976969,40370192,41091076,41615368,43384842,43450384,43712520,44957712,45285384,46727170,46792712,47775750,49610760,49872904,50200583,51118088,51707915,52690947,53739538,55181314,56754196,57802754,58654728,58851330,61210627,62652424,64618502,66322434,67371010,69074946,72417310,74514474,75431976,75890701,76742674,77266965,78053388,78577689,78643212,79036428,79626242,80478210,80609292],"top":[393217,131073,589825,262145,720897,851969,1048577,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3407873,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4653057,4587521,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5570561,5636097,5701633,5963777,5898241,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9240577,9306113,9502721,9830401,9895937,11010049,11206657,11403265,12320769,43646977,43909121,43974657,44105729,44695553,44826625,45154305,45350913,45678593,45940737,46006273,46071809,46202881,46268417,46399489,46596097,46661633,46727169,46923777,47382529,47448065,47579137,47710209,47775745,47841281,47906817,47972353,48168961,48300033,48431105,48496641,48562177,48627713,48693249,48758785,48824321,49020929,49152001,49348609,49479681,49610753,49676289,49938433,50003969,50069505,50200577,50266113,50397185,50462721,50855937,51052545,51183617,51249153,51314689,51445761,51576833,51642369,51773441,51838977,51904513,52035585,52166657,52363265,52494337,52690945,52756481,52822017,52887553,53018625,53084161,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53739521,53805057,53870593,53936129,54001665,54067201,54263809,54329345,54394881,54525953,54657025,54722561,54788097,54853633,55050241,55115777,55181313,55246849,55312385,55377921,55443457,55574529,55640065,55705601,55836673,55902209,55967745,56098817,56164353,56295425,56426497,56492033,56557569,56623105,56754177,56819713,56885249,57081857,57212929,57409537,57540609,57606145,57671681,57737217,57802753,57933825,58064897,58130433,58261505,58589185,58654721,58720257,58851329,59047937,59113473,59244545,59375617,59834369,60227585,60293121,60358657,60424193,60751873,61014017,61210625,61276162,61407233,61538305,61603841,61800449,61997057,62193665,62455809,62652417,62783489,62980097,63045633,63897601,64356353,64618497,64684033,65273857,65470465,65863681,66715649,66781185,67633153,68157441,68943873,69533697,69992449,70320129,70582273,70909953,71172098,71303170,71368708,71761922,71958529,72024065,72417282,72548356,72613889,72744961,73138178,73269249,73531393,73990147,74121220,74317825,74514434,74645506,74711043,74842115,74973185,75038723,75104259,75169795,75300865,75366404,75431939,75497474,75628548,75694081,75759619,75956226,76087299,76152835,76283906,76349442,76414978,76480515,76546050,76611592,76677121,76742658,76808193,76873729,77135874,77201410,77266946,77332482,77398018,77529090,77594625,77856771,77987842,78184450,78249986,78512130,78577667,78708738,78774273,78839811,78905345,78970884,79101953,79167491,79364098,79495170,79626242,79691779,79888387,79953923,80019458,80084994,80216067,80281603,80347138,80478210,80543746,80674819,80740354,80805890,80871426,80936961,81002499,81068035,81133570,81199106,81264643,81330178],"totalheapsize":[55246849,66977796,77398017],"task":[3670025,9043974,10682375,17039374,17170434,17956866,18415618,19398670,20054026,21233678,25231374,26935298,28377089,54263816,69337094,76939267,78774281],"thread":[2490371,3670020,5898244,6553604,8060929,8192001,8323073,8716290,9306114,9502722,9830402,11206658,11403266,17104897,18415617,19398657,21233665,25886721,26935297,36700161,37879809,38404097,39714817,40632322,41156610,41943041,42139650,42270721,42860546,42926082,43319297,44630018,45219841,45547521,46333954,47251457,47644673,48758786,48889857,50135041,50331649,50397185,50790401,52166658,52297729,52559873,53149697,53477378,53673985,54263812,54919169,58130433,68419587,71368705,75104261,76087299,76677123,77856769,78774276,79101957,79953925,80281603,80805894,81002499,81068035,81264645],"trybinaryoperation":[3342337,5963777,80084993,80543745],"third":[10944513,11075585],"touppercase":[11075585]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_117.json b/docs/Reference/fti/FTI_117.json index 6d17a1b1..db0835b4 100644 --- a/docs/Reference/fti/FTI_117.json +++ b/docs/Reference/fti/FTI_117.json @@ -1 +1 @@ -{"usedheapsize":[39911425,50331652,59244545],"underlying":[5177345,31195139,37814274,38797314,40239106,41156610,44040193,44564481,59834370,60162050,60424194,60751874,60817409,61014017],"useful":[8388609,9306113,9568257,9699329,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12255233,12582913,43057153,46333953,46465025,49610753,50790401,51052545],"usable":[24444929,24969217,25493505,25559041,25821185,26017793,26083329,26542081,26607617,26935297,27525121,28311553,28704769,28966913,29491201,29556737,29949953,30736385,30998529,31391745,32178177,33095681,34930689,35848193],"updating":[4980742,7208966,24969217,25493505,26083329,26542081,26607617,26935297,28311553,29491201,29949953,30736385,32178177,35192835,35848193,36372483,38666243,39714819,58261510,60817414],"uri":[1835010,1966081,5505038,5767181,6094850,6029314,6225922,6422542,6488066,7274498,10616838,40304643,41877506,51576837,52232201,52625421,53084161,58523650],"url":[37617665,41943041,55115777,57868289],"updatefailed":[60686337],"unpredictably":[58720257],"unchecked":[50724865,54460417],"utility":[38010882,55836673,58785793,59768833],"unary":[3014657,4521985,55705601,60227585],"uses":[7143425,8060929,8126465,8323073,8650753,9437185,12713985,12910593,15138817,15269889,21037057,21430273,21889025,47906817,54001665,60817409,61669377],"using":[6815745,7405569,7864321,8847361,10616833,11141121,12255233,30539777,57540609],"urit":[10616834],"unspecified":[13631489,23789569,50266113,50855937,52756481],"usage":[2555905,4849665,4980737,5570561,5636097,7208961,7471105,7929857,7995393,8585217,9240577,9895937,16252929,17104897,17825793,18153473,18546689,19005441,19333121,19726337,20054017,20512769,21299201,25427969,25886721,26345474,27787266,37552129,38928385,39321601,41418753,43974657,45416449,47382529,47972353,50200577,50724868,53936129,54460420,57606145,58261505,59113473,59244545,60030977,60358657,60817409],"unlimited":[6029313,6488065,7274497],"ushort":[60751873],"unlike":[60817409],"usually":[9109505,9633793,10747905,11534337],"universal":[16252929,18546689,19333121,21299201,61145089],"undefined":[393220,1114120,3866627,13631491,14221313,21757953,22544388,23789571,38010882,39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47775745,49610753,50528260,50790401,51838980,58195969,58327041,58392577,60096513,60555274,60817409,60882945,61407233,61472769,61538305,61603841],"utc":[61145090],"uriformat":[10616833],"used":[3014657,3407878,4063233,4521985,4587521,5046278,6291457,6356993,6553601,7208961,7536641,7995393,8585217,8716289,8978433,9764866,9895937,10092546,10223618,10878978,11141122,11730945,13303809,13565954,13631489,13959169,14548993,16187393,16252929,16908289,17825793,18874369,19333121,20512769,22151169,22609921,22740993,23068673,23396353,23789569,23920641,24641537,24969217,25362434,26411009,26673153,26738689,27066369,27459585,27590657,27983873,28049409,28180481,28377089,28508161,28573697,28639233,28901377,28966913,29097985,29163521,29294593,29425665,29622273,29884417,29949953,30146561,30343169,30539777,31129601,31391745,31850497,31981569,33161217,33554433,33685505,33751042,34013185,34275329,34734081,34865154,35127297,36044801,36110337,36175874,36306945,36569089,36831233,37224449,37486593,37879810,38207489,38273025,38469633,39059457,39190529,39911425,40632321,40763393,41549826,42074113,42205185,43122689,43909121,44957697,45023233,45088769,45613057,45678593,46268417,47251457,47775745,50331650,51904513,55705601,55836673,58195970,58327041,58392579,58720257,58785798,59244545,59703297,59768838,60096515,60227585,60686337,60817410,60882947,61145089,61407234,61538306,61603842],"unless":[19791873],"unique":[38928385,42008577,42598401,46137345,46923777,47972353,53477377,54722561,55312385,57475073,59113473,59506689,60358657],"unidirectional":[61145089],"unit":[4915201,5308417,5636097,5701633,5963780,6619137,6684676,6815745,7340033,7405569,7667713,7733250,7864321,8192001,8781825,8847361,10223617,10813441,10878977,10944513,11010049,11403265,11468801,11862017,11927553,11993089,12124161,12320769,12451841,12517377,12648449,12713985,12845057,12976129,13041665,13107201,13238273,13303809,13369345,13434881,13500417,13697025,13762561,13828097,13959169,14024705,14090241,14155777,14286849,14352385,14417921,14483457,14680065,14876673,14942209,15007745,15138817,15204353,15269889,15466497,15597569,15728641,15925249,16121858,16187393,16515074,16449537,16777217,16842754,16908289,17170433,17235970,17367041,17563649,17760258,17891329,17956866,18022401,18087938,18350081,18415618,18481153,18612226,18677762,18743298,18808833,18874370,18939906,19070978,19136514,19202049,19267585,19398658,19660802,19791876,19922946,19988482,20119554,20185089,20250626,20316161,20578305,20643842,20709378,20774914,20840449,20971522,21037058,21102594,21168129,21364738,21430274,21495810,21823490,21889026,22216706,22413314,22478850,22544386,22609922,22937601,23068674,23134209,23199746,23265282,23330817,23396354,23658498,23724033,23920642,23986177,24182785,24248322,24313857,24379394,24576004,24707074,24903681,25100290,25427969,25952257,26148866,26279938,26345473,26476545,26869762,27000833,27262978,27328513,27787265,27918338,28246018,28770308,29229057,29818881,30212100,30277634,30474242,30539778,30605313,30801922,31195137,31653890,31916036,32243713,32636929,32702465,33226753,35520514,38273026,41746433,42467330,43122690,43778050,44367876,44695554,52166657,58064897],"unconditionally":[50200577,53936129],"useasyncloadcallback":[59572225],"usecaseinsensitivememberbinding":[61145089],"updated":[24969217,25493505,26083329,26542081,26607617,26935297,28311553,29491201,29949953,30736385,32178177,35848193,60686338],"unrecoverable":[50200577,50724865,53936129,54460417],"ulong":[1179650,16056328,16711688,17301512,17432584,17498120,18219016,44564482,44826626,45350914,46989314,49086466,49479682,49872898,50266114,50331650,50855938,52101122,52756482,55640066,56033282,56164354,56557570,57475074,60751873],"usesynchronizationcontexts":[61145089],"uint":[10682369,11665409,12582913,39583745,43384833,45023233,50987009,55574529,60751873],"unmanaged":[2621441,2686977,2818049,3145729,3211265,3670017,3735553,4128769,4521985,4587523,4980737,5177346,6291459,6356995,6553603,7208963,7536643,8716291,8978435,18874371,19791873,24576001,24707073,30212097,31195138,36110338,36831234,38273027,40763394,43122691,46071809,58195971,58261505,58327041,58392579,58916865,59375617,59834369,60096515,60162049,60227585,60293121,60424193,60751873,60817411,60882947,61014018,61407235,61538307,61603843],"usereflectionbindfallback":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,46333958,47775745,47906817,51052548,54001665,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"unusable":[30539777],"uinteger":[39583745,43384833,45023233,50987009,55574529],"unescaped":[10616833],"urls":[41222145,43843585,53870593],"user":[13631490,14548994,15466497,15532033,16187394,16908290,22151169,22216705,22740993,22806529,23068674,23789570,23920642,24641538,24969217,25362433,26673153,26738689,27459585,27590657,28180481,28508161,28639233,28901377,28966913,29097985,29163521,29425665,29622273,29884417,29949953,30146561,31129601,31391745,31850497,33161217,33554433,33685505,34275329,34734081,35127297,36044801,36306945,36569089,37224449,37486593,37879809,38207489,38469633,39190529,39976961,45613057,45744129,58654721,60948481],"uricomponents":[10616833],"unsigned":[1179649,16056324,16711685,17301508,17432581,17498117,18022401,18219013,18481153,24444929,24969217,25362433,25493505,25559041,25821185,26017793,26083329,26411009,26542081,26607617,26935297,27066369,27525121,27983873,28049409,28311553,28377089,28573697,28704769,28966913,29294593,29491201,29556737,29949953,30343169,30736385,30998529,31391745,31981569,32178177,33095681,34013185,34930689,35848193,37879809,39583747,43384835,44564482,44826626,45023235,45350914,46989314,49086466,49479682,49872898,50266114,50331650,50855938,50987011,52101123,52756482,55574531,55640066,56033282,56164354,56557570,57475075],"uriformatt":[10616834],"undefinedimportvalue":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47775745,50528260,51838982,58195969,58327041,58392577,60096513,60555265,60817409,60882945,61407233,61538305,61603841],"unknown":[44761089,50528257,51838977,60555265,61341698],"uricomponentst":[10616836],"uintptr":[50200583,50724871,53936135,54460423],"uwp":[16252929,18546689,19333121,21299201],"useassemblytable":[45416449,47382532,60030977]} \ No newline at end of file +{"unless":[21757953,79233025],"unique":[53542913,56492033,57671681,65863681,66781185,68157441,71892993,73990145,74842113,75038721,75759617,77266945,78577665,79167489,80216065],"uinteger":[29622273,30408705,32309249,35586049,36306945,54198273,57344001,69468161,71565313,74055681],"usable":[36044801,36175873,37552129,37748737,38076417,38207489,40042497,40108033,40435713,42401793,43122689,44040193,45744129,45875201,46858241,47513601,48037889,48365569,49217537,49807361,50987009,51970049,54460417,54984705],"uint32array":[78184449],"uint":[12517377,13631489,14221313,16449539,16646147,16777219,16842755,16908291,18153475,18677763,18743299,20185091,21168131,22282243,23986179,27852801,28246017,28770305,29622274,30277633,30408706,30801921,30998529,31916033,32309250,34537473,34865153,35586050,36306946,37421057,54198273,57344001,69468161,71565313,74055681,78184449],"unlimited":[7405569,9043969,10682369],"unit":[5505025,5832705,6029316,6619137,6684673,6750209,6815745,6881281,7012353,7274497,7471106,8126465,8257540,8650753,9371649,11534337,11599873,11665409,11796481,11862017,12058625,12189697,12255233,12451841,12582913,12648449,12713985,13172737,13238273,13303809,13434881,13500417,13565953,13697025,13828097,14024705,14090241,14286849,14352385,14417921,14483457,14548993,14614529,14745601,14811137,14942209,15073281,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15794177,15859713,15925249,16187393,16318465,16384001,16515073,16711681,17104898,17235969,17301505,17367041,17432577,17760257,17825793,17891329,18087938,18284546,18350081,18481153,18546690,18612225,18874369,19070977,19202049,19529730,19595265,19726338,19988482,20119554,20250625,20316162,20381698,20447233,20512769,20578306,20774914,20905985,21102594,21299202,21430274,21495810,21561346,21626882,21692418,21757956,21823489,21889026,22216706,22347777,22478850,22544386,22609922,22806529,22937602,23068673,23134209,23199746,23265281,23461889,23527426,23592962,23658497,23855106,23920641,24117250,24182786,24379394,24444929,24510466,24576002,24641538,24707074,24838145,24903682,24969217,25034753,25100290,25559041,25296900,25821185,25886722,26017794,26083330,26148865,26214401,26345473,26476546,26607618,26804226,27000833,27066370,27131905,27197441,27983874,28377089,29163521,29360130,29687809,30539777,31522817,31653889,31981569,32636929,33161217,33292289,33423361,33685505,33751041,33882113,34144257,34406401,34668545,34865153,34930689,34996225,35323905,35454978,35717121,35913729,36306945,36503553,36569089,36700162,36831234,37093377,37158913,37224449,37421057,37486593,37617665,37683202,37814273,37879812,38010882,38338562,38404098,38666241,38797313,38862849,38928385,38993921,39059457,39124994,39190529,39321601,39452673,39583745,39780353,39911425,39976961,40501250,40566785,40632322,40697858,40763393,41091073,41156609,41222145,41353218,41484290,41549825,41615361,41746433,41811969,42008577,42663937,42795009,42860545,42926081,43188225,43319300,43712513,44171266,44236801,44367873,45285377,45416449,46137345,46333954,46465028,46792705,46989314,47120385,47185921,47644674,48955394,49872897,50135044,50724865,50790402,51118081,51511298,52428802,72679425,75890689,78053377,78643201,79298561,79822849,80609281],"uri":[2162689,2228226,6225933,6291458,7208962,7405570,7536654,7602190,9043970,10682370,10747910,44105730,61538307,67174409,69599245,75169794,78839813,79691777],"url":[56819713,61603841,64028673,80347137],"utility":[31981569,39780353,45547522,75956225,77987841,78249985],"unknown":[60096513,64815105,67305473,69861378,80871425],"unlike":[76087297],"unrecoverable":[71041025,71827457,72220673,73400321],"unsigned":[393217,14090241,16449541,16646149,16777220,16842757,16908292,17432577,18153477,18677765,18743300,20185093,21168133,22282244,23986181,27852801,28246017,28770305,28835841,29622273,30277633,30408705,30670849,30801921,30998529,31916033,32112641,32309249,34537473,34865153,35586049,35848193,36044801,36175873,36241409,36306945,36372481,37421057,37552129,37748737,37945345,38076417,38207489,38273025,38797313,39387137,39518209,40042497,40108033,40239105,40435713,42401793,43122689,43515905,43581441,44040193,44433409,45744129,45875201,46858241,47513601,48037889,48365569,49217537,49741825,49807361,50987009,51970049,52625409,54198275,54460417,54984705,57344003,58195970,59506690,61145090,65929218,66191362,66715650,66977794,68550658,68747266,69468163,69730306,70189058,70844418,71434242,71565315,71892995,72155139,73203714,73859074,74055683],"uint16array":[78184449],"unchecked":[71827457,73400321],"unary":[3342337,5963777,80084993,80543745],"utf8":[70057985],"uriformatt":[10747906],"uricomponentst":[10747908],"uint16":[3538945,4521985,4915202,7340035,9895939,13631494,27852804,28770308,30801924,34537476,34865156,51052546,51445762,54067202,75956225,76349443,77529091,77987841,79364098],"unspecified":[18219009,26542081,68550657,70189057,71434241],"uricomponents":[10747905],"usedheapsize":[55246849,70844420,77398017],"usually":[9633793,10485761,10813441,12779521],"unconditionally":[71041025,72220673],"used":[3342337,3538950,4587521,4521990,5373953,5963777,8716289,8781825,9306113,9502721,9568258,9830401,10092545,10420225,10878978,11010049,11206657,11272193,11403265,11468802,11665410,11862018,15269889,16384001,17039361,17170433,17891329,17956865,18219009,19005442,19464193,20250625,21102593,21430273,22085633,22609921,22740993,25231361,26542081,26804225,28639233,29360129,35258369,36241409,36372482,36896769,37027841,37945345,38273025,38731777,39387138,39518209,39649281,39714817,40239105,41287681,41353217,41680897,41943041,42205185,42270721,42401793,42532865,42991617,43515905,43581441,43646978,43778049,44040193,44302337,44433409,44498945,44761089,45219841,45481985,45875201,46530561,46923778,46989313,47316993,48234497,49086465,49217537,49479682,49741825,50331649,50528257,50593793,51511297,51904513,52101121,52297729,52625409,52953089,53149697,54132737,54198273,55246849,56164353,56623105,57737217,58130433,58982401,60293121,61407233,61734913,61931522,62193665,63045633,64684033,65273857,65601537,69533697,70844418,71172097,75104258,75431937,75956230,76087298,76939265,77398017,77856770,77987846,78249985,78512129,79757313,79953922,80084993,80281603,80543745,80805889,81002499,81068035,81264642],"useassemblytable":[54657025,67895300,69992449],"uint8clampedarray":[78184449],"urls":[52756481,55508993,79888385],"useful":[8388609,10551297,10944513,11075585,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,13959169,14221313,15204353,56688641,60817409,62128129,66387969,66650113,71237633],"uses":[7995393,8847361,8978433,9109505,9175041,10354689,14417921,15335425,15466497,15990785,20381697,26017793,27983873,58916865,64290817,76087297,77266945,78577665,80412673],"ushort":[27852802,28770306,30801922,34537474,34865154,78184449],"updated":[36175873,37552129,38207489,40108033,40435713,43122689,44040193,48037889,48365569,49217537,49807361,54460417,79757314],"unusable":[51511297],"urit":[10747906],"usereflectionbindfallback":[56688644,57737217,58130433,58916865,60293121,61407233,62193665,63045633,64290817,64684033,65273857,66650118,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"user":[15269890,15728641,16187393,16384002,18219010,19464194,22085633,22740993,22872065,23855105,26542082,26804226,28639234,29360130,35258369,36372481,36896769,37027841,38731777,39387137,39649281,39714817,41287681,41680897,41943041,42205185,42270721,42401793,42532865,42991617,43778049,44040193,44302337,44498945,44761089,45219841,45481985,45875201,46530561,47316993,48234497,49086465,49217537,50331649,50528257,50593793,52101121,52232193,52297729,52953089,53149697,54132737,60358657,62980097,72548353,78970881,81133569],"uriformat":[10747905],"uint64":[393218,2818060,3276812,3473420,3538945,3997708,4390936,4521985,4915202,7340035,9895939,14221318,16449544,16646152,16777224,16842760,16908296,18153480,18677768,18743304,20185096,21168136,22282248,23986184,28246020,30277636,30998532,31916036,37421060,44826630,47906822,49020934,50266118,51052546,51249158,51445762,53215238,54067202,58195970,59506690,61145090,65929218,66191362,66715650,66977794,68550658,68747266,69730306,70189058,70844418,71434242,71892994,72155138,73138188,73203714,73859074,74645516,75497484,75956225,76349443,77135884,77529091,77987841,78184472,79364098],"universal":[76939265],"undefinedimportvalue":[57737217,58130433,60293121,61407233,62193665,63045633,64684033,64815110,65273857,67305476,69533697,75104257,76087297,77856769,78512129,79953921,80281601,80871425,81002497,81068033,81264641],"uint8array":[78184449],"uintptr":[71041031,71827463,72220679,73400327],"unescaped":[10747905],"updating":[7077894,11010054,36175873,37552129,38207489,40108033,40435713,43122689,44040193,48037889,48365569,49217537,49807361,50003971,51642371,54460417,54853635,57212931,75366406,76087302],"unassigned":[60162049,64552961],"underlying":[4915201,5570561,7340034,9895938,27787267,30474243,30932995,34603011,38862851,42663939,51052545,51445761,54067201,56885250,58195969,59244546,62783490,64356354,66846721,74645506,75497474,76087297,76349442,77135874,77529090,78184450,79364097,81199105],"utc":[76939266],"updatefailed":[79757313],"uint32":[3538945,4521985,4915202,7340035,9895939,12517382,29622276,30408708,32309252,35586052,36306948,51052546,51445762,54067202,54198274,57344003,69468163,71565314,74055682,75956225,76349443,77529091,77987841,79364098],"unpredictably":[80805889],"unmanaged":[2097153,2752513,2818049,3276801,3473409,3735553,3997697,4063233,4259841,4390913,5373955,5570562,5963777,7077889,8716291,9306115,9502723,9830403,11010051,11206659,11403267,21430275,21757953,24510465,25296897,41353219,42663938,46465025,46989315,51904514,56164354,56623106,63635457,70320129,73138177,74645505,75104259,75366401,75497473,76087299,76283905,77135873,77856771,78184449,78512129,79495169,79953923,80084993,80281603,80936961,81002499,81068035,81199106,81264643],"unidirectional":[76939265],"using":[6619137,6684673,6815745,8650753,10747905,10878977,13959169,51511297,76414977],"useasyncloadcallback":[76873729],"undefined":[1048580,2359304,3932163,4915201,9895937,16056321,18219011,24576004,26542083,28049409,28901377,33488899,37683202,45547522,57737217,58130433,59113473,60293121,61407233,62128129,62193665,63045633,63438850,64684033,64815108,65273857,67305476,69533697,71237633,75104257,76087297,76349441,77529089,77856769,78512129,79364097,79953921,80281601,80871434,81002497,81068033,81264641,81330177],"usecaseinsensitivememberbinding":[76939265],"ulong":[393218,16449544,16646152,16777224,16842760,16908296,18153480,18677768,18743304,20185096,21168136,22282248,23986184,28246018,30277634,30998530,31916034,37421058,58195970,59506690,61145090,65929218,66191362,66715650,66977794,68550658,68747266,69730306,70189058,70844418,71434242,71892994,72155138,73203714,73859074,78184449],"usage":[1769473,5046273,6488065,6881281,7077889,8060929,8192001,8323073,8781825,10092545,10420225,11010049,17039361,17170433,17956865,18415617,18808833,19398657,19922945,20054017,21233665,25231361,26935297,27197441,28966913,37486594,47448065,49545217,50724866,54657025,57671681,57933825,63373313,67895297,68157441,69992449,71041025,71499777,71827460,72220673,73400324,75366401,75759617,76087297,77398017,80216065],"usesynchronizationcontexts":[76939265]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_118.json b/docs/Reference/fti/FTI_118.json index 87dfc474..0382cdc1 100644 --- a/docs/Reference/fti/FTI_118.json +++ b/docs/Reference/fti/FTI_118.json @@ -1 +1 @@ -{"variabl":[9830401],"variant":[61472769,61669377],"vbscript":[6356993,6553601,31588353,32243714,32833538,32964609,33554434,34144258,34275330,35127299,35454978,36306946,37224450,38207491,39976962,40173574,40566786,40632321,41811974,44957697,54329345,55377922,56295425,60096519,61472769,61538311,61669378],"version":[589825,720897,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,3407878,4915201,5046278,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6422529,6488065,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7143425,7274497,7340033,7405569,7471105,7602177,7667713,7733249,7864321,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8781825,8847361,8912897,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764866,9830401,9895937,9961473,10092546,10027009,10158081,10223618,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878978,10944513,11010049,11075585,11141122,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565954,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16515073,16449537,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544386,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197442,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30736385,30801922,30867458,30998529,31129601,31195137,31260673,31326209,31391745,31522817,31588354,31653890,31850497,31916033,31981569,32112642,32178177,32243713,32309249,32636929,32702465,32768001,32833537,32964610,33095681,33161217,33226753,33554433,33685505,33751042,33947649,34013185,34144257,34275329,34734081,34865154,34930689,35127297,35520513,35454977,35848193,36044801,36175874,36306945,36503553,36569089,37224449,37486593,37879809,38010882,38207489,38273025,38469633,38731777,39190529,39452673,39583745,39845889,40042497,40108033,40501249,40828929,40894465,40960001,41025537,41353217,41549825,41615361,41680897,41746433,42139649,42270721,42336257,42401793,42467329,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778050,43843585,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,45023233,45154305,45219841,45285377,45350913,45481985,45547521,45613057,45678593,45875201,45940737,46006273,46071809,46333953,46399489,46465025,46530561,46661633,46727169,46792705,46989313,47054849,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47710209,47841281,47906817,48037889,48103425,48168961,48234497,48300033,48431105,48496641,48562177,48627713,48693249,48758785,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785800,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506690,59572225,59637761,59703297,59768839,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669377],"valid":[13828097,15728641,15794177,16580609,19202049,19398657],"verifyaccess":[4784129,6291457,6356993,6553601,6881281,7536641,8716289,8978433,30277636,31916038,44695556,57016321,58392577,58720257,60096513,60882945,61407233,61538305,61603841],"visible":[59965441],"violation":[38404097,39321601,42074113,51773442,53346306,58261505,59441154,60817409],"variable":[3407873,5046273,12255241,39059457,40632321,41353217,42074113,42205185,43909121,44957697,45088769,45219841,46268417,47775745,58195969,58327041,58392577,58785793,59768833,60096513,60817409,60882945,61407233,61538305,61603841],"var":[7143426,8060930,8126470,8257538,8323074,8650754,8912897,9043970,9306116,9437190,9568260,9699331,9830406,10289155,10354690,10420227,10485763,10616838,10682371,10878978,10944513,11075587,11141123,11206659,11337731,11665411,12058627,12189699,12255238,12582915,12910595,13565954],"voidresultvalue":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47054854,47775745,51642372,56492033,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"val":[1048577,1114113,1179649,1245185,1376257,1441793,1507329],"vt_date":[61669377],"variables":[9830401,12255234,41353218,45219842],"vt_cy":[61669377],"views":[38535169,59834369],"vbs":[54329345,56295425],"valuetask":[2949128,16252940,18546700,19333132,21299212,38862856,61079560,61145090],"versions":[43057153,46465025],"variants":[61669379],"vbscriptengine":[6356994,6553602,31588354,32243717,32833541,32964610,33554437,34144261,34275333,35127301,35454981,36306949,37224453,38207493,39976961,40173574,40566785,40632322,41811974,44957698,54329346,56295426,60096523,60882945,61538315,61603841],"vbscrip":[13631489,23789569,42336257,45875201,59637761],"visual":[3014659,4521987,7471106,7929858,7995394,8585218,9240578,9895938,16252930,17104898,17825794,18153474,18546690,19005442,19333122,19726338,20054018,20512770,21299202,55705603,60227587],"vie":[2686979,2818051,3211267,3670019,15794179,18481154,19202051,37421058,37814275,38797315,40239107,41156611,44040193,44564481,44826625,59834374,60162054,60424198,60751878],"verify":[30277633,31916033,44695553],"valuetype":[1703939,3801091,51576837,55902213],"values":[3014658,4521986,8388609,9175041,12255233,13172737,13631490,13828097,13893633,14548993,14745601,15073281,15532033,19398657,19464193,20447233,21233665,22085633,22806529,23789570,24641537,34537474,39059458,39452673,40042497,40632322,42074114,42205186,42336260,42795009,43188226,43253768,43909122,44171265,44957698,45088770,45809666,45875204,46268418,46858242,47775746,48889857,50528257,51838977,52690946,53149698,53542914,54067202,54263810,55705602,55836673,56426498,57540610,57999362,58195970,58327042,58392578,59637761,60096514,60227586,60555266,60817410,60882946,61145089,61407234,61538306,61603842,61669379],"virtual":[589825,3014657,4521985,5242882,5505025,5963778,6094849,6029313,6225922,6422530,6488066,6684673,6946818,7274497,16121857,16842753,17039361,17235969,17694721,17760257,18087937,18415617,18612225,18677761,18743297,18874370,18939905,19070977,19136513,19398657,19464193,19529730,19595265,19660801,19922945,19988481,20119553,20250625,20316161,20447233,20643841,20709377,20774913,20971521,21037057,21102593,21233665,21364737,21430273,21495809,21626881,21757953,21823489,21889025,22085633,22216705,22282241,22413313,22478849,22544385,22609921,22806529,23003137,23068673,23199745,23265281,23396353,23527425,23592961,23658498,23789569,23920641,23986177,24117249,24182785,24248321,24379394,24576001,24641537,24707073,24903681,25100289,25296897,27197441,27918337,28246017,28770305,30212097,30474241,30539777,30801921,30867457,31260673,31588353,31653889,31916033,32112641,32964609,35520513,38273025,39583746,42467329,42663937,42795009,43122689,43253761,43384833,43450369,43712513,43778049,44171265,44236801,44302337,44367873,44630017,44761090,44892161,45219841,45285377,45481985,45875201,46006273,46333953,46465025,46727169,47054849,47185921,47513601,47579137,48103425,48234497,48627713,48758785,49020929,49152001,49283073,49348609,49545217,49676289,49741825,50135041,50659329,50790401,50921473,51183617,51314689,51445761,51838977,51904513,51970049,52297729,52953089,53411841,53805057,54001665,54329345,54525953,55050241,55705601,55771137,55967745,56295425,56360961,56623105,56819713,56885249,57409537,60227585,61669379],"value":[393217,458755,589827,655361,720899,786433,917507,1048577,1114118,1179650,1245192,1376262,1441798,1507329,1769474,2490373,2555908,2621446,2686982,2752515,2818054,2883588,3014660,3145732,3211270,3276802,3342340,3407894,3538948,3670022,4128772,4194306,4259842,4521992,4653057,4784130,4849668,5046293,5177348,5242881,5505025,6094849,6029313,6225921,6422529,6488065,6750209,6881282,6946817,7012353,7077889,7143428,7274497,7471105,7602177,7929857,8060932,7995393,8126465,8257545,8323073,8388612,8454145,8519683,8585217,8650753,8912906,9043976,9109505,9175049,9240577,9306119,9371649,9437185,9502721,9568262,9633801,9699337,9764872,9830405,9895937,9961475,10027009,10092545,10158081,10289161,10223617,10354689,10420233,10485769,10551299,10616833,10682377,10747913,10878977,10944513,11075593,11141122,11206665,11337737,11534345,11599873,11665417,11730950,11927553,12058633,12189705,12255237,12582921,12910593,12976129,13107201,13172738,13303809,13500417,13565959,13631492,13828097,13893634,14090241,14155777,14221315,14286849,14548994,14614531,14745602,14811137,14876673,14942209,15007745,15073282,15269889,15335425,15400962,15532034,15597569,15663107,15728641,15794179,15859713,15925249,15990786,16121863,16056321,16252930,16449537,16580611,16646146,16711681,17039361,17104897,17170439,17235969,17301505,17367041,17432577,17498113,17694721,17760257,17825793,17891331,18022401,18087937,18153473,18219009,18284545,18481153,18546690,18677761,18743297,18808839,19005441,19070977,19202049,19333122,19398657,19464194,19529729,19595274,19660801,19726337,19988481,20054017,20316161,20447234,20512769,20643841,21037057,21233666,21299202,21626883,21757955,22085634,22282242,22544385,22609921,22806530,23003138,23134209,23199745,23461889,23527425,23592962,23789572,24051713,24117249,24182791,24248321,24379393,24444929,24641538,24772609,24838145,24903683,24969217,25100289,25165825,25231361,25296899,25362433,25493505,25559041,25624577,25690113,25755649,25821185,25952257,26017793,26083329,26214401,26345473,26411009,26476546,26542081,26607617,26673153,26804226,26935297,27066369,27131905,27197442,27394049,27525121,27590657,27656194,27721729,27787265,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28835841,28901378,28966913,29032449,29097985,29163521,29294593,29360129,29425665,29491201,29556737,29622274,29687809,29753345,29884417,29949953,30015489,30081025,30146561,30343169,30474241,30736385,30801921,30867458,30998529,31195137,31260676,31326222,31391745,31588355,31653889,31981569,32112642,32178177,32309249,32636929,32768001,32833537,32899074,32964611,33095681,33226753,33357826,33685505,33947652,34013185,34275329,34537473,34734081,34930689,35127297,35520513,35454977,35782658,35848193,36044801,36241410,36438018,36503553,36569089,36700162,36896770,36962306,37027842,37224449,37289986,37421058,37814274,37879809,37945346,38010883,38207489,38469633,38600706,38731777,38797314,39059459,39190529,39452674,39518210,39583747,39649282,39845890,40042498,40108034,40239106,40501249,40632323,40828930,40894466,40960001,41025537,41156610,41353218,41549826,41615362,41680900,41746433,42074115,42139649,42205187,42270722,42336258,42401796,42663937,42729473,42795010,42860545,42926082,42991617,43057154,43188225,43253761,43319298,43384835,43450370,43515905,43581442,43646977,43712513,43778049,43843586,43909123,43974657,44040193,44105729,44171266,44236801,44302337,44433410,44498945,44564481,44630018,44761089,44826625,44892162,44957699,45023235,45154306,45088771,45219842,45285377,45350913,45481986,45547521,45613057,45678594,45744132,45809665,45875202,45940737,46006273,46071810,46137345,46202882,46268419,46333954,46399489,46465026,46530562,46661634,46727169,46792707,46858241,46989313,47054857,47120386,47185922,47251458,47316994,47382530,47448065,47513601,47579137,47644674,47710210,47775747,47841281,47906818,48037889,48103425,48168962,48234498,48300034,48365570,48431105,48496642,48562177,48627714,48693249,48758786,48824322,48889858,48955393,49020930,49086465,49152004,49217537,49283074,49348610,49414146,49479681,49610760,49545217,49676290,49741825,49807361,49872897,49938434,50003969,50069505,50135041,50200580,50266113,50331649,50397185,50462722,50528264,50593793,50659330,50724867,50790408,50855937,50921473,50987011,51052546,51118082,51183618,51249154,51314690,51380226,51445761,51511299,51576833,51642377,51707905,51773442,51838984,51904514,51970049,52035586,52101123,52232194,52297730,52363265,52494337,52559874,52625409,52690946,52756481,52822019,52887554,52953090,53018625,53149698,53215233,53280771,53346306,53411842,53477380,53542914,53608449,53739521,53805057,53936132,54001666,54067206,54132737,54198273,54263810,54329345,54394881,54460419,54525954,54591491,54657025,54722564,54788097,54853634,54919170,54984705,55050241,55181313,55246850,55312389,55443458,55508993,55574531,55640065,55705604,55771140,55836678,55902209,55967745,56033282,56098818,56164353,56295425,56360964,56426499,56492037,56557569,56623105,56688641,56819714,56885249,56950785,57016322,57081858,57147393,57278465,57344002,57409537,57475075,57540612,57606145,57737218,57868289,57999363,58064897,58195971,58327043,58392579,58458114,58654724,58720258,58785813,58916870,58982402,59113476,59179009,59375624,59441155,59506692,59572225,59637764,59768854,59834376,59965441,60096515,60162056,60227594,60293126,60358660,60424200,60555266,60620801,60686337,60751880,60817411,60882947,61014022,61145089,61210625,61341697,61407235,61472770,61538307,61603843,61669377],"violated":[58720257],"void":[589826,655361,720898,917506,1376257,4390913,5963778,6684674,6815746,7405570,7733250,7864322,8847362,10813442,11010050,11468802,11862018,11927554,12124162,12320770,12451842,12517378,12648450,12713986,12845058,13041666,13107202,13238274,13303810,13369346,13434882,13500418,13697026,13631489,13762562,13828098,13959170,14024706,14090242,14155778,14286850,14352386,14417922,14483458,14680066,14876674,14942210,15007746,15138818,15204354,15269890,15466498,15597570,15728642,15925250,16121858,16187394,16515074,16777218,16842754,16908290,17170434,17235970,17563650,17760258,17891330,17956866,18087938,18350082,18415618,18612226,18743298,18808834,18874370,18939906,19070978,19136514,19202050,19398658,19660802,19922946,19988482,20119554,20250626,20643842,20709378,20774914,20971522,21037058,21102594,21364738,21430274,21495810,21823490,21889026,22216706,22413314,22478850,22609922,22937602,23068674,23199746,23265282,23396354,23658498,23724034,23789569,23920642,23986178,24182786,24248322,24576002,24707074,24903682,25100290,26148866,26279938,26476546,26869762,27000834,27262978,27918338,28770306,29229058,30212098,30277634,30474242,30539778,30605314,31653890,31916034,33226754,38273026,39059457,39583745,40042497,40108033,40632321,40828929,40894465,41353217,41549825,41680897,42074113,42205185,42270721,42336257,42401793,42467330,42795009,42926081,43057153,43122690,43319297,43384833,43450369,43581441,43843585,43909121,44171265,44367874,44433409,44630017,44695554,44957697,45023233,45154305,45088769,45219841,45678593,45875201,46071809,46268417,46333953,46465025,46530561,46661633,46792705,47054852,47185921,47251457,47316993,47382529,47710209,47775745,47906817,48234497,48300033,48496641,48889857,49152001,49283073,49414145,49610753,50200577,50462721,50528257,50659329,50724865,50790401,50987009,51052545,51118081,51249153,51314689,51380225,51511297,51642372,51773441,51838977,51904513,52035585,52101121,52166658,52232193,52559873,52690945,52822017,52887553,52953089,53149697,53280769,53346305,53411841,53542913,53936129,54001665,54263809,54460417,54525953,54591489,54853633,55443457,55574529,55771137,56098817,56360961,56492034,57344001,57475073,57737217,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"voidresult":[655363,1376263,4390914,13631489,23789569,31653890,38010881,47054849,51642369,56492039],"vt_array":[61669377],"valueref":[458755,1245186,4194307,4653058,31326216,38010883,55246856,55836679,57278469],"verified":[60686338],"vbarray":[61669377],"various":[57147393],"vt_dispatch":[61472769,61669377],"view":[2686979,2818050,3211267,3670018,13631489,15794177,16187393,16711683,17498115,18481153,19202049,23068673,23789569,37421057,37814273,38797313,44040193,44564481,44826625,59834371,60162051,60424194,60751874]} \ No newline at end of file +{"v8fasthostfunctionoperations":[5111810,31457286,34013190,34734086,35782662,36110342,36765702,36962310,38469638,50069521,51707905,76742657,79626245,80478230],"valid":[14876673,16318465,16711681,16973825,18874369,19070977,19136513,20905985,22020097,23199745],"v8runtimeviolationpolicy":[49545217,70778887,74383367,77791236],"v8cachekind":[7077906,11010066,36044805,36175877,36241414,36372486,37552133,37748741,37945349,38076422,38207493,38273030,39387142,39518214,40042502,40108037,40239109,40435717,42401798,43122693,43515910,43581445,44040197,44433413,45744133,45875206,46858246,47513605,48037893,48365573,49217541,49545217,49741829,49807365,50003977,50987014,51642377,51970053,52625413,54460421,54853641,54984709,57212937,75366418,76087314,79560708,79757313],"variable":[3538945,4521985,13959177,57737217,58130433,60293121,61407233,62062593,62193665,63045633,64684033,65273857,67567617,69533697,75104257,75956225,76087297,77856769,77987841,78512129,79953921,80281601,81002497,81068033,81264641],"vt_dispatch":[80412673,81330177],"verifyfunctioncall":[6946817,31981572,79626241],"v8":[393220,655365,327684,983045,1310723,1572865,3801089,3866625,4063233,4128769,4194305,4259841,4325377,4456449,4587521,4718593,4784129,4849665,4915201,4980737,5111809,5242881,5439489,5701633,5767169,6094849,6160385,6946817,7077896,7340033,7864321,9895937,11010052,23068676,23265284,23461892,24248324,24772612,24838148,24969220,25034756,25493508,25559044,25624580,26148868,26214404,26279940,26345476,26411012,26673156,26869764,27000836,27131908,27328516,27459588,27525124,27590660,27656196,27721732,27787268,27852804,27918340,28246020,28180484,28377092,28442628,28508164,28573700,28704772,28770308,28835844,28901380,29032452,29097988,29163524,29229060,29294596,29425668,29491204,29556740,29622276,29687812,29753348,29818884,29884420,29949956,30015492,30081028,30146564,30212100,30277636,30343172,30408708,30474244,30539780,30605316,30670852,30736388,30801924,30867460,30932996,30998532,31064068,31129604,31195140,31260676,31326212,31391748,31457284,31522820,31588356,31653892,31719428,31784964,31850500,31916036,31981572,32047108,32112644,32178180,32243716,32309252,32374788,32440324,32505860,32571396,32636932,32702468,32768004,32833540,32899076,32964612,33030148,33095684,33161220,33226756,33292292,33357828,33423364,33488900,33554436,33619972,33685508,33751044,33816580,33882116,33947652,34013188,34078724,34144260,34209796,34275332,34340868,34406404,34471940,34537476,34603012,34668548,34734084,34799620,34865156,34930692,34996228,35061764,35127300,35192837,35258373,35323908,35389445,35454980,35520517,35586052,35651588,35717124,35782660,35848196,35913732,35979268,36044806,36110340,36175879,36241415,36306948,36372487,36438020,36503556,36569092,36634628,36700164,36765700,36831236,36896773,36962308,37027845,37093383,37158916,37224452,37289989,37355524,37421060,37486596,37552135,37617668,37683204,37748742,37814276,37879812,37945351,38010884,38076422,38141956,38207495,38273030,38338565,38404100,38469636,38535174,38600708,38666244,38731781,38797316,38862852,38928388,38993924,39059460,39124997,39190532,39256072,39321604,39387142,39452677,39518215,39583748,39649285,39780356,39845892,39911428,39976964,40042501,40108039,40173573,40239111,40304646,40370180,40435719,40501252,40566788,40763398,40828936,40894469,40960005,41025541,41091076,41222148,41287685,41353220,41418756,41549830,41615364,41680902,41811973,41877511,42008580,42074117,42205191,42336261,42401798,42467333,42532870,42598405,42729476,42795012,42991623,43057157,43122694,43188229,43253765,43384836,43450372,43515910,43581447,43712516,43778056,44040199,44302340,44367876,44433415,44498950,44761095,44892165,44957700,45023237,45088772,45285380,45416452,45481992,45744134,45875205,46137348,46465028,46661633,46727169,46792708,46858246,47054855,47120388,47316997,47513606,47775745,47972365,48037895,48365575,48431105,48693249,48824321,49086471,49217542,49283076,49348609,49545235,49610753,49676289,49741831,49807367,49872900,50003969,50069505,50200577,50659333,50724870,50921479,50987013,51052545,51118084,51445761,51511300,51642369,51707906,51904513,51970054,52428804,52494337,52625415,52690945,52822017,53280769,53346305,53411841,53739521,53805057,53870593,54067201,54460422,54853633,54984710,55050241,55181313,55246849,55574529,55836685,55902209,56426497,56557569,56754177,56819713,57016324,57212929,57540609,57606145,57802753,58064897,58654721,58720263,58851329,59113473,59834374,60030980,60227585,60293125,61014017,61210625,61276162,61472772,61800450,61865988,62586884,62652417,63438852,63832068,64028676,64094212,64487428,64618497,64946180,65011716,65142788,66060292,66191364,66256900,66322436,66584580,66715652,66977796,67371012,67436548,67698693,67829764,68026372,68091908,68354052,68550660,68681732,68747268,69074948,69206020,69271556,69402628,69730308,70189060,70320132,70385668,70451204,70516741,70778885,70844420,70975492,71041031,71172101,71303172,71434244,71565317,71696388,71761926,71827462,71892996,72024068,72155140,72220679,72417287,72744966,72810500,72876037,72941572,73007108,73203716,73269252,73400325,73596933,73728004,73859076,73924614,74055685,74186756,74317828,74383365,74448902,74514439,74776582,74907652,74973188,75235332,75300868,75366432,75431942,75563012,75694084,75825156,75890692,76087321,76152838,76218372,76349445,76546055,76611592,76742663,76939269,77004805,77070341,77201415,77266950,77398022,77529093,77660164,77791237,77856769,78053380,78577670,78643204,79036420,79364101,79560710,79626247,79757319,79822852,80019462,80150533,80347142,80478215,80609284,80740358,80936964],"v8fasthostfunction":[6946818,31981569,32505867,32899078,33554438,34799627,35061771,36438022,37355526,38141963,39780353,51707905,52494357,79626272,80478209],"vt_array":[80412673],"voidresult":[917511,1179651,5177346,18219009,26542081,40697858,45547521,57868289,69140481,78708743],"v8scriptengine":[11010050,35520513,36700161,37093381,37748737,37879809,38207489,38273025,38404097,38535173,39124993,39256069,39387137,39452673,40042497,40239105,40304645,40501249,40435713,40763397,40828933,41353217,41418753,41680901,41877509,42074113,42205189,42467329,42532869,42598401,42729473,42991621,43122689,43515905,43778053,44302337,44433409,44498949,44761093,45023233,45088769,45481989,45875201,47054853,47120385,47513601,48431105,49086469,49217537,49283074,49545217,49807361,50003969,50724865,50921477,50987009,51642369,51904513,52428801,52625409,52822017,53870593,54460417,54984705,55836685,57016321,60293122,68091906,69206017,71041025,71827457,72810497,74055681,74383361,74448897,74907649,75235329,75563009,76087315,76611585,76939265,77070337,77856769],"v8fasthostpropertygetter":[5767172,38666245,39911429,46792709,49872901,51707905,62652418,64618498,75431940,78053380],"variabl":[8585217],"v8runtime":[655362,983042,1310723,4849665,6094849,7077891,7864321,34144257,35192839,35258375,35389442,35979266,36044802,36175874,36241410,36372482,36896776,37027847,37093378,37289986,37486594,37552130,37945346,38076418,38338562,38731783,39059458,39190530,39256066,39518210,39649288,40108034,40173570,40828930,40894466,40960008,41025538,41287682,41811974,41877505,42205186,42336264,42401794,42991617,43057154,43253767,43581442,43778050,44040194,44761089,44892167,45481986,45744130,46465026,46858242,47054849,47316998,47972366,48037890,48365570,49086465,49545217,49741826,50659330,50921473,51970050,53346306,54853634,55246849,57212930,58720258,59834371,61014017,61800449,64094209,66191361,66584577,66977793,67698690,67829761,68354050,68747265,69402625,69730305,70516737,70778882,70844417,70975489,71565314,71696385,72155137,72220674,72876034,73203713,73400322,73596930,73859073,73924610,75366419,76152833,76546049,76611585,77004801,77070337,77398017,77791233],"v8runtimeheapinfo":[6094850,37486598,49545217,50724870,55246850,66191361,66977793,68747265,69730305,70844417,73203713,73859073,77398022],"variables":[8585217,13959170,62062594,67567618],"v8fasthostmethodoperations":[3866626,34471942,39845894,43450374,44957702,51707905,53739529,72417294,74514437,76742657],"v8fasthostobjectoperations":[3866626,4325379,5111810,5701634,6946818,39976963,41091078,43384838,50200581,51707905,72417287,74514435,76742667,79626243,80478215],"verifies":[6946818,31981569,39780353,79626242],"v8fast":[3866625,4325377,4915201,5111809,5242881,5439489,5701633,5767169,6946817,7340033,9895937,23265281,23461889,24969217,25034753,25559041,25624577,26214401,26279937,26345473,26869761,27328513,27525121,27656193,27787265,27852801,27918337,28246017,28442625,28508161,28573697,28704769,28770305,28835841,28901377,29032449,29097985,29229057,29294593,29425665,29491201,29556737,29622273,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539778,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457283,31522818,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32309249,32374785,32440321,32505860,32571393,32636930,32702465,32768001,32833537,32899074,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554434,33619972,33685506,33751041,33816577,33882115,33947649,34013186,34078721,34209793,34275329,34340865,34406401,34471939,34537473,34603009,34668548,34734083,34799620,34865153,34930689,34996225,35061764,35127298,35323906,35454977,35586049,35651585,35717121,35782659,35848193,35913729,36110338,36306945,36438018,36503553,36569089,36634625,36765698,36831233,36962306,37158916,37224449,37355522,37421057,37617665,37683201,37814273,38010881,38141956,38469635,38600708,38666243,38797313,38862849,38928386,38993921,39321601,39583745,39780353,39845890,39911428,39976961,40370178,40566785,41091073,41222145,41615362,42008577,42795009,43384834,43450371,43712515,44367873,44957698,45285377,45416449,46137345,46727169,46792706,47775745,49610753,49872899,50069505,50200577,51052545,51118082,51445761,52494337,52690945,53280769,53739521,54067201,55181313,56754177,57802753,58654721,58851329,59113473,60227585,61210625,62652417,63438849,64618497,65011713,66060289,66322433,67371009,68026369,68681729,69074945,70385665,72417281,74514433,75431937,75890689,76349441,76742657,77266945,77529089,77660161,78053377,78577665,78643201,79036417,79364097,79626241,79822849,80478209,80609281],"vt_date":[80412673],"v8script":[4587523,11010051,35520513,36044805,36175877,36241413,36372485,36700161,37552133,37748742,37879809,37945349,38076421,38207494,38273030,38404097,38535170,39124993,39256065,39387142,39452673,39518213,40042502,40108037,40173573,40239110,40304642,40435718,40501249,40763393,40828929,40894469,41025541,41287685,41353217,41418758,41680897,41877505,42074118,42401797,42467329,42532866,42598406,42729473,42991617,43122694,43057157,43515910,43581445,43778049,44040197,44302342,44433414,44498946,44761090,45023238,45088775,45481985,45744133,45875206,46858245,47054850,47120392,47513606,48037893,48365573,48431105,49086466,49217542,49283073,49545217,49741829,49807366,50003969,50659333,50724865,50921474,50987014,51511298,51642369,51904513,51970053,52428801,52625414,52822018,53870594,54460422,54984710,55836673,56426499,57016326,60293121,68091905,69206017,71041025,71172103,71827457,72810497,74055681,74383361,74448897,74907649,75235329,75563009,75825154,76087299,76218370,76939265],"voidresultvalue":[57737217,57868292,58130433,60293121,61407233,62193665,63045633,64684033,65273857,69140486,69533697,75104257,76087297,77856769,78512129,78708737,79953921,80281601,81002497,81068033,81264641],"violation":[49545217,59834369,60293121,70778882,74383362,75366401,76087297,77791234],"views":[48103425,74645505],"violated":[80805889],"vbscrip":[18219009,26542081,64421889,68878337,79429633],"v8fasthostmethodinvoker":[5767172,33619973,34471941,34668549,35127301,35323909,37158917,38600709,38928389,39845893,40370181,43450373,44957701,51707905,53739524,56754180,58654724,72417284,74514436,75431940,80609284],"vbs":[74252289,77922305],"value":[6,393218,131073,524296,655363,327681,786433,917510,983043,1048577,1114115,1179649,1441795,1769476,1966082,2031621,2097156,2359302,2752516,2818056,2883586,2949124,3080194,3145732,3211267,3276808,3342340,3473416,3538966,3801092,3997704,4390920,4456452,4522005,4653060,4784132,4915219,4980740,5046276,5242884,5308417,5570564,5963784,5898242,6291457,6356993,6553602,7208961,7340070,7405569,7536641,7602177,7733249,7798785,7929857,7995396,8060929,8192001,8323073,8388612,8454145,8519681,8585221,8781825,8847361,8912905,8978433,9043969,9109508,9175041,9568264,9633793,9699331,9764865,9895974,9961482,10027011,10092545,10158081,10223624,10289153,10354689,10420225,10485769,10551305,10616841,10682369,10747905,10813449,10878978,10944518,11075591,11141123,11272198,11337729,11468801,11665409,11730953,11862017,11927561,11993089,12124169,12320770,12386313,12517385,12582913,12779529,12845065,12910601,13041665,13107201,13500417,13631497,13697025,13893641,13959173,14090241,14155778,14221321,14352385,14614529,14680066,14745601,14811137,14876675,15007747,15204361,15400961,15466497,15663105,15728642,15794177,15925249,15990785,16056323,16121858,16252930,16318465,16449537,16580609,16646145,16711681,16777217,16842753,16908289,16973827,17039361,17170434,17235969,17301505,17432577,17498122,17629185,17891329,17956866,18022402,18153473,18219012,18284545,18350087,18415618,18677761,18743297,18808833,18874369,18939905,19005447,19070977,19136515,19202049,19333121,19398657,19464194,19529735,19595265,19791873,19857410,19922945,19988481,20054017,20119553,20185089,20316161,20447235,20643843,20840449,20905985,21037058,21102593,21168129,21233665,21299201,21364738,21495809,21954561,22020099,22347783,22282241,22413315,22478849,22544385,22675457,22872066,22937601,23003137,23199745,23265287,23461895,23527425,23658497,23789570,23920647,23986177,24248321,24313858,24576001,24772609,24838145,24903681,24969223,25034759,25231361,25362434,25427970,25493505,25559048,25624579,25690115,25821187,26017793,26083329,26214407,26279939,26345479,26411009,26542084,26673153,26738690,26869763,26935298,27000833,27066369,27328513,27459585,27525128,27590657,27656195,27721729,27787269,27852803,27918344,28049411,28114946,28246024,28180481,28377089,28442627,28508168,28573699,28639234,28704776,28770312,28835848,28901377,29032451,29097987,29163521,29229059,29294595,29425667,29491208,29556744,29622275,29753345,29818883,29884419,29949960,30015491,30081032,30146563,30212104,30277635,30343176,30408712,30474250,30539783,30605321,30670851,30736387,30801923,30867464,30932997,30998531,31064067,31129608,31195144,31260680,31326216,31391745,31522823,31588360,31653895,31719427,31784968,31850505,31916040,32047107,32112643,32178180,32243713,32309251,32374787,32440323,32571400,32636935,32702472,32768004,32833539,32964616,33030152,33095688,33226753,33292295,33357832,33488897,33685511,33751047,33816584,33947656,34078723,34209795,34275331,34340872,34537480,34603018,34865159,34930695,35389441,35520513,35586056,35651587,35717127,35848200,35979265,36044801,36175873,36241409,36306951,36372481,36569095,36634625,36896769,37027841,37093377,37224455,37289985,37421063,37486593,37552129,37748737,37945345,38076417,38207489,38273025,38535169,38666242,38731777,38797319,38862857,39256066,39387137,39518209,39583751,39649281,39911426,40042497,40108033,40173569,40239105,40304641,40435713,40566792,40632321,40697857,40828930,40894465,40960001,41025537,41156609,41222151,41287681,41418753,41484289,41549825,41943041,42008583,42074113,42139652,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795015,42860545,42926081,43057153,43122689,43253761,43515905,43581441,43778050,43843587,44040193,44302337,44367879,44433409,44498945,44564483,44630020,44761089,44892161,45023233,45088770,45219841,45416455,45481986,45613058,45547523,45744129,45809665,45875201,46071810,46137351,46202884,46268418,46333953,46399490,46661634,46727170,46792705,46858241,47054849,47120386,47382530,47513601,48037889,48234497,48300034,48365569,48627714,48758786,48889857,48955393,49086465,49217537,49283074,49348610,49414145,49676290,49741825,49807361,49872897,49938436,50593793,50659329,50724865,50921473,50987009,51052563,51380226,51445779,51707906,51970049,52101121,52297729,52428801,52625409,52887554,52953089,53084161,53149697,53477378,53608450,54067219,54132737,54198275,54329346,54394881,54460417,54525954,54591502,54919169,54984705,55050242,55508994,55705601,55771137,56033282,56229890,56360962,56492033,56688642,56885250,56950785,57016321,57081858,57147394,57278466,57344003,57475073,57737220,57802754,57868297,57999362,58130436,58195969,58327042,58392577,58458113,58523650,58589185,58785793,58916866,58982402,59179010,59244546,59310081,59441154,59506689,59572228,59637761,59703297,59768834,59899906,59965441,60030977,60096513,60162055,60293124,60358660,60489729,60555265,60620802,60686340,60751874,60817410,60882946,60948481,61079556,61145089,61341698,61407236,61472769,61669378,61734914,61865985,61931522,62062594,62128136,62193668,62259202,62324738,62390274,62455810,62521345,62586881,62717954,62783490,62849026,62914561,62980100,63045636,63111169,63176705,63242241,63307777,63373313,63438849,63504386,63569921,63635458,63700994,63766530,63832065,63897602,63963138,64028673,64094210,64159746,64225282,64290818,64356354,64421890,64487426,64552967,64684036,64749570,64815112,64880641,64946177,65011713,65077251,65142785,65208321,65273860,65339393,65404930,65536003,65601538,65732609,65667074,65798145,65929217,65994754,66060289,66125825,66191361,66256897,66322433,66387970,66453506,66519042,66584578,66650114,66715650,66846721,66912260,66977793,67043330,67108865,67174402,67239937,67305480,67371009,67436545,67502082,67567618,67633154,67698690,67764226,67829762,67895298,67960833,68026369,68091905,68222977,68288514,68354050,68419585,68485121,68550657,68616193,68681729,68747265,68812801,68878338,69009410,69074946,69140489,69206018,69271553,69337089,69402626,69468163,69533700,69599233,69664769,69730305,69795841,69861377,69926916,70057985,70123521,70189057,70254594,70385665,70451202,70516737,70647809,70713346,70778882,70844417,70975491,71041028,71106562,71237640,71303172,71368707,71434241,71499777,71565315,71630849,71696385,71827459,71892995,72089602,72155139,72220676,72286210,72351745,72482817,72548356,72679425,72744961,72810498,72876034,72941569,73007106,73072641,73138186,73203713,73269252,73334785,73400323,73465857,73596929,73662465,73728001,73793538,73859073,73924610,73990148,74055683,74121222,74186753,74252289,74383362,74448898,74579969,74645514,74842116,74907650,74973188,75038725,75104260,75235331,75497482,75563011,75628547,75694084,75759620,75825153,75956245,76021761,76087300,76218369,76283910,76349479,76414980,76611586,76873729,76939266,77004801,77070338,77135882,77463553,77529127,77594626,77660162,77725697,77791235,77856772,77922305,77987862,78053383,78118913,78184459,78249990,78315521,78381058,78446593,78512132,78577668,78643207,78708741,78839809,78905346,78970884,79036417,79101954,79167492,79233025,79364116,79429636,79495174,79560705,79757313,79822849,79953924,80085002,80150529,80216068,80281604,80412673,80543748,80609281,80740353,80805890,80871426,81002500,81068036,81199110,81264644,81330178],"v8settings":[49545217,61276163,76611586,77070338,77201415],"verified":[79757314],"vt_cy":[80412673],"v8fasthostobjectconfiguration":[5767170,33423361,33882113,34668545,35323905,35913729,36503553,37158913,37617665,37814273,38666241,38928385,38993925,39321601,39911425,41615361,43712513,46792705,47775745,49610753,49872897,51118081,51707905,52690946,58654721,62652417,64618497,69074945,75431944,75890693,77266945,78577665],"valuetask":[3670024,17170444,17956876,18415628,26935308,28377093,54263816,76939266,78774280],"visible":[78446593],"valuetype":[1638403,4718595,4915203,7340035,9895939,76349445,77529093,78839813,79364101,80740357],"v8fasthostpropertyflags":[5767172,27721733,29753349,33882117,39911429,43712517,49872901,51707905,62652418,64618498,75431940,77660164],"verifyaccess":[5898241,6553601,8716289,9306113,9502721,9830401,11206657,11403265,43319302,47644676,50790404,75104257,79101953,79953921,80281601,80805889,81002497,81068033,81264641],"v8fastresult":[3801090,4456450,4784130,4915202,4980738,5242882,23068677,23265285,24969221,25559045,26148869,26345477,27000837,29163525,30539781,32636933,33292289,33751041,34865153,34930689,35717121,36306945,36569089,36831233,37224449,37421057,37683201,38797313,38862849,39583745,40566785,41222145,42008577,42795009,44367873,45416449,46137345,46661634,49676290,51445761,51707905,53280770,57802754,70385665,71303170,73269250,74973186,75694082,78053381,78577666,79364102,79822853,80609285],"v8runtimeflags":[36896773,37027845,38731781,39649285,40960005,42336261,43253765,44892165,47972360,49545217,75366408,77004804],"view":[2818053,3276804,3997701,4390916,14090241,14876673,15269889,16318465,16449539,16842755,18219009,18677763,18874369,20185091,22020097,26542081,26804225,44826627,49938433,53215235,56885249,58195969,59244545,59506689,66846721,74645509,75497477,77135876,78184452],"verify":[31981569,39780353,43319297,47644673,50790401],"v8global":[72744961],"versions":[60817409,66387969],"vbarray":[80412673],"v8fastargs":[9895938,25624577,26279937,26869761,27000837,27328513,27525121,27656193,27787265,27852801,27918337,28246017,28442625,28508161,28835841,28901377,29163525,29229057,29425665,29491201,29622273,29818881,29949953,30015489,30081025,30474241,30670849,30867457,30998529,31064065,31260673,31326209,31391745,31588353,31719425,31850497,32047105,32571393,32768001,32833537,33488897,33947649,34340865,34537473,35586049,51052545,51707905,60227586,65011713,77529094,79822853,80609285],"v8scriptengineflags":[7077892,38535173,39256069,40304645,40828933,42532869,43778053,44498949,44761093,45481989,47054853,49086469,49545217,50921477,55836680,58720260,75366404,76087304,76939268],"values":[3342338,5963778,8388609,10616833,13959169,14155777,15728641,16711681,18022401,18219010,19464193,19857409,21037057,21364737,22872065,23199745,24313857,25427969,26542082,26738689,28639233,45088769,53084162,54394882,55705602,57737218,58130434,58523649,58589186,60162049,60293122,61407234,61669377,62193666,63045634,64094210,64159745,64421892,64552961,64684034,64815105,65273858,65732616,66584578,67305473,67764225,67829762,68878340,69402626,69533698,71368706,74121218,75104258,75628546,76087298,76414978,76939265,77856770,78249985,78512130,79429633,79953922,80084994,80281602,80412675,80543746,80871426,81002498,81068034,81264642],"v8cpuprofileflags":[7077889,11010049,35520517,37289989,48431105,49545217,53346305,64487425,70451201,75366401,76087297,80150532],"v8fasthostdynamicobject":[5242882,30539777,31522817,32636929,33226753,33685505,34406401,34996229,35454977,36634625,38010881,46727169,51707905,55181313,57802753,58851329,61210626,66322433,67371009,77266945,78577676],"v8cacheresult":[7077894,11010054,36175877,37552133,38207493,40108037,40435717,43122693,44040197,48037893,48365573,49217541,49545217,49807365,50003971,51642371,54460421,54853635,57212931,75366406,76087302,79757316],"v8globalflags":[49545217,72744964,77070343],"vie":[2818053,3276805,3997701,4390917,14090242,14876675,16318467,18874371,22020099,49938436,56885251,58195969,59244547,59506689,62783491,64356355,66846721,74645512,75497480,77135880,78184456],"v8cpu":[393217,327681,6160385,35520513,37289985,41549825,43188225,53805057,62586881,64028673,64487425,64946177,65142785,66256897,66715649,67436545,68550657,69271553,70189057,70451201,71434241,71761921,71892993,72941569,73007105,74186753,80019457,80150529,80347137,80740353],"visual":[3342339,5963779,8060930,8192002,8323074,8781826,10092546,10420226,17039362,17170434,17956866,18415618,18808834,19398658,19922946,20054018,21233666,25231362,26935298,80084995,80543747],"vbscriptengine":[9306114,9830402,42270725,43843586,44236805,44564482,45809669,46530565,47251461,48234501,48889861,50331653,50593797,52232193,52297733,53673985,55443462,60424198,62193666,65273858,74252290,75104267,77922306,79953921,81002507,81068033],"v8fasthostmethod":[5701634,5767170,33619979,34668549,35127302,37158917,38600715,40370182,51707905,56754187,58654722,72417281,74514454,75431938],"v8cache":[36044801,36175874,36241409,36372481,37552130,37748737,37945345,38076417,38207490,38273025,39387137,39518209,40042497,40108034,40239105,40435714,42401793,43122690,43515905,43581441,44040194,44433409,45744129,45875201,46858241,47513601,48037890,48365570,49217538,49741825,49807362,50987009,51970049,52625409,54460418,54984705,79560705,79757313],"verifyconstructorcall":[6946817,39780356,79626241],"void":[655362,917505,983042,1114114,1179649,5177345,6029314,6619138,6684674,6815746,7471106,8257538,8650754,11534338,11599874,11796482,12058626,12451842,12713986,13172738,13238274,13303810,13434882,13500418,13565954,13697026,13828098,14024706,14286850,14352386,14417922,14483458,14548994,14745602,14811138,14942210,15073282,15269890,15335426,15400962,15466498,15532034,15597570,15794178,15859714,15925250,16187394,16318466,16384002,16515074,16711682,17104898,17235970,17301506,17760258,17825794,17891330,18087938,18284546,18219009,18350082,18546690,18874370,19070978,19202050,19529730,19726338,19988482,20119554,20250626,20316162,20381698,20447234,20512770,20578306,20774914,20905986,21102594,21430274,21495810,21561346,21626882,21692418,21889026,22216706,22347778,22478850,22544386,22609922,22937602,23068674,23199746,23265282,23461890,23527426,23592962,23855106,23920642,24117250,24182786,24379394,24444930,24510466,24641538,24707074,24903682,24969218,25034754,25100290,25296898,25559042,25821186,25886722,26017794,26148866,26214402,26345474,26476546,26542081,26607618,26804226,27000834,27066370,27131906,27983874,29163522,29360130,29687810,30539778,31522818,31653890,31981570,32636930,33292290,33423362,33685506,33751042,33882114,34406402,34668546,34865154,34930690,35323906,35454978,35717122,35913730,36306946,36503554,36569090,36700162,36831234,37158914,37224450,37421058,37617666,37683202,37814274,37879810,38010882,38338562,38404098,38666242,38797314,38862850,38928386,39059458,39124994,39190530,39321602,39452674,39583746,39780354,39911426,39976962,40501250,40566786,40632322,40697858,41222146,41353218,41615362,41746434,42008578,42795010,42860546,43188226,43319298,43712514,44171266,44367874,45285378,45416450,46137346,46465026,46792706,46989314,47120386,47644674,49872898,50135042,50790402,51118082,51511298,54198273,55508993,56033281,56229889,56360961,56688641,57278465,57344001,57737217,57868292,57999361,58130433,58523649,58916865,58982401,59441153,59572225,59768833,59899905,60162049,60293121,60620801,60686337,60817409,60882945,61079553,61341697,61407233,61669377,61734913,61931521,62062593,62128129,62193665,62259201,62324737,62717953,62849025,63045633,63504385,63635457,63700993,63766529,63963137,64094209,64159745,64225281,64290817,64421889,64552961,64684033,64749569,64815105,65077249,65273857,65536001,65601537,65667073,65994753,66387969,66453505,66584577,66650113,66912257,67043329,67174401,67305473,67567617,67698689,67764225,67829761,67895297,68288513,68354049,68878337,69009409,69074945,69140484,69402625,69468161,69533697,69926913,70254593,70778881,70975489,71041025,71237633,71565313,71827457,71892993,72155137,72220673,72286209,72810497,72876033,73007105,73400321,73924609,74055681,74383361,74448897,75104257,75235329,75563009,75890690,76087297,76611585,77070337,77856769,78053378,78512129,78643202,78708738,79298562,79822850,79953921,80281601,80609282,81002497,81068033,81264641],"version":[1,393217,524289,655361,327681,786433,917505,983041,1114113,2359297,3538950,4521990,5505025,5832705,6029313,6225921,6291457,6356993,6422529,6488065,6619137,6684673,6750209,6815745,6881281,7012353,7143425,7208961,7274497,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7929857,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9371649,9437185,9568258,9633793,9699329,9764865,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878978,10944513,11075585,11141121,11272193,11337729,11468802,11534337,11599873,11665410,11730945,11796481,11862018,11927553,11993089,12058625,12124161,12189697,12255233,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005442,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576002,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,26935297,27000833,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28246017,28180481,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35454977,35520513,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36306945,36372481,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38404097,38469633,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40632321,40697858,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484290,41549825,41615361,41680897,41746433,41811969,41877505,41943041,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646978,43712513,43778049,43843586,44040193,44171265,44236801,44302337,44367873,44433409,44498945,44564482,44630017,44761089,44892161,44957697,45023233,45088769,45219841,45285377,45416449,45481985,45547522,45613058,45744129,45809665,45875201,46137345,46333953,46465025,46530561,46792705,46858241,46923778,46989313,47054849,47120385,47185921,47251457,47316993,47513601,47644673,48037889,48234497,48365569,48889857,48955394,49086465,49217537,49283074,49414145,49479682,49741825,49807361,49872897,50135041,50331649,50528257,50593793,50659329,50724865,50790401,50921473,50987009,51118081,51380226,51511297,51970049,52101121,52297729,52428801,52559873,52625409,52953089,53149697,54132737,54198273,54460417,54591489,54919169,54984705,55508993,55771137,56033281,56229889,56360961,56688641,56950785,57016321,57147393,57278465,57344001,57475073,57868289,57999361,58195969,58327041,58392577,58458113,58523649,58785793,58916865,58982401,59179009,59310081,59441153,59506689,59572225,59637761,59703297,59768833,59899905,59965441,60030977,60096513,60162049,60489729,60555265,60620801,60686337,60817409,60882945,60948481,61079553,61145089,61341697,61472769,61669377,61734913,61865985,61931521,62062593,62128129,62259201,62324737,62390273,62521345,62586881,62717953,62849025,62914561,63111169,63176705,63242241,63307777,63373313,63438849,63504385,63569921,63635457,63700993,63766529,63832065,63963137,64028673,64094209,64159745,64225281,64290817,64421889,64487425,64552961,64749569,64815105,64880641,64946177,65011713,65077249,65142785,65208321,65339393,65404929,65536001,65601537,65732609,65667073,65798145,65929217,65994753,66060289,66125825,66191361,66256897,66322433,66387969,66453505,66519041,66584577,66650113,66715649,66846721,66912257,66977793,67043329,67108865,67174401,67239937,67305473,67371009,67436545,67502081,67567617,67698689,67764225,67829761,67895297,67960833,68026369,68091905,68222977,68288513,68354049,68419585,68485121,68550657,68616193,68681729,68747265,68812801,68878337,68943873,69009409,69074945,69140481,69206017,69271553,69337089,69402625,69468161,69599233,69664769,69730305,69795841,69861377,69926913,69992449,70057985,70123521,70189057,70254593,70320129,70385665,70451201,70516737,70647809,70713345,70778881,70844417,70909953,70975489,71041025,71106561,71172097,71237633,71303169,71368705,71434241,71499777,71565313,71630849,71696385,71761921,71827457,71892993,71958529,72024065,72089601,72155137,72220673,72286209,72351745,72417281,72482817,72548353,72613889,72679425,72744961,72810497,72876033,72941569,73007105,73072641,73138177,73203713,73269249,73334785,73400321,73465857,73531393,73596929,73662465,73728001,73793537,73859073,73924609,73990145,74055681,74121217,74186753,74252289,74317825,74383361,74448897,74514433,74579969,74645505,74711041,74842113,74907649,74973185,75038721,75104257,75169793,75235329,75300865,75366401,75431937,75497473,75563009,75628545,75694081,75759617,75825153,75890689,75956232,76021761,76087297,76152833,76218369,76283905,76349441,76414977,76480513,76546049,76611585,76677121,76742657,76808193,76873729,76939265,77004801,77070337,77135873,77201409,77266945,77332481,77398017,77463553,77529089,77594625,77660161,77725697,77791233,77856769,77922305,77987847,78053377,78118913,78184449,78249985,78315521,78381057,78446593,78512129,78577665,78643201,78708737,78774273,78839809,78905345,78970881,79036417,79101953,79167490,79233025,79298561,79364097,79429633,79495169,79560705,79626241,79691777,79757313,79822849,79888385,79953921,80019457,80084993,80150529,80216065,80281601,80347137,80412673,80478209,80543745,80609281,80674817,80740353,80805889,80871425,80936961,81002497,81068033,81133569,81199105,81264641,81330177],"v8fasthostfunctioninvoker":[31457285,32505861,32899077,33554437,34013189,34734085,34799621,35061765,35782661,36110341,36438021,36765701,36962309,37355525,38141957,38469637,50069512,51707905,52494344,79626248,79822852,80478216],"vbscript":[9306113,9830401,42270723,43843585,44236802,44564481,45809666,46530562,47251458,48234498,48889858,50331650,50593795,52232194,52297730,53673986,55443462,60424198,62193665,65273857,74252289,74776578,75104263,77922305,80412674,81002503,81330177],"variants":[80412675],"v8fasthostpropertysetter":[5767170,38666245,39911429,51707905,62652418,75431938,78643204],"v8runtimeconstraints":[7864322,34144261,35192837,35258373,36896773,39649285,40960005,41877509,42336261,42991621,44761093,47054853,47972358,49086469,49545217,50921477,55836678,61014018,64094209,66584577,67829761,69402625,70975489,71041025,72155137,72220673,75366406,76087302,76152840],"var":[7995394,8585222,8847362,8912898,8978438,9109506,9175042,9961473,10158082,10223618,10354694,10747910,10551299,10878979,10944516,11075588,11730947,11862018,11927555,12124163,12386307,12517379,12582913,12845059,12910595,13631491,13893635,13959174,14221315,15204355,15990787,19005442],"valueref":[524290,1441795,5308418,12320771,45547523,54591496,69337093,77594632,78249991],"val":[1,393217,524289,327681,786433,917505,2359297],"v8cpuprofile":[393217,327681,1572866,4128770,4194306,4718594,6160386,35979269,41549825,42729477,43188225,49545220,53805058,56819714,57540610,62586887,64028673,64487425,64946177,65142791,66256903,66715649,67436551,68550657,69271559,70189057,70451201,71434241,71761922,71892993,72941569,73007105,74186753,80019462,80347138,80740354],"variant":[80412673,81330177],"v8fasthostobjectconfigurator":[5767170,31457285,32505861,33619973,34406405,34471941,34668549,34734085,34799621,35061765,35782661,37158917,38141957,38469637,38600709,39976965,43384837,43450373,45285381,50069508,50200577,51707905,52494340,53739522,56754178,58654722,72417282,74514434,75431938,75890692,76742657,77266945,78577665,79626244,80478212],"v8fasthostfieldaccessor":[5767172,33882117,41615365,43712517,51118085,51707905,62652418,64618498,75431940,79036420],"various":[72744961],"v8fastarg":[3801090,4456450,4784130,4980738,5242882,7340034,23461893,25034757,26214405,28573697,28704769,28770305,29032449,29097985,29294593,29556737,29884417,30146561,30212097,30277633,30343169,30408705,30605313,30736385,30801921,30932993,31129601,31195137,31522821,31653893,31784961,31916033,32112641,32178177,32309249,32374785,32440321,32702465,32964609,33030145,33095681,33357825,33685509,33816577,34209793,34078721,34275329,34603009,35651585,35848193,46727170,49348610,51707905,54067201,55050242,59113474,63438849,66060289,68026369,68681729,71303170,73269250,74973186,75694082,76349446,78577666,78643205],"v8runtimedebuggereventargs":[655368,983048,4849666,49545217,61800450,70516737,71696385,76546054],"virtual":[1114113,3342337,5963777,6029314,6291457,6356994,7208962,7405570,7536641,7602178,8257537,8519682,9043969,10682369,17498113,18087937,18284545,18546689,18939905,19529729,19726337,19791873,19988481,20119553,20316161,20381697,20578305,20774913,21037057,21102593,21299201,21430274,21495809,21561345,21626881,21692417,21954561,22216705,22413313,22478849,22544385,22609921,22675457,22872065,22937601,23003138,23199745,23527425,23592961,23658497,23789569,23855105,23920641,24117249,24182785,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24903681,25100289,25296897,25362433,25427969,25690113,25821185,25886721,26017793,26083329,26476545,26542081,26607617,26738689,26804225,27066369,27983873,28049409,28114945,28639233,29360129,33226753,33423361,34668545,35454977,36503553,36634625,37879809,38010881,39321601,39911425,40501249,40632321,40697857,41353217,41484289,42139649,43319297,43843585,44171265,44564481,45613057,46333953,46465025,46989313,48955393,49283073,50135041,51380225,51511297,52428801,57344002,58392577,58458113,58916865,59179009,59965441,60096514,60162049,60489729,60555265,60620801,60686337,60817409,60948481,61669377,62324737,62390273,62521345,62717953,62849025,62914561,63242241,63569921,63963137,64159745,64815105,65601537,65732609,65798145,65994753,66125825,66322433,66453505,66650113,66912257,67239937,67371009,67502081,67567617,68091905,68288513,68878337,69074945,69140481,69206017,69468161,69664769,69795841,69926913,70057985,70254593,70713345,71106561,71237633,72089601,72286209,72351745,72482817,73334785,73662465,73793537,74252289,74907649,77463553,77922305,78381057,80084993,80412675,80543745],"v8fasthostobject":[5439490,33161221,45285377,51707905,77266956,78577669]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_119.json b/docs/Reference/fti/FTI_119.json index 0e59d720..b29ffcf1 100644 --- a/docs/Reference/fti/FTI_119.json +++ b/docs/Reference/fti/FTI_119.json @@ -1 +1 @@ -{"www":[10616833],"writeruntimeheapsnapshot":[7208961,29229060,60817409],"writeheapsnapshot":[4980737,27000836,58261505],"windowsscriptengineflags":[32309253,32833541,33685509,34275333,34734085,35127301,35454981,36044805,36503557,37224453,38207493,38469637,39124995,39190533,39976961,40173571,41287683,41811971,45613061,58392579,60096515,61407235,61538307,61669380],"windowsscriptengine":[6291462,6356998,6553606,7536646,8716290,8978440,36044804,39059461,39976961,40566785,40632325,40763393,41746433,42205190,42467329,43122689,43778050,43909124,44367873,44695553,44957700,45613060,46268418,49676289,50069505,54788097,56819713,57344001,58195969,58392591,60096527,60817409,60882952,61407249,61538321,61603862],"writes":[3604481,4980737,7208961,23724033,27000833,29229057,53673985,58261505,60817409],"written":[47054849,51642369,56492033],"webclient":[12910596],"writable":[4915201,5373953,5898241,6160385,16318465,16973825,17629185,20185089,31719426,41091074,56426498,56950785,57999362],"window":[4718593,30605313,46596098,50397186,57344001,60948482],"way":[9437185,13631489,23789569],"write":[3670017,12255233,17301509,17498113,18219009,23724034,27000834,29229058,60751873],"wrapnullresult":[9175042,42336257,45875201,49610753,50790401,59637761],"writeline":[8650753,9568257,12910595],"writer":[3604481,23724039,53673985],"widget":[10944513],"work":[57147394],"webclientt":[12910594],"waited":[50593793],"web":[12910594,41943041,59572225],"waiting":[7208961,26279937,60817409],"wrapping":[9175041,39059457,40632321,42074113,42205185,42336258,43909121,44957697,45088769,45875202,46268417,47775745,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"writejson":[3604481,23724036,53673985],"wrapped":[52035585,56098817],"windows":[786433,851969,1441796,1507332,4718593,4784129,5177345,6291457,6356993,6553601,6881281,7536641,7798785,8716290,8978434,13631489,16187393,16252929,18546689,19333121,21299201,23068673,23789569,30277636,30474244,30605316,30801924,30867460,31195140,31260676,31522820,31588356,31916036,32112644,32243716,32309253,32636932,32702468,32833541,32964612,33161220,33226756,33554436,33685509,33947652,34144260,34275333,34734085,35127301,35454981,35520516,36044807,36306948,36503557,37224453,37486596,38207493,38469637,38600705,39059457,39124993,39190533,39649281,39976967,40173569,40566789,40632321,40763394,41287681,41746437,41811969,42205186,42467333,43122693,43778053,43909121,44367877,44695557,44957697,45613063,46268418,46596097,47120385,49676293,50069509,50397188,50593794,53805060,54329348,54788101,55377926,55967748,56295428,56819717,57016325,57344005,58195969,58392582,58720262,59965441,60096518,60882955,60948485,61014021,61407240,61472774,61538312,61603852,61669382],"writebytes":[2621441,2686977,2818049,3211265,3670017,17498116,18219012,59375617,59834369,60162049,60424193,60751873],"wait":[50593793,61145089],"weight":[10944513]} \ No newline at end of file +{"wrapping":[10616833,57737217,58130433,60293121,61407233,62193665,63045633,64421890,64684033,65273857,68878338,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"writer":[6160385,43188231,80019457],"waiting":[11010049,36700161,76087297],"windows":[4,131073,262145,786436,5570561,5636097,5898241,6553601,8716290,9240577,9306113,9502722,9830401,11206657,11403265,15269889,18219009,26542081,26804225,39714820,40632324,41156612,41484292,41746436,41943045,42139652,42270725,42663940,42860548,42926085,43319300,43843588,44171269,44236804,44564484,44630020,45219845,45613060,45809669,46333956,46530564,46989317,47185924,47251460,47644676,48234501,48758785,48889861,48955397,49414149,50135045,50331652,50528260,50593797,50790405,51380228,51576833,52101125,52232199,52297733,52559876,52953095,53149703,53477377,53673989,54132741,54525953,54919173,55443457,56623106,57737217,59047937,60424193,62193665,63045633,64684034,65273857,69009413,69533698,70582273,70713349,71630853,73465860,73662468,74252292,74579973,74776582,75104264,77463556,77856769,77922308,78118914,78381061,78446593,79101957,79953932,80281606,80412678,80805894,81002502,81068043,81133573,81199109,81264648,81330182],"writeruntimeheapsnapshot":[11010049,39452676,76087297],"written":[57868289,69140481,78708737],"webclientt":[15990786],"writes":[6160385,7077889,11010049,39059457,39452673,43188225,75366401,76087297,80019457],"writejson":[6160385,43188228,80019457],"waited":[78118913],"wchar_t":[25624577,26869761,28704769,29491201,30081025,32964609,34275329,35651585,39583745,41222145],"wrapped":[73924609,74448897],"web":[15990786,61603841,76873729],"writeheapsnapshot":[7077889,39059460,75366401],"webclient":[15990788],"write":[4390914,13959169,16842753,16908294,20185089,21168129,22282246,23986177,39059458,39452674,43188226,44826625,49020929,51249155,78184450],"windowsscriptengineflags":[41943045,42270725,45219845,45809669,48234501,48889861,49414149,50593797,51576835,52101125,52232193,52297733,52953093,53149701,54132741,54919173,55443459,59047939,60424195,75104259,80281603,80412676,81002499,81264643],"widget":[12582913],"writebytes":[2818050,3276802,3473410,3997698,4390914,16842757,20185093,21168133,23986181,44826626,49020930,73138178,74645506,75497474,77135874,78184450],"weight":[12582913],"writeline":[9175041,10944513,15990787],"windowsscriptengine":[8716290,9306118,9502728,9830406,11206662,11403270,42926081,44171265,46989313,48955394,50135041,50790401,52232193,52953092,53149700,53673985,56623105,57737221,62193669,63045636,64684038,65273860,69009409,69533698,70713345,71630849,74579969,75104273,76087297,77856769,78381057,79953942,80281615,81002511,81068040,81264657],"www":[10747905],"writable":[6422529,7143425,9437185,12189697,17694721,18481153,19660801,20971521,55967746,56295426,71368706,75628546,76021761,77660161],"wait":[76939265,78118913],"window":[9240577,41746433,69009409,70582274,73465858,81133570],"work":[72744962],"way":[10354689,18219009,26542081,75431937],"wrapnullresult":[10616834,62128129,64421889,68878337,71237633,79429633]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_121.json b/docs/Reference/fti/FTI_121.json index 458729be..82e637b2 100644 --- a/docs/Reference/fti/FTI_121.json +++ b/docs/Reference/fti/FTI_121.json @@ -1 +1 @@ -{"yields":[61145089],"young":[38993921,54263810,58589185],"yield":[8126465,8454145,9437185,12713985,13041665,13500417,13697025,14286849,14483457,15007745,15138817,15269889,19136513,19922945,20709377,21037057,21430273,21889025,23199745,24248321,25100289]} \ No newline at end of file +{"yield":[8454145,8978433,10354689,14286849,14352385,14417921,15335425,15466497,15794177,15925249,17760257,20381697,20512769,21692417,22544385,24117249,24903681,26017793,26476545,27066369,27983873],"yields":[76939265],"young":[61014017,69402626,76152833]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_122.json b/docs/Reference/fti/FTI_122.json index 7d8fc3e9..827d1845 100644 --- a/docs/Reference/fti/FTI_122.json +++ b/docs/Reference/fti/FTI_122.json @@ -1 +1 @@ -{"zero":[40501249,48365569,54919169,57081857,58458113]} \ No newline at end of file +{"zero":[59703297,62455809,64487425,70451201,78905345]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_48.json b/docs/Reference/fti/FTI_48.json new file mode 100644 index 00000000..396aac4a --- /dev/null +++ b/docs/Reference/fti/FTI_48.json @@ -0,0 +1 @@ +{"0d43fe01":[8847361,9175041,13238273,13697025,13828097,15400961,15597569,15859713,17301505,18546689,19202049,20119553,20316161,20578305,20774913,21495809,23527425,25100289],"00a0c9054228":[8847361,9175041,13238273,13697025,13828097,15400961,15597569,15859713,17301505,18546689,19202049,20119553,20316161,20578305,20774913,21495809,23527425,25100289],"048":[76939265],"024":[76939265],"00aa00bbbb58":[42270721,45219841,50593793,52953089,53149697,54132737],"096":[76939265]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_49.json b/docs/Reference/fti/FTI_49.json new file mode 100644 index 00000000..6211f758 --- /dev/null +++ b/docs/Reference/fti/FTI_49.json @@ -0,0 +1 @@ +{"12":[10223617],"16777216":[64094209,66584577,67829761,69402625],"1000":[71565313,74055681],"123":[8847361,12582913],"128":[76939266,80412673],"1048576":[64094209,66584577,67829761,69402625],"16":[12845057,13631489,27656193,27852801,28770305,30801921,31326209,33292289,33357825,34209793,34537473,34865153,64094210,66584578,67829762,69402626,76873729,76939266,77660161,79233025,80412673],"192":[76939265],"1024":[54198273,57344001,69468161],"100":[10878977],"11cf":[8847361,9175041,13238273,13697025,13828097,15400961,15597569,15859713,17301505,18546689,19202049,20119553,20316161,20578305,20774913,21495809,23527425,25100289,42270721,45219841,50593793,52953089,53149697,54132737]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_50.json b/docs/Reference/fti/FTI_50.json new file mode 100644 index 00000000..0aa92416 --- /dev/null +++ b/docs/Reference/fti/FTI_50.json @@ -0,0 +1 @@ +{"256":[76939265,80412673]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_51.json b/docs/Reference/fti/FTI_51.json new file mode 100644 index 00000000..ed40d1a5 --- /dev/null +++ b/docs/Reference/fti/FTI_51.json @@ -0,0 +1 @@ +{"32":[8388609,10158081,10223617,11075585,11337729,11730945,12517377,17629185,18350081,20643841,21954561,23265281,23461889,23920641,25690113,26345473,26411009,26673153,27131905,27525121,27721729,27918337,28246017,28508161,28573697,28835841,29425665,29491201,29622273,29949953,30081025,30343169,30408705,30474241,30539777,30867457,31260673,31326209,31522817,31588353,31653889,31850497,32309249,32505857,32571394,33226753,33619969,33947649,34013185,34340865,34471937,34537473,34668545,34930689,35454977,35586050,35782657,36110337,36306945,36438017,37355521,38141953,38469633,38731777,38928385,39649281,40304641,40370177,40828929,42336257,44498945,44892161,44957697,45481985,49086465,50921473,59572225,66912257,76939266,80412673],"384":[76939265]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_52.json b/docs/Reference/fti/FTI_52.json new file mode 100644 index 00000000..ad4511bb --- /dev/null +++ b/docs/Reference/fti/FTI_52.json @@ -0,0 +1 @@ +{"42":[10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,14221313,15204353],"45":[12582913],"456":[8847361]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_53.json b/docs/Reference/fti/FTI_53.json new file mode 100644 index 00000000..34ed20c8 --- /dev/null +++ b/docs/Reference/fti/FTI_53.json @@ -0,0 +1 @@ +{"536":[76939265],"5x3":[10158081],"512":[76939265]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_54.json b/docs/Reference/fti/FTI_54.json new file mode 100644 index 00000000..7398fb47 --- /dev/null +++ b/docs/Reference/fti/FTI_54.json @@ -0,0 +1 @@ +{"64":[14221313,15204353,16449539,16646147,16777219,16842755,16908291,18153475,18677763,18743299,20185091,21168131,22282243,23986179,28246017,30146561,30277633,30998529,31784961,31916033,32047105,34340865,36569089,37421057,76939268,80412673],"65":[76939265],"6ac0":[42270721,45219841,50593793,52953089,53149697,54132737]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_55.json b/docs/Reference/fti/FTI_55.json new file mode 100644 index 00000000..47bb34f2 --- /dev/null +++ b/docs/Reference/fti/FTI_55.json @@ -0,0 +1 @@ +{"789":[8847361],"768":[76939265]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_56.json b/docs/Reference/fti/FTI_56.json new file mode 100644 index 00000000..446194c0 --- /dev/null +++ b/docs/Reference/fti/FTI_56.json @@ -0,0 +1 @@ +{"8080":[10747905],"8fast":[3801089,4063233,4259841,4456449,4784129,4980737,23068673,23265281,23461889,24248321,24772609,24838145,24969217,25034753,25493505,25559042,26148865,26214402,26345474,26411009,26673154,27000833,27131905,27459585,27590658,27721730,28180481,28377089,29163521,29687809,29753346,31653890,32243713,33423361,36503553,46661633,48693249,48824321,49348609,49676289,53411841,55050241,55574529,55902209,56557569,57606145,58064897,60030977,61472769,61865985,63832065,70320129,71303169,72024065,73269249,73728001,74317825,74973185,75300865,75694081,80936961],"8940":[8847361,9175041,13238273,13697025,13828097,15400961,15597569,15859713,17301505,18546689,19202049,20119553,20316161,20578305,20774913,21495809,23527425,25100289]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_97.json b/docs/Reference/fti/FTI_97.json index cb4c14e5..0b9c9c7f 100644 --- a/docs/Reference/fti/FTI_97.json +++ b/docs/Reference/fti/FTI_97.json @@ -1 +1 @@ -{"allocation":[52101121],"attributes":[1572865,5242887,37027841,37814273,38010881,38535169,38797313,39518209,40239105,40304641,41156609,45940737,50593794,51118081,51576833,58130433,59375617,59834369,60162049,60293121,60424193,60751873,61210626],"affinity":[31522817,32309249,33161217,33685505,34144257,34734081,35454977,36306945,37224449,38207489,40566785,45613057,57016321,58392577,58720258,60096513,60817409,60882945,61407233,61538305,61603841],"astype":[3407873,5046273,8257541,58785793,59768833],"approach":[46333953,47906817,51052545,54001665],"auxiliarysearchpath":[45416449,46071812,60030977],"accepted":[24969217,25362434,25493505,26083329,26411010,26542081,26607617,26935297,27066370,27983874,28049410,28311553,28377090,28573698,29294594,29491201,29949953,30343170,30736385,31981570,32178177,34013186,35848193,37879810,60686338],"accommodate":[53870593],"addcomobject":[3735560,4587528,6291464,6357000,6553608,7208968,7536648,8716296,8978440,11927557,12320773,12648453,13369349,14024709,14155781,14876677,15597573,16842759,17235975,18087943,19070983,19988487,20774919,21495815,22478855,31064072,33423368,58195976,58327048,58392584,60096520,60817416,60882952,61407240,61538312,61603848],"affect":[61669377],"awaitdebuggerandpause":[50593793],"accelerate":[25362433,26411009,27066369,27983873,28049409,28377089,28573697,29294593,30343169,31981569,34013185,37879809,47382529,60686337],"addhosttype":[3735560,4587528,6291464,6357000,6553608,7208968,7536648,8716296,8978440,13041669,13500421,13697029,14286853,14483461,15007749,15138821,15269893,19136519,19922951,20709383,21037063,21430279,23199751,24248327,25100295,33292296,35258376,58195976,58327048,58392584,60096520,60817416,60882952,61407240,61538312,61603848],"accepts":[8388609,9306113,9568257],"allow":[45154305,51314689],"administrator":[983041],"applicable":[53477377,54722561,59113473,59506689,60358657],"addsystemdocument":[2031620,6815749,7405573,7864325,8847365,30670852,53870596],"attempting":[61407233,61538305,61603841],"activex":[3735568,4587536,5046275,6291472,6357008,6553616,7077889,7208976,7536656,8323074,8650754,8716304,8978448,10092545,11927553,12320769,12648449,12845057,13107201,13369345,14024705,14090241,14155777,14876673,14942209,15597569,15925249,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19660801,19988481,20643841,20774913,21364737,21495809,22413313,22478849,23265281,31064072,32047112,33423368,34209800,58195984,58327056,58392592,58785795,60096528,60817424,60882960,61407248,61538320,61603856],"automatic":[38404097,39059457,40632321,41353217,42074114,42205185,43909121,44957697,45088769,45219841,46268417,47775745,50987009,54198273,55574529,58195969,58261505,58327041,58392577,60096513,60817410,60882945,61145091,61407233,61538305,61603841],"addperformanceobject":[61145090],"allowing":[41353217,45219841],"addcomtype":[3735560,4587528,6291464,6357000,6553608,7208968,7536648,8716296,8978440,12845061,13107205,14090245,14942213,15925253,16777221,17563653,17760263,18350085,18612231,18743303,19660807,20643847,21364743,22413319,23265287,32047112,34209800,58195976,58327048,58392584,60096520,60817416,60882952,61407240,61538312,61603848],"associate":[22151169,22740993,26673153,26738689,27459585,27590657,28180481,28508161,28639233,28901377,29097985,29163521,29425665,29622273,29884417,31129601,31850497,33161217,33554433,33685505,34275329,34734081,35127297,36044801,36306945,37224449,37486593,38207489,38469633,39190529,45613057],"attached":[13631489,14548993,15466497,15532033,16187393,16908289,22216705,22806529,23068673,23789569,23920641,24641537],"await":[26279937,42532865,54853641,57147393,61276161],"arguments":[8126466,8388610,8454145,9109505,9306114,9437186,9568258,9699329,9830401,10092545,10223617,10289153,10420225,10485761,10682369,11075585,11141121,11206657,11337729,11665409,12058625,12124161,12189697,12255233,12517377,12582913,12713985,13041666,13500418,13697026,13828099,14221313,14286850,14483457,14614529,15007745,15138817,15269889,15400961,15990785,16646145,17891329,19136514,19398659,19922946,20709377,21037057,21430273,21626881,21757953,21889025,22282241,23003137,23199746,23592961,24248322,24903681,25100289,39059457,40632321,41353219,42074113,42205185,42401793,43909121,44957697,45088769,45219843,46268417,47775745,56360961,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"addtype":[4259843,11010053,12124165,12517381,37158915,54067203],"attributetargets":[53477396,54722596,55312388,59113492,59506704,60358692],"abc":[8323073],"able":[57540609],"asconstructor":[15400965,22282245],"argcount":[8388614,9306118,9568262],"accessible":[7929857,8585217,9240577,9895937,13303809,13828098,13959169,19398658,22609921,23396353,43057153,44433409,46465025,50659329,57540609,61145089],"address":[15728642,15794178,16580610,19202050,41943041,51511297],"application":[2621441,2686977,2818049,3145729,3211265,3670017,3735553,4128769,4521985,4587521,4980737,5177345,6291457,6356993,6553601,7208961,7536641,8716289,8978433,19791873,24444929,24576001,24707073,24969217,25493505,25559041,25821185,26017793,26083329,26542081,26607617,26935297,27525121,28311553,28704769,28966913,29491201,29556737,29949953,30212097,30736385,30998529,31391745,32178177,33095681,34930689,35848193,36110337,36831233,40763393,45744129,51511297,58195969,58261505,58327041,58392577,58654721,58916865,59375617,59834369,60096513,60162049,60227585,60293121,60424193,60751873,60817409,60882945,61014017,61145089,61407233,61538305,61603841],"appears":[61472769],"accept":[13828097,19398657],"analysis":[12910593],"ascii":[27000833,29229057],"assemblyname":[8126469,10813445,11468805,12124165,13041669,13500421,19136518,23199750],"assemblyqualifiedname":[10878977,13565953],"active":[4980737,7208961,26148865,27262977,50987009,55574529,58261505,60817409,61145089],"asynchronous":[2949121,6029313,7274497,16252929,17104897,17825793,18153474,18546689,19333121,19726337,20054017,20512769,21299201,55836673,57278465,59441153,61079553],"advantage":[26476545],"anonymous":[39059457,40632321,42074113,42205185,43057157,43909121,44957697,45088769,46268417,46465029,47775745,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"attempt":[42795009,45154305,48889857,51314689],"algorithm":[46071809,46333953,47316993,47906817,51052545,53411841,53477377,54001665,54591489,54722561,56950785],"addhostobject":[3735554,4587522,6291458,6356994,6553602,7143425,7208962,7536642,8060929,8126466,8257537,8323073,8454145,8650753,8716290,8912897,8978434,9043969,9306113,9437186,9502721,9568257,9699329,9830401,10092545,10289153,10354690,10420225,10485761,10616833,10682369,10878977,10944513,11075585,11141122,11206657,11337729,11665409,11927553,12058625,12189697,12255233,12320769,12582913,12648449,12713985,12845057,12910593,13041665,13107201,13303809,13369345,13500417,13565953,13697025,13828101,13959169,14024705,14090241,14155777,14286849,14417926,14483457,14876673,14942209,15007745,15138817,15269889,15597569,15925249,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19136513,19398663,19660801,19922945,19988481,20119560,20643841,20709377,20774913,21037057,21364737,21430273,21495809,21889025,22413313,22478849,22609921,23199745,23265281,23396353,24248321,25100289,32440322,34603010,54067201,57540609,58195970,58327042,58392578,59768833,60096514,60817410,60882946,61407234,61538306,61603842],"argument":[3407878,5046278,8323073,8650753,9764866,9830401,10092546,10223619,10878978,11141122,11927553,12255234,12320769,12845057,13565954,13828098,14024705,14942209,15597569,15925249,16842753,18153473,18350081,18612225,19005441,19070977,19398658,19660801,19988481,20054017,20643841,22478849,23265281,25165825,33751042,34734081,34865154,35127297,36044801,36175874,38207489,38731777,39190529,45613057,58785798,59768838],"addhosttypes":[3735553,4587521,6291457,6356993,6553601,7208961,7536641,8716289,8978433,12713988,21889030,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"abandons":[47906817,54001665],"access":[2621442,2686978,2818050,2883585,3014657,3211266,3342337,3670018,4521985,4784130,5177345,5570568,6029313,6291458,6356994,6488065,6553602,6815745,6881282,7143425,7274497,7405569,7536642,7864321,8060929,8716290,8847361,8978434,11730945,12255233,13303809,13631489,13828097,13959169,15728643,15794179,16580611,19202051,19398657,20578305,20905985,21168129,21561353,22347785,22609921,22872065,23396353,23789569,23855112,24510472,25886728,30277634,31195137,31916034,32636931,35520515,35651588,36634625,37421059,37552129,37945347,38010886,38535169,38928386,39059462,39321601,39256065,39976961,40042497,40108034,40566785,40632326,41222145,41418753,41549825,41746435,42008579,42074118,42205190,42401793,42598403,43057156,43581441,43909126,43974662,44171265,44302337,44433410,44695554,44957702,45088774,46268422,46465028,46923779,47185921,47251457,47316994,47775750,47972354,48168963,48758787,49348611,49676289,49938433,50659330,50921473,51183617,52297729,53411842,53477380,53870594,54067201,54591489,54722564,55377924,55705601,56360961,56819715,56950789,57016322,57278465,57540610,57606150,58195974,58327046,58392584,58654721,58720258,59113475,59310081,59375618,59506695,59572226,59834370,59965442,60096520,60162050,60227585,60358659,60424194,60489729,60751874,60817414,60882952,61014017,61145090,61407240,61538312,61603848,61669378],"accessflags":[40108036,41222145,53870593],"avoids":[47906817,54001665],"added":[131073,196609,262145,589825,8847361,54067201,56426497,57540609,57999361,61145089],"arrtype":[5046273,7602180,58785793],"action":[2621441,2686977,2818049,3211265,3670017,4784129,6881281,9830401,15728651,19202059,30474255,31916033,33226763,37421057,37945345,38600705,39649281,57016321,58720257,59375617,59834369,60162049,60424193,60751873],"asyncloadcallback":[40894468,41222145,53870593,59572225],"assigned":[9633793,10747905,11534337,45744129,46792705,58654721],"accelerating":[57147393,60620802],"alternative":[41549825],"additionally":[59441153],"accesscontext":[39059457,40632321,42074113,42205185,43057153,43909121,44433412,44957697,45088769,46268417,46465025,47775745,50659334,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"allows":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407874,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4653057,4849665,4980737,5046274,5111809,5439489,6881281,7798785,12910593,38010881,39059460,39976961,40632324,42074116,42205188,43909124,44433409,44957700,45088772,46071809,46268420,47775748,48168962,48496641,48758786,49283073,49348610,49676289,49938433,50659329,51183617,51576833,52297729,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,56819714,57212929,57540609,57671681,57933825,57999361,58130433,58195972,58261505,58327044,58392580,58523649,58589185,58654721,58720257,58785795,58851329,59113473,59244545,59310081,59506689,59703297,59768834,59899905,60096516,60227585,60358657,60489729,60555265,60817412,60882948,60948481,61407236,61472769,61538308,61603844],"ambiguous":[13172737,13238273,13631489,13762561,13893633,14548993,14680065,14745601,15073281,15204353,15466497,15532033,16187393,16908289,18939905,19464193,20250625,20447233,21102593,21233665,21823489,22085633,22216705,22806529,23068673,23789569,23920641,24641537],"addassembly":[4259844,10813445,11468805,11862021,12451845,36765700,54067204],"accelerated":[4980742,7208966,24444930,24969217,25362433,25493505,25559042,25821186,26017794,26083329,26411009,26542081,26607617,26935297,27066369,27525122,27983873,28049409,28311553,28377089,28573697,28704770,28966914,29294593,29491201,29556738,29949953,30343169,30736385,30998530,31391746,31981569,32178177,33095682,34013185,34930690,35192835,35848193,36372483,37879809,38666243,39714819,58261510,60817414],"array":[2621443,2686979,2752514,2818052,3211267,3407874,3670025,5046274,5242882,7143427,7602180,8060931,8126467,9109505,9306120,9437185,9502724,9568264,9830406,9961473,10092545,10158081,10354695,10616833,10747905,11141121,11272193,11796481,12124161,12386305,12517377,12713985,12779521,13041665,13500417,13697025,13828098,14221313,14286849,14614529,15400961,15990785,16056326,16449541,16646145,16711683,17301510,17432579,17498115,17891332,18022403,18219011,18481155,19136513,19398658,19922945,21626881,21757953,21889025,22282241,23003137,23199745,23592961,24248321,24444929,24903684,24969217,25362433,25493505,25559041,25821185,26017793,26083329,26411009,26542081,26607617,26935297,27066369,27525121,27983873,28049409,28311553,28377089,28573697,28704769,28966913,29294593,29491201,29556737,29949953,30343169,30736385,30998529,31391745,31981569,32178177,33095681,34013185,34406402,34930689,35848193,37879809,38535169,39059457,40239105,40632321,41156609,42074113,42205185,42401795,43450370,43909121,44040193,44957697,45088769,46268417,46989313,47775745,49414146,52101121,56360963,57540610,58195969,58327041,58392577,58785794,59375619,59768834,59834371,60096513,60162051,60424196,60751883,60817409,60882945,61210625,61341699,61407233,61538305,61603841,61669377],"args":[3932161,9109509,10092549,10616837,11141125,14221317,14614533,15400965,15990789,16646149,17891334,21626885,21757958,22282245,23003142,23592965,24903686,39387137,42401798,54657025,55181313,56360966,58851329],"affects":[44433409,45154305,50659329,51314689,52822017,53280769,56950785,61669377],"assumes":[7143425,8060929,8126465,8257537,8323073,8650753,8912897,9043969,9306113,9437185,9568257,9699329,9830401,10289153,10354689,10420225,10485761,10616833,10682369,10878977,10944513,11075585,11141121,11206657,11337729,11665409,12058625,12189697,12255233,12582913,12910593,13565953],"assumed":[52690945,53149697,53542913,54263809],"abstractclassattribute":[52428801,53084161,55246849,55705601,56229889,57671681,58195969,59047937,59310081,59703297,59899905,60030977,60227585,60882945,61079553,61276161,61603841],"asynciterable":[18153478],"auto":[41353217,45219841],"assign":[31326209],"appear":[13828097,19398657,52822017],"asyncdocumentloadcallback":[38010881,40894471,57278468],"accordance":[50200577,53936129],"associated":[2621441,2686977,2752513,2818049,3145729,3211265,3670017,3735557,4128769,4521985,4587525,4980741,5177345,6291461,6356997,6553605,7208970,7536645,8716293,8978437,13631489,14548993,16187393,16908289,23068673,23789569,23920641,24576001,24641537,24707073,24969217,25362433,28049409,28966913,29949953,30146561,30212097,31391745,32374786,33488898,34078722,35061762,35192837,36110337,36569089,36831233,37355522,37748738,37879809,38404097,38666244,39059459,39321601,39387137,40435713,40632323,40763393,42074113,42205187,43712513,43909122,44957698,45088769,45744130,46202881,46268418,47513601,47775745,47841281,48365569,48955393,49741825,50069505,54132737,54657025,54788097,54984705,57540609,58195974,58261510,58327046,58392583,58458113,58654722,58851330,58916865,58982401,59375617,59703297,59834369,60096519,60162049,60227585,60293121,60424193,60751873,60817419,60882951,61014017,61407240,61538312,61603848],"absolute":[6094849,6029313,6225921,6488065,7274497],"async":[2949121,6029313,7274497,18153475,40894465,54853633,57278465,61079553,61210628],"augment":[46071809],"assemblynames":[7143429,8060933,11272197,12386309],"assemblies":[5046274,7143429,8060932,11272195,11796487,12386307,12779527,30932994,37683206,46071809,53477377,54067207,58785794,59113473],"addrestrictedhostobject":[3735554,4587522,6291458,6356994,6553602,7208962,7536642,8716290,8978434,13303813,13959173,22609927,23396359,33619970,35717122,58195970,58327042,58392578,60096514,60817410,60882946,61407234,61538306,61603842],"actions":[3014657,4521985,55705601,60227585],"allocate":[38993921,52101121,58589185],"acme":[7143427,8060931,54067203],"arrayt":[9568258,9830402],"adds":[1769473,2031620,2752514,3276801,4259848,6815745,7405569,7864321,8847361,9699329,10289153,10420225,10485761,10682369,10813441,10944513,11010049,11075585,11206657,11337729,11468801,11665409,11862017,12058625,12124161,12189697,12451841,12517377,12582913,16121857,30670852,36765700,37158915,53870596,54067208,56426497,57540610,57999361],"available":[13828097,16252929,18546689,19333121,19398657,21299201,39911425,40501249,41549825,41943041,44236801,45744129,46202881,47251457,47382530,48103425,48365570,48693249,51511297,54919169,56164354,57081857,58458114,58654721,58982401,59244545,60620801,61145089],"additional":[26804225,27656193,28901377,29622273,38010881,45744129,50200577,53936129,58654721,59506689,60686337],"attributeusageattribute":[53477380,54722564,55312388,59113476,59506692,60358660],"attempts":[27197441,30867457,31588353,32112641,32964609,41549825,46333953,47251457,51052545],"allowcategorymismatch":[59572225],"arraybuffer":[2621445,15728643,16580611,17432578,18022402,18219010,37027841,37814275,37945346,38535170,38797315,38993921,40239107,41156611,44040197,44564481,45350913,50200577,52101123,53936129,58589185,59375623,59834372,60162051,60424195,60751875,61210625,61341698],"applies":[9764865,10092545,13565953,47251457,59965441],"ancestors":[5242881],"allowreflection":[10878977,13565953,39059457,40632321,42074113,42205185,43909121,44957697,45088769,45154308,46268417,47775745,51314694,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"applied":[55312385],"attribute":[1572865,2490373,2555909,2883589,3342341,3538949,4849669,5242886,5570561,5636097,5701633,12976129,20578305,20905985,21168129,21561345,22347777,22872065,23330817,23855105,24510465,25034753,25427969,25886721,34996226,35651585,37552129,38010881,38928387,39059457,40632321,41418753,42008579,42074113,42205185,42598403,42860546,43909121,43974657,44957697,45088769,45416449,46137347,46268417,46530563,46792707,46923779,47775745,47972355,50462721,50593794,52953091,53477386,54591489,54722570,55312397,57606145,58130435,58195969,58327041,58392577,59113485,59506697,60030977,60096513,60358669,60817409,60882945,61407233,61538305,61603841],"add":[589825,720897,917505,1769473,2752514,3276801,4259841,6815745,7405569,7864321,8323075,8847361,9699330,10289154,10420226,10485762,10682370,10813442,11010050,11075586,11206658,11272193,11337730,11468803,11665410,11862018,11927553,12058626,12124163,12189698,12255234,12320769,12451843,12517378,12582914,12648449,12713985,12779521,12845057,13041665,13107201,13303809,13369345,13500417,13697025,13828097,13959169,14024705,14090241,14155777,14286849,14417921,14483457,14876673,14942209,15007745,15138817,15269889,15597569,15925249,16121864,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19136513,19398657,19660801,19922945,19988481,20119553,20643841,20709377,20774913,21037057,21364737,21430273,21495809,21889025,22413313,22478849,22609921,23199745,23265281,23396353,24248321,25100289,30670849,31064065,32047105,32440321,33292289,33423361,33619969,34209793,34603009,35258369,35717121,36765697,37158913,54067201,55377921,56426497,57540610,57999361,61145089],"arr":[7602177,9502721,10354689,34406401],"avoid":[13434881],"assembly":[589825,720897,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,3735554,4259849,4587522,4915201,5046273,5242881,5308417,5373953,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291458,6356994,6422529,6488065,6553602,6619137,6684673,6750209,6815745,6946817,7012353,7077889,7143426,7208962,7274497,7340033,7405569,7471105,7536642,7602177,7667713,7733249,7864321,7929857,7995393,8060930,8126467,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716290,8781825,8847361,8912897,8978434,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813445,10878978,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468805,11534337,11599873,11665409,11730945,11796487,11862031,11927553,11993089,12058625,12124163,12189697,12255233,12320769,12386305,12451855,12517377,12582913,12648449,12713985,12779527,12845057,12910593,12976129,13041667,13107201,13172737,13238273,13303809,13369345,13434881,13500419,13565954,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16515073,16449537,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136515,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199747,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30736385,30801921,30867457,30998529,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31850497,31916033,31981569,32112641,32178177,32243713,32309249,32636929,32702465,32768001,32833537,32964609,33095681,33161217,33226753,33292290,33554433,33685505,33947649,34013185,34144257,34275329,34734081,34930689,35127297,35258370,35454977,35520513,35848193,36044801,36306945,36503553,36569089,36765705,37158913,37224449,37486593,37683202,37879809,38207489,38273025,38469633,38731777,39190529,39452673,39583745,39845889,40042497,40108033,40501249,40828929,40894465,40960001,41025537,41353217,41549825,41615361,41680897,41746433,42139649,42270721,42336257,42401793,42467329,42663937,42729473,42795009,42860545,42926081,42991617,43057154,43122689,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,45023233,45154305,45219841,45285377,45350913,45416449,45481985,45547521,45613057,45678593,45875201,45940737,46006273,46071809,46333953,46399489,46465026,46530561,46661633,46727169,46792705,46989313,47054849,47185921,47251457,47316993,47382534,47448065,47513601,47579137,47710209,47841281,47906817,48037889,48103425,48168961,48234497,48300033,48431105,48496641,48562177,48627713,48693249,48758785,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477381,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067213,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195971,58261505,58327043,58392579,58458113,58523649,58589185,58654721,58720257,58785794,58851329,58916865,58982401,59047937,59113477,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030978,60096515,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817411,60882947,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407235,61472769,61538307,61603843,61669377],"arbitrary":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47775745,48496641,49283073,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"ability":[55312385],"auxiliary":[45416449,46071810,60030977],"api":[22151169,52690945,54132737,54263809,54853633],"addition":[3014657,4521985,10944513,12255233,13828097,19398657,55705601,60227585],"automatically":[1,15466497,15532033,19791873,22216705,22806529,51511297,55312385,60817409,61145089],"ambiguity":[61145089],"asynchronously":[1835009,1966081,6029313,7274497,38010881,40894465,41222145,53084161,53870593,57278465,58523649],"arrays":[13828098,19398658,38535169,60424193,60751873,61669378],"activities":[57147393],"applications":[55377921,58392577,60096513,60882945],"arra":[3670017,16449538,40239105,41156609,46989313,60424193,60751875],"allocated":[50200577,52101121,53936129],"assigning":[9830401,50987009,55574529],"abstract":[589825,5242881,5505025,5963777,6094849,6029313,6225921,6422529,6488065,6684673,6946817,7274499,11927553,12320769,12648449,12713985,12845057,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16449537,16580609,16646145,16711681,16777217,16842753,16908289,17039361,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17694721,17760257,17891329,17956865,18022401,18087937,18219009,18350081,18415617,18481153,18612225,18677761,18743297,18874369,18939905,19070977,19136513,19202049,19398657,19464193,19529729,19595265,19660801,19791873,19922945,19988481,20119553,20250625,20316163,20447233,20643841,20709377,20774913,20971523,21037057,21102593,21233665,21364737,21430273,21495809,21626883,21757953,21823489,21889025,22085633,22216705,22282243,22413313,22478849,22544385,22609921,22806529,23003137,23068673,23199745,23265281,23396353,23527427,23592963,23658497,23789569,23920641,23986179,24117251,24182787,24248321,24379393,24576001,24641537,24707075,24903683,25100289,25296899,27197441,27918337,28246017,28770305,30212097,30277633,30474241,30539779,30605313,30801921,30867457,31195137,31260673,31588353,31653889,31916033,32112641,32636929,32964609,33226753,33947649,35520513,38010881,38273025,39583745,39845889,40042497,40501249,40828929,40960001,41025537,41353217,41615361,41680897,42139649,42336257,42401793,42467329,42663937,42729473,42795009,42991617,43057153,43122689,43253761,43384833,43450369,43515905,43581441,43646977,43712513,43778049,44040193,44105729,44171265,44236801,44302339,44367873,44433409,44564481,44630017,44761089,44826625,44892161,45154305,45219841,45285379,45350913,45481985,45678593,45875201,45940737,46006273,46333953,46399489,46465025,46530561,46727169,46989313,47054849,47185921,47316993,47513601,47579139,47710209,47841281,47906817,48103425,48168961,48234497,48300033,48496641,48627713,48693249,48758787,48889857,48955393,49020929,49152001,49283073,49348609,49414145,49545217,49610753,49676289,49741825,49938433,50135041,50397185,50528257,50659329,50790401,50921473,51052545,51183619,51314689,51445761,51642369,51838977,51904513,51970049,52297729,52428801,52953089,53084162,53411841,53805057,54001665,54329345,54525953,55050243,55246849,55705602,55771140,55967745,56229890,56295425,56360964,56623105,56819713,56885251,57409539,57671682,58195970,59047937,59310083,59703298,59899906,60030977,60227586,60882946,61079553,61276161,61603842],"awaitdebuggerandpauseonstart":[61145089],"attach":[39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,47775745,48496641,49283073,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841]} \ No newline at end of file +{"addsystemdocument":[1835012,6619141,6684677,6815749,8650757,45678596,79888388],"accordance":[71041025,72220673],"associated":[2097153,2752513,2818049,3211265,3276801,3473409,3735557,3866625,3997697,4063233,4259841,4325377,4390913,5111809,5242881,5373957,5439489,5570561,5701633,5963777,6946817,7077893,8716293,9306117,9502725,9830405,11010058,11206661,11403269,15269889,16384001,18219009,19464193,24510465,25296897,26542081,26804225,28639233,29360129,31457281,32505857,33619969,34406401,34471937,34734081,34799617,35061761,35782657,36372481,38141953,38469633,38600705,39387137,39976962,41287681,42401793,43384833,43450369,43515905,43909122,44040193,44302337,45285377,45875201,46465025,48496642,49217537,49545217,50003973,51904513,52822018,53018626,53870594,54853636,56164353,56426497,56623105,57409538,57737219,58130433,59637761,59834369,60293121,60358658,61407233,61800449,62193667,62455809,62980099,63045634,64684035,65273858,67239937,68222977,69533698,69795841,70320129,70516737,71172097,71630849,72351745,72417281,72548355,73138177,73596929,74514433,74579969,74645505,75104264,75366406,75497473,75890689,76087307,76218369,76283905,76414977,76546050,76742657,77135873,77266945,77856774,78184449,78512134,78577665,78905345,78970882,79495169,79626241,79953928,80084993,80281607,80478209,80936961,81002503,81068039,81199105,81264648],"arg":[7340033,14876677,18874373,19136517,20905989,23461889,25034753,26214401,28573697,28704769,28770305,29032449,29097985,29294593,29556737,29884417,30146561,30212097,30277633,30343169,30408705,30605313,30736385,30801921,30932993,31129601,31195137,31522817,31653889,31784961,31916033,32112641,32178177,32309249,32374785,32440321,32702465,32964609,33030145,33095681,33357825,33685505,33816577,34078721,34209793,34275329,34603009,35651585,35848193,54067201,59113473,63438849,66060289,68026369,68681729,76349441],"arr":[7733249,10158081,11337729,45154305],"activex":[3735568,4521987,5373968,7929857,8716304,8847362,9175042,9306128,9502736,9830416,11010064,11206672,11403280,11468801,13172737,13238273,13434881,13500417,13697025,13828097,14745601,14811137,15073281,15400961,15597569,15859713,17235969,17301505,17825793,18087937,18284545,18546689,19202049,19988481,20119553,20316161,20578305,20774913,21495809,22216705,22478849,22937601,23527425,23592961,24182785,25100289,45350920,47710216,48168968,51183624,75104272,75956227,76087312,77856784,78512144,79953936,80281616,81002512,81068048,81264656],"addcomtype":[3735560,5373960,8716296,9306120,9502728,9830408,11010056,11206664,11403272,13434885,13697029,13828101,14811141,15073285,15597573,17235973,19202053,19988487,20316167,20578311,22216711,22478855,23527431,23592967,25100295,47710216,51183624,75104264,76087304,77856776,78512136,79953928,80281608,81002504,81068040,81264648],"arbitrary":[57737217,57999361,58130433,60293121,61407233,62193665,63045633,64684033,65273857,68288513,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"allows":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538946,3604481,3866625,3932161,4128769,4194305,4325377,4521986,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,9895937,15990785,45547521,52232193,56033281,57147394,57737220,57999361,58130436,60293124,61407236,62193668,62390273,62717953,63045636,63635457,64684036,65273860,66519041,67502082,68288513,68943873,69206018,69533700,70713345,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,74907649,75038721,75104260,75169793,75366401,75431937,75628545,75759617,75956227,76087300,76152833,76349441,76414977,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856772,77987842,78249985,78381058,78512132,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953924,80019457,80084993,80216065,80281604,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002500,81068036,81133569,81264644,81330177],"attempt":[57278465,61669377,63963137,67764225],"attributetargets":[73990164,74842148,75038724,75759636,79167504,80216100],"ancestors":[6356993],"arrayt":[8585218,10944514],"automatic":[57737217,58130433,59834369,60293122,61407233,62062593,62193665,63045633,64684033,65273857,67567617,69533697,71565313,74055681,75104257,75366401,76087298,76939268,77856769,78512129,79953921,80150529,80281601,81002497,81068033,81264641],"affects":[56033281,57278465,62717953,63963137,75235329,75563009,76021761,80412673],"attributes":[851969,4456450,4784130,4980738,5767172,6356999,27721730,29753346,33882115,39911427,43712515,45547521,48103425,48824322,49872899,51707905,53608449,56885249,59244545,60751873,61538305,62652418,62783489,63307777,63766529,64356353,64618498,73138177,73269250,74645505,74711041,74973186,75431940,75497473,75694082,76283905,77135873,77660162,78118914,78184449,78839809,79233026],"addhosttype":[3735560,5373960,8716296,9306120,9502728,9830408,11010056,11206664,11403272,14286853,14352389,15335429,15466501,15794181,15925253,17760261,20512773,21692423,22544391,24117255,24903687,26017799,26476551,27066375,27983879,50855944,54722568,75104264,76087304,77856776,78512136,79953928,80281608,81002504,81068040,81264648],"asyncloadcallback":[52756481,61341700,76873729,79888385],"awaitdebuggerandpauseonstart":[76939265],"attached":[15269889,15728641,16187393,16384001,18219009,19464193,22872065,23855105,26542081,26804225,28639233,29360129],"api":[22085633,64094209,69402625,76218369,76611585],"addcomobject":[3735560,5373960,8716296,9306120,9502728,9830408,11010056,11206664,11403272,13172741,13238277,13500421,14745605,15400965,15859717,17301509,17825797,18087943,18284551,18546695,20119559,20774919,21495815,22937607,24182791,45350920,48168968,75104264,76087304,77856776,78512136,79953928,80281608,81002504,81068040,81264648],"accessor":[33882118,41615366,43712518,51118086,79036417],"attributeusageattribute":[73990148,74842116,75038724,75759620,79167492,80216068],"allocate":[61014017,72155137,76152833],"auxiliary":[54657025,63635458,69992449],"accepted":[36175873,36241410,36372482,37552129,37945346,38207489,38273026,39387138,39518210,40108033,40239106,40435713,43122689,43515906,43581442,44040193,44433410,48037889,48365569,49217537,49741826,49807361,52625410,54460417,79757314],"asconstructor":[16121861,23789573,27000837,31981574,39780358,79822853],"arrtype":[4521985,7733252,75956225],"await":[36700161,61276161,72744961,76611593,77201409],"automatically":[196609,15728641,16187393,21757953,22872065,23855105,70975489,75038721,76087297,76939265],"avoid":[13303809],"auxiliarysearchpath":[54657025,63635460,69992449],"appears":[81330177],"accept":[16711681,23199745],"addmethodgetter":[5767172,34668549,35323909,37158917,38928389,58654724,75431940],"additionally":[77791233],"algorithm":[56688641,58916865,62259201,63635457,64290817,65077249,66650113,72286209,73990145,74842113,76021761],"anonymous":[57737217,58130433,60293121,60817413,61407233,62193665,63045633,64684033,65273857,66387973,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"add":[655361,983041,1114113,1966081,2883585,3080193,3211266,6619137,6684673,6815745,8650753,8847363,10551298,11534338,11599875,11730946,11796482,11927554,12058626,12124162,12386306,12451843,12517378,12713986,12845058,12910594,13172737,13238273,13434881,13369345,13500417,13565955,13631490,13697025,13762561,13828097,13893634,13959170,14024705,14221314,14286849,14352385,14417921,14745601,14811137,15073281,15204354,15335425,15400961,15466497,15597569,15794177,15859713,15925249,16711681,17235969,17301505,17760257,17825793,17891329,18087937,18284545,18546689,19202049,19529736,19988481,20119553,20250625,20316161,20381697,20512769,20578305,20774913,21102593,21495809,21692417,22216705,22478849,22544385,22609921,22937601,23199745,23527425,23592961,24117249,24182785,24379393,24903681,25100289,26017793,26476545,27066369,27983873,33882113,34668545,35323905,37158913,38666241,38928385,39911425,41615361,43712513,45350913,45678593,46792705,47710209,48168961,49152001,49872897,50462721,50855937,51118081,51183617,51773441,51838977,52035585,54722561,55377921,58654721,62652417,64618497,71368705,74121217,74776577,75628545,76414978,76939265],"allowreflection":[11862017,19005441,57278468,57737217,58130433,60293121,61407233,62193665,63045633,63963142,64684033,65273857,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"attempting":[75104257,79953921,81264641],"abc":[8847361],"added":[589825,720897,1114113,1376257,6815745,71368705,74121217,75628545,76414977,76939265],"ascii":[39059457,39452673],"actions":[3342337,5963777,80084993,80543745],"asynchronous":[3670017,4456449,4784129,4980737,5767170,9043969,10682369,17039361,17170433,17956865,18415617,18808834,19398657,20054017,21233665,24772611,25231361,26935297,36503554,37814275,47775746,51707905,69337089,73269249,74973185,75431938,75694081,77791233,78249985,78774273,80936961],"absolute":[6291457,7208961,7405569,9043969,10682369],"addrestrictedhostobject":[3735554,5373954,8716290,9306114,9502722,9830402,11010050,11206658,11403266,17891333,20250629,21102599,22609927,52035586,55377922,75104258,76087298,77856770,78512130,79953922,80281602,81002498,81068034,81264642],"access":[2818052,2949121,3145729,3276804,3342337,3473412,3997700,4390916,5570561,5963777,5898242,6488072,6553602,6619137,6684673,6815745,7405569,7995393,8650753,8716290,9043969,9109505,9306114,9502722,9830402,10682369,11206658,11272193,11403266,13959169,14876675,16318467,16711681,16973827,17367041,17891329,18219009,18612225,18874371,19070979,19136515,20250625,20905987,21102593,22020099,22151169,22609921,23199745,23396361,24051720,25165833,25952264,26542081,28311553,28966920,33882113,41156611,41615361,42663937,42926083,43319298,43712513,45547526,46202885,46333955,47448065,47644674,48103425,49545217,49938437,50790402,51118081,51707906,52232193,52756481,53542915,53673985,54001665,55312388,56033282,57147395,57671682,57737222,57933825,58130438,58261505,58392577,58523649,59768834,60293126,60817412,61079553,61407238,61734913,61931521,62193670,62259202,62324737,62390273,62717954,63045638,63373318,64159745,64684038,65077249,65273862,65798145,65863683,66387972,66519041,66781187,67043329,67502083,68157442,69206019,69337089,69533702,69926913,70713345,71499782,72286210,73138180,73990148,74121217,74645508,74776581,74842116,74907649,75104264,75497476,75759619,76021765,76087302,76414978,76480513,76873730,76939266,77135876,77856774,78184452,78381059,78446594,78512134,78970881,79036418,79101954,79167495,79888386,79953928,80084993,80216067,80281608,80412674,80543745,80674817,80805890,81002504,81068040,81199105,81264648],"avoids":[58916865,64290817],"arraybuffer":[3473417,16646146,16973827,17432578,18153474,19070979,19136515,20905987,21168130,23986178,46202884,47906818,48103426,49020930,53608449,56885251,58195969,59244547,61014017,61145089,62783491,64356355,66846725,69861378,71041025,72155139,72220673,73138187,74645508,75497475,76152833,77135875,78184451,79233025],"adds":[1835012,1966081,2883592,3080193,3211266,5767180,6619137,6684673,6815745,8650753,10551297,11534337,11599873,11730945,11796481,11927553,12058625,12124161,12386305,12451841,12517377,12582913,12713985,12845057,12910593,13565953,13631489,13893633,14221313,15204353,19529729,33882113,34668545,35323905,37158913,38666241,38928385,39911425,41615361,43712513,45678596,46792705,49872897,50462724,51118081,51838979,58654724,62652420,64618500,71368705,74121224,75431948,75628545,76414978,79888388],"args":[4849665,9633797,9895937,10747909,10878981,11468805,14680069,15007749,16056325,16121861,16252933,20447238,22413317,23789573,25362438,25624577,25821190,26279937,26869761,27000837,27328513,27525121,27656193,27787265,27852801,27918337,28049414,28114949,28246017,28442625,28508161,28835841,28901377,29163525,29229057,29425665,29491201,29622273,29818881,29949953,30015489,30081025,30474241,30670849,30867457,30998529,31064065,31260673,31326209,31391745,31588353,31719425,31850497,32047105,32571393,32768001,32833537,33488897,33947649,34340865,34537473,35586049,51052545,60227585,61079558,61800449,65011713,69926918,70516737,71696385,76546049,77529089,79822853,80609285],"addtype":[2883587,11599877,12058629,12713989,51838979,74121219],"accommodate":[79888385],"assemblies":[4521986,7995397,9109508,12976131,13369347,13762567,15138823,43974662,46596098,63635457,73990145,74121223,75759617,75956226],"approach":[56688641,58916865,64290817,66650113],"assemblyname":[8978437,11534341,11599877,12451845,15925253,17760261,21692422,22544390],"allocated":[71041025,72155137,72220673],"async":[3670017,4063233,9043969,10682369,18808835,24772609,26148865,28377090,36503554,37814273,47775745,61341697,69337089,76611585,78774273,79233028,80936961],"augment":[63635457],"asyncdocumentloadcallback":[45547521,61341703,69337092],"additional":[39256065,40828929,43778049,45481985,45547521,60358657,62980097,71041025,72220673,72548353,78970881,79167489,79757313],"allow":[57278465,63963137],"assemblyqualifiedname":[11862017,19005441],"allocation":[72155137],"array":[2818051,3211266,3276804,3473411,3538946,3997699,4390923,4521986,6356994,7733252,7995395,8585222,8978435,9109507,9633793,10027009,10158087,10354689,10485761,10747905,10878977,10944520,11075592,11337732,11468801,11599873,12713985,12976129,13041665,13369345,13762561,14090243,14352385,14417921,14680065,15007745,15138817,15925249,16056321,16121857,16252929,16449539,16646147,16711682,16777219,16908294,17432579,17760257,18743302,19595269,20185091,20381697,20447236,20512769,21168131,21692417,22282243,22413313,22544385,23199746,23789569,24117249,24903681,25362433,25821188,28049409,28114945,36044801,36175873,36241409,36372481,37552129,37748737,37945345,38076417,38207489,38273025,39387137,39518209,40042497,40108033,40239105,40435713,42401793,43122689,43515905,43581441,44040193,44433409,44826625,45154306,45744129,45875201,46858241,47513601,47906817,48037889,48103425,48365569,49020929,49217537,49741825,49807361,50266116,50987009,51249156,51970049,52625409,53215233,54460417,54984705,56360962,57737217,58130433,60293121,61079555,61407233,62193665,62783489,62849026,63045633,64356353,64684033,65273857,65929217,66846721,69533697,69861379,69926915,72155137,73138179,74645507,75104257,75497475,75956226,76087297,76414978,76939268,77135876,77856769,77987842,78184461,78512129,79233025,79953921,80281601,80412673,81002497,81068033,81264641],"advances":[4063233,4259841,24838145,28377089,70320129,80936961],"accelerated":[7077894,11010054,36044802,36175873,36241409,36372481,37552129,37748738,37945345,38076418,38207489,38273025,39387137,39518209,40042498,40108033,40239105,40435713,42401794,43122689,43515905,43581441,44040193,44433409,45744130,45875202,46858242,47513602,48037889,48365569,49217537,49741825,49807361,50003971,50987010,51642371,51970050,52625409,54460417,54853635,54984706,57212931,75366406,76087302],"asynchronously":[2162689,2228225,4063234,9043969,10682369,28377089,45547521,52756481,61341697,69337089,75169793,79691777,79888385,80936962],"analysis":[15990785],"auto":[62062593,67567617],"addhosttypes":[3735553,5373953,8716289,9306113,9502721,9830401,11010049,11206657,11403265,14417924,20381702,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"alternative":[61931521],"appear":[16711681,23199745,75235329],"awaitdebuggerandpause":[78118913],"active":[7077889,11010049,38338561,39124993,71565313,74055681,75366401,76087297,76939265],"addpropertyaccessors":[5767172,38666245,39911429,41615365,43712517,62652420,75431940],"affinity":[39714817,41943041,42270721,45219841,47251457,48889857,50331649,52297729,52559873,53149697,53673985,54919169,75104257,76087297,79101953,79953921,80281601,80805890,81002497,81068033,81264641],"arrays":[16711682,23199746,48103425,76939265,77135873,78184449,80412674],"attempts":[43843585,44564481,45613057,49283073,51380225,56688641,61734913,61931521,66650113],"ambiguous":[14155777,14483457,14548993,14942209,15269889,15728641,16187393,16384001,16515073,18022401,18219009,19464193,19857409,21037057,21364737,21561345,21626881,22872065,23855105,24313857,24641537,25427969,26542081,26607617,26738689,26804225,28639233,29360129],"associate":[22085633,22740993,35258369,36896769,37027841,38731777,39649281,39714817,41680897,41943041,42205185,42270721,42532865,42991617,43778049,44498945,44761089,45219841,45481985,46530561,47316993,48234497,49086465,50331649,50528257,50593793,52101121,52297729,52953089,53149697,54132737],"accessflags":[52756481,59768836,79888385],"attribute":[851969,1769477,2031621,2949125,3145733,4653061,5046277,6356998,6488065,6881281,8126465,14614529,17367041,18612225,22151169,22806529,23396353,24051713,25165825,25952257,27197441,27394049,28311553,28966913,45547521,47448065,53542915,53936130,54657025,55312385,56492035,57671683,57737217,57933825,58130433,60293121,60882947,61407233,62193665,63045633,63373313,63700993,64684033,65077249,65273857,65536003,65863683,66781187,67960834,68157443,69533697,69992449,70254595,71499777,73990154,74711043,74842122,75038733,75104257,75759629,76087297,77856769,78118914,78512129,79167497,79233026,79953921,80216077,80281601,81002497,81068033,81264641],"addassembly":[2883588,11534341,11796485,12451845,13565957,50462724,74121220],"application":[2097153,2752513,2818049,3276801,3473409,3735553,3997697,4063233,4259841,4390913,5373953,5570561,5963777,7077889,8716289,9306113,9502721,9830401,11010049,11206657,11403265,21757953,24510465,25296897,36044801,36175873,37552129,37748737,38076417,38207489,40042497,40108033,40435713,42401793,43122689,44040193,45744129,45875201,46465025,46858241,47513601,48037889,48365569,49217537,49807361,50987009,51904513,51970049,54460417,54984705,56164353,56623105,60358657,62980097,70320129,70975489,72548353,73138177,74645505,75104257,75366401,75497473,76087297,76283905,76939266,77135873,77856769,78184449,78512129,78970881,79495169,79953921,80084993,80281601,80936961,81002497,81068033,81199105,81264641],"argcount":[8388614,10944518,11075590],"accessible":[8192001,8323073,10092545,10420225,16711682,17891329,20250625,21102593,22609921,23199746,56033281,60817409,62717953,66387969,76414977,76939265],"ability":[75038721],"addperformanceobject":[76939266],"ambiguity":[76939265],"arra":[4390913,19595266,62783489,64356353,65929217,77135873,78184451],"accelerate":[36241409,36372481,37945345,38273025,39387137,39518209,40239105,43515905,43581441,44433409,49741825,52625409,67895297,79757313],"allowcategorymismatch":[76873729],"addhostobject":[3735554,5373954,7995393,8454145,8585217,8716290,8847361,8912897,8978434,9109505,9175041,9306114,9502722,9830402,9961473,10158082,10223617,10354690,10747905,10551297,10878978,10944513,11010050,11075585,11206658,11337729,11403266,11468801,11730945,11862017,11927553,12124161,12386305,12517377,12582913,12845057,12910593,13172737,13238273,13434881,13500417,13631489,13697025,13828097,13893633,13959169,14024710,14221313,14286849,14352385,14417921,14745601,14811137,15073281,15204353,15335425,15400961,15466497,15597569,15794177,15859713,15925249,15990785,16711685,17235969,17301505,17760257,17825793,17891329,18087937,18284545,18546689,19005441,19202049,19988481,20119553,20250625,20316161,20381697,20512769,20578305,20774913,21102593,21495809,21692417,22216705,22478849,22544385,22609921,22937601,23199751,23527425,23592961,24117249,24182785,24379400,24903681,25100289,26017793,26476545,27066369,27983873,49152002,51773442,74121217,75104258,76087298,76414977,77856770,77987841,78512130,79953922,80281602,81002498,81068034,81264642],"able":[76414977],"advised":[34406401,45285377,77266945,78577665],"acme":[7995395,9109507,74121219],"attach":[57737217,57999361,58130433,60293121,61407233,62193665,63045633,64684033,65273857,68288513,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"activities":[72744961],"accessors":[5767172,38666242,39911426,41615362,43712514,62652421,75431940],"asynciterable":[18808838],"advanced":[24838145,28377089],"abandons":[58916865,64290817],"accesscontext":[56033284,57737217,58130433,60293121,60817409,61407233,62193665,62717958,63045633,64684033,65273857,66387969,69533697,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"assumes":[7995393,8585217,8847361,8912897,8978433,9109505,9175041,9961473,10158081,10223617,10354689,10747905,10551297,10878977,10944513,11075585,11730945,11862017,11927553,12124161,12386305,12517377,12582913,12845057,12910593,13631489,13893633,13959169,14221313,15204353,15990785,19005441],"argument":[2818050,3276802,3473410,3538950,3997698,4390914,4521990,5767170,7340070,8585217,8847361,9175041,9568258,9895978,10878978,11468802,11665411,11862018,13238273,13697025,13828097,13959170,14876675,15400961,15597569,15859713,16711682,17301505,18546689,18808833,18874371,19005442,19136515,19202049,19922945,20054017,20119553,20316161,20578305,20774913,20905987,21495809,23199746,23527425,25100289,25624580,26279940,26869764,27328515,27525123,27656196,27787267,27852804,27918339,28246019,28442628,28508163,28573699,28704770,28770306,28835843,28901379,29032451,29097987,29229060,29294595,29425668,29491203,29556738,29622276,29818884,29884419,29949955,30015492,30081027,30146563,30212098,30277635,30343170,30408706,30474242,30605313,30670852,30736387,30801923,30867459,30932994,30998532,31064068,31129602,31195138,31260675,31326211,31391747,31588355,31719428,31784962,31850498,31916034,32047108,32112643,32178178,32309251,32374787,32440323,32505858,32571395,32702466,32768003,32833540,32964610,33030146,33095682,33357826,33488899,33619970,33816578,33947651,34013186,34078723,34209795,34275331,34340867,34471938,34537475,34603009,34668546,35586051,35651587,35782658,35848194,35979265,36110338,36438018,37355522,38141954,38469634,38928386,40370178,42270721,42729473,43646978,44957698,45219841,46202882,46923778,49479682,49938434,50069508,50593793,51052563,51707905,52494340,52953089,53149697,53739522,54067219,54132737,56754178,58654722,59113476,63438849,66060289,68026369,68681729,72417282,73138178,74514434,74645506,75431938,75497474,75956230,76349483,76939265,77135874,77266945,77529130,77987846,78184450,78577665,79626244,80478212],"assumed":[64094209,66584577,67829761,69402625],"affect":[80412673],"assembly":[1,393217,524289,655361,327681,786433,917505,983041,1114113,2359297,2883593,3735554,4521985,5373954,5505025,5832705,6029313,6225921,6291457,6356993,6422529,6488065,6619137,6684673,6750209,6815745,6881281,7012353,7143425,7208961,7274497,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7929857,7995394,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716290,8781825,8847361,8912897,8978435,9043969,9109506,9175041,9306114,9371649,9437185,9502722,9568257,9633793,9699329,9764865,9830402,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010050,11075585,11141121,11206658,11272193,11337729,11403266,11468801,11534341,11599875,11665409,11730945,11796495,11862018,11927553,11993089,12058625,12124161,12189697,12255233,12386305,12451845,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565967,13631489,13697025,13762567,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138823,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925251,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760259,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005442,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692419,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544387,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,26935297,27000833,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28246017,28180481,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35454977,35520513,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36306945,36372481,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38404097,38469633,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40632321,40697857,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,41943041,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43712513,43778049,43843585,43974658,44040193,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44761089,44892161,44957697,45023233,45088769,45219841,45285377,45416449,45481985,45613057,45744129,45809665,45875201,46137345,46333953,46465025,46530561,46792705,46858241,46989313,47054849,47120385,47185921,47251457,47316993,47513601,47644673,48037889,48234497,48365569,48562177,48889857,48955393,49086465,49217537,49283073,49414145,49741825,49807361,49872897,50135041,50331649,50462729,50528257,50593793,50659329,50724865,50790401,50855938,50921473,50987009,51118081,51380225,51511297,51838977,51970049,52101121,52297729,52428801,52559873,52625409,52953089,53149697,54132737,54198273,54460417,54591489,54657025,54722562,54919169,54984705,55508993,55771137,56033281,56229889,56360961,56688641,56950785,57016321,57147393,57278465,57344001,57475073,57868289,57999361,58195969,58327041,58392577,58458113,58523649,58785793,58916865,58982401,59179009,59310081,59441153,59506689,59572225,59637761,59703297,59768833,59899905,59965441,60030977,60096513,60162049,60489729,60555265,60620801,60686337,60817410,60882945,60948481,61079553,61145089,61341697,61472769,61669377,61734913,61865985,61931521,62062593,62128129,62259201,62324737,62390273,62521345,62586881,62717953,62849025,62914561,63111169,63176705,63242241,63307777,63373313,63438849,63504385,63569921,63635457,63700993,63766529,63832065,63963137,64028673,64094209,64159745,64225281,64290817,64421889,64487425,64552961,64749569,64815105,64880641,64946177,65011713,65077249,65142785,65208321,65339393,65404929,65536001,65601537,65732609,65667073,65798145,65929217,65994753,66060289,66125825,66191361,66256897,66322433,66387970,66453505,66519041,66584577,66650113,66715649,66846721,66912257,66977793,67043329,67108865,67174401,67239937,67305473,67371009,67436545,67502081,67567617,67698689,67764225,67829761,67895302,67960833,68026369,68091905,68222977,68288513,68354049,68419585,68485121,68550657,68616193,68681729,68747265,68812801,68878337,68943873,69009409,69074945,69140481,69206017,69271553,69337089,69402625,69468161,69599233,69664769,69730305,69795841,69861377,69926913,69992450,70057985,70123521,70189057,70254593,70320129,70385665,70451201,70516737,70647809,70713345,70778881,70844417,70909953,70975489,71041025,71106561,71172097,71237633,71303169,71368705,71434241,71499777,71565313,71630849,71696385,71761921,71827457,71892993,71958529,72024065,72089601,72155137,72220673,72286209,72351745,72417281,72482817,72548353,72613889,72679425,72744961,72810497,72876033,72941569,73007105,73072641,73138177,73203713,73269249,73334785,73400321,73465857,73531393,73596929,73662465,73728001,73793537,73859073,73924609,73990149,74055681,74121229,74186753,74252289,74317825,74383361,74448897,74514433,74579969,74645505,74711041,74842113,74907649,74973185,75038721,75104259,75169793,75235329,75300865,75366401,75431937,75497473,75563009,75628545,75694081,75759621,75825153,75890689,75956226,76021761,76087299,76152833,76218369,76283905,76349441,76414977,76480513,76546049,76611585,76677121,76742657,76808193,76873729,76939265,77004801,77070337,77135873,77201409,77266945,77332481,77398017,77463553,77529089,77594625,77660161,77725697,77791233,77856771,77922305,77987841,78053377,78118913,78184449,78249985,78315521,78381057,78446593,78512131,78577665,78643201,78708737,78774273,78839809,78905345,78970881,79036417,79101953,79167489,79233025,79298561,79364097,79429633,79495169,79560705,79626241,79691777,79757313,79822849,79888385,79953923,80019457,80084993,80150529,80216065,80281603,80347137,80412673,80478209,80543745,80609281,80674817,80740353,80805889,80871425,80936961,81002499,81068035,81133569,81199105,81264643,81330177],"applies":[9568257,11468801,19005441,61734913,78446593],"applied":[75038721],"assemblynames":[7995397,9109509,12976133,13369349],"action":[2818050,3276802,3473410,3997698,4390914,5898241,6553601,8585217,16318475,18874379,19070987,20905995,40632335,42860555,43319297,46202882,48758785,49938434,53477377,73138178,74645506,75497474,77135874,78184450,79101953,80805889],"accelerating":[72744961,79560706],"allowing":[62062593,67567617],"advantage":[47120385],"assigning":[8585217,71565313,74055681],"abstractclassattribute":[68943873,69992449,71172097,71958529,72613889,75431937,76480513,76677121,77201409,77266945,77332481,77594625,77856769,78577665,78774273,79691777,79953921,80084993,80543745,81068033],"administrator":[458753],"astype":[3538945,4521985,8912901,75956225,77987841],"applications":[74776577,80281601,81002497,81068033],"abstract":[1114113,6029313,6291457,6356993,7208961,7405569,7536641,7602177,8257537,8519681,9043971,10682369,13172737,13238273,13303809,13434881,13500417,13697025,13828097,14024705,14090241,14155777,14286849,14352385,14417921,14483457,14548993,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17104897,17235969,17301505,17432577,17498113,17629185,17760257,17825793,17891329,18022401,18087937,18153473,18219009,18284545,18350081,18546689,18677761,18743297,18874369,18939905,19070977,19136513,19202049,19333121,19464193,19529729,19595265,19726337,19791873,19857409,19988481,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20774913,20905985,21037057,21102593,21168129,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21954563,22020097,22216705,22282241,22413315,22478849,22544385,22609921,22675459,22872065,22937601,23003137,23068673,23199745,23265281,23461889,23527425,23592961,23658499,23789571,23855105,23920643,23986177,24117249,24182785,24248321,24313857,24379393,24444931,24510467,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25362433,25427969,25493505,25559041,25296897,25690115,25821187,25886723,26017793,26083329,26148865,26214401,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,27000833,27066369,27131905,27459585,27590657,27721729,27983873,28049409,28114947,28180481,28377089,28639233,29163521,29360129,29687809,29753345,31653889,32243713,33226753,33423363,34668547,35454977,36503555,36634625,37879809,38010881,39321603,39911427,40501249,40632321,40697857,41156609,41353217,41484289,41746433,42139649,42663937,42860545,43319297,43843585,44171265,44564481,44630017,45547521,45613057,46333953,46465025,46989313,47644673,48955393,49283073,50135041,51380225,51511299,52428801,56033281,56229889,56360961,56688641,56950785,57147393,57278465,57344001,57868289,57999361,58195969,58327041,58392579,58458113,58523649,58785793,58916865,58982401,59179009,59506689,59572225,59637761,59703297,59899905,59965441,60030977,60096513,60162049,60489731,60555265,60620801,60686337,60817409,60882945,60948481,61079553,61145089,61472769,61669377,61865985,62062593,62128129,62259201,62324737,62390275,62521347,62717953,62849025,62914563,63111169,63176705,63242241,63307777,63569923,63832065,63963137,64159745,64290817,64421889,64552961,64815105,65208321,65339393,65404929,65601537,65732609,65667073,65798145,65929217,65994753,66125827,66322433,66387969,66453505,66519041,66650113,66846721,66912260,67043329,67108865,67239937,67305473,67371009,67502083,67567617,67764225,68091905,68222977,68288513,68485121,68812801,68878337,68943874,69074948,69140481,69206017,69468161,69664769,69795841,69926916,69992449,70057985,70254593,70647809,70713345,71106561,71172098,71237633,71958529,72089601,72286209,72351745,72482817,72613890,73334785,73465857,73662465,73728001,73793537,74252289,74907649,75431938,76480515,76677121,77201409,77266946,77332482,77463553,77594625,77856770,77922305,78381057,78577666,78774273,79691778,79953922,80084994,80543746,81068034],"applicable":[73990145,74842113,75759617,79167489,80216065],"addition":[3342337,5963777,12582913,13959169,16711681,23199745,80084993,80543745],"available":[16711681,23199745,55246849,56950785,59703297,60358657,61603841,61734913,61931521,62455810,62980097,64487425,67895298,69664769,70451201,70975489,72548353,73334785,73859074,76939265,77398017,77660161,78905346,78970881,79560705],"assign":[33292289,33751041,34865153,34930689,35717121,36306945,36569089,37224449,37421057,38797313,38862850,39583745,40566786,41222145,42008577,42795009,44367873,45416449,46137345,54591489],"address":[14876674,16318466,16973826,18874370,19070978,19136514,20905986,22020098,61603841,70975489],"addpropertygetter":[5767172,33882117,46792709,49872901,51118085,64618500,75431940],"assigned":[10485761,10813441,12779521,33882113,34668545,35323905,37158913,38928385,46792705,49872897,51118081,60358657,62980097,65536001,72548353,77660161,78970881],"accepts":[8388609,10944513,11075585],"arguments":[8388610,8454145,8585217,8978434,9633793,10354690,10551297,10878977,10944514,11075586,11468801,11599873,11665409,11730945,11927553,12124161,12386305,12517377,12713985,12845057,12910593,13631489,13893633,13959169,14221313,14286849,14352386,14417921,14680065,15007745,15204353,15335425,15466497,15794177,15925250,16056321,16121857,16252929,16711683,17760258,20381697,20447233,20512770,21692418,22413313,22544386,23199747,23789569,24117250,24903682,25362433,25821185,26017793,26476545,27000833,27066369,27983873,28049409,28114945,29163521,51707905,57737217,58130433,60227585,60293121,61079553,61407233,62062595,62193665,63045633,64684033,65011713,65273857,67567619,69533697,69926913,75104257,76087297,77529090,77856769,78512129,79822849,79953921,80281601,80609281,81002497,81068033,81264641]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_98.json b/docs/Reference/fti/FTI_98.json index 8965d185..93a40a58 100644 --- a/docs/Reference/fti/FTI_98.json +++ b/docs/Reference/fti/FTI_98.json @@ -1 +1 @@ -{"boolean":[1835009,3735554,4587523,4980742,5242882,5373955,5898243,6094850,6225922,6291459,6356995,6553603,6946820,7208971,7536643,8388609,8716293,8912898,8978435,9175042,9371650,9764866,10027010,10158082,10223618,12910594,13172737,13631493,13893633,14352386,14548993,14745601,14811138,15073281,15335426,15400962,15532033,16187395,16318467,16973827,17039362,17694722,18284546,18874373,19464193,19595266,20447233,21233665,22085633,22282243,22806529,22937602,23068676,23527426,23789574,23986179,24117250,24641537,24838146,25362435,25624578,25755650,25821185,26411011,27066371,27918340,27983875,28049411,28377091,28573699,28704769,28966913,29294595,30081026,30343171,30605314,30998529,31391745,31719426,31981571,32374785,32636930,33488897,34013187,34078721,34930689,35061761,35192835,35520514,36110337,36372483,36831233,37355521,37748737,37879811,38273029,38666243,39452673,39714819,39845890,40042498,40763393,41091074,41353218,41615362,41746434,42336258,42467331,42795010,43057154,43122693,43450370,43581442,44171266,44892162,45154306,45219842,45481986,45875202,46333954,46465026,47185922,47382530,47710210,47906818,48234498,48300034,48627714,48889858,49020930,49414146,51052546,51314690,52035586,52559874,52822018,53280770,54001666,54525954,54853634,56098818,56426498,57999362,58064898,58195971,58261510,58327042,58392579,58523649,60096515,60817419,60882949,61407235,61538307,61603843,61669377],"begins":[4980738,7208962,24838145,25624577,25755649,30081025,31588353,32964609,34340866,38076418,58261506,60817410],"begincpuprofile":[4980738,7208962,24838149,25624581,25755653,30081029,34340866,38076418,58261506,60817410],"buffer":[2621441,3211265,15728641,15794177,16580609,16711681,17432577,17498113,18022401,18219009,18481153,19202049,37027841,37421057,37814273,37945345,44040194,44564481,44826625,45350913,52101121,59375617,59834369],"bag":[131073,196609,589825,1769473,2752513,3276801,4915201,5373953,5898241,6160385,9371649,10551297,11534337,16121857,16318465,16515073,16973825,17039361,17629185,17694721,18284545,18808833,19595265,20185089,31719425,34537473,41091073,42663937,43188225,43253761,46858241,48431105,49152001,56426497,57540609,57999361],"bar":[8323073,12255233],"baz":[8323073,12255234],"basic":[3014659,4521987,7471106,7929858,7995394,8585218,9240578,9895938,16252930,17104898,17825794,18153474,18546690,19005442,19333122,19726338,20054018,20512770,21299202,55705603,60227587],"beginning":[13828097,19398657],"buggy":[51511297],"blocked":[47316993,53411841,53477377,54722561,56950785,59441153],"byref":[19595267,24444930,24969220,25362434,25493508,25559042,25821186,26017794,26083332,26411010,26542084,26607620,26935300,27066370,27525122,27983874,28049410,28311556,28377090,28573698,28704770,28966914,29294594,29491204,29556738,29949956,30343170,30736388,30998530,31391746,31981570,32178180,33095682,34013186,34930690,35848196,37879810,52166658],"button":[7143427,8060931,54067203],"bytes":[2621442,2686978,2818050,3211266,3670018,16711685,17432581,17498117,18022401,18219013,18481153,37027841,37814273,38797313,39911431,40239105,41156609,44826625,45350913,49086465,49479681,49872897,50200577,50331649,50724865,52101121,52690945,53149697,53542913,53936129,54263809,54460417,55640065,56164353,56557569,59244551,59375619,59834371,60162051,60424195,60751875],"build":[24969217,25362433,25493505,26083329,26411009,26542081,26607617,26935297,27066369,27983873,28049409,28311553,28377089,28573697,29294593,29491201,29949953,30343169,30736385,31981569,32178177,34013185,35848193,37879809],"bailout":[53608449],"bailoutreason":[37617665,53608452,55115777],"bit":[9043969],"based":[524289,1048577,13828097,19398657,37617666,39059457,40632321,42074113,42205185,43909121,44957697,45088769,46268417,46333955,47316993,47775745,47906817,51052547,53411841,53477377,54001665,54591489,54722561,54919169,55115778,55902209,56950785,57081857,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"byte":[2621443,2686979,2818051,3211267,3407873,3670019,4980754,5046273,7208978,10420231,16711688,17432584,17498120,18022406,18219016,18481158,24444933,24969221,25362438,25493509,25559045,25821190,26017797,26083333,26411013,26542085,26607621,26935301,27066373,27525125,27983878,28049414,28311557,28377093,28573701,28704774,28966918,29294597,29491205,29556741,29949957,30343174,30736389,30998534,31391750,31981573,32178181,33095685,34013190,34930694,35192841,35848197,36372489,37879814,38666249,39714825,58261522,58785793,59375619,59768833,59834371,60162051,60424195,60751877,60817426],"box":[41943041],"breaking":[43450369,49414145,52690945,53149697,53542913,54263809],"bool":[5242884,5373955,5898243,6094852,6225924,6946824,8912899,9175043,9371651,9764867,10027011,10158083,10223619,12910595,13631491,14352387,14811139,15335427,15400963,16187395,16318467,16973827,17039364,17694724,18284547,18874372,19595268,22282243,22937603,23068676,23527427,23789572,23986179,24117251,24838147,25362435,25624579,25755651,26411011,27066371,27918340,27983875,28049411,28377091,28573699,29294595,30081027,30343171,30605315,31981571,32636931,34013187,35520516,37879811,38273028,39845892,40042501,41353221,41615364,41746435,42336261,42467332,42795014,43057157,43122692,43450374,43581445,44171270,44892165,45154309,45219846,45481989,45875206,46333958,46465030,47185926,47382533,47710213,47906821,48234502,48300037,48627717,48889861,49020933,49414149,51052549,51314694,52035589,52559877,52822021,53280773,54001670,54525958,54853637,56098821,58064899],"behavior":[3014666,4521994,38010881,38404097,39321601,40042497,42074113,42795009,43057153,44171265,46333953,46465025,48889857,51052545,51773441,53346305,55312385,55705611,58261505,59441154,60227594,60817409,61145090],"bound":[8126465,8454145,9437185,12713985,13041665,13500417,13697025,14286849,14483457,15007745,15138817,15269889,19136513,19922945,20709377,21037057,21430273,21889025,23199745,24248321,25100289,47316993,48168961,48758785,49348609,49676289,49938433,51183617,52297729,53411841,53477377,54591489,54722561,56819713,56950785,61407233,61538305,61603841],"braces":[8323073,8650753,11927553,12320769,12845057,14024705,14942209,15597569,15925249,16842753,18350081,18612225,19070977,19660801,19988481,20643841,22478849,23265281,34734081,35127297,36044801,38207489,39190529,45613057],"base":[5242882,13303809,13959169,22609921,23396353,38010884,39976961,56229889,57671681,58195969,60227585,61603841],"bigint":[61145090],"bidirectional":[61145090],"benefit":[61145089],"boundary":[9699329,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12582913],"binary":[3014657,4521985,44761089,55705601,60227585],"behave":[50200577,53936129,58720257],"binding":[39059458,40042497,40632322,42074114,42205186,42795009,43909122,44171265,44957698,45088770,46268418,46333956,47316993,47775746,47906820,48889857,51052548,53411841,53477377,54001668,54591489,54722561,56950785,58195970,58327042,58392578,60096514,60817410,60882946,61407234,61538306,61603842],"bypasses":[47906817,54001665],"behalf":[39059457,40632321,42205185,43909121,44957697,46268417,46596097,50397185,57344001,58392577,60096513,60882945,60948481,61407233,61538305,61603841,61669377],"bypassing":[6815745,7405569,7864321,8847361],"background":[57147395],"begin":[24838145,25624577,25755649,30081025,34340865,38076417,59572225],"bind":[46333953,51052545],"bypassed":[25362433,26411009,27066369,27983873,28049409,28377089,28573697,29294593,30343169,31981569,34013185,37879809,60686337],"blank":[47710209,48234497,51707906,52559873]} \ No newline at end of file +{"bailout":[74186753],"biginteger":[4915202,7340035,9895939,28442631,28508167,33030151,34078727,37224455,51052546,51445762,54067202,76349443,77529091,79364098],"blank":[56229889,64880642,66453505,67698689],"base":[6356994,17891329,20250625,21102593,22609921,45547524,52232193,68943873,72613889,77266945,77856769,78577665,79953921,80084993],"backed":[5767172,33882113,41615361,43712513,51118081,62652418,64618498,75431940],"benefit":[76939265],"behalf":[57737217,62193665,63045633,64684033,65273857,69009409,69533697,70582273,73465857,75104257,79953921,80281601,80412673,81002497,81068033,81133569,81264641],"bool":[6291460,6356996,6422531,7143427,7208964,8519688,9568259,9961475,10289155,10616835,11665411,11993091,13041667,15269891,15532035,15990787,16121859,17498116,17629187,18219011,18939908,19333123,19660803,19791876,20840451,20971523,21430276,21954563,22675459,23789571,24444931,24838147,25559043,26411011,26542084,26673155,26804228,27000835,27328515,27459587,27525126,27590659,27918339,28246019,28377091,28508163,28704771,28770307,28835843,28901379,29032451,29491203,29556739,29949955,30015491,30081027,30212099,30343171,30408707,30474243,30605315,30867459,31129603,31195139,31260675,31326211,31391747,31588355,31784963,31850499,31916035,31981571,32571395,32702467,32964611,33030147,33095683,33226756,33357827,33488899,33816582,33947651,34340867,34537475,34603011,35389443,35520515,35586051,35717123,35848195,36241411,36372483,36634628,37289987,37945347,38273027,39190531,39387139,39518211,39780355,40239107,40501252,41156611,41353220,41746435,42467331,42926083,43515907,43581443,44171268,44433411,46333956,46989316,49741827,52625411,56229893,56360965,56688645,57278469,58327044,58523653,58916870,59179013,60620806,60817414,61669382,62062597,62324742,62849030,63438852,63963142,64159750,64290821,64421893,65404932,65667077,66060292,66387973,66453510,66650118,67043333,67567622,67698693,67764229,67895301,68026372,68681732,68878342,69074949,70385668,71106565,72089605,72679427,73793541,73924613,74448901,75235333,75563013,76611589,79822851],"byref":[14876674,17498115,18874370,19136514,20905986,23068674,23265282,23461890,24969218,25034754,25559044,26148866,26214402,26345474,27000836,27525122,27918338,28246018,28508162,28704770,28770306,28835842,29163524,29491202,29556738,29949954,30081026,30212098,30343170,30408706,30474242,30539778,30605314,30867458,31129602,31195138,31260674,31326210,31522818,31588354,31653890,31784962,31850498,31916034,32571394,32636930,32702466,32964610,33030146,33095682,33357826,33685506,33816578,33947650,34340866,34537474,34603010,35586050,35848194,36044802,36175876,36241410,36372482,37552132,37748738,37945346,38076418,38207492,38273026,39387138,39518210,40042498,40108036,40239106,40435716,42401794,43122692,43515906,43581442,44040196,44433410,45744130,45875202,46858242,47513602,48037892,48365572,49217540,49741826,49807364,50987010,51970050,52625410,54460420,54984706,78053378,78643202,79298562,79822852,80609284],"bytes":[2818052,3276804,3473412,3997700,4390916,14090241,16449541,16646149,16842757,17432577,18153477,18677765,20185093,21168133,23986181,44826627,47906819,49020931,53215235,53608449,55246855,56885249,59244545,59506689,61145089,62783489,64094209,64356353,66191361,66584577,66977793,67829761,68747265,69402625,69730305,70844417,71041025,71827457,72155137,72220673,73138181,73203713,73400321,73859073,74645509,75497477,77135877,77398023,78184453],"blocked":[62259201,72286209,73990145,74842113,76021761,77791233],"bidirectional":[76939267],"buggy":[70975489],"bind":[56688641,66650113],"begin":[35389441,35520513,37289985,42467329,48431105,53346305,76873729],"b6d1":[42270721,45219841,50593793,52953089,53149697,54132737],"behavior":[3342346,5963786,45547521,49545217,56688641,58523649,59834369,60293121,60817409,61669377,64159745,66387969,66650113,67764225,70778881,74383361,75038721,75366401,76087297,76939266,77791234,80085002,80543755],"bigint":[76939266],"bypassing":[6619137,6684673,6815745,8650753],"begincpuprofile":[7077890,11010050,35389445,35520517,37289989,42467333,48431106,53346306,75366402,76087298],"build":[36175873,36241409,36372481,37552129,37945345,38207489,38273025,39387137,39518209,40108033,40239105,40435713,43122689,43515905,43581441,44040193,44433409,48037889,48365569,49217537,49741825,49807361,52625409,54460417],"binary":[3342337,5963777,60096513,80084993,80543745],"based":[327681,1572865,16711681,23199745,51707907,56688643,56819714,57737217,58130433,58916865,60293121,61407233,62193665,62259201,63045633,64290817,64487425,64684033,65077249,65273857,66650115,69533697,70451201,72286209,72417281,73990145,74842113,75104257,76021761,76087297,76742657,77856769,78512129,79953921,80281601,80347138,80478209,80740353,81002497,81068033,81264641],"buffer":[2818049,3473409,14090241,14876673,16318465,16449537,16646145,16842753,16973825,17432577,18153473,18677761,18874369,19070977,19136513,20185089,20905985,21168129,22020097,23986177,44826625,46202881,47906817,49020929,49938433,53215233,53608449,56885249,58195969,59506689,61145089,66846722,72155137,73138177,74645505],"bailoutreason":[56819713,74186756,80347137],"basic":[3342339,5963779,8060930,8192002,8323074,8781826,10092546,10420226,17039362,17170434,17956866,18415618,18808834,19398658,19922946,20054018,21233666,25231362,26935298,80084995,80543747],"begins":[7077890,11010050,35389441,35520513,37289985,42467329,43843585,44564481,48431106,53346306,75366402,76087298],"behave":[71041025,72220673,80805889],"biguint64array":[78184449],"bypassed":[36241409,36372481,37945345,38273025,39387137,39518209,40239105,43515905,43581441,44433409,49741825,52625409,79757313],"breaking":[56360961,62849025,64094209,66584577,67829761,69402625],"beginning":[16711681,23199745],"big":[28442625,28508161,33030145,34078721,37224449],"bigint64array":[78184449],"bit":[10223617,76939266],"byte":[2818057,3276809,3473417,3538945,3997705,4390921,4521985,4915202,7077906,7340035,9895939,11010066,12386311,14090246,16449545,16646153,16842761,17432582,18153481,18677769,20185097,21168137,23986185,28835847,30670855,32112647,35848199,36044805,36175877,36241414,36372486,37552133,37748741,37945349,38076422,38207493,38273030,38797319,39387142,39518214,40042502,40108037,40239109,40435717,42401798,43122693,43515910,43581445,44040197,44433413,44826628,45744133,45875206,46858246,47513605,47906820,48037893,48365573,49020932,49217541,49741829,49807365,50003977,50987014,51052546,51445762,51642377,51970053,52625413,53215236,54067202,54460421,54853641,54984709,57212937,73138185,74645513,75366418,75497481,75956225,76087314,76349443,77135881,77529091,77987841,78184459,79364098],"bound":[8454145,8978433,10354689,14286849,14352385,14417921,15335425,15466497,15794177,15925249,17760257,20381697,20512769,21692417,22544385,24117249,24903681,26017793,26476545,27066369,27983873,57147393,62259201,62390273,65077249,66519041,67502081,69206017,70713345,72286209,73990145,74842113,74907649,75104257,76021761,78381057,79953921,81264641],"bypasses":[58916865,64290817],"boolean":[2228225,3735554,4456449,4784129,4915202,4980737,5373955,6291458,6356994,6422531,7077894,7143427,7208962,7340035,8388609,8519684,8716293,9306115,9502723,9568258,9830403,9895939,9961474,10289154,10616834,11010059,11206659,11403267,11665410,11993090,13041666,14155777,15269891,15532034,15728641,15990786,16121858,17498114,17629186,18022401,18219013,18939906,19333122,19464193,19660803,19791874,19857409,20840450,20971523,21037057,21364737,21430277,21954562,22675458,22872065,23789571,24313857,24444931,24838146,25427969,25559043,26411010,26542086,26673154,26738689,26804228,27000834,27328514,27459586,27525127,27590658,27918338,28246018,28377090,28508162,28639233,28704770,28770306,28835842,28901378,29032453,29491202,29556738,29949954,30015493,30081026,30212098,30343170,30408706,30474242,30605314,30867458,31129602,31195138,31260674,31326210,31391746,31588354,31784962,31850498,31916034,31981570,32571394,32702466,32964610,33030146,33095682,33226754,33357826,33488898,33816583,33947650,34340866,34537474,34603010,35389442,35520514,35586050,35717125,35848194,36241411,36372483,36634626,37289986,37945347,38076417,38273027,39190530,39387139,39518211,39780354,40042497,40239107,40501252,41156610,41353221,41746434,42401793,42467330,42926082,43515907,43581443,43909121,44171267,44433411,45088769,45875201,46333954,46661633,46858241,46989317,48496641,49741827,50003971,50987009,51052546,51445762,51642371,51904513,52625411,52822017,53018625,53870593,54067202,54853635,55967746,56164353,56229890,56295426,56360962,56623105,56688642,57212931,57278466,57409537,58327042,58523650,58916866,59179010,60620802,60817410,61669378,62062594,62324738,62849026,63438850,63963138,64159746,64290818,64421890,65404930,65667074,66060290,66387970,66453506,66650114,67043330,67567618,67698690,67764226,67895298,68026370,68681730,68878338,69074946,70385666,71106562,71368706,72089602,72679426,73269249,73793538,73924610,74448898,74973185,75104259,75169793,75235330,75366406,75563010,75628546,75694081,76087307,76349443,76611586,77529091,77856771,78512130,79364098,79822850,79953923,80281603,80412673,81002499,81068037,81264643],"boundary":[10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,14221313,15204353],"background":[72744963],"bag":[589825,720897,1114113,1966081,3080193,3211265,6422529,7143425,9437185,10289153,11141121,12189697,12779521,17498113,17694721,18481153,18939905,19529729,19660801,19791873,20840449,20971521,21889025,22347777,53084161,54394881,55967745,56295425,58589185,59310081,60686337,63242241,65732609,71368705,75628545,76414977],"bar":[8847361,13959169],"baz":[8847361,13959170],"braces":[8847361,9175041,13238273,13697025,13828097,15400961,15597569,15859713,17301505,18546689,19202049,20119553,20316161,20578305,20774913,21495809,23527425,25100289,42270721,45219841,50593793,52953089,53149697,54132737],"box":[61603841],"binding":[56688644,57737218,58130434,58523649,58916868,60293122,61407234,61669377,62193666,62259201,63045634,64159745,64290820,64684034,65077249,65273858,66650116,67764225,69533698,72286209,73990145,74842113,75104258,76021761,76087298,77856770,78512130,79953922,80281602,81002498,81068034,81264642],"button":[7995395,9109507,74121219]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_99.json b/docs/Reference/fti/FTI_99.json index f97f99de..374f79bb 100644 --- a/docs/Reference/fti/FTI_99.json +++ b/docs/Reference/fti/FTI_99.json @@ -1 +1 @@ -{"cachedocument":[1835010,1966081,6094853,6225925,53084161,58523650],"cnn":[12910593],"constructor":[4915201,5308417,5373953,5570561,5636097,5701633,5767169,5832705,5898241,6160385,6619137,7340033,7667713,8192001,8781825,10092545,11141122,11272193,11403265,11796481,11993089,12386305,12779521,12976129,13631489,13828098,15400961,16318465,16384001,16973825,17629185,19267585,19398658,19857409,20185089,20381697,20578305,20840449,20905985,21168129,21561345,21692417,21954561,22020097,22151169,22282241,22347777,22675457,22740993,22872065,23330817,23789569,23855105,24313857,24510465,25034753,25231361,25427969,25690113,25886721,26214401,26673153,26738689,27328513,27459585,27590657,27852801,28114945,28508161,28639233,28835841,29097985,29163521,29360129,29425665,29687809,29818881,29884417,30015489,30408705,31129601,31522817,31719425,31850497,32243713,32309249,32571393,32702465,32833537,33161217,33554433,33685505,33816577,34144257,34275329,34471937,34734081,34799617,35127297,35454977,35651585,36044801,36306945,36503553,37224449,37486593,37552129,37683201,38207489,38338561,38469633,39124993,39190529,40173569,41091073,41287681,41418753,41811969,41877505,45613057,54722564,60358660,61669377],"comprise":[38010881,39321601,60030977,61276161],"change":[26804225,27656193,28901377,29622273,43450369,49414145,52690945,53149697,53542913,54263809],"containskey":[1769473,2752513,3276801,4259841,17039366,54067201,56426497,57540609,57999361],"childnodes":[37617665,54394884,55115777],"cpu":[1179649,4980740,7208964,24838147,25165827,25624579,25755651,26148866,27262978,30081027,34340867,38076419,38404097,38731779,39321605,42074113,50987011,53673985,54198273,55115777,55574531,55902209,56033281,56754177,58261509,60817413],"contextual":[19857409,21692417],"comparer":[4915201,5373953,5898248,6160392,16318465,16973832,17629192,20185089,31719426,34537474,41091074,43188226,45809666,48431110,54067202,56426500,57999364],"certain":[10092545,13172737,13238273,13631489,13762561,13893633,14548993,14680065,14745601,15073281,15204353,15466497,15532033,16187393,16908289,18939905,19464193,20250625,20447233,21102593,21233665,21823489,22085633,22216705,22806529,23068673,23789569,23920641,24641537],"clearscrip":[38010881,39321601,46071809,60030977,61276161],"clr":[7143428,8060930],"consuming":[4980748,7208972,24969217,25362433,25493505,26083329,26411009,26542081,26607617,26935297,27066369,27983873,28049409,28311553,28377089,28573697,29294593,29491201,29949953,30343169,30736385,31981569,32178177,34013185,35192838,35848193,36372486,37879809,38666246,39714822,58261516,60817420],"character":[36634625,39256065,44761090,51445761,59310081,60489729],"concurrent":[131073,1769473,4915201,5373953,5898241,6160385,34537473,41091073,57999361],"copies":[2621442,2686978,2752513,2818050,3211266,3670020,16056321,16711681,17301505,17432577,17498113,18219009,57540609,59375618,59834370,60162050,60424194,60751876],"compatibility":[8912898,47382529,52690945,53149697,53542913,54263809],"compiles":[4980748,7208972,24051713,24444929,24772609,25493505,25559041,26017793,26083329,26411009,26542081,26935297,27066369,27394049,27525121,27721729,28311553,28377089,28573697,29032449,29294593,29556737,29753345,30736385,31981569,33095681,36372492,39714828,58261516,60817420],"category":[2031618,2359297,3735556,4587524,4980744,6029319,6291460,6356996,6488071,6553604,6815753,7208972,7274502,7405577,7536644,8716292,8847361,8978436,13762568,13893640,14680072,14745608,21102601,21233673,21823497,22085641,24444936,24772616,25493512,26083336,26411016,27394056,27525128,27721736,28311560,28377096,28573704,29556744,29753352,30670850,30736392,31981576,33030146,33095688,33882114,34668546,35586050,36372488,38010881,39714824,39780356,40304642,41484291,44498946,45023235,45547522,46661638,47448066,48037890,51576834,52428803,53870594,58195972,58261512,58327044,58392580,59572225,59899909,60096516,60817420,60882948,61407236,61538308,61603844],"code":[1703937,2293766,2424833,2490369,2555905,2883585,2949128,3014657,3342337,3407873,3538945,3735590,3801089,4521985,4587558,4849665,5046273,6291494,6357030,6553638,7143425,7208998,7471106,7536678,7929859,7995394,8060929,8126465,8257537,8323073,8388609,8585219,8650753,8716326,8912897,8978470,9043969,9240579,9306113,9437185,9568257,9699329,9830401,9895939,10289153,10354689,10420225,10485761,10616833,10682369,10878977,10944513,11075585,11141121,11206657,11337729,11665409,11927553,12058625,12189697,12255233,12320769,12582913,12648449,12713986,12845057,12910595,13041666,13107201,13172738,13238273,13303810,13369345,13434882,13500418,13565953,13631502,13697026,13762561,13828100,13893634,13959170,14024705,14090241,14155777,14286850,14417921,14483458,14549003,14680065,14745602,14876673,14942209,15007746,15073289,15138818,15204360,15269890,15466505,15532042,15597569,15859713,15925249,16187402,16252929,16515073,16777217,16842753,16908298,17104897,17235969,17367041,17563649,17760257,17825793,18087937,18284545,18350081,18546689,18612225,18743297,18808833,18939913,19070977,19136514,19333121,19398660,19464202,19529729,19660801,19726337,19791873,19922946,19988481,20119553,20250625,20316161,20447234,20512769,20643841,20709378,20774913,20905985,21037058,21102593,21233666,21299201,21364737,21430274,21495809,21561345,21823489,21889026,22085634,22216714,22347777,22413313,22478849,22609922,22806539,22872065,23068683,23199746,23265281,23396354,23461894,23789583,23920651,24248322,24641548,24969223,25100290,25362439,25493505,25821190,26083329,26411009,26542081,26607623,26935297,27066369,27131910,27197441,27983879,28049415,28246017,28311553,28377089,28442630,28573697,28704774,28966918,29294593,29491207,29949959,30146566,30343175,30736385,30867457,30998534,31064072,31391750,31588353,31784962,31981569,32047112,32112641,32178183,32374788,32440322,32505860,32768006,32964609,33292296,33423368,33488900,33619970,34013191,34078724,34209800,34603010,34930694,35061764,35258376,35717122,35848199,36569094,37355524,37748740,37879815,38010889,38404097,38862856,38993921,39059461,39452673,39845889,40042497,40501249,40632325,41353217,42074116,42205189,43450369,43581441,43778049,43909125,44171265,44433411,44892161,44957701,45088772,45154307,45219841,45744129,46202881,46268421,46596097,46923777,47054849,47185921,47710211,47775748,48234499,48365570,48627713,49414145,49610753,50397185,50659331,50790401,51314691,51576833,51642369,52035585,52559875,52690949,53477378,54067201,54591489,54722562,54853633,55312386,55705601,55902209,56098817,56492033,56950787,57344001,57540609,57802754,58196010,58261505,58327082,58392619,58458114,58589185,58654721,58785794,58982401,59047942,59113474,59506691,59637761,59768834,59965441,60096555,60227585,60358658,60620804,60817451,60882987,60948481,61079560,61145091,61407276,61538348,61603884,61669379],"core":[589826,851969,1114114,1245186,1376258,1441794,1507332,4784129,4915202,5242882,5308418,5373954,5505026,5570562,5636098,5701634,5767170,5832706,5898242,5963778,6029314,6094850,6160386,6225922,6291457,6356993,6422530,6488066,6619138,6684674,6750210,6815746,6881281,6946818,7012354,7077890,7143428,7274498,7340034,7405570,7471106,7602178,7667714,7733250,7864322,7929858,7995394,8060932,8126467,8192002,8257538,8323074,8388610,8454146,8519682,8585218,8650754,8716289,8781826,8847362,8912898,9043970,9109506,9175042,9240578,9306115,9371650,9437186,9502722,9568258,9633794,9699330,9764866,9830403,9895938,9961474,10027010,10092546,10158082,10223618,10289154,10354690,10420226,10485762,10551298,10616834,10682370,10747906,10813442,10878978,10944514,11010050,11075586,11141122,11206658,11272194,11337730,11403266,11468802,11534338,11599874,11665410,11730946,11796482,11862018,11927554,11993090,12058626,12124162,12189698,12255234,12320770,12386306,12451842,12517378,12582914,12648450,12713986,12779522,12845058,12910594,12976130,13041666,13107202,13172738,13238274,13303810,13369346,13434882,13500418,13565954,13631490,13697026,13762562,13828098,13893634,13959170,14024706,14090242,14155778,14221314,14286850,14352386,14417922,14483458,14548994,14614530,14680066,14745602,14811138,14876674,14942210,15007746,15073282,15138818,15204354,15269890,15335426,15400962,15466498,15532034,15597570,15663106,15728642,15794178,15859714,15925250,15990786,16056322,16121858,16187394,16252930,16318466,16384002,16515074,16449538,16580610,16646146,16711682,16777218,16842754,16908290,16973826,17039362,17104898,17170434,17235970,17301506,17367042,17432578,17498114,17563650,17629186,17694722,17760258,17825794,17891330,17956866,18022402,18087938,18153474,18219010,18284546,18350082,18415618,18481154,18546690,18612226,18677762,18743298,18808834,18874370,18939906,19005442,19070978,19136514,19202050,19267586,19333122,19398658,19464194,19529730,19595266,19660802,19726338,19791874,19857410,19922946,19988482,20054018,20119554,20185090,20250626,20316162,20381698,20447234,20512770,20578306,20643842,20709378,20774914,20840450,20905986,20971522,21037058,21102594,21168130,21233666,21299202,21364738,21430274,21495810,21561346,21626882,21692418,21757954,21823490,21889026,21954562,22020098,22085634,22151170,22216706,22282242,22347778,22413314,22478850,22544386,22609922,22675458,22740994,22806530,22872066,23003138,23068674,23199746,23265282,23330818,23396354,23527426,23592962,23658498,23789570,23855106,23920642,23986178,24117250,24182786,24248322,24379394,24510466,24576002,24641538,24707074,24903682,25034754,25100290,25296898,25427970,25886722,30277636,30474244,30605314,30801922,30867460,31195138,31260676,31326210,31522820,31653890,31916036,32309252,32636932,32964612,33161220,33226756,33685508,33947652,34144260,34734084,35454980,35520516,36306948,37224452,38207492,38600705,39124993,39583746,39649281,39845890,40042498,40108034,40173569,40501250,40566787,40763393,40828930,40894466,40960002,41025538,41353218,41549826,41615362,41680898,41746436,42139650,42270722,42336258,42401794,42467332,42663938,42729474,42795010,42860546,42926082,42991618,43057154,43122692,43253762,43319298,43384834,43450370,43515906,43581442,43646978,43712514,43778052,43843586,43909121,43974658,44040194,44105730,44171266,44236802,44302338,44367876,44433410,44498946,44564482,44630018,44695556,44761090,44826626,44892162,44957697,45023234,45154306,45219842,45285378,45350914,45481986,45547522,45613060,45678594,45875202,45940738,46006274,46071810,46268417,46333954,46399490,46465026,46530562,46661634,46727170,46792706,46989314,47054850,47185922,47251458,47316994,47382530,47448066,47513602,47579138,47710210,47841282,47906818,48037890,48103426,48168962,48234498,48300034,48431106,48496642,48627714,48693250,48758786,48889858,48955394,49020930,49152002,49283074,49414146,49545218,49610754,49676292,49741826,49938434,50003970,50069508,50135042,50397186,50462722,50528258,50593794,50659330,50790402,50921474,51052546,51118082,51183618,51314690,51445762,51576834,51642370,51707906,51838978,51904514,51970050,52166658,52232194,52363266,52428802,52494338,52625410,52953090,53018626,53084162,53411842,53477378,53870594,54001666,54067202,54525954,54591490,54722562,55050242,55246850,55312386,55377922,55705602,55771138,55836674,55967748,56229890,56295428,56360962,56426498,56492034,56819716,56885250,56950786,57016324,57212930,57278466,57344004,57409538,57540610,57606146,57671682,57802754,57933826,57999362,58064898,58130434,58195971,58327042,58392582,58458114,58523650,58654722,58720261,58785794,58916866,58982402,59047938,59113474,59310082,59375618,59506690,59572226,59637762,59768834,59834370,59899906,59965442,60030978,60096518,60162050,60227586,60293122,60358658,60424194,60489730,60555266,60751874,60882952,60948482,61014018,61079554,61210626,61341698,61407233,61472770,61538305,61603841,61669378],"causes":[3735553,4587521,6291457,6356993,6553601,7208961,7536641,8716289,8978433,17956865,20971521,28770305,44367873,45744129,50200577,52035585,52822017,53280769,53936129,56098817,58195969,58327041,58392577,58654721,60096513,60817409,60882945,61407233,61538305,61603841],"consoles":[15859713,19529729,27197441,30867457,31588353,32112641,32964609],"control":[50724865,54460417,54853636],"connect":[2097153,2228225,6750213,7012357,57671681,57933825],"compare":[55312385],"collecting":[4980738,7208962,24838145,25624577,25755649,30081025,34340866,38076418,58261506,60817410],"comtype":[5046273,8323077,12845057,13107201,14090241,14942209,15925249,16777217,17563649,17760257,18350081,18612225,18743297,19660801,20643841,21364737,22413313,23265281,32047105,34209793,58785793],"comobject":[11927553,12320769,12648449,13369345,14024705,14155777,14876673,15597569,16842753,17235969,18087937,19070977,19988481,20774913,21495809,22478849,31064065,33423361],"continuationcallback":[38010881,39059457,40632321,42074113,42205185,43909121,44957697,45088769,45678603,46268417,47775745,51904526,58064901,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"console":[8650753,9568258,12910593,13565953,15859713,19529729,27197441,30867457,31588353,32112641,32964609],"casts":[3407875,5046275,8257537,9043970,11730945,58785795,59768835],"callback":[2031617,3735554,4587522,4980740,6029313,6291458,6356994,6488065,6553602,7208966,7274497,7405571,7536642,8716290,8978434,9306113,9568257,9830402,14680067,14745603,21823491,22085635,24444931,25493507,27394051,27721731,28377091,28573699,29556739,30670849,30736387,33030145,33882113,34668545,35586049,36372484,39059457,39714820,40304641,40632321,40894465,41222145,41549827,42074113,42205185,42926081,43909121,44957697,45088769,45678596,46268417,47251459,47775745,50003969,51576833,51904516,52166658,53870594,57278466,58064897,58195971,58261508,58327043,58392579,60096515,60817415,60882947,61407235,61538307,61603843],"cachebytes":[24444933,24969221,25362438,25493509,25559045,25821189,26017797,26083333,26411014,26542085,26607621,26935301,27066374,27525125,27983878,28049414,28311557,28377094,28573702,28704773,28966917,29294598,29491205,29556741,29949957,30343174,30736389,30998533,31391749,31981574,32178181,33095685,34013190,34930693,35848197,37879814],"cancels":[7208961,26869761,60817409],"convert":[3014657,4521985,7471105,7929857,7995393,8585217,9240577,9699329,9895937,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12582913,16252929,17104897,17825793,18546689,19333121,19726337,20054017,20512769,21299201,27197441,30867457,31588353,32112641,32964609,42795009,48889857,55705601,60227585],"connected":[720897,50593793],"cached":[1835010,1966082,5505027,5963778,6094850,6225922,6422531,6684674,39583745,43384833,45023233,53084162,58523650],"consolet":[8650754,9568258,12910596,13565954],"class":[65537,131073,196609,262145,327681,393218,458753,589825,655362,720897,786434,851970,917505,1114114,1245185,1376258,1441794,1507330,1572865,1638401,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2490372,2555908,2162689,2228225,2883588,2949121,3014666,3080193,3276801,3342340,3407873,3473409,3538948,3604481,3735576,3866625,3932161,3997697,4063233,4194305,4259841,4325377,4390913,4456449,4521994,4587545,4653057,4849668,4915201,4980737,5046273,5111810,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5898241,5963777,6094849,6029313,6160385,6225921,6291481,6357017,6422529,6553625,6488065,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077892,7143425,7208985,7274497,7340033,7405569,7471105,7536665,7602177,7667713,7733249,7798785,7864321,7929857,8060929,7995393,8126465,8192001,8257540,8323076,8388609,8454145,8519681,8585217,8650755,8716313,8781825,8847361,8912897,8978457,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141122,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927555,11993089,12058625,12124161,12189697,12255233,12320771,12386305,12451841,12517377,12582913,12648452,12779521,12845059,12910593,12976129,13107204,13303809,13369348,13565953,13959169,14024707,14090244,14155780,14876676,14942211,15597571,15925251,16121857,16252929,16318465,16384001,16515073,16777220,16842756,16973825,17039361,17104897,17235973,17563652,17629185,17694721,17760261,17825793,18087941,18153473,18284545,18350083,18415617,18546689,18612228,18677761,18743301,18808833,18874369,18939905,19005441,19070980,19136513,19267585,19333121,19398657,19464193,19529729,19595265,19660804,19726337,19791873,19857409,19922945,19988484,20054017,20119553,20185089,20250625,20381697,20316161,20447233,20512769,20578305,20643844,20709377,20774917,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364741,21495813,21430273,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413317,22478852,22544385,22609922,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265284,23330817,23396354,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26148865,26083329,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30343169,30408705,30474241,30539777,30670849,30736385,30801921,30867457,30932993,30998529,31064076,31129601,31260673,31326210,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047116,32112641,32178177,32243713,32309249,32374785,32505857,32571393,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33357825,33423373,33488897,33554433,33685505,33751041,33816577,33882113,34013185,34144257,34209805,34275329,34340865,34406401,34471937,34537473,34603009,34734083,34799617,34865153,34930689,34996225,35127299,35192833,35258369,35323905,35389441,35520513,35454977,35651585,35717121,35782657,35848193,35979265,36044803,36110337,36175873,36372481,36306945,36438017,36503553,36569089,36634625,36765697,36831233,36896769,37093377,37158913,37224449,37289985,37355521,37486593,37552129,37617665,37683201,37748737,37879809,38010881,38076417,38141953,38207491,38273025,38338561,38469633,38404097,38535169,38666241,38731777,38862849,38928386,38993921,39059457,39124993,39190531,39321601,39256065,39387137,39452673,39583745,39649281,39714817,39780353,39911425,39976961,40108033,40173569,40370177,40435713,40566785,40697857,40632321,40763393,40894465,41091073,41222145,41287681,41418753,41484289,41549825,41746433,41811969,42008578,42074113,42205185,42270721,42467329,42532865,42598402,42663937,42795009,42860545,42926081,43122689,43188225,43253761,43319297,43384833,43450369,43712513,43778049,43843585,43909121,43974657,44171265,44236801,44302337,44367873,44498945,44630017,44695553,44761089,44892161,44957697,45023233,45088769,45219841,45285377,45416449,45481985,45547521,45613059,45744129,45809665,45875201,46006273,46071809,46137346,46202881,46268417,46333953,46465025,46727169,46792705,46923778,47054849,47185921,47382529,47448065,47513601,47579137,47644673,47972354,48037889,48103425,48168961,48234497,48431105,48562177,48627713,48758786,49020929,49086465,49152001,49217537,49283073,49348610,49479681,49545217,49676289,49741825,49807361,49872897,50069505,50135041,50200577,50266113,50331649,50462721,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51773441,51838977,51904513,51970049,52035585,52101121,52297729,52363265,52428805,52494337,52559873,52690945,52756481,52822017,52887553,52953089,53018625,53084165,53149697,53215233,53280769,53346305,53411841,53477389,53542913,53608449,53673989,53739521,53805057,53870598,53936129,54001665,54067205,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722573,54788097,54853633,54919169,54984705,55050241,55115781,55181313,55246853,55312393,55443457,55508993,55574529,55640065,55705614,55771137,55836679,55902209,55967745,56033281,56098817,56164353,56229893,56295425,56360961,56426501,56492039,56557569,56623105,56688641,56754181,56819714,56885249,56950785,57016321,57081857,57147393,57212933,57344001,57409537,57475073,57540609,57606145,57671685,57737217,57802753,57868289,57933829,57999365,58130437,58195997,58261509,58327065,58392606,58458113,58523653,58589189,58654726,58720263,58785797,58851333,58916865,58982405,59047941,59113485,59179009,59244549,59310085,59375617,59441153,59506697,59572225,59637761,59703301,59768837,59834369,59899909,59965441,60030981,60096542,60162049,60227598,60293121,60358669,60424193,60489733,60555271,60620801,60686337,60751873,60817438,60882974,60948481,61014017,61079557,61145090,61210625,61276165,61341697,61407261,61472775,61538333,61603869,61669377],"contained":[46858241,57540609],"contain":[7143425,8060929,11272193,11796481,12386305,12779521,17891329,24903681,41943041,51511297],"contextcallback":[6029318,6488070,7274501,7405573,14680069,14745605,21823494,22085638,24444933,25493509,27394053,27721733,28377093,28573701,29556741,30736389,40304641,41222145,41549829,47251460,51576833,53870593],"coded":[45744129,58654721],"caused":[16384001,22675457,41025537,42729473,43646977,45744131,46006273,46202882,46727169,48365571,49545217,50135041,58458115,58654723,58982402],"configuratio":[6815745,7405569,7864321,8847361],"callable":[8126465,8454145,9437185,9502721,10092545,10354689,11141121,11927553,12320769,12648449,12713985,12845057,13041665,13107201,13303809,13369345,13500417,13697025,13828097,13959169,14024705,14090241,14155777,14286849,14417921,14483457,14876673,14942209,15007745,15138817,15269889,15597569,15925249,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19136513,19398657,19660801,19922945,19988481,20119553,20643841,20709377,20774913,21037057,21364737,21430273,21495809,21889025,22413313,22478849,22609921,23199745,23265281,23396353,24248321,25100289,38010882,58785793,59768833],"caching":[39321601,60620803],"copied":[16056322,16711682,17301506,17432578,17498114,18219010],"constraints":[5439489,24313857,25231368,27459592,27852808,28114952,28639240,28835848,29097992,29425672,29687816,29884424,30408712,31850504,33816582,38338566,38993921,39321601,50200577,51511297,52101121,52690945,53149697,53542913,53936129,54263809,58261510,58589186,60817414],"components":[10616835],"compiled":[4063233,4980748,7208974,23461890,24051714,24444930,24772610,24969219,25362436,25493506,25559042,25821186,26017794,26083330,26411011,26476546,26542082,26607618,26935298,27066371,27131906,27394050,27525122,27721730,27983875,28049411,28311554,28377091,28442626,28573699,28704770,28966915,29032450,29294595,29491202,29556738,29753346,29949955,30146563,30343171,30539781,30736386,30998530,31391747,31981571,32178178,32768002,33095682,34013187,34930690,35192844,35848194,36569091,37355521,37748737,37879812,38666252,39321601,39452674,40435714,45023233,53739521,54132737,58261516,59703300,60686337,60817422],"cache":[1835009,1966081,4980754,6094851,6225923,7208978,13434881,24444932,24969222,25362437,25493510,25559044,25821188,26017796,26083334,26411013,26542086,26607622,26935302,27066373,27525124,27983877,28049413,28311558,28377093,28573701,28704772,28966916,29294597,29491206,29556740,29949958,30343173,30736390,30998532,31391748,31981573,32178182,33095684,34013189,34930692,35192841,35389441,35848198,36372489,37879813,38666249,39321601,39583746,39714825,39780353,40697857,43384834,45023234,53084162,58261522,58523650,59899905,60620806,60686343,60817426],"cachekind":[24444933,24969221,25362437,25493509,25559045,25821189,26017797,26083333,26411013,26542085,26607621,26935301,27066373,27525125,27983877,28049413,28311557,28377093,28573701,28704773,28966917,29294597,29491205,29556741,29949957,30343173,30736389,30998533,31391749,31981573,32178181,33095685,34013189,34930693,35848197,37879813],"compliance":[61669377],"cleared":[131073,196609,262145,589825,54067201,56426497,57999361],"convenient":[7143425,8060929,13631489,23789569,54067201],"close":[51511297],"conversion":[3014657,4521985,55705601,60227585,61145094],"caller":[60686337],"caution":[58720257,61145090],"correspond":[49676289,49938433,51183617,52297729],"collects":[4980737,7208961,26148865,27262977,58261505,60817409],"catch":[12910594,52035585,56098817],"cancel":[26279937,26869761],"callbackt":[9830402],"converts":[2293766,2949129,3407884,5046284,7471105,7929857,7995393,8585217,9240577,9699330,9895937,10289154,10420226,10485762,10682370,11075586,11206658,11337730,11665410,12058626,12189698,12582914,16252929,17104897,17825793,18546689,19333121,19726337,20054017,20512769,21299201,31784962,32505860,38862856,58785804,59047942,59768844,61079561],"common":[38010881,38535170,47448065,58458113,59834369,60424193],"collection":[131073,196609,262146,589825,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2752513,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3735553,3801089,3866625,3932161,3997697,4063233,4259850,4325377,4390913,4456449,4521985,4587522,4653057,4849665,4980738,5046274,5111809,5439489,6291458,6356994,6553602,6881281,7077899,7143436,7208962,7536642,7798785,8060930,8716290,8978434,10813442,11010050,11272195,11468802,11599874,11796483,11862018,11993090,12124162,12386307,12451842,12517378,12779523,14352386,19791874,22937602,23986178,27918338,30932993,34537474,36765701,37093377,37158916,37617666,37683206,38010882,42467330,42663937,43188226,43253761,45744129,45809667,49217537,50003969,51576833,53084161,53477377,53673986,53870593,54067221,54198273,54394881,54722561,55115779,55312385,55705601,55836673,55902209,56229889,56426500,56492033,56688641,56754177,57147393,57212929,57540611,57671681,57933825,57999364,58130433,58195970,58261506,58327041,58392578,58523649,58589185,58654722,58720257,58785794,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096514,60227585,60358657,60489729,60555265,60817410,60882946,61407234,61472769,61538306,61603842],"catchfunc":[12910600],"configuration":[2031620,6815746,7405570,7864322,8847362,30670852,38010882,39321601,53870597,60030977,61276161],"collections":[7143426,8060930,9437186,9699329,10289153,10420225,10485761,10682369,11075585,11206657,11337729,11665409,12058625,12189697,12255233,12582913,13828097,19398657,54067202],"creates":[1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2359297,2490369,2555905,2621441,2686977,2818049,2162689,2228225,2883585,3014657,3211265,3276801,3342337,3407884,3473409,3538945,3604481,3670018,3735560,3801089,3866625,3932161,3997697,4063233,4194305,4259841,4325377,4390913,4456449,4521985,4587529,4653057,4849665,4980755,5046283,5111809,5439489,6291465,6357001,6553609,6881281,7208981,7536649,7798785,8388610,8650754,8716297,8978441,9306114,9502721,9568258,9830401,10092545,10354690,10616833,10944515,11141122,11927553,12255233,12320769,12648449,13369345,14024705,14155777,14876673,15597569,16449537,16842753,17235969,18022401,18087937,18481153,19070977,19988481,20774913,21495809,22478849,23461889,24969217,25362433,25821185,25952257,26607617,26804225,27131905,27656193,27983873,28049409,28180481,28442625,28704769,28901377,28966913,29491201,29622273,29949953,30146561,30343169,30998529,31064072,31326209,31391745,32178177,32768001,32899074,33423368,34013185,34406402,34865155,34930689,35192844,35848193,36569089,37879809,38666252,40370182,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55246849,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195977,58261523,58327048,58392585,58523649,58589185,58654721,58720257,58785803,58851329,59113473,59244545,59310081,59375617,59506689,59703297,59768844,59834369,59899905,60096521,60162049,60227585,60358657,60424193,60489729,60555265,60751874,60817429,60882953,61407241,61472769,61538313,61603849],"converting":[15859713,19529729,27197441,30867457,31588353,32112641,32964609],"checkaccess":[4784129,6291457,6356993,6553601,6881281,7536641,8716289,8978433,32636932,35520518,41746436,57016321,58392577,58720257,60096513,60882945,61407233,61538305,61603841],"constructed":[61145090],"created":[24838145,25165825,25624577,25755649,25952257,26673153,26804225,27590657,27656193,28114945,28180481,28835841,28901377,29097985,29360129,29622273,29818881,29884417,30015489,30081025,30408705,31129601,31850497,38731777],"changed":[589825],"call":[1179649,3735553,4587521,6291457,6356993,6553601,7208961,7471106,7536641,7929858,7995394,8585218,8716289,8978433,9240578,9830401,9895938,13828098,16252930,17104898,17367042,17825794,18153474,18546690,19005442,19333122,19398658,19726338,19791874,20054018,20316162,20512770,21299202,28246018,30539777,37093377,38141953,39321601,43778050,45744129,47054849,47316994,48562177,49807361,50724865,51642369,53411842,53477378,53673985,54460417,54591490,54722562,55115777,56033281,56492033,56754177,56950786,58195969,58327041,58392577,58654721,60096513,60817409,60882945,61407233,61538305,61603841],"closest":[49610753,50790401],"corporation":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6094849,6029313,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,8060929,7995393,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13697025,13631489,13762561,13893633,13828097,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19726337,19660801,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20381697,20316161,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26148865,26083329,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35520513,35454977,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36372481,36306945,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38469633,38404097,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40697857,40632321,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43909121,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,44957697,45023233,45088769,45154305,45219841,45285377,45350913,45416449,45481985,45547521,45613057,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268417,46333953,46399489,46465025,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47644673,47710209,47775745,47841281,47906817,47972353,48037889,48103425,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55377921,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669377],"considered":[59572225],"controls":[39059458,40632322,42074114,42205186,43581441,43909122,44957698,45088770,45154305,46268418,47185921,47775746,51314689,58195970,58327042,58392578,60096514,60817410,60882946,61407234,61538306,61603842],"comparison":[42336258,45875202,55312385,59637762],"char":[3407873,5046273,11206663,16711681,17432577,17498113,18022401,18219009,18481153,24444929,24969217,25362433,25493505,25559041,25821185,26017793,26083329,26411009,26542081,26607617,26935297,27066369,27525121,27983873,28049409,28311553,28377089,28573697,28704769,28966913,29294593,29491201,29556737,29949953,30343169,30736385,30998529,31391745,31981569,32178177,33095681,34013185,34930689,35848193,37879809,58785793,59768833,60751873],"conversions":[13631489,23789569],"child":[37617665,54394883,55115777],"copyto":[2752513,57540609],"context":[2031617,3735554,4587522,4980740,6029313,6291458,6356994,6488065,6553602,7208966,7274497,7405571,7536642,8716290,8978434,14680067,14745603,18415622,19857414,21692422,21823491,22085635,23658502,24444931,25493507,27394051,27721731,28377091,28573699,29556739,30670849,30736387,33030145,33882113,34668545,35586049,36372484,38010881,39714820,40304641,41222145,41549828,44433409,47251460,50003971,50659329,51576833,53870594,58195970,58261508,58327042,58392578,60096514,60817414,60882946,61407234,61538306,61603842],"customattributeloader":[1572866,5242881,5701637,34996226,38010881,39059457,40632321,42074113,42205185,42860551,43909121,44957697,45088769,45416449,46268417,46530571,46792715,47775745,52953102,58130440,58195969,58327041,58392577,60030977,60096513,60817409,60882945,61407233,61538305,61603841],"create":[327681,4194305,7143425,8060929,8126465,8323073,8388609,8650753,9306115,9437186,9568258,9699329,9830403,10092545,10289153,10354689,10420225,10485761,10616834,10682369,11075585,11141121,11206657,11337729,11665409,11927553,12058625,12189697,12255234,12320769,12582913,12910593,13369345,13631489,14876673,16842753,18087937,19988481,21495809,23789569,25952257,26804225,27656193,28180481,28901377,29622273,31326213,40370177,55246849,58654721],"clearscript":[65538,131074,196610,262146,327682,393218,458754,524290,589829,655362,720901,786434,851970,917509,983041,1048581,1114117,1179653,1245189,1310721,1376261,1441797,1507333,1572866,1638402,1703938,1769474,1835010,1900546,1966082,2031618,2097154,2293762,2359298,2424834,2490370,2555906,2621442,2686978,2752514,2818050,2162690,2228226,2883586,2949122,3014658,3080194,3145730,3211266,3276802,3342338,3407874,3473410,3538946,3604482,3670018,3735554,3801090,3866626,3932162,3997698,4063234,4128770,4194306,4259842,4325378,4390914,4456450,4521986,4587522,4653058,4718594,4784130,4849666,4915205,4980738,5046274,5111810,5177346,5242886,5308421,5373957,5439490,5505029,5570565,5636101,5701637,5767173,5832709,5898245,5963781,6029317,6094853,6160389,6225925,6291458,6356994,6422533,6488069,6553602,6619141,6684677,6750213,6815749,6881282,6946821,7012357,7077893,7143429,7208962,7274501,7340037,7405573,7471109,7536642,7602181,7667717,7733253,7798786,7864325,7929861,7995397,8060933,8126469,8192005,8257541,8323077,8388613,8454149,8519685,8585221,8650757,8716290,8781829,8847365,8912901,8978434,9043973,9109509,9175045,9240581,9306117,9371653,9437189,9502725,9568261,9633797,9699333,9764869,9830405,9895941,9961477,10027013,10092549,10158085,10223621,10289157,10354693,10420229,10485765,10551301,10616837,10682373,10747909,10813445,10878981,10944517,11010053,11075589,11141125,11206661,11272197,11337733,11403269,11468805,11534341,11599877,11665413,11730949,11796485,11862021,11927557,11993093,12058629,12124165,12189701,12255237,12320773,12386309,12451845,12517381,12582917,12648453,12713989,12779525,12845061,12910597,12976133,13041669,13107205,13172741,13238277,13303813,13369349,13434885,13500421,13565957,13631495,13697029,13762565,13828102,13893637,13959173,14024709,14090245,14155781,14221317,14286853,14352389,14417925,14483461,14548997,14614533,14680069,14745605,14811141,14876677,14942213,15007749,15073285,15138821,15204357,15269893,15335429,15400965,15466501,15532037,15597573,15663109,15728645,15794181,15859717,15925253,15990789,16056325,16121861,16187397,16252933,16318469,16384005,16449541,16515077,16580613,16646149,16711685,16777221,16842757,16908293,16973829,17039365,17104901,17170437,17235973,17301509,17367045,17432581,17498117,17563653,17629189,17694725,17760261,17825797,17891333,17956869,18022405,18087941,18153477,18219013,18284549,18350085,18415621,18481157,18546693,18612229,18677765,18743301,18808837,18874373,18939909,19005445,19070981,19136517,19202053,19267589,19333125,19398662,19464197,19529733,19595269,19660805,19726341,19791877,19857413,19922949,19988485,20054021,20119557,20185093,20250629,20316165,20381701,20447237,20512773,20578309,20643845,20709381,20774917,20840453,20905989,20971525,21037061,21102597,21168133,21233669,21299205,21364741,21430277,21495813,21561349,21626885,21692421,21757957,21823493,21889029,21954565,22020101,22085637,22151173,22216709,22282245,22347781,22413317,22478853,22544389,22609925,22675461,22740997,22806533,22872069,22937605,23003141,23068677,23134213,23199749,23265285,23330821,23396357,23461893,23527429,23592965,23658501,23724037,23789575,23855109,23920645,23986181,24051717,24117253,24182789,24248325,24313861,24379397,24444933,24510469,24576005,24641541,24707077,24772613,24838149,24903685,24969221,25034757,25100293,25165829,25231365,25296901,25362437,25427973,25493509,25559045,25624581,25690117,25755653,25821189,25886725,25952261,26017797,26083333,26148869,26214405,26279941,26345477,26411013,26476549,26542085,26607621,26673157,26738693,26804229,26869765,26935301,27000837,27066373,27131909,27197445,27262981,27328517,27394053,27459589,27525125,27590661,27656197,27721733,27787269,27852805,27918341,27983877,28049413,28114949,28180485,28246021,28311557,28377093,28442629,28508165,28573701,28639237,28704773,28770309,28835845,28901381,28966917,29032453,29097989,29163525,29229061,29294597,29360133,29425669,29491205,29556741,29622277,29687813,29753349,29818885,29884421,29949957,30015493,30081029,30146565,30212101,30277637,30343173,30408709,30474245,30539781,30605317,30670850,30736389,30801925,30867461,30932994,30998533,31064066,31129605,31195141,31260677,31326213,31391749,31457282,31522821,31588357,31653893,31719426,31784962,31850501,31916037,31981573,32047106,32112645,32178181,32243717,32309253,32374786,32440322,32505858,32571394,32636933,32702469,32768005,32833541,32899074,32964613,33030146,33095685,33161221,33226757,33292290,33357826,33423362,33488898,33554437,33619970,33685509,33751042,33816578,33882114,33947653,34013189,34078722,34144261,34209794,34275333,34340866,34406402,34471938,34537474,34603010,34668546,34734085,34799618,34865154,34930693,34996226,35061762,35127301,35192834,35258370,35323906,35389442,35454981,35520517,35586050,35651586,35717122,35782658,35848197,35913730,35979266,36044805,36110338,36175874,36241410,36306949,36372482,36438018,36503557,36569093,36634626,36700162,36765698,36831234,36896770,36962306,37027842,37093378,37158914,37224453,37289986,37355522,37421058,37486597,37552130,37617666,37683202,37748738,37814274,37879813,37945346,38010882,38076418,38141954,38207493,38273029,38338562,38404098,38469637,38535170,38600706,38666242,38731781,38797314,38862850,38928386,38993922,39059458,39124994,39190533,39256066,39321602,39387138,39452677,39518210,39583749,39649282,39714818,39780354,39845893,39911426,39976962,40042501,40108037,40173570,40239106,40304642,40370178,40435714,40501253,40566786,40632322,40697858,40763394,40828933,40894469,40960005,41025541,41091074,41156610,41222146,41287682,41353221,41418754,41484290,41549829,41615365,41680901,41746437,41811970,41877506,41943041,42008578,42074114,42139653,42205186,42270725,42336261,42401797,42467333,42532866,42598402,42663941,42729477,42795013,42860549,42926085,42991621,43057159,43122693,43188226,43253765,43319301,43384837,43450375,43515909,43581445,43646981,43712517,43778053,43843589,43909122,43974661,44040197,44105733,44171269,44236805,44302341,44367877,44433413,44498949,44564485,44630021,44695557,44761093,44826629,44892165,44957698,45023237,45088770,45154309,45219845,45285381,45350917,45416451,45481989,45547525,45613061,45678597,45744130,45809666,45875205,45940741,46006277,46071813,46137346,46202882,46268418,46333957,46399493,46465031,46530565,46596098,46661637,46727173,46792710,46858242,46923778,46989317,47054853,47120386,47185925,47251461,47316997,47382534,47448069,47513605,47579141,47644674,47710213,47775746,47841285,47906821,47972354,48037893,48103429,48168965,48234501,48300037,48365570,48431109,48496645,48562181,48627717,48693253,48758789,48824322,48889861,48955397,49020933,49086469,49152005,49217541,49283077,49348613,49414151,49479685,49545221,49610757,49676293,49741829,49807365,49872901,49938437,50003973,50069509,50135045,50200581,50266117,50331653,50397189,50462725,50528261,50593797,50659333,50724869,50790405,50855941,50921477,50987013,51052549,51118085,51183621,51249157,51314693,51380229,51445765,51511301,51576838,51642373,51707909,51773445,51838981,51904517,51970053,52035589,52101125,52166661,52232197,52297733,52363269,52428806,52494341,52559877,52625413,52690950,52756485,52822021,52887557,52953093,53018629,53084167,53149702,53215237,53280773,53346309,53411845,53477383,53542918,53608453,53673990,53739525,53805061,53870598,53936133,54001669,54067207,54132741,54198277,54263814,54329349,54394885,54460421,54525957,54591493,54657029,54722567,54788101,54853637,54919173,54984709,55050245,55115782,55181317,55246854,55312391,55377933,55443461,55508997,55574533,55640069,55705606,55771141,55836678,55902214,55967749,56033285,56098821,56164357,56229895,56295429,56360965,56426504,56492039,56557573,56623109,56688645,56754182,56819717,56885253,56950789,57016325,57081861,57147397,57212935,57278469,57344005,57409541,57475077,57540613,57606149,57671687,57737221,57802757,57868293,57933831,57999367,58064901,58130438,58195976,58261510,58327045,58392584,58458117,58523655,58589190,58654726,58720262,58785799,58851334,58916869,58982406,59047942,59113479,59179013,59244550,59310087,59375621,59441157,59506695,59572229,59637765,59703302,59768839,59834373,59899910,59965445,60030983,60096520,60162053,60227590,60293125,60358664,60424197,60489735,60555271,60620805,60686341,60751877,60817415,60882954,60948485,61014021,61079558,61145094,61210629,61276166,61341701,61407241,61472774,61538313,61603850,61669382],"client":[12910593],"cacheaccepted":[25362438,26411014,27066374,27983878,28049414,28377094,28573702,29294598,30343174,31981574,34013190,37879814],"compilation":[24969217,25362435,25493505,26083329,26411011,26542081,26607617,26935297,27066371,27983875,28049411,28311553,28377091,28573699,29294595,29491201,29949953,30343171,30736385,31981571,32178177,34013187,35848193,37879811,39321602,57147394,60620803,60686339],"com":[3735568,4587536,5046275,5177345,6291472,6357008,6553616,7077889,7208976,7536656,8323075,8650755,8716304,8978448,10092545,10616833,11927553,12320769,12648449,12845057,12910593,13107201,13369345,14024705,14090241,14155777,14876673,14942209,15597569,15925249,16777217,16842753,17235969,17563649,17760257,18087937,18350081,18612225,18743297,19070977,19660801,19988481,20643841,20774913,21364737,21495809,22413313,22478849,23265281,31064072,31195138,32047112,33423368,34209800,58195984,58327056,58392592,58785795,59965442,60096528,60817424,60882960,61014017,61407248,61538320,61603856],"cleaning":[12910593],"contexts":[8388609,9306113,9568257,13631489,14548993,16187393,16908289,22151169,22740993,23068673,23789569,23920641,24641537,24969217,25362433,26673153,26738689,27459585,27590657,28180481,28508161,28639233,28901377,28966913,29097985,29163521,29425665,29622273,29884417,29949953,30146561,31129601,31391745,31850497,33161217,33554433,33685505,34275329,34734081,35127297,36044801,36306945,36569089,37224449,37486593,37879809,38207489,38469633,39190529,43057153,45613057,46465025,61145089],"concurrentpropertybag":[131074,1769474,4915206,5373959,5898247,6160390,34537474,38010881,41091081,56426497,57999374],"collector":[19791873,30539777,52101121],"commonjs":[41484290,41549825,47251457,47448069,52428802],"case":[6946817,25362433,26411009,27066369,27983873,28049409,28377089,28573697,29294593,30343169,31588353,31981569,32964609,34013185,37879809,61145090],"converted":[61669377],"collect":[14352385,22937601,23986177,24838145,25624577,25755649,26148865,27262977,27918337,30081025,42467329],"copyright":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6094849,6029313,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,8060929,7995393,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13697025,13631489,13762561,13893633,13828097,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19726337,19660801,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20381697,20316161,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26148865,26083329,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35520513,35454977,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36372481,36306945,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38469633,38404097,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40697857,40632321,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43909121,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,44957697,45023233,45088769,45154305,45219841,45285377,45350913,45416449,45481985,45547521,45613057,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268417,46333953,46399489,46465025,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47644673,47710209,47775745,47841281,47906817,47972353,48037889,48103425,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55377921,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669377],"collectgarbage":[3735553,4587521,4980737,6291457,6356993,6553601,7208962,7536641,8716290,8978433,14352388,22937604,23986181,27918343,42467334,58195969,58261505,58327041,58392577,60096513,60817410,60882946,61407233,61538305,61603841],"constructors":[51576833,53084161,53477377,53870593,54067201,54722561,55312385,55705601,56426497,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58785793,58982401,59113473,59310081,59506689,59768833,60096513,60358657,60489729,60817409,60882945,61407233,61538305,61603841],"currently":[458753,1245185,2293763,2949124,7471105,7929857,9240577,13631489,14548993,16187393,16908289,17104897,18546689,19726337,21299201,22151169,22740993,23068673,23789569,23920641,24641537,24969217,25362433,26673153,26738689,27459585,27590657,28180481,28508161,28639233,28901377,28966913,29097985,29163521,29425665,29622273,29884417,29949953,30146561,31129601,31391745,31784961,31850497,32505858,33161217,33554433,33685505,34275329,34734081,35127297,36044801,36306945,36569089,37224449,37486593,37879809,38207489,38469633,38862852,39190529,45613057,47251457,47710209,48234497,52559873,55836673,59047939,59965441,61079556],"combination":[6815745,7405569,7864321,8847361],"calculate":[9830401],"containing":[2621441,2686977,2818049,3211265,3670018,6029313,6488065,6815745,7274497,7405569,7864321,10616833,15073281,15204353,16449538,17891329,18022402,18481154,18939905,19464193,21954562,23461889,24903681,25821185,26345473,26607617,27787265,28049409,28442625,30343169,30998529,32178177,36634625,37617666,39256065,45285377,46858242,50003970,51970049,52166657,55115778,57278465,57540610,57737217,57868289,59310081,59375617,59834369,60162049,60424193,60489729,60751874],"cleanup":[1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2359297,2490369,2555905,2162689,2228225,2883585,3014657,3276801,3342337,3407873,3473409,3538945,3604481,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849665,4980737,5046273,5111809,5439489,6291457,6356993,6553601,6881281,7208961,7536641,7798785,8716289,8978433,12910593,19791873,51576833,53084161,53477377,53673985,53870593,54067201,54722561,55115777,55312385,55705601,55836673,55902209,56229889,56426497,56492033,56754177,57212929,57671681,57933825,57999361,58130433,58195969,58261505,58392577,58523649,58589185,58654721,58720257,58785793,58851329,59113473,59244545,59310081,59506689,59703297,59768833,59899905,60096513,60227585,60358657,60489729,60555265,60817409,60882945,61407233,61472769,61538305,61603841],"completeness":[14352385,22937601,23986177,27918337,42467329],"contravariance":[8388609,9306113,9568257],"command":[3735553,4587521,6291457,6356993,6553601,7208961,7536641,8716289,8978433,15859724,19529741,27197453,30867469,31588367,32112653,32964623,58195969,58327041,58392577,60096513,60817409,60882945,61407233,61538305,61603841],"called":[13434881,17956865,18874369,20971521,26279937,26869761,28770305,38010883,38273025,40894465,41222146,42926081,43122689,44367873,52166657,53870594,57278465,57802753],"connection":[1900545,2162689,6750209,7012353,7208961,7733249,25231361,26214401,26279937,27590657,27656193,28835841,29163521,29425665,29622273,29884417,30015489,38010882,39387137,50593794,55181313,56229890,57212930,58851329,60817409,61145089],"comments":[65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2293761,2359297,2424833,2490369,2555905,2621441,2686977,2752513,2818049,2162689,2228225,2883585,2949121,3014657,3080193,3145729,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6094849,6029313,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,8060929,7995393,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585217,8650753,8716289,8781825,8847361,8912897,8978433,9043969,9109505,9175041,9240577,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10551297,10616833,10682369,10747905,10813441,10878977,10944513,11010049,11075585,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13697025,13631489,13762561,13893633,13828097,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056321,16121857,16187393,16252929,16318465,16384001,16449537,16515073,16580609,16646145,16711681,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432577,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153473,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19726337,19660801,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20381697,20316161,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26148865,26083329,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35520513,35454977,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36372481,36306945,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38469633,38404097,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40697857,40632321,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43909121,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,44957697,45023233,45088769,45154305,45219841,45285377,45350913,45416449,45481985,45547521,45613057,45678593,45744129,45809665,45875201,45940737,46006273,46071809,46137345,46202881,46268417,46333953,46399489,46465025,46530561,46596097,46661633,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47644673,47710209,47775745,47841281,47906817,47972353,48037889,48103425,48168961,48234497,48300033,48365569,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084161,53149697,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722561,54788097,54853633,54919169,54984705,55050241,55115777,55181313,55246849,55377921,55312385,55443457,55508993,55574529,55640065,55705601,55771137,55836673,55902209,55967745,56033281,56098817,56164353,56229889,56295425,56360961,56426497,56492033,56557569,56623105,56688641,56754177,56819713,56885249,56950785,57016321,57081857,57147393,57212929,57278465,57344001,57409537,57475073,57540609,57606145,57671681,57737217,57802753,57868289,57933825,57999361,58064897,58130433,58195969,58261505,58327041,58392577,58458113,58523649,58589185,58654721,58720257,58785793,58851329,58916865,58982401,59047937,59113473,59179009,59244545,59310081,59375617,59441153,59506689,59572225,59637761,59703297,59768833,59834369,59899905,59965441,60030977,60096513,60162049,60227585,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60751873,60817409,60882945,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407233,61472769,61538305,61603841,61669377],"checking":[1769475,3276803,4259843,16515073,18284545,18808833,54067203,56426499,57999363],"compatible":[3407873,5046273,8912898,58785793,59768833],"categories":[38535169,45023233,52428801],"compile":[4980748,7208972,23461895,24051713,24444929,24772609,24969223,25362440,25493505,25559041,25821192,26017793,26083329,26411009,26542081,26607623,26935297,27066369,27131911,27394049,27525121,27721729,27983880,28049416,28311553,28377089,28442631,28573697,28704776,28966920,29032449,29294593,29491207,29556737,29753345,29949959,30146567,30343176,30736385,30998536,31391752,31981569,32178183,32768007,33095681,34013192,34930696,35192845,35848199,36372481,36569095,37879816,38666253,39714817,58261516,60817420],"calls":[11141121],"caches":[6029313,6488065,7274497,45023234],"customize":[15859713,19529729,27197441,30867457,31588353,32112641,32964609],"corresponds":[49610753,50790401],"columnnumber":[37617665,54919172,55115777],"custom":[1572866,3014657,4521985,5242888,5701633,34996226,38010881,39059457,40632321,42074113,42205185,42860546,43909121,44957697,45088769,45416449,46268417,46530563,46792707,47775745,52953091,53870593,55705601,58130436,58195969,58327041,58392577,60030977,60096513,60227585,60817409,60882945,61407233,61538305,61603841],"cast":[3407874,5046274,8257540,9043978,11730945,58785794,59768834],"cstr":[31588353,32964609],"calling":[2293763,2949124,3014657,4521985,4784130,5373953,6291458,6356994,6553602,6881282,7471105,7536642,7929857,8716290,8978434,9240577,16318465,17104897,18546689,19726337,21299201,30277633,30539777,31784961,31916033,32505858,32636930,35520514,38862852,41746434,44695553,55705601,57016322,58392578,58720258,59047939,60096514,60227585,60817409,60882946,61079556,61407234,61538306,61603842],"classes":[3014665,4521993,13631489,23789569,38010881,38535169,39321601,39976961,40566785,53477377,55705609,59113473,60227593],"check":[16515073,18284545,18808833,32636929,35520513,41746433,41943041],"createscriptengine":[4980742,25952261,26804229,27656197,28180485,28901381,29622277,40370182,58261510],"copy":[589825,720897,917505,1048577,1114113,1179649,1245185,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1900545,1835009,1966081,2031617,2097153,2359297,2490369,2555905,2621441,2686977,2818049,2162689,2228225,2883585,3014657,3211265,3276801,3342337,3407873,3473409,3538945,3604481,3670018,3801089,3866625,3932161,3997697,4063233,4259841,4325377,4390913,4456449,4521985,4587521,4653057,4849665,4915201,4980737,5046273,5111809,5242881,5308417,5373953,5439489,5505025,5570561,5636097,5701633,5767169,5832705,5898241,5963777,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143426,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995393,8060930,8126466,8192001,8257538,8323074,8388609,8454145,8519681,8585217,8650754,8716289,8781825,8847361,8912898,8978433,9043970,9109505,9175041,9240577,9306114,9371649,9437187,9502721,9568258,9633793,9699330,9764865,9830402,9895937,9961473,10027009,10092545,10158081,10223617,10289154,10354690,10420226,10485762,10551297,10616834,10682370,10747905,10813441,10878978,10944514,11010049,11075586,11141122,11206658,11272193,11337730,11403265,11468801,11534337,11599873,11665410,11730945,11796481,11862017,11927553,11993089,12058626,12124161,12189698,12255234,12320769,12386305,12451841,12517377,12582914,12648449,12713985,12779521,12845057,12910594,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565954,13631489,13697025,13762561,13828097,13893633,13959169,14024705,14090241,14155777,14221313,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204353,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990785,16056324,16121857,16187393,16252929,16318465,16384001,16449539,16515073,16580609,16646145,16711684,16777217,16842753,16908289,16973825,17039361,17104897,17170433,17235969,17301508,17367041,17432580,17498116,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022403,18087937,18153473,18219012,18284545,18350081,18415617,18481155,18546689,18612225,18677761,18743297,18808833,18874369,18939905,19005441,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595265,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185089,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168129,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282241,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986177,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,27000833,26935297,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28180481,28246017,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30736385,30801921,30867457,30998529,31129601,31195137,31260673,31326209,31391745,31522817,31588353,31653889,31850497,31916033,31981569,32112641,32178177,32243713,32309249,32636929,32702465,32768001,32833537,32964609,33095681,33161217,33226753,33554433,33685505,33947649,34013185,34144257,34275329,34734081,34930689,35127297,35520513,35454977,35848193,36044801,36306945,36503553,36569089,37224449,37486593,37879809,38207489,38273025,38469633,38731777,39190529,39452673,39583745,39845889,40042497,40108033,40501249,40828929,40894465,40960001,41025537,41353217,41549825,41615361,41680897,41746433,42139649,42270721,42336257,42401793,42467329,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43974657,44040193,44105729,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44695553,44761089,44826625,44892161,45023233,45154305,45219841,45285377,45350913,45481985,45547521,45613057,45678593,45875201,45940737,46006273,46071809,46333953,46399489,46465025,46530561,46661633,46727169,46792705,46989313,47054849,47185921,47251457,47316993,47382529,47448065,47513601,47579137,47710209,47841281,47906817,48037889,48103425,48168961,48234497,48300033,48431105,48496641,48562177,48627713,48693249,48758785,48889857,48955393,49020929,49086465,49152001,49217537,49283073,49348609,49414145,49479681,49545217,49610753,49676289,49741825,49807361,49872897,49938433,50003969,50069505,50135041,50200577,50266113,50331649,50397185,50462721,50528257,50593793,50659329,50724865,50790401,50855937,50921473,50987009,51052545,51118081,51183617,51249153,51314689,51380225,51445761,51511297,51576834,51642369,51707905,51773441,51838977,51904513,51970049,52035585,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953089,53018625,53084162,53149697,53215233,53280769,53346305,53411841,53477378,53542913,53608449,53673986,53739521,53805057,53870594,53936129,54001665,54067202,54132737,54198273,54263809,54329345,54394881,54460417,54525953,54591489,54657025,54722562,54788097,54853633,54919169,54984705,55050241,55115778,55181313,55246849,55312386,55443457,55508993,55574529,55640065,55705602,55771137,55836674,55902210,55967745,56033281,56098817,56164353,56229890,56295425,56360961,56426498,56492034,56557569,56623105,56688641,56754178,56819713,56885249,56950785,57016321,57081857,57147393,57212930,57278465,57344001,57409537,57475073,57540609,57606145,57671682,57737217,57802753,57868289,57933826,57999362,58064897,58130434,58195970,58261506,58327041,58392578,58458113,58523650,58589186,58654722,58720258,58785794,58851330,58916865,58982401,59047937,59113474,59179009,59244546,59310082,59375618,59441153,59506690,59572225,59637761,59703298,59768834,59834370,59899906,59965441,60030977,60096514,60162050,60227586,60293121,60358658,60424194,60489730,60555266,60620801,60686337,60751875,60817410,60882946,60948481,61014017,61079553,61145089,61210625,61276161,61341697,61407234,61472770,61538306,61603842,61669377],"contents":[2621443,2686979,2818051,3211267,3670020,6815750,7405574,7864326,15728642,15794178,16449538,16580610,18022402,18481154,19202050,21954566,36634627,37421058,37945346,39256065,44302341,50921478,52363266,57278469,59310081,59375619,59834371,60162051,60424195,60489731,60751876,61210625],"contains":[327681,1769473,2752515,3276801,4259841,7143425,8060929,8126465,8519681,9371649,9633793,9961473,10027009,10158081,10551297,10747905,10813441,11468801,11534337,11862017,12124161,12451841,13041665,13500417,17039363,19136513,23199745,38010882,38535169,39321602,39976961,40566785,44761089,49217537,51576833,54067202,55377925,56426497,56688641,57540611,57999361,58654721,59244545],"corresponding":[7143425,8060929,8126465,8454145,9437185,9830402,12713985,13041665,13500417,13697025,14286849,14483457,15007745,15138817,15269889,19136513,19922945,20709377,21037057,21430273,21889025,23199745,24248321,25100289,52101121,54067201],"compiledocument":[4980748,7208972,24051717,24444933,24772613,25493509,25559045,26017797,26083333,26411013,26542085,26935301,27066373,27394053,27525125,27721733,28311557,28377093,28573701,29032453,29294597,29556741,29753349,30736389,31981573,33095685,36372492,39714828,58261516,60817420],"coordinated":[61145089],"completes":[4980737,7208961,25165825,38731777,58261505,60817409],"causing":[54853633],"completed":[6029313,6488065,7274497,12910593,25165825,38731777],"completion":[6029313,7274497],"clearnocheck":[1769473,3276801,4259841,5373953,16318465,16515076,54067201,56426497,57999361],"cpuprofilesampleinterval":[38404097,42074113,50987012,55574532,58261505,60817409],"correct":[13828097,19398657,40042497,43450369,44171265,49414145,60686337,61407233,61538305,61603841],"clean":[12910593],"clsid":[3735560,4587528,6291464,6357000,6553608,7208968,7536648,8323073,8650753,8716296,8978440,11927553,12320769,12648455,12845057,13107207,13369351,14024705,14090247,14155783,14876679,14942209,15597569,15925249,16777223,16842753,17235976,17563655,17760264,18087944,18350081,18612225,18743304,19070977,19660801,19988481,20643841,20774920,21364744,21495816,22413320,22478849,23265281,31064068,32047108,33423364,34209796,34734081,35127297,36044801,38207489,39190529,45613057,58195976,58327048,58392584,60096520,60817416,60882952,61407240,61538312,61603848],"clear":[2752513,16515073,38010881,38535169,39321601,39976961,40566785,57540609],"cacheresult":[24969221,25493509,26083333,26542085,26607621,26935301,28311557,29491205,29949957,30736389,32178181,35848197],"contact":[983041],"current":[1179649,1572868,1638404,1703938,1769476,1835012,1900548,1966084,2031620,2097156,2359300,2490371,2555907,2162692,2228228,2883587,3014660,3080193,3276804,3342339,3407876,3473412,3538947,3604484,3801090,3866628,3932164,3997700,4063236,4259844,4325380,4390916,4456452,4521988,4587524,4653060,4849667,4980740,5046276,5111812,5439492,6291462,6356998,6553606,6881284,7208964,7536646,7798788,8650753,8716294,8978438,12255233,13828097,16384001,18677762,19398657,22544386,22675457,24379394,26804225,27656193,28901377,29622273,30801922,31653890,39059458,39845889,40042497,40632322,41025537,41746434,42205186,42729473,43646977,43909121,44171265,44433409,44695553,44892161,44957697,45023233,45088770,45154305,45744134,46006273,46202883,46268417,46727169,48365572,48627713,49545217,50069505,50135041,50659329,51314689,51511297,51576834,52494344,52822017,53084164,53280769,53477379,53673988,53870596,54067204,54722563,54788097,55115780,55312387,55705604,55836676,55902210,56229892,56426500,56492036,56754180,57212932,57671684,57933828,57999364,58130436,58195974,58261508,58392583,58458116,58523652,58589188,58654730,58720260,58785796,58851332,58982404,59113475,59244548,59310084,59506691,59703300,59768836,59899908,60096519,60227588,60358659,60489732,60555268,60817412,60882951,61145089,61407240,61472772,61538312,61603848,61669377],"conjunction":[51511297],"creating":[25624577,25755649,39321601,54198273],"cancelawaitdebugger":[7208961,26279940,60817409],"consecutive":[38404097,42074113,51249153,52887553,58261505,60817409],"column":[37617665,54919171,55115777],"continue":[38010881,45678593,51904513,58064898],"collectcpuprofilesample":[4980737,7208961,26148868,27262980,58261505,60817409],"consumed":[25362433,26411009,27066369,27983873,28049409,28377089,28573697,29294593,30343169,31981569,34013185,37879809,60620801],"cancelinterrupt":[7208961,26869764,28770305,60817409],"cause":[5111809,50200577,50724865,51511297,53936129,54460417,58654721],"compiling":[47710209,48234497,52559873],"caught":[12910593,61145089],"continues":[43057153,46465025],"connects":[65537,720897,2097153,2228225,6750209,7012353,57671681,57933825,58261505],"count":[524289,1179650,16711685,17432581,17498117,18219013,37617665,46858241,55115777,55902209,56033282,57540609],"continuation":[45678593,51904513,58064897],"critical":[5242881]} \ No newline at end of file +{"consumed":[36241409,36372481,37945345,38273025,39387137,39518209,40239105,43515905,43581441,44433409,49741825,52625409,79560705],"createenumerator":[4456449,4784129,4980737,25493508,73269249,74973185,75694081],"converts":[2490374,3538956,3670025,4521996,8060929,8192001,8323073,8781825,10092545,10420225,10551298,11730946,11927554,12124162,12386306,12517378,12845058,12910594,13631490,13893634,14221314,15204354,17039361,17170433,17956865,18415617,19398657,20054017,21233665,25231361,26935297,50397186,52166660,54263816,75956236,76677126,77987852,78774281],"call":[393217,3735553,5373953,8060930,8192002,8323074,8585217,8781826,8716289,9306113,9502721,9830401,10092546,10420226,11010049,11206657,11403265,15663106,16711682,17039362,17170434,17956866,18415618,18808834,19398658,19922946,20054018,21233666,21757954,23199746,23658498,25231362,26935298,31981569,39780353,48955394,49545217,51511297,52428802,53805057,57540609,57868289,60358657,62259202,62980097,65077250,65142785,66715649,67436545,69140481,71761921,71827457,72286210,72548353,73400321,73990146,74842114,75104257,76021762,76087297,77856769,78512129,78708737,78970881,79953921,80019457,80281601,80347137,81002497,81068033,81264641],"catchfunc":[15990792],"createscriptengine":[7077894,37093381,39256069,40828933,42205189,43778053,45481989,58720262,75366406],"context":[1835009,3735554,5373954,7077892,7405569,8650755,8716290,9043969,9306114,9502722,9830402,10682369,11010054,11206658,11403266,14155779,14483459,17563654,19726342,21037059,21626883,23724038,24707078,33882113,39911425,40894467,42074115,43581443,43712513,44433411,44695553,45547521,45678593,45744131,47513603,47841281,48037891,49807363,49872897,51314689,51642372,52756481,55115777,56033281,57212932,61538305,61734916,61931524,62717953,75104258,75366404,76087302,77725699,77856770,78512130,78839809,79888386,79953922,80281602,81002498,81068034,81264642],"clean":[15990785],"clear":[3211265,21889025,45547521,48103425,49545217,51707905,52232193,53673985,76414977],"changed":[1114113],"contextcallback":[7405574,8650757,9043973,10682374,14155781,14483461,21037062,21626886,40894469,42074117,43581445,44433413,45744133,47513605,48037893,49807365,52756481,61538305,61734916,61931525,78839809,79888385],"client":[15990785],"cacheable":[25559041,33882113,39911425,43712513,49872897,77660161],"calculate":[8585217],"comparison":[64421890,68878338,75038721,79429634],"case":[8519681,36241409,36372481,37945345,38273025,39387137,39518209,40239105,43515905,43581441,43843585,44433409,44564481,49741825,52625409,76939266],"converted":[80412673],"comparer":[6422529,7143432,9437192,12189697,17694728,18481153,19660801,20971528,53084162,54394882,55705602,55967746,56295426,59310086,71368708,74121218,75628548],"categories":[48103425,54198273,71958529],"cachedocument":[2162689,2228226,6291461,7208965,75169794,79691777],"columnnumber":[56819713,64487428,80347137],"copy":[1,393217,524289,655361,327681,786433,851969,917505,983041,1114113,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2359297,2818049,2883585,2949121,3014657,3080193,3145729,3276801,3342337,3407873,3473409,3538945,3604481,3866625,3932161,3997697,4128769,4194305,4325377,4390914,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505025,5636097,5701633,5832705,5963777,5767169,6029313,6094849,6160385,6225921,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7340033,7405569,7471105,7536641,7602177,7667713,7733249,7798785,7864321,7929857,7995394,8060929,8126465,8192001,8257537,8323073,8388609,8454145,8519681,8585218,8650753,8781825,8716289,8847362,8912898,8978434,9043969,9109506,9175042,9306113,9371649,9437185,9502721,9568257,9633793,9699329,9764865,9830401,9895937,9961474,10027009,10092545,10158082,10223618,10289153,10354691,10420225,10485761,10551298,10616833,10682369,10747906,10813441,10878978,10944514,11010049,11075586,11141121,11206657,11272193,11337729,11403265,11468801,11534337,11599873,11665409,11730946,11796481,11862018,11927554,11993089,12058625,12124162,12189697,12255233,12386306,12451841,12517378,12582914,12648449,12713985,12779521,12845058,12910594,12976129,13041665,13107201,13172737,13238273,13303809,13369345,13434881,13500417,13565953,13631490,13697025,13762561,13828097,13893634,13959170,14024705,14090243,14155777,14221314,14286849,14352385,14417921,14483457,14548993,14614529,14680065,14745601,14811137,14876673,14942209,15007745,15073281,15138817,15204354,15269889,15335425,15400961,15466497,15532033,15597569,15663105,15728641,15794177,15859713,15925249,15990786,16056321,16121857,16187393,16252929,16318465,16384001,16449540,16515073,16580609,16646148,16711681,16777220,16842756,16908292,16973825,17039361,17104897,17170433,17235969,17301505,17367041,17432579,17498113,17563649,17629185,17694721,17760257,17825793,17891329,17956865,18022401,18087937,18153476,18219009,18284545,18350081,18415617,18481153,18546689,18612225,18677764,18743300,18808833,18874369,18939905,19005442,19070977,19136513,19202049,19267585,19333121,19398657,19464193,19529729,19595267,19660801,19726337,19791873,19857409,19922945,19988481,20054017,20119553,20185092,20250625,20316161,20381697,20447233,20512769,20578305,20643841,20709377,20774913,20840449,20905985,20971521,21037057,21102593,21168132,21233665,21299201,21364737,21430273,21495809,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22020097,22085633,22151169,22216705,22282244,22347777,22413313,22478849,22544385,22609921,22675457,22740993,22806529,22872065,22937601,23003137,23068673,23134209,23199745,23265281,23330817,23396353,23461889,23527425,23592961,23658497,23724033,23789569,23855105,23920641,23986180,24051713,24117249,24182785,24248321,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24772609,24838145,24903681,24969217,25034753,25100289,25165825,25231361,25296897,25362433,25427969,25493505,25559041,25624577,25690113,25755649,25821185,25886721,25952257,26017793,26083329,26148865,26214401,26279937,26345473,26411009,26476545,26542081,26607617,26673153,26738689,26804225,26869761,26935297,27000833,27066369,27131905,27197441,27262977,27328513,27394049,27459585,27525121,27590657,27656193,27721729,27787265,27852801,27918337,27983873,28049409,28114945,28246017,28180481,28311553,28377089,28442625,28508161,28573697,28639233,28704769,28770305,28835841,28901377,28966913,29032449,29097985,29163521,29229057,29294593,29360129,29425665,29491201,29556737,29622273,29687809,29753345,29818881,29884417,29949953,30015489,30081025,30146561,30212097,30277633,30343169,30408705,30474241,30539777,30605313,30670849,30736385,30801921,30867457,30932993,30998529,31064065,31129601,31195137,31260673,31326209,31391745,31457281,31522817,31588353,31653889,31719425,31784961,31850497,31916033,31981569,32047105,32112641,32178177,32243713,32309249,32374785,32440321,32505857,32571393,32636929,32702465,32768001,32833537,32899073,32964609,33030145,33095681,33161217,33226753,33292289,33357825,33423361,33488897,33554433,33619969,33685505,33751041,33816577,33882113,33947649,34013185,34078721,34144257,34209793,34275329,34340865,34406401,34471937,34537473,34603009,34668545,34734081,34799617,34865153,34930689,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35454977,35520513,35586049,35651585,35717121,35782657,35848193,35913729,35979265,36044801,36110337,36175873,36241409,36306945,36372481,36438017,36503553,36569089,36634625,36700161,36765697,36831233,36896769,36962305,37027841,37093377,37158913,37224449,37289985,37355521,37421057,37486593,37552129,37617665,37683201,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38404097,38469633,38535169,38600705,38666241,38731777,38797313,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39583745,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40435713,40501249,40566785,40632321,40697857,40763393,40828929,40894465,40960001,41025537,41091073,41156609,41222145,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41746433,41811969,41877505,41943041,42008577,42074113,42139649,42205185,42270721,42336257,42401793,42467329,42532865,42598401,42663937,42729473,42795009,42860545,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43712513,43778049,43843585,44040193,44171265,44236801,44302337,44367873,44433409,44498945,44564481,44630017,44761089,44892161,44957697,45023233,45088769,45219841,45285377,45416449,45481985,45613057,45744129,45809665,45875201,46137345,46333953,46465025,46530561,46792705,46858241,46989313,47054849,47120385,47185921,47251457,47316993,47513601,47644673,48037889,48234497,48365569,48889857,48955393,49086465,49217537,49283073,49414145,49741825,49807361,49872897,50135041,50331649,50528257,50593793,50659329,50724865,50790401,50921473,50987009,51118081,51380225,51511297,51970049,52101121,52297729,52428801,52559873,52625409,52953089,53149697,54132737,54198273,54460417,54591489,54919169,54984705,55508993,55771137,56033281,56229889,56360961,56688641,56950785,57016321,57147393,57278465,57344001,57475073,57868289,57999361,58195969,58327041,58392577,58458113,58523649,58785793,58916865,58982401,59179009,59310081,59441153,59506689,59572225,59637761,59703297,59768833,59899905,59965441,60030977,60096513,60162049,60489729,60555265,60620801,60686337,60817409,60882945,60948481,61079553,61145089,61341697,61472769,61669377,61734913,61865985,61931521,62062593,62128129,62259201,62324737,62390273,62521345,62586881,62717953,62849025,62914561,63111169,63176705,63242241,63307777,63373313,63438849,63504385,63569921,63635457,63700993,63766529,63832065,63963137,64028673,64094209,64159745,64225281,64290817,64421889,64487425,64552961,64749569,64815105,64880641,64946177,65011713,65077249,65142785,65208321,65339393,65404929,65536001,65601537,65732609,65667073,65798145,65929217,65994753,66060289,66125825,66191361,66256897,66322433,66387969,66453505,66519041,66584577,66650113,66715649,66846721,66912257,66977793,67043329,67108865,67174401,67239937,67305473,67371009,67436545,67502081,67567617,67698689,67764225,67829761,67895297,67960833,68026369,68091905,68222977,68288513,68354049,68419585,68485121,68550657,68616193,68681729,68747265,68812801,68878337,68943874,69009409,69074945,69140481,69206017,69271553,69337089,69402625,69468161,69599233,69664769,69730305,69795841,69861377,69926913,69992449,70057985,70123521,70189057,70254593,70320129,70385665,70451201,70516737,70647809,70713345,70778881,70844417,70909954,70975489,71041025,71106561,71172098,71237633,71303169,71368706,71434241,71499777,71565313,71630849,71696385,71761922,71827457,71892993,71958529,72024065,72089601,72155137,72220673,72286209,72351745,72417282,72482817,72548354,72613890,72679425,72744961,72810497,72876033,72941569,73007105,73072641,73138178,73203713,73269249,73334785,73400321,73465857,73531394,73596929,73662465,73728001,73793537,73859073,73924609,73990146,74055681,74121218,74186753,74252289,74317825,74383361,74448897,74514434,74579969,74645506,74711042,74842114,74907649,74973185,75038722,75104258,75169794,75235329,75300865,75366402,75431938,75497474,75563009,75628546,75694081,75759618,75825153,75890689,75956226,76021761,76087298,76152834,76218369,76283905,76349442,76414977,76480514,76546050,76611585,76677121,76742658,76808193,76873729,76939265,77004801,77070337,77135874,77201409,77266946,77332482,77398018,77463553,77529090,77594625,77660161,77725697,77791233,77856770,77922305,77987842,78053377,78118913,78184451,78249986,78315521,78381057,78446593,78512129,78577666,78643201,78708738,78774273,78839810,78905345,78970882,79036417,79101953,79167490,79233025,79298561,79364098,79429633,79495169,79560705,79626242,79691778,79757313,79822849,79888386,79953922,80019458,80084994,80150529,80216066,80281602,80347138,80412673,80478210,80543746,80609281,80674818,80740354,80805890,80871426,80936961,81002498,81068034,81133569,81199105,81264642,81330178],"customize":[16580609,23003137,43843585,44564481,45613057,49283073,51380225],"consumption":[76939265],"contexts":[8388609,10944513,11075585,15269889,16384001,18219009,19464193,22085633,22740993,26542081,26804225,28639233,29360129,35258369,36372481,36896769,37027841,38731777,39387137,39649281,39714817,41287681,41680897,41943041,42205185,42270721,42401793,42532865,42991617,43778049,44040193,44302337,44498945,44761089,45219841,45481985,45875201,46530561,47316993,48234497,49086465,49217537,50331649,50528257,50593793,52101121,52297729,52953089,53149697,54132737,60817409,66387969,76939265],"constructor":[5505025,5832705,6225921,6422529,6488065,6750209,6881281,6946818,7012353,7143425,7274497,7667713,8126465,9371649,9437185,10878978,11468801,12189697,12255233,12648449,12976129,13369345,13762561,14614529,15138817,16121857,16711682,17367041,17563649,17694721,18219009,18481153,18612225,19267585,19660801,20709377,20971521,21823489,22085633,22151169,22740993,22806529,23134209,23199746,23330817,23396353,23724033,23789569,24051713,25165825,25755649,25952257,26542081,27000833,27197441,27262977,27394049,28311553,28966913,31457281,31981570,32505857,32899073,33161217,33554433,33619969,34013185,34144257,34406401,34471937,34734081,34799617,34996225,35061761,35127297,35192833,35258369,35782657,36110337,36438017,36765697,36896769,36962305,37027841,37355521,38141953,38469633,38535169,38600705,38731777,38993921,39649281,39714817,39780355,39845889,40304641,40370177,40763393,40960001,41091073,41680897,41811969,41877505,41943041,42270721,42336257,42532865,42991617,43253761,43384833,43450369,43974657,44105729,44236801,44498945,44761089,44892161,44957697,45219841,45285377,45809665,46006273,46530561,47054849,47185921,47251457,47316993,47448065,47972353,48234497,48889857,49086465,49414145,50069505,50200577,50331649,50528257,50593793,50921473,51576833,52101121,52297729,52363265,52494337,52559873,52953089,53149697,53739521,54132737,54788097,54919169,55312385,55443457,55836673,55967745,56295425,56754177,57933825,59047937,60424193,74842116,77266945,78577665,79626242,79822849,80216068,80412673],"continues":[60817409,66387969],"constructed":[76939267],"checks":[31981569,39780353],"cacheresult":[36175877,37552133,38207493,40108037,40435717,43122693,44040197,48037893,48365573,49217541,49807365,54460421],"coded":[60358657,62980097,72548353,78970881],"cancelawaitdebugger":[11010049,36700164,76087297],"contravariance":[8388609,10944513,11075585],"continue":[45547521,58982401,65601537,72679426],"collecting":[7077890,11010050,35389441,35520513,37289985,42467329,48431106,53346306,75366402,76087298],"console":[9175041,10944514,15990785,16580609,19005441,23003137,43843585,44564481,45613057,49283073,51380225],"contained":[58589185,76414977],"constraints":[7864321,34144257,35192840,35258376,36896776,39649288,40960008,41877512,42336264,42991624,44761096,47054856,47972358,49086472,49545217,50921480,55836678,61014017,64094209,66584577,67829761,69402625,70975489,71041025,72155137,72220673,75366406,76087302,76152834],"configuration":[1835012,3866625,4325377,5111809,5242881,5439489,5701633,5767171,6619138,6684674,6815746,6946817,8650754,31457282,32505858,33423361,33619970,33882113,34406403,34471938,34668547,34734082,34799618,35061762,35323905,35782658,35913729,36503553,37158915,37617665,37814273,38141954,38469634,38600706,38666241,38928385,38993921,39321601,39911425,39976963,41615361,43384834,43450370,43712513,45285379,45547522,45678596,46792705,47775745,49545217,49610753,49872897,50069508,50200577,51118081,51707913,52494340,52690945,53739522,56754178,58654723,62652417,64618497,69074945,69992449,72417284,74514436,75431940,75890695,76742659,77201409,77266946,78577666,79626246,79888389,80478214],"compiling":[56229889,66453505,67698689],"cpuprofilesampleinterval":[59834369,60293121,71565316,74055684,75366401,76087297],"clearscrip":[45547521,49545217,63635457,69992449,75431937,77201409],"configure":[3866625,4325377,5111809,5242881,5439489,5701633,6946817,34406405,39976965,45285381,72417281,74514433,75431937,76742657,77266946,78577666,79626241,80478209],"cpu":[393217,7077892,11010052,35389443,35520515,35979267,37289987,38338562,39124994,42467331,42729475,48431107,49545221,53346307,59834369,60293121,66715649,71565315,71761921,74055683,75366405,76087301,80019457,80150529,80347137,80740353],"completeness":[15532033,24444929,39190529,40501249,44171265],"conversion":[3342337,5963777,76939272,80084993,80543745],"caution":[76939267,80805889],"coordinated":[76939265],"corresponds":[62128129,71237633],"convenient":[7995393,9109505,18219009,26542081,74121217],"collector":[21757953,51511297,72155137],"creating":[35520513,37289985,49545217,80150529],"copying":[76939265],"containing":[2818049,3276801,3473409,3997697,4390914,6619137,6684673,7405569,8650753,9043969,10682369,10747905,14090242,14942209,17432578,18022401,19595266,20447233,21561345,23330818,24313857,25821185,28180481,32243713,37486593,39518209,40173569,41418753,43515905,46858241,48365569,50724865,50987009,54001665,54460417,56819714,58261505,58589186,62914561,64028673,69337089,72482817,73007105,73138177,74645505,75497473,76414978,76480513,77135873,77725698,78184450,79298561,80347138,80674817],"comprise":[45547521,49545217,69992449,77201409],"collects":[7077889,11010049,38338561,39124993,75366401,76087297],"connection":[2293761,2555905,7471105,7798785,9764865,11010049,36700161,38731777,39649281,40304641,40828929,42336257,44498945,44892161,45481985,45547522,49086465,50921473,61800449,68943874,70909954,71696385,76087297,76546049,76939265,78118914],"combination":[6619137,6684673,6815745,8650753],"change":[39256065,40828929,43778049,45481985,56360961,62849025,64094209,66584577,67829761,69402625],"category":[1835010,1900545,3735556,5373956,6684681,6815745,7077896,7405575,8650761,8716292,9043974,9306116,9502724,9830404,10682375,11010060,11206660,11403268,14155784,14483464,16515080,21037065,21364744,21626889,26607625,26738697,36175880,38207496,40894472,42074120,43057160,43581448,44433416,44695554,45023240,45547521,45678594,45744136,47513608,47841282,48037896,49741832,49807368,51314690,51642376,51970056,52625416,54198275,54984712,55115778,57212936,57475074,59375620,59441158,61538306,65470467,68616194,70123522,71958531,75104260,75366408,76087308,76873729,77332485,77856772,78315522,78512132,78839810,79888386,79953924,80281604,81002500,81068036,81264644],"clsid":[3735560,5373960,8716296,8847361,9175041,9306120,9502728,9830408,11010056,11206664,11403272,13172743,13238273,13434887,13500423,13697025,13828097,14745607,14811143,15073287,15400961,15597569,15859713,17235975,17301505,17825799,18087944,18284552,18546689,19202049,19988488,20119553,20316161,20578305,20774913,21495809,22216712,22478856,22937608,23527425,23592968,24182792,25100289,42270721,45219841,45350916,47710212,48168964,50593793,51183620,52953089,53149697,54132737,75104264,76087304,77856776,78512136,79953928,80281608,81002504,81068040,81264648],"cause":[3014657,3407873,70975489,71041025,71827457,72220673,72548353,73400321,78970881],"contains":[1245185,1507329,1966081,2883585,3080193,3211267,7995393,8978433,9109505,9699329,10027009,10289153,10485761,10813441,11141121,11534337,11599873,11796481,11993089,12451841,12779521,13041665,13565953,15925249,17760257,18939907,21692417,22544385,23068673,26148865,45547522,48103425,49545218,51707905,52232193,53673985,60096513,66256897,69271553,71368705,72548353,74121218,74776582,75628545,76414979,77398017,78839809,78970881],"caught":[15990785,76939265],"class":[2,131074,524289,589825,262146,655361,720897,786434,851969,917506,983041,1048578,1114113,1179650,1245185,1310721,1376257,1441793,1507329,1703937,1769476,1835009,1900545,1966081,2031620,2162689,2359298,2228225,2490369,2293761,2686977,2555905,2883585,2621441,2949124,3014658,3080193,3145732,3407874,3342346,3538945,3604481,3670017,3735576,3866625,3932161,4128769,4194305,4325377,4653060,4521985,4587521,4849665,5046276,5111809,5177345,5242881,5308417,5373977,5439489,5505025,5636097,5701633,5832705,5963786,5767169,6029313,6094849,6160385,6291457,6356993,6422529,6488065,6553601,6619137,6684673,6750209,6815745,6881281,6946817,7012353,7077889,7143425,7208961,7274497,7405569,7471105,7536641,7602177,7733249,7798785,7864321,7929860,7995393,8060929,8126465,8192001,8257537,8323073,8388609,8519681,8454145,8585217,8650753,8716313,8781825,8847364,8912900,8978433,9043969,9109505,9175043,9306137,9371649,9437185,9502745,9568257,9633793,9699329,9764865,9830425,9961473,10027009,10092545,10158081,10223617,10289153,10354689,10420225,10485761,10616833,10682369,10747905,10813441,10551297,10878978,10944513,11010073,11075585,11141121,11206681,11272193,11337729,11403289,11468801,11534337,11599873,11665409,11730945,11796481,11862017,11927553,11993089,12058625,12124161,12189697,12255233,12320769,12386305,12451841,12517377,12582913,12648449,12713985,12779521,12845057,12910593,12976129,13107201,13041665,13172740,13238275,13369345,13434884,13500420,13565953,13631489,13697027,13762561,13828099,13893633,13959169,14221313,14614529,14745604,14811140,15073284,15138817,15204353,15400963,15597571,15859715,15990785,17039361,17170433,17235972,17301507,17367041,17498113,17563649,17694721,17825796,17891329,17956865,18087941,18284549,18415617,18481153,18546692,18612225,18808833,18939905,19005441,19202051,19267585,19398657,19529729,19660801,19726337,19791873,19922945,19988485,20054017,20119556,20250625,20316164,20381697,20578308,20709377,20774916,20840449,20971521,21037057,21102594,21233665,21299201,21430273,21495812,21561345,21626881,21692417,21757953,21823489,21889025,21954561,22085633,22151169,22216709,22347777,22413313,22478853,22544385,22609922,22675457,22740993,22806529,22937605,22872065,23003137,23134209,23199745,23330817,23396353,23527428,23592965,23658497,23724033,23789569,23855105,23920641,24051713,24117249,24182789,24313857,24379393,24444929,24510465,24576001,24641537,24707073,24903681,25100292,25165825,25231361,25362433,25427969,25690113,25296897,25755649,25821185,25886721,25952257,26017793,26083329,26476545,26542081,26607617,26738689,26804225,26935297,27066369,27197441,27262977,27394049,27787265,27983873,28049409,28114945,28311553,28639233,28966913,29360129,30474241,30539777,30932993,31457281,31522817,31981569,32505857,32636929,32899073,33161217,33226753,33423361,33554433,33619969,33685505,33882113,34013185,34144257,34406401,34471937,34603009,34668545,34734081,34799617,34996225,35061761,35127297,35192833,35258369,35323905,35389441,35454977,35520513,35782657,35913729,35979265,36044801,36110337,36175873,36241409,36438017,36372481,36503553,36634625,36700161,36765697,36896769,36962305,37027841,37093377,37158913,37289985,37355521,37486593,37552129,37617665,37748737,37814273,37879809,37945345,38010881,38076417,38141953,38207489,38273025,38338561,38404097,38469633,38535169,38600705,38666241,38731777,38862849,38928385,38993921,39059457,39124993,39190529,39256065,39321601,39387137,39452673,39518209,39649281,39714817,39780353,39845889,39911425,39976961,40042497,40108033,40173569,40239105,40304641,40370177,40501249,40435713,40632321,40697857,40763393,40828929,40894465,40960001,41025537,41091073,41287681,41353217,41418753,41484289,41549825,41615361,41680897,41811969,41877505,41943041,42074113,42139649,42205185,42270723,42336257,42401793,42467329,42532865,42598401,42729473,42926081,42991617,43057153,43122689,43188225,43253761,43319297,43384833,43450369,43515905,43581441,43646977,43712513,43778049,43843585,43974657,44040193,44171265,44236801,44302337,44433409,44498945,44564481,44761089,44892161,44957697,45023233,45088769,45154305,45219843,45285377,45350924,45481985,45547521,45613057,45678593,45744129,45809665,45875201,46006273,46071809,46333953,46399489,46465025,46530561,46596097,46727169,46792705,46858241,46923777,46989313,47054849,47120385,47185921,47251457,47316993,47448065,47513601,47579137,47710220,47775745,47841281,47972353,48037889,48103425,48168973,48234497,48300033,48365569,48431105,48496641,48562177,48889857,48955393,49086465,49217537,49283073,49414145,49479681,49545217,49610753,49741825,49807361,49872897,50003969,50069505,50135041,50200577,50331649,50397185,50462721,50528257,50593795,50659329,50724865,50790401,50921473,50987009,51118081,51183629,51314689,51380225,51511297,51576833,51642369,51707905,51773441,51838977,51904513,51970049,52101121,52166657,52232193,52297729,52363265,52428801,52494337,52559873,52625409,52690945,52756481,52822017,52887553,52953091,53084161,53149699,53346305,53477377,53542914,53673985,53739521,53805057,53870593,53936129,54001665,54132739,54198273,54263809,54329345,54394881,54460417,54591490,54657025,54722561,54788097,54853633,54919169,54984705,55181313,55246849,55312385,55377921,55443457,55508993,55640065,55705601,55771137,55836673,55967745,56098817,56164353,56295425,56426497,56492034,56623105,56754177,56819713,57016321,57081857,57147393,57212929,57344001,57409537,57475073,57540609,57671682,57737217,57802753,57933825,58130433,58261505,58392577,58458113,58654721,58720257,58851329,58916865,59047937,59179009,59310081,59375617,59768833,59834369,59965441,60096513,60162049,60293121,60358657,60424193,60489729,60555265,60620801,60686337,60817409,60948481,61014017,61210625,61276161,61341697,61669377,61800449,61931521,61997057,62193665,62324737,62390273,62521345,62586881,62652417,62717953,62849025,62914561,62980097,63045633,63242241,63373313,63504385,63569921,63635457,63700993,63963137,64028673,64094209,64159745,64225281,64487425,64618497,64684033,64749569,64815105,64946177,65077249,65142785,65273857,65470465,65536001,65601537,65732609,65798145,65863682,65994753,66125825,66191361,66256897,66322433,66453505,66584577,66650113,66715649,66781186,66912257,66977793,67239937,67371009,67436545,67502082,67567617,67633153,67698689,67829761,67895297,67960833,68091905,68157442,68288513,68354049,68419585,68550657,68616193,68747265,68878337,68943877,69009409,69074945,69140481,69206018,69271553,69402625,69468161,69533697,69664769,69730305,69795841,69861377,69926913,69992453,70057985,70123521,70189057,70254593,70320129,70451201,70516737,70713345,70778881,70844417,70909957,70975489,71041025,71106561,71172101,71237633,71303169,71368709,71434241,71499777,71565313,71630849,71696385,71761925,71827457,71892993,71958533,72024065,72089601,72155137,72220673,72286209,72351745,72417285,72482817,72548358,72613893,72744961,72810497,72876033,72941569,73007105,73072641,73138177,73269249,73203713,73334785,73400321,73531397,73596929,73662465,73793537,73859073,73924609,73990157,74055681,74121221,74186753,74252289,74317825,74383361,74448897,74514437,74579969,74645505,74711045,74842125,74907649,74973185,75038729,75104285,75169797,75235329,75300865,75366405,75431942,75497473,75563009,75628549,75694081,75759629,75825153,75956229,76021761,76087326,76152837,76218369,76283905,76349441,76414977,76480517,76546053,76611585,76677125,76742661,76808193,76873729,76939266,77004801,77070337,77135873,77201413,77266950,77332485,77398021,77463553,77529089,77594629,77660161,77791233,77856797,77922305,77987845,78118913,78184450,78249991,78315521,78381058,78446593,78512153,78577670,78708743,78774277,78839809,78905345,78970886,79101953,79167497,79233025,79364097,79429633,79495169,79560705,79626245,79691781,79757313,79888390,79953949,80019461,80085006,80150529,80216077,80281630,80347141,80412673,80478213,80543758,80674821,80740353,80805895,80871431,80936961,81002526,81068062,81133569,81199105,81264669,81330183],"caches":[7405569,9043969,10682369,54198274],"create":[1245185,1507329,7995393,8388609,8585219,8847361,8978433,9109505,9175041,10158081,10354690,10747906,10551297,10878977,10944514,11075587,11468801,11730945,11927553,12124161,12320769,12386305,12517377,12845057,12910593,13172737,13238273,13500417,13631489,13893633,13959170,14221313,15204353,15990785,17301505,18087937,18284545,18219009,18546689,21495809,24772610,25493506,26542081,37093377,39256065,40828929,42205185,43778049,45481985,54591493,58720257,72548353,77594625,78970881],"common":[45547521,48103426,68616193,74645505,77135873,78905345],"configurator":[31457286,32505862,33619974,34406405,34471942,34668550,34734086,34799622,35061766,35782662,37158918,38141958,38469638,38600710,39976965,43384838,43450374,45285381,75890689],"close":[70975489],"caller":[79757313],"compile":[7077900,11010060,36044801,36175873,36241416,36372488,37552129,37748737,37945345,38076424,38207489,38273032,39387144,39518216,40042504,40108039,40173575,40239105,40435713,40894465,41025537,41287687,41418759,42074113,42401800,42598401,43057153,43122695,43515912,43581441,44040199,44302343,44433409,45023233,45744129,45875208,46858248,47513601,48037889,48365575,49217543,49741825,49807361,50003981,50659335,50987016,51642369,51970049,52625409,54460423,54853645,54984705,57016327,57212929,75366412,76087308],"completion":[9043969,10682369],"compilation":[36175873,36241411,36372483,37552129,37945347,38207489,38273027,39387139,39518211,40108033,40239107,40435713,43122689,43515907,43581443,44040193,44433411,48037889,48365569,49217537,49545218,49741827,49807361,52625411,54460417,72744962,79560707,79757315],"commonjs":[61734913,61931521,65470466,68616197,71958530],"continuation":[58982401,65601537,72679425],"callback":[1835009,3735554,5373954,5767176,7077892,7405569,8585218,8650755,8716290,9043969,9306114,9502722,9830402,10682369,10944513,11010054,11075585,11206658,11403266,14155779,14483459,21037059,21626883,31457283,32505859,32899073,33423362,33554433,33619971,33882113,34013185,34406401,34471939,34668547,34734083,34799619,35061763,35127297,35323905,35782659,35913730,36110337,36438017,36503554,36765697,36962305,37158915,37355521,37617666,37814274,38141955,38469635,38600707,38666242,38928385,39321602,39845889,39911426,39976961,40370177,40894467,41615361,42074115,43384834,43450371,43581443,43712513,44433411,44695553,44957697,45285377,45678593,45744131,46792705,47513603,47775746,47841281,48037891,49610755,49807363,49872897,50069508,50200577,51118081,51314689,51642372,52494340,52756481,53739522,55115777,56754178,57212932,57737217,58130433,58654722,58982404,60293121,61341697,61407233,61538305,61734915,61931523,62193665,63045633,64225281,64684033,65273857,65601540,69337090,69533697,72417282,72679425,74514434,75104259,75366404,75431944,76087303,76742657,77725697,77856771,78512131,78839809,79298562,79626244,79888386,79953923,80281603,80478212,81002499,81068035,81264643],"contain":[7995393,9109505,12976129,13369345,13762561,15138817,20447233,25821185,61603841,70975489],"cleared":[589825,720897,1114113,1376257,71368705,74121217,75628545],"cancels":[11010049,38404097,76087297],"casts":[3538947,4521987,8912897,10223618,11272193,75956227,77987843],"custom":[851970,3342337,5963777,6357000,8126465,45547521,53936130,54657025,57737217,58130433,60293121,60882947,61407233,62193665,63045633,64684033,65273857,65536003,67960834,69533697,69992449,70254595,74711044,75104257,76087297,77856769,78512129,79888385,79953921,80084993,80281601,80543745,81002497,81068033,81264641],"compliance":[80412673],"character":[54001665,58261505,60096514,70057985,76480513,80674817],"components":[10747907],"control":[71827457,73400321,76611588],"connect":[1703937,2686977,7798789,9764869,72613889,73531393],"collect":[15532033,24444929,35389441,35520513,37289985,38338561,39124993,39190529,40501249,42467329,44171265],"comtype":[4521985,8847365,13434881,13697025,13828097,14811137,15073281,15597569,17235969,19202049,19988481,20316161,20578305,22216705,22478849,23527425,23592961,25100289,47710209,51183617,75956225],"collection":[589825,720897,851969,1114113,1376258,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883594,2949121,3014657,3080193,3145729,3211265,3342337,3407873,3538945,3604481,3735553,3866625,3932161,4063234,4128769,4194305,4259842,4325377,4521986,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373954,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077890,7340033,7864321,7929867,7995404,8716290,9109506,9306114,9502722,9830402,9895937,11010050,11206658,11403266,11534338,11599874,11796482,12058626,12255234,12451842,12713986,12976131,13107202,13369347,13565954,13762563,15138819,15532034,21757954,23068674,24444930,24838146,26148866,28180481,28377090,32243713,39190530,40501250,43974662,44171266,45547522,46596097,50462725,51838980,53084162,53805057,54394882,55705603,56819714,60358657,62586881,62980097,63242241,65732609,66256897,68943873,69271553,70320130,70909953,71172097,71368708,71761921,72417281,72548354,72613889,72744961,73531393,73990145,74121237,74514433,74711041,74842113,75038721,75104258,75169793,75366402,75431937,75628548,75759617,75956226,76087298,76152833,76349441,76414979,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77725697,77856770,77987841,78249985,78512129,78577665,78708737,78839809,78970882,79167489,79364097,79626241,79691777,79888385,79953922,80019458,80084993,80150529,80216065,80281602,80347139,80478209,80543745,80674817,80740353,80805889,80871425,80936962,81002498,81068034,81264642,81330177],"constant":[25559041,77660161],"comobject":[13172737,13238273,13500417,14745601,15400961,15859713,17301505,17825793,18087937,18284545,18546689,20119553,20774913,21495809,22937601,24182785,45350913,48168961],"correct":[16711681,23199745,56360961,58523649,62849025,64159745,75104257,79757313,79953921,81264641],"converting":[16580609,23003137,43843585,44564481,45613057,49283073,51380225],"collectcpuprofilesample":[7077889,11010049,38338564,39124996,75366401,76087297],"curiously":[77266945,78577665],"cacheaccepted":[36241414,36372486,37945350,38273030,39387142,39518214,40239110,43515910,43581446,44433414,49741830,52625414],"cleaning":[15990785],"corresponding":[7995393,8454145,8585218,8978433,9109505,10354689,14286849,14352385,14417921,15335425,15466497,15794177,15925249,17760257,20381697,20512769,21692417,22544385,24117249,24903681,26017793,26476545,27066369,27983873,72155137,74121217],"cachekind":[36044805,36175877,36241413,36372485,37552133,37748741,37945349,38076421,38207493,38273029,39387141,39518213,40042501,40108037,40239109,40435717,42401797,43122693,43515909,43581445,44040197,44433413,45744133,45875205,46858245,47513605,48037893,48365573,49217541,49741829,49807365,50987013,51970053,52625413,54460421,54984709],"conjunction":[70975489],"called":[13303809,17104897,21430273,25886721,36700161,37879809,38404097,41353217,45547523,46989313,50135041,52756482,61341697,64225281,69337089,76808193,79298561,79888386],"clearscript":[4,393220,131073,458753,524292,589825,262145,655364,65537,720897,327684,786436,851969,917508,983044,1048577,1114116,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2359300,2228225,2818049,2490369,2293761,2752513,2424833,2686977,2555905,2883585,2621441,2949121,3014657,3080193,3145729,3211265,3276801,3407873,3342337,3473409,3538945,3604481,3670017,3735553,3801089,3866625,3932161,3997697,4063233,4128769,4194305,4259841,4325377,4390913,4456449,4521985,4653057,4587521,4718593,4784129,4849665,4915201,4980737,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5505028,5570561,5636097,5701633,5832708,5963777,5898241,5767169,6029316,6094849,6160385,6225924,6291460,6356997,6422532,6488068,6553601,6619140,6684676,6750212,6815748,6881284,6946817,7012356,7077889,7143428,7208964,7274500,7340033,7405572,7471108,7536644,7602180,7667716,7733252,7798788,7864321,7929860,7995396,8060932,8126468,8192004,8257540,8323076,8388612,8454148,8519684,8585220,8650756,8781828,8716289,8847364,8912900,8978436,9043972,9109508,9175044,9240577,9306113,9371652,9437188,9502721,9568260,9633796,9699332,9764868,9830401,9895937,9961476,10027012,10092548,10158084,10223620,10289156,10354692,10420228,10485764,10551300,10616836,10682372,10747908,10813444,10878980,10944516,11010049,11075588,11141124,11272196,11206657,11337732,11403265,11468804,11534340,11599876,11665412,11730948,11796484,11862020,11927556,11993092,12058628,12124164,12189700,12255236,12320769,12386308,12451844,12517380,12582916,12648452,12713988,12779524,12845060,12910596,12976132,13041668,13107204,13172740,13238276,13303812,13369348,13434884,13500420,13565956,13631492,13697028,13762564,13828100,13893636,13959172,14024708,14090244,14155780,14221316,14286852,14352388,14417924,14483460,14548996,14614532,14680068,14745604,14811140,14876676,14942212,15007748,15073284,15138820,15204356,15269892,15335428,15400964,15466500,15532036,15597572,15663108,15728644,15794180,15859716,15925252,15990788,16056324,16121860,16187396,16252932,16318468,16384004,16449540,16515076,16580612,16646148,16711685,16777220,16842756,16908292,16973828,17039364,17104900,17170436,17235972,17301508,17367044,17432580,17498116,17563652,17629188,17694724,17760260,17825796,17891332,17956868,18022404,18087940,18153476,18219014,18284548,18350084,18415620,18481156,18546692,18612228,18677764,18743300,18808836,18874372,18939908,19005444,19070980,19136516,19202052,19267588,19333124,19398660,19464196,19529732,19595268,19660804,19726340,19791876,19857412,19922948,19988484,20054020,20119556,20185092,20250628,20316164,20381700,20447236,20512772,20578308,20643844,20709380,20774916,20840452,20905988,20971524,21037060,21102596,21168132,21233668,21299204,21364740,21430276,21495812,21561348,21626884,21692420,21757956,21823492,21889028,21954564,22020100,22085636,22151172,22216708,22282244,22347780,22413316,22478852,22544388,22609924,22675460,22740996,22806532,22872068,22937604,23003140,23068676,23134212,23199749,23265284,23330820,23396356,23461892,23527428,23592964,23658500,23724036,23789572,23855108,23920644,23986180,24051716,24117252,24182788,24248324,24313860,24379396,24444932,24510468,24576004,24641540,24707076,24772612,24838148,24903684,24969220,25034756,25100292,25165828,25231364,25296900,25362436,25427972,25493508,25559044,25624580,25690116,25755652,25821188,25886724,25952260,26017796,26083332,26148868,26214404,26279940,26345476,26411012,26476548,26542086,26607620,26673156,26738692,26804228,26869764,26935300,27000836,27066372,27131908,27197444,27262980,27328516,27394052,27459588,27525124,27590660,27656196,27721732,27787268,27852804,27918340,27983876,28049412,28114948,28246020,28180484,28311556,28377092,28442628,28508164,28573700,28639236,28704772,28770308,28835844,28901380,28966916,29032452,29097988,29163524,29229060,29294596,29360132,29425668,29491204,29556740,29622276,29687812,29753348,29818884,29884420,29949956,30015492,30081028,30146564,30212100,30277636,30343172,30408708,30474244,30539780,30605316,30670852,30736388,30801924,30867460,30932996,30998532,31064068,31129604,31195140,31260676,31326212,31391748,31457284,31522820,31588356,31653892,31719428,31784964,31850500,31916036,31981572,32047108,32112644,32178180,32243716,32309252,32374788,32440324,32505860,32571396,32636932,32702468,32768004,32833540,32899076,32964612,33030148,33095684,33161220,33226756,33292292,33357828,33423364,33488900,33554436,33619972,33685508,33751044,33816580,33882116,33947652,34013188,34078724,34144260,34209796,34275332,34340868,34406404,34471940,34537476,34603012,34668548,34734084,34799620,34865156,34930692,34996228,35061764,35127300,35192836,35258372,35323908,35389444,35454980,35520516,35586052,35651588,35717124,35782660,35848196,35913732,35979268,36044804,36110340,36175876,36241412,36306948,36372484,36438020,36503556,36569092,36634628,36700164,36765700,36831236,36896772,36962308,37027844,37093380,37158916,37224452,37289988,37355524,37421060,37486596,37552132,37617668,37683204,37748740,37814276,37879812,37945348,38010884,38076420,38141956,38207492,38273028,38338564,38404100,38469636,38535172,38600708,38666244,38731780,38797316,38862852,38928388,38993924,39059460,39124996,39190532,39256068,39321604,39387140,39452676,39518212,39583748,39649284,39714820,39780356,39845892,39911428,39976964,40042500,40108036,40173572,40239108,40304644,40370180,40435716,40501252,40566788,40632324,40697860,40763396,40828932,40894468,40960004,41025540,41091076,41156612,41222148,41287684,41353220,41418756,41484292,41549828,41615364,41680900,41746436,41811972,41877508,41943044,42008580,42074116,42139652,42205188,42270724,42336260,42401796,42467332,42532868,42598404,42663940,42729476,42795012,42860548,42926084,42991620,43057156,43122692,43188228,43253764,43319300,43384836,43450372,43515908,43581444,43646977,43712516,43778052,43843588,43909121,43974657,44040196,44105729,44171268,44236804,44302340,44367876,44433412,44498948,44564484,44630020,44695553,44761092,44826625,44892164,44957700,45023236,45088772,45154305,45219844,45285380,45350913,45416452,45481988,45547521,45613060,45678593,45744132,45809668,45875204,45940737,46006273,46071809,46137348,46202881,46268417,46333956,46399489,46465028,46530564,46596097,46661633,46727169,46792708,46858244,46923777,46989316,47054852,47120388,47185924,47251460,47316996,47382529,47448065,47513604,47579137,47644676,47710209,47775745,47841281,47906817,47972353,48037892,48103425,48168961,48234500,48300033,48365572,48431105,48496641,48562177,48627713,48693249,48758785,48824321,48889860,48955396,49020929,49086468,49152001,49217540,49283076,49348609,49414148,49479681,49545217,49610753,49676289,49741828,49807364,49872900,49938433,50003969,50069505,50135044,50200577,50266113,50331652,50397185,50462721,50528260,50593796,50659332,50724868,50790404,50855937,50921476,50987012,51052545,51118084,51183617,51249153,51314689,51380228,51445761,51511300,51576833,51642369,51707905,51773441,51838977,51904513,51970052,52035585,52101124,52166657,52232193,52297732,52363265,52428804,52494337,52559876,52625412,52690945,52756481,52822017,52887553,52953092,53018625,53084161,53149700,53215233,53280769,53346305,53411841,53477377,53542913,53608449,53673985,53739521,53805057,53870593,53936129,54001665,54067201,54132740,54198276,54263809,54329345,54394881,54460420,54525953,54591492,54657026,54722561,54788097,54853633,54919172,54984708,55050241,55115777,55181313,55246849,55312385,55377921,55443457,55508996,55574529,55640065,55705601,55771140,55836673,55902209,55967745,56033284,56098817,56164353,56229892,56295425,56360966,56426497,56492033,56557569,56623105,56688644,56754177,56819713,56885249,56950788,57016324,57081857,57147396,57212929,57278468,57344004,57409537,57475076,57540609,57606145,57671681,57737217,57802753,57868292,57933825,57999364,58064897,58130433,58195972,58261505,58327044,58392580,58458116,58523652,58589185,58654721,58785796,58720257,58851329,58916868,58982404,59047937,59113473,59179012,59244545,59310084,59375617,59441156,59506692,59572228,59637764,59703300,59768836,59834369,59899908,59965444,60030980,60096516,60162052,60227585,60293121,60358657,60489732,60424193,60555268,60620804,60686340,60751873,60817414,60882948,60948484,61014017,61079556,61145092,61210625,61276161,61341700,61407233,61472772,61538305,61603841,61669380,61734916,61800449,61865988,61931524,61997057,62062596,62128132,62193665,62259204,62324740,62390276,62455809,62521348,62586884,62652417,62717956,62783489,62849030,62914564,62980097,63045633,63111172,63176708,63242244,63307780,63373316,63438852,63504388,63569924,63635460,63700996,63766532,63832068,63897601,63963140,64028676,64094213,64159748,64225284,64290820,64356353,64421892,64487428,64552964,64618497,64684033,64749572,64815108,64880644,64946180,65011716,65077252,65142788,65208324,65273857,65339396,65404932,65470465,65536005,65601540,65732612,65667076,65798148,65863681,65929220,65994756,66060292,66125828,66191364,66256900,66322436,66387974,66453508,66519044,66584581,66650116,66715652,66781185,66846724,66912260,66977796,67043332,67108868,67174404,67239940,67305476,67371012,67436548,67502084,67567620,67633153,67698692,67764228,67829765,67895301,67960836,68026372,68091908,68157441,68222980,68288516,68354052,68419588,68485124,68550660,68616196,68681732,68747268,68812804,68878340,68943878,69009412,69074948,69140484,69206020,69271556,69337092,69402629,69468164,69533697,69599236,69664772,69730308,69795844,69861380,69926916,69992454,70057988,70123524,70189060,70254596,70320132,70385668,70451204,70516740,70582273,70647812,70713348,70778884,70844420,70909958,70975492,71041028,71106564,71172101,71237636,71303172,71368710,71434244,71499780,71565316,71630852,71696388,71761925,71827460,71892996,71958533,72024068,72089604,72155140,72220676,72286212,72351748,72417287,72482820,72548357,72613894,72679428,72744964,72810500,72876036,72941572,73007108,73072644,73138180,73203716,73269252,73334788,73400324,73465860,73531398,73596932,73662468,73728004,73793540,73859076,73924612,73990150,74055684,74121222,74186756,74252292,74317828,74383364,74448900,74514439,74579972,74645508,74711045,74776590,74842118,74907652,74973188,75038726,75104264,75169798,75235332,75300868,75366405,75431941,75497476,75563012,75628551,75694084,75759622,75825156,75890692,75956230,76021764,76087302,76152837,76218372,76283908,76349445,76414980,76480518,76546053,76611588,76677125,76742663,76808196,76873732,76939269,77004804,77070340,77135876,77201413,77266950,77332485,77398021,77463556,77529093,77594629,77660164,77725700,77791236,77856775,77922308,77987846,78053380,78118916,78184452,78249989,78315524,78381060,78446596,78512132,78577670,78643204,78708742,78774277,78839813,78905348,78970885,79036420,79101956,79167494,79233028,79298564,79364101,79429636,79495172,79560708,79626247,79691782,79757316,79822852,79888389,79953929,80019461,80084997,80150532,80216071,80281607,80347141,80412677,80478215,80543749,80609284,80674822,80740357,80805893,80871430,80936964,81002503,81068041,81133572,81199108,81264648,81330181],"createasyncenumerator":[4456449,4784129,4980737,24772612,73269249,74973185,75694081],"clearnocheck":[1966081,2883585,3080193,6422529,19660801,21889028,71368705,74121217,75628545],"concurrentpropertybag":[720898,1966082,6422535,7143431,9437190,12189702,45547521,53084162,56295433,71368718,75628545],"calls":[10878977],"compare":[75038721],"compatibility":[9961474,64094209,66584577,67829761,67895297,69402625],"compiled":[4587521,7077900,11010062,36044802,36175874,36241411,36372484,37552130,37748738,37945347,38076418,38207490,38273027,39387140,39518211,40042498,40108034,40173570,40239107,40435714,40894466,41025538,41287683,41418754,42074114,42401795,42598402,43122690,43057154,43515907,43581443,44040195,44302339,44433411,45023234,45088770,45744130,45875203,46858242,47120386,47513602,48037890,48365570,49217539,49545217,49741827,49807362,50003980,50659330,50987010,51511301,51970050,52625411,52822017,53870593,54198273,54460418,54853644,54984706,56426498,57016322,71172100,75366412,75825153,76087310,76218369,79757313],"closest":[62128129,71237633],"connects":[655361,1310721,1703937,2686977,7798785,9764865,72613889,73531393,75366401],"canceled":[62980097,72548353],"classes":[3342345,5963785,18219009,26542081,34406401,45285377,45547521,48103425,49545217,51707905,52232193,53673985,73990145,75759617,77266946,78577666,80085001,80543753],"consolet":[9175042,10944514,15990788,19005442],"column":[56819713,64487427,80347137],"cstr":[43843585,44564481],"command":[3735553,5373953,8716289,9306113,9502721,9830401,11010049,11206657,11403265,16580620,23003149,43843599,44564495,45613069,49283085,51380237,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"continuationcallback":[45547521,57737217,58130433,58982411,60293121,61407233,62193665,63045633,64684033,65273857,65601550,69533697,72679429,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"completes":[7077889,11010049,35979265,42729473,75366401,76087297],"completed":[7405569,9043969,10682369,15990785,35979265,42729473],"cancelinterrupt":[11010049,37879809,38404100,76087297],"contact":[458753],"compiles":[7077900,11010060,36044801,36175873,37552129,37748737,37945345,38207489,40239105,40435713,40894465,41025537,42074113,42598401,43057153,43581441,44433409,45023233,45744129,47513601,48037889,49741825,49807361,51642380,51970049,52625409,54984705,57212940,75366412,76087308],"concurrent":[720897,1966081,6422529,7143425,9437185,12189697,53084161,56295425,71368705],"checking":[1966083,2883587,3080195,20840449,21889025,22347777,71368707,74121219,75628547],"calling":[2490371,3342337,3670020,5963777,5898242,6422529,6553602,8060929,8192001,8323073,8716290,9306114,9502722,9830402,11206658,11403266,18415617,19398657,19660801,21233665,26935297,41156610,42926082,43319297,46333954,47644673,50397185,50790401,51511297,52166658,54263812,75104258,76087297,76677123,78774276,79101954,79953922,80084993,80281602,80543745,80805890,81002498,81068034,81264642],"checkaccess":[5898241,6553601,8716289,9306113,9502721,9830401,11206657,11403265,41156612,42926084,46333958,75104257,79101953,79953921,80281601,80805889,81002497,81068033,81264641],"copies":[2818052,3211265,3276804,3473412,3997700,4390920,16449537,16646145,16777217,16842753,16908289,18153473,18677761,18743297,20185089,21168129,22282241,23986177,44826626,47906818,49020930,50266114,51249154,53215234,73138180,74645508,75497476,76414977,77135876,78184456],"catch":[15990786,73924609,74448897],"caused":[20709377,27262977,58458113,59965441,60358659,60555265,60948481,62455811,62980099,63176705,68812801,70647809,72548355,78905347,78970883],"connected":[655361,78118913],"cancellationtoken":[62980097,72548353],"collectgarbage":[3735553,5373953,7077889,8716290,9306113,9502721,9830401,11010050,11206657,11403265,15532036,24444933,39190532,40501255,44171270,75104257,75366401,76087298,77856769,78512129,79953921,80281601,81002497,81068034,81264641],"consoles":[16580609,23003137,43843585,44564481,45613057,49283073,51380225],"code":[1638401,1769473,2031617,2424833,2490374,2949121,3145729,3342337,3538945,3670024,3735590,4521985,4653057,4718593,4915201,5046273,5373990,5963777,7340033,7995393,8060930,8192003,8323075,8388609,8585217,8716326,8781826,8847361,8912897,8978433,9109505,9175041,9306150,9502758,9830438,9895937,9961473,10092547,10158081,10223617,10354689,10420227,10747905,10551297,10878977,10944513,11010086,11075585,11206694,11403302,11730945,11862017,11927553,12124161,12386305,12517377,12582913,12845057,12910593,13172737,13238273,13303810,13434881,13500417,13631489,13697025,13828097,13893633,13959169,14024705,14155778,14221313,14286850,14352386,14417922,14483457,14548993,14745601,14811137,14942216,15073281,15204353,15269898,15335426,15400961,15466498,15597569,15663105,15728650,15794178,15859713,15925250,15990787,16187401,16384010,16515073,16580609,16711684,17039361,17170433,17235969,17301505,17760258,17825793,17891330,17956865,18022409,18087937,18219022,18284545,18415617,18546689,19005441,19202049,19398657,19464203,19857410,19988481,20119553,20250626,20316161,20381698,20512770,20578305,20774913,20840449,21037058,21102594,21233665,21364738,21495809,21561353,21626881,21692418,21757953,21889025,22151169,22216705,22347777,22478849,22544386,22609922,22872075,22937601,23003137,23199748,23396353,23527425,23592961,23658497,23855114,24117250,24182785,24313866,24379393,24641537,24903682,25100289,25165825,25231361,25427970,26017794,26476546,26542095,26607617,26738690,26804235,26935297,27066370,27983874,28311553,28639244,29360139,36175873,36241415,36372487,37552129,37945345,38076422,38207489,38273031,39387143,39518215,40042502,40108039,40173574,40239105,40435713,41287686,41418758,42401798,43122695,43515911,43581441,43843585,43909124,44040199,44302342,44433409,44564481,45088769,45350920,45547529,45613057,45875206,46858246,47710216,48037889,48168968,48365575,48496644,48955393,49152002,49217543,49283073,49741825,49807361,50397186,50659334,50855944,50987014,51183624,51380225,51707906,51773442,52035586,52166660,52428801,52625409,52822020,53018628,53870596,54263816,54460423,54722568,55377922,56033283,56229891,56360961,57016326,57278467,57409540,57737221,57868289,58130436,58327041,58523649,59703297,59834369,60293124,60358657,61014017,61407236,62062593,62128129,62193669,62324737,62455810,62717955,62849025,62980097,63045637,63963139,64094213,64159745,64684037,65077249,65273861,65863681,66453507,67043329,67567617,67698691,69009409,69140481,69533701,70582273,71106561,71237633,72548353,73465857,73793537,73924609,73990146,74121217,74448897,74842114,75038722,75104300,75366401,75759618,75956226,76021763,76087339,76152833,76349442,76414977,76611585,76677126,76808194,76939268,77529090,77856810,77987842,78446593,78512170,78708737,78774280,78839809,78905346,78970881,79167491,79364097,79429633,79560708,79953964,80084993,80216066,80281643,80412675,80543745,80740353,81002539,81068075,81133569,81264684],"core":[2,524290,262145,786436,917506,1114114,2359298,5505026,5832706,5898241,6029314,6225922,6291458,6356994,6422530,6488066,6553601,6619138,6684674,6750210,6815746,6881282,7012354,7143426,7208962,7274498,7405570,7471106,7536642,7602178,7667714,7733250,7798786,7929858,7995396,8060930,8126466,8192002,8257538,8323074,8388610,8454146,8519682,8585219,8650754,8781826,8716289,8847362,8912898,8978435,9043970,9109508,9175042,9371650,9437186,9568258,9633794,9699330,9764866,9830401,9961474,10027010,10092546,10158082,10223618,10289154,10354690,10420226,10485762,10551298,10616834,10682370,10747906,10813442,10878978,10944514,11075587,11141122,11272194,11337730,11403265,11468802,11534338,11599874,11665410,11730946,11796482,11862018,11927554,11993090,12058626,12124162,12189698,12255234,12386306,12451842,12517378,12582914,12648450,12713986,12779522,12845058,12910594,12976130,13041666,13107202,13172738,13238274,13303810,13369346,13434882,13500418,13565954,13631490,13697026,13762562,13828098,13893634,13959170,14024706,14090242,14155778,14221314,14286850,14352386,14417922,14483458,14548994,14614530,14680066,14745602,14811138,14876674,14942210,15007746,15073282,15138818,15204354,15269890,15335426,15400962,15466498,15532034,15597570,15663106,15728642,15794178,15859714,15925250,15990786,16056322,16121858,16187394,16252930,16318466,16384002,16449538,16515074,16580610,16646146,16711682,16777218,16842754,16908290,16973826,17039362,17104898,17170434,17235970,17301506,17367042,17432578,17498114,17563650,17629186,17694722,17760258,17825794,17891330,17956866,18022402,18087938,18153474,18219010,18284546,18350082,18415618,18481154,18546690,18612226,18677762,18743298,18808834,18874370,18939906,19005442,19070978,19136514,19202050,19267586,19333122,19398658,19464194,19529730,19595266,19660802,19726338,19791874,19857410,19922946,19988482,20054018,20119554,20185090,20250626,20316162,20381698,20447234,20512770,20578306,20643842,20709378,20774914,20840450,20905986,20971522,21037058,21102594,21168130,21233666,21299202,21364738,21430274,21495810,21561346,21626882,21692418,21757954,21823490,21889026,21954562,22020098,22085634,22151170,22216706,22282242,22347778,22413314,22478850,22544386,22609922,22675458,22740994,22806530,22872066,22937602,23003138,23134210,23199746,23330818,23396354,23527426,23592962,23658498,23724034,23789570,23855106,23920642,23986178,24051714,24117250,24182786,24313858,24379394,24444930,24510466,24576002,24641538,24707074,24903682,25100290,25165826,25231362,25296898,25362434,25427970,25690114,25755650,25821186,25886722,25952258,26017794,26083330,26476546,26542082,26607618,26738690,26804226,26935298,27066370,27197442,27262978,27394050,27983874,28049410,28114946,28311554,28639234,28966914,29360130,39714820,40632324,40697858,41156612,41484290,41746434,41943044,42139652,42270724,42663938,42860548,42926084,43319300,44171268,44564484,44630020,45219844,46333956,46989316,47251460,47644676,48758785,48889860,48955396,50135044,50331652,50790404,51380228,51576833,52297732,52559876,53149700,53477377,53673987,54198274,54591490,54919172,55443457,55508994,55771138,56033282,56229890,56360962,56623105,56688642,56950786,57147394,57278466,57344002,57475074,57868290,57999362,58195970,58327042,58392578,58458114,58523650,58785794,58916866,58982402,59179010,59310082,59441154,59506690,59572226,59637762,59703298,59768834,59899906,59965442,60096514,60162050,60489730,60555266,60620802,60686338,60817410,60882946,60948482,61079554,61145090,61341698,61669378,61734914,61931522,62062594,62128130,62259202,62324738,62390274,62521346,62717954,62849026,62914562,63045633,63111170,63176706,63242242,63307778,63373314,63504386,63569922,63635458,63700994,63766530,63963138,64159746,64225282,64290818,64421890,64552962,64749570,64815106,64880642,65077250,65208322,65273857,65339394,65404930,65536002,65601538,65732610,65667074,65798146,65929218,65994754,66125826,66387970,66453506,66519042,66650114,66846722,66912258,67043330,67108866,67174402,67239938,67305474,67502082,67567618,67764226,67895298,67960834,68222978,68288514,68419586,68485122,68616194,68812802,68878338,68943874,69009412,69140482,69337090,69468162,69533697,69599234,69664770,69795842,69861378,69926914,69992450,70057986,70123522,70254594,70647810,70713348,70909954,71106562,71237634,71368706,71499778,71630852,71958530,72089602,72286210,72351746,72482818,72548354,72613890,72679426,73072642,73138178,73334786,73465858,73531394,73793538,73990146,74121218,74645506,74711042,74776578,74842114,75038722,75104257,75169794,75497474,75628546,75759618,75956226,76021762,76283906,76414978,76480514,76677122,76808194,76873730,77135874,77332482,77463556,77594626,77725698,77856771,77922308,77987842,78118914,78184450,78249986,78315522,78381060,78446594,78512130,78708738,78774274,78839810,78905346,78970882,79101956,79167490,79233026,79298562,79429634,79495170,79691778,79888386,79953921,80084994,80216066,80281606,80412674,80543746,80674818,80805893,80871426,81002502,81068040,81133570,81199106,81264641,81330178],"consecutive":[59834369,60293121,68354049,72810497,75366401,76087297],"correspond":[62390273,66519041,70713345,74907649],"conversions":[18219009,26542081],"creates":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2818049,2883585,2949121,3014657,3080193,3145729,3276801,3342337,3407873,3473409,3538956,3604481,3735560,3866625,3932161,3997697,4128769,4194305,4325377,4390914,4456450,4521995,4653057,4587521,4718593,4784130,4849665,4915201,4980738,5046273,5111809,5177345,5242881,5308417,5373961,5439489,5636097,5701633,5963777,5767174,6094849,6160385,6553601,6946817,7077907,7340033,7864321,8388610,8585217,8716297,9175042,9306121,9502729,9830409,9895937,10158082,10747905,10878978,10944514,11010069,11075586,11206665,11337729,11403273,11468801,12320769,12582915,13172737,13238273,13500417,13959169,14090241,14745601,15400961,15859713,17301505,17432577,17825793,18087937,18284545,18546689,19595265,20119553,20774913,21495809,22937601,24182785,24772609,25493505,33423362,35913730,36241409,36372481,36503554,37093377,37617666,37814274,38076417,38273025,39256065,39387137,39518209,40042497,40108033,40173569,40828929,41287681,41418753,42205185,42401793,43122689,43515905,43778049,44040193,44302337,45154306,45350920,45481985,45875201,46858241,46923779,47775746,48168968,48365569,49217537,49610755,50003980,50659329,50987009,52887554,54460417,54591489,54853644,57016321,58720262,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73138177,73269250,73531393,73990145,74121217,74514433,74645505,74711041,74842113,74973186,75038721,75104265,75169793,75366419,75431942,75497473,75628545,75694082,75759617,75956235,76087317,76152833,76349441,76480513,76546049,76742657,77135873,77266945,77332481,77398017,77529089,77594625,77856777,77987852,78184450,78249985,78512136,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953929,80019457,80084993,80216065,80281609,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002505,81068041,81264649,81330177],"created":[35389441,35520513,35979265,37093377,37289985,38535169,39256065,40304641,40763393,40828929,41680897,41877505,42205185,42467329,42532865,42729473,42991617,43778049,44498945,44761089,45481985,47054849,49086465,50921473],"callbacks":[31981569,39780353],"callbackt":[8585218],"configuratio":[6619137,6684673,6815745,8650753],"cached":[2162690,2228226,6029314,6291458,7208962,7536643,7602179,8257538,54198273,57344001,69468161,75169794,77660161,79691778],"considered":[76873729],"caching":[49545217,79560707],"copyto":[3211265,76414977],"callable":[8454145,8978433,10158081,10354689,10878977,11337729,11468801,13172737,13238273,13434881,13500417,13697025,13828097,14024705,14286849,14352385,14417921,14745601,14811137,15073281,15335425,15400961,15466497,15597569,15794177,15859713,15925249,16711681,17235969,17301505,17760257,17825793,17891329,18087937,18284545,18546689,19202049,19988481,20119553,20250625,20316161,20381697,20512769,20578305,20774913,21102593,21495809,21692417,22216705,22478849,22544385,22609921,22937601,23199745,23527425,23592961,24117249,24182785,24379393,24903681,25100289,26017793,26476545,27066369,27983873,45547522,75956225,77987841],"convert":[3342337,5963777,8060929,8192001,8323073,8781825,10092545,10420225,10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,14221313,15204353,17039361,17170433,17956865,18415617,19398657,20054017,21233665,25231361,26935297,43843585,44564481,45613057,49283073,51380225,61669377,67764225,80084993,80543745],"containskey":[1966081,2883585,3080193,3211265,18939910,71368705,74121217,75628545,76414977],"customattributeloader":[851970,6356993,8126469,45547521,53936130,54657025,57737217,58130433,60293121,60882955,61407233,62193665,63045633,64684033,65273857,65536011,67960839,69533697,69992449,70254606,74711048,75104257,76087297,77856769,78512129,79953921,80281601,81002497,81068033,81264641],"cnn":[15990785],"consuming":[7077900,11010060,36175873,36241409,36372481,37552129,37945345,38207489,38273025,39387137,39518209,40108033,40239105,40435713,43122689,43515905,43581441,44040193,44433409,48037889,48365569,49217537,49741825,49807361,50003974,51642374,52625409,54460417,54853638,57212934,75366412,76087308],"capabilities":[75431937],"char":[3538945,4521985,4915204,7340038,9895942,12124167,14090241,16449537,16646145,16842753,17432577,18153473,18677761,20185089,21168129,23986177,25624583,26869767,28704775,28835841,29229057,29491207,30081031,30212097,30670849,30867457,32112641,32374785,32964615,34275335,35651591,35848193,36044801,36175873,36241409,36372481,37552129,37748737,37945345,38076417,38207489,38273025,38797313,39387137,39518209,39583751,40042497,40108033,40239105,40435713,41222151,42401793,42795009,43122689,43515905,43581441,44040193,44433409,45744129,45875201,46858241,47513601,48037889,48365569,49217537,49741825,49807361,50987009,51052548,51445764,51970049,52625409,54067204,54460417,54984705,75956225,76349446,77529094,77987841,78184449,79364100],"cleanup":[851969,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2162689,2228225,2293761,2555905,2621441,2686977,2883585,2949121,3014657,3080193,3145729,3342337,3407873,3538945,3604481,3866625,3932161,4128769,4194305,4325377,4521985,4653057,4587521,4718593,4849665,4915201,5046273,5111809,5177345,5242881,5308417,5373953,5439489,5636097,5701633,5963777,5767169,6094849,6160385,6553601,6946817,7077889,7340033,7864321,8716289,9306113,9502721,9830401,9895937,11010049,11206657,11403265,15990785,21757953,68943873,70909953,71172097,71368705,71761921,72417281,72548353,72613889,73531393,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76349441,76480513,76546049,76742657,77266945,77332481,77398017,77529089,77856769,77987841,78249985,78577665,78708737,78839809,78970881,79167489,79364097,79626241,79691777,79888385,79953921,80019457,80084993,80216065,80281601,80347137,80478209,80543745,80674817,80740353,80805889,80871425,81002497,81068033,81264641,81330177],"child":[56819713,62586883,80347137],"contextual":[17563649,23724033],"compiledocument":[7077900,11010060,36044805,36175877,37552133,37748741,37945349,38207493,40239109,40435717,40894469,41025541,42074117,42598405,43057157,43581445,44433413,45023237,45744133,47513605,48037893,49741829,49807365,51642380,51970053,52625413,54984709,57212940,75366412,76087308],"currently":[524289,1441793,2490371,3670020,8060929,8192001,8323073,15269889,16384001,18219009,18415617,19398657,19464193,21233665,22085633,22740993,26542081,26804225,26935297,28639233,29360129,35258369,36372481,36896769,37027841,38731777,39387137,39649281,39714817,41287681,41680897,41943041,42205185,42270721,42401793,42532865,42991617,43778049,44040193,44302337,44498945,44761089,45219841,45481985,45875201,46530561,47316993,48234497,49086465,49217537,50331649,50397185,50528257,50593793,52101121,52166658,52297729,52953089,53149697,54132737,54263812,56229889,61734913,66453505,67698689,76677123,78249985,78446593,78774276],"cast":[3538946,4521986,8912900,10223626,11272193,75956226,77987842],"constructors":[71368705,72417281,72548353,73990145,74121217,74514433,74711041,74842113,75038721,75104257,75169793,75366401,75431937,75628545,75759617,75956225,76087297,76152833,76480513,76742657,77266945,77856769,77987841,78577665,78839809,78970881,79167489,79626241,79691777,79888385,79953921,80216065,80281601,80478209,80543745,80674817,81002497,81068033,81264641],"critical":[6356993],"current":[393217,851972,1638402,1703940,1769475,1835012,1900548,1966084,2031619,2162692,2228228,2293764,2555908,2621444,2686980,2883588,2949123,3014660,3080196,3145731,3342340,3407876,3538948,3604484,3866628,3932164,4063233,4128772,4194308,4259841,4325380,4521988,4653059,4587524,4718594,4849668,4915202,5046275,5111812,5177348,5242884,5308420,5373956,5439492,5636100,5701636,5963780,5767172,6094852,6160388,6553604,6946820,7077892,7340034,7864324,8716294,9175041,9306118,9502726,9830406,9895938,11010052,11206662,11403270,13959169,16711681,20709377,21299202,23068675,23199745,24576002,26083330,26148867,27262977,39256065,40697858,40828929,41484290,42926082,43778049,45481985,50790401,54198273,56033281,57278465,57737218,58130434,58327041,58458113,58523649,59965441,60358662,60555265,60948481,62193666,62455812,62717953,62980102,63045633,63176705,63963137,64159745,64684034,65273857,68419592,68812801,68943876,69533697,70320129,70647809,70909956,70975489,71106561,71172100,71368708,71630849,71761924,72417284,72548362,72613892,73531396,73793537,73990147,74121220,74514436,74579969,74711044,74842115,75038723,75104264,75169796,75235329,75366404,75431940,75563009,75628548,75759619,75956228,76087300,76152836,76349442,76480516,76546052,76742660,76939265,77266948,77332484,77398020,77529090,77856774,77987844,78249988,78577668,78708740,78839810,78905348,78970890,79167491,79364098,79626244,79691780,79888388,79953928,80019460,80084996,80216067,80281607,80347140,80412673,80478212,80543748,80674820,80740354,80805892,80871428,80936961,81002503,81068039,81264648,81330180],"compatible":[3538945,4521985,9961474,75956225,77987841],"causing":[76611585],"causes":[3735553,5373953,8716289,9306113,9502721,9830401,11010049,11206657,11403265,17104897,25886721,37879809,50135041,60358657,62980097,71041025,72220673,72548353,73924609,74448897,75104257,75235329,75563009,76087297,77856769,78512129,78970881,79953921,80281601,81002497,81068033,81264641],"com":[3735568,4521987,5373968,5570561,7929857,8716304,8847363,9175043,9306128,9502736,9830416,10747905,11010064,11206672,11403280,11468801,13172737,13238273,13434881,13500417,13697025,13828097,14745601,14811137,15073281,15400961,15597569,15859713,15990785,17235969,17301505,17825793,18087937,18284545,18546689,19202049,19988481,20119553,20316161,20578305,20774913,21495809,22216705,22478849,22937601,23527425,23592961,24182785,25100289,42663938,45350920,47710216,48168968,51183624,75104272,75956227,76087312,77856784,78446594,78512144,79953936,80281616,81002512,81068048,81199105,81264656],"copied":[16449538,16646146,16777218,16842754,16908290,18153474,18677762,18743298,20185090,21168130,22282242,23986178],"configured":[33882114,34668545,35323905,37158913,38666241,38928385,39911426,41615361,43712514,46792705,49872898,51118081],"cancel":[36700161,38404097],"count":[393218,1572865,5767170,16449541,16646149,16842757,18153477,18677765,20185093,21168133,23986181,32505858,33619970,34013186,34471938,34668546,35782658,36110338,36438018,37355522,38141954,38469634,38928386,40370178,44957698,50069508,52494340,53739522,56754178,56819713,58589185,58654722,60227585,65011717,66715650,72417282,74514434,75431938,76414977,77529089,79626244,80347137,80478212,80740353],"collections":[7995394,9109506,10354690,10551297,11730945,11927553,12124161,12386305,12517377,12845057,12910593,13631489,13893633,13959169,14221313,15204353,16711681,23199745,74121218],"certain":[11468801,14155777,14483457,14548993,14942209,15269889,15728641,16187393,16384001,16515073,18022401,18219009,19464193,19857409,21037057,21364737,21561345,21626881,22872065,23855105,24313857,24641537,25427969,26542081,26607617,26738689,26804225,28639233,29360129],"cache":[2162689,2228225,6291459,7077906,7208963,11010066,13303809,36044804,36175878,36241413,36372485,37552134,37748740,37945349,38076420,38207494,38273029,39387141,39518213,40042500,40108038,40239109,40435718,42401796,43122694,43515909,43581445,44040198,44433413,45744132,45875204,46858244,47513604,48037894,48365574,49217542,49545217,49741829,49807366,50003977,50987012,51642377,51970052,52625413,54198274,54460422,54853641,54984708,55640065,57212937,57344002,59375617,61997057,69468162,75169794,75366418,76087314,77332481,79560710,79691778,79757319],"cachebytes":[36044805,36175877,36241414,36372486,37552133,37748741,37945350,38076421,38207493,38273030,39387142,39518214,40042501,40108037,40239110,40435717,42401797,43122693,43515910,43581446,44040197,44433414,45744133,45875205,46858245,47513605,48037893,48365573,49217541,49741830,49807365,50987013,51970053,52625414,54460421,54984709],"check":[20840449,21889025,22347777,41156609,42926081,46333953,61603841],"childnodes":[56819713,62586884,80347137],"crtp":[77266945,78577665],"contents":[2818053,3276805,3473413,3997701,4390918,4456450,4784130,4980738,6619142,6684678,8650758,14090242,14876674,16318466,16973826,17432578,18874370,19070978,19136514,19595266,20905986,22020098,23330822,24772610,25493506,46202884,49938436,54001667,58261505,58392581,65798150,69337093,73072642,73138181,73269250,74645509,74973186,75497477,75694082,76480513,76939265,77135877,78184454,79233025,80674819],"clr":[7995396,9109506],"controls":[52690945,57278465,57737218,58130434,60293122,61407234,62193666,62324737,63045634,63963137,64684034,65273858,67043329,69074945,69533698,75104258,75431937,76087298,77856770,78512130,79953922,80281602,81002498,81068034,81264642]} \ No newline at end of file diff --git a/docs/Reference/fti/FTI_Files.json b/docs/Reference/fti/FTI_Files.json index 16a284f9..e82a1da9 100644 --- a/docs/Reference/fti/FTI_Files.json +++ b/docs/Reference/fti/FTI_Files.json @@ -1 +1 @@ -["ClearScript Library - Redirect\u0000index.html\u000018","V8Runtime Events\u0000html/Events_T_Microsoft_ClearScript_V8_V8Runtime.htm\u000066","ConcurrentPropertyBag Events\u0000html/Events_T_Microsoft_ClearScript_ConcurrentPropertyBag.htm\u000068","PropertyBag Events\u0000html/Events_T_Microsoft_ClearScript_PropertyBag.htm\u000061","HostTypeCollection Events\u0000html/Events_T_Microsoft_ClearScript_HostTypeCollection.htm\u000068","ScriptEngineException Events\u0000html/Events_T_Microsoft_ClearScript_ScriptEngineException.htm\u000072","Undefined Fields\u0000html/Fields_T_Microsoft_ClearScript_Undefined.htm\u000052","ValueRef\u0026lt;T\u0026gt; Fields\u0000html/Fields_T_Microsoft_ClearScript_ValueRef_1.htm\u000058","HitLine Fields\u0000html/Fields_T_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLine.htm\u000067","PropertyBag.PropertyChanged Event\u0000html/E_Microsoft_ClearScript_PropertyBag_PropertyChanged.htm\u0000154","VoidResult Fields\u0000html/Fields_T_Microsoft_ClearScript_VoidResult.htm\u000053","V8Runtime.DebuggerConnected Event\u0000html/E_Microsoft_ClearScript_V8_V8Runtime_DebuggerConnected.htm\u0000166","Nothing Fields\u0000html/Fields_T_Microsoft_ClearScript_Windows_Nothing.htm\u000053","NullSyncInvoker Fields\u0000html/Fields_T_Microsoft_ClearScript_Windows_Core_NullSyncInvoker.htm\u000056","V8Runtime.DebuggerDisconnected Event\u0000html/E_Microsoft_ClearScript_V8_V8Runtime_DebuggerDisconnected.htm\u0000166","General Error\u0000html/GeneralError.htm\u000032","V8CpuProfile.Node.HitLine.LineNumber Field\u0000html/F_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLine_LineNumber.htm\u000099","Undefined.Value Field\u0000html/F_Microsoft_ClearScript_Undefined_Value.htm\u000098","V8CpuProfile.Node.HitLine.HitCount Field\u0000html/F_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLine_HitCount.htm\u0000126","ValueRef\u0026lt;T\u0026gt;.Value Field\u0000html/F_Microsoft_ClearScript_ValueRef_1_Value.htm\u000096","ClearScript Library - Search\u0000search.html\u000011","VoidResult.Value Field\u0000html/F_Microsoft_ClearScript_VoidResult_Value.htm\u000099","Nothing.Value Field\u0000html/F_Microsoft_ClearScript_Windows_Nothing_Value.htm\u0000102","NullSyncInvoker.Instance Field\u0000html/F_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_Instance.htm\u0000106","CustomAttributeLoader Methods\u0000html/Methods_T_Microsoft_ClearScript_CustomAttributeLoader.htm\u0000168","Document Methods\u0000html/Methods_T_Microsoft_ClearScript_Document.htm\u0000152","DocumentInfo Methods\u0000html/Methods_T_Microsoft_ClearScript_DocumentInfo.htm\u0000154","ConcurrentPropertyBag Methods\u0000html/Methods_T_Microsoft_ClearScript_ConcurrentPropertyBag.htm\u0000278","DefaultDocumentLoader Methods\u0000html/Methods_T_Microsoft_ClearScript_DefaultDocumentLoader.htm\u0000237","EventConnection Methods\u0000html/Methods_T_Microsoft_ClearScript_EventConnection.htm\u0000165","DocumentLoader Methods\u0000html/Methods_T_Microsoft_ClearScript_DocumentLoader.htm\u0000188","DocumentSettings Methods\u0000html/Methods_T_Microsoft_ClearScript_DocumentSettings.htm\u0000226","EventSource Methods\u0000html/Methods_T_Microsoft_ClearScript_EventSource.htm\u0000166","EventConnection\u0026lt;T\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_EventConnection_1.htm\u0000174","EventSource\u0026lt;T\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_EventSource_1.htm\u0000169","Extensions Methods\u0000html/Methods_T_Microsoft_ClearScript_Extensions.htm\u0000221","DocumentCategory Methods\u0000html/Methods_T_Microsoft_ClearScript_DocumentCategory.htm\u0000153","IScriptableObject Methods\u0000html/Methods_T_Microsoft_ClearScript_IScriptableObject.htm\u000058","ImmutableValueAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_ImmutableValueAttribute.htm\u0000215","DefaultScriptUsageAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm\u0000216","IArrayBuffer Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm\u0000315","IDataView Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_IDataView.htm\u0000338","IPropertyBag Methods\u0000html/Methods_T_Microsoft_ClearScript_IPropertyBag.htm\u0000296","ITypedArray Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_ITypedArray.htm\u0000338","NoScriptAccessAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_NoScriptAccessAttribute.htm\u0000216","JavaScriptExtensions Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_JavaScriptExtensions.htm\u0000283","DynamicHostObject Methods\u0000html/Methods_T_Microsoft_ClearScript_DynamicHostObject.htm\u0000698","ScriptInterruptedException Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptInterruptedException.htm\u000069","IJavaScriptObject Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_IJavaScriptObject.htm\u0000224","IArrayBufferView Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm\u0000309","PropertyBag Methods\u0000html/Methods_T_Microsoft_ClearScript_PropertyBag.htm\u0000235","NoDefaultScriptAccessAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_NoDefaultScriptAccessAttribute.htm\u0000217","HostFunctions Methods\u0000html/Methods_T_Microsoft_ClearScript_HostFunctions.htm\u0000847","StringDocument Methods\u0000html/Methods_T_Microsoft_ClearScript_StringDocument.htm\u0000153","ScriptMemberAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptMemberAttribute.htm\u0000215","V8CpuProfile Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8CpuProfile.htm\u0000177","ITypedArray\u0026lt;T\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm\u0000378","IScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_IScriptEngine.htm\u00001148","HitLine Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLine.htm\u0000159","Undefined Methods\u0000html/Methods_T_Microsoft_ClearScript_Undefined.htm\u0000152","V8RuntimeDebuggerEventArgs Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8RuntimeDebuggerEventArgs.htm\u0000156","Node Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8CpuProfile_Node.htm\u0000155","V8Script Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8Script.htm\u0000163","IScriptObject Methods\u0000html/Methods_T_Microsoft_ClearScript_IScriptObject.htm\u0000168","ValueRef Methods\u0000html/Methods_T_Microsoft_ClearScript_ValueRef.htm\u000056","HostTypeCollection Methods\u0000html/Methods_T_Microsoft_ClearScript_HostTypeCollection.htm\u0000430","Sample Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8CpuProfile_Sample.htm\u0000155","VoidResult Methods\u0000html/Methods_T_Microsoft_ClearScript_VoidResult.htm\u0000153","V8RuntimeHeapInfo Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm\u0000155","ScriptObject Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptObject.htm\u0000804","ScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptEngine.htm\u00001267","ValueRef\u0026lt;T\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_ValueRef_1.htm\u0000156","IHostWindow Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_IHostWindow.htm\u000054","ISyncInvoker Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Core_ISyncInvoker.htm\u0000108","ScriptUsageAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptUsageAttribute.htm\u0000215","ConcurrentPropertyBag Constructor\u0000html/M_Microsoft_ClearScript_ConcurrentPropertyBag__ctor.htm\u000099","V8Runtime Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8Runtime.htm\u0000947","ExtendedHostFunctions Methods\u0000html/Methods_T_Microsoft_ClearScript_ExtendedHostFunctions.htm\u00001188","ScriptEngineException Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptEngineException.htm\u0000208","IWindowsScriptObject Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_IWindowsScriptObject.htm\u0000234","CustomAttributeLoader.LoadCustomAttributes\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_CustomAttributeLoader_LoadCustomAttributes__1.htm\u0000311","DefaultDocumentLoader Constructor\u0000html/M_Microsoft_ClearScript_DefaultDocumentLoader__ctor.htm\u000091","ConcurrentPropertyBag(Boolean) Constructor\u0000html/M_Microsoft_ClearScript_ConcurrentPropertyBag__ctor_1.htm\u0000154","V8RuntimeConstraints Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm\u0000154","DefaultDocumentLoader.GetCachedDocument Method\u0000html/M_Microsoft_ClearScript_DefaultDocumentLoader_GetCachedDocument.htm\u0000163","DefaultScriptUsageAttribute(ScriptAccess) Constructor\u0000html/M_Microsoft_ClearScript_DefaultScriptUsageAttribute__ctor_1.htm\u0000132","DefaultScriptUsageAttribute Constructor\u0000html/M_Microsoft_ClearScript_DefaultScriptUsageAttribute__ctor.htm\u000094","CustomAttributeLoader Constructor\u0000html/M_Microsoft_ClearScript_CustomAttributeLoader__ctor.htm\u000091","DocumentInfo(Uri) Constructor\u0000html/M_Microsoft_ClearScript_DocumentInfo__ctor_1.htm\u0000124","DocumentInfo(String) Constructor\u0000html/M_Microsoft_ClearScript_DocumentInfo__ctor.htm\u0000124","ConcurrentPropertyBag(Boolean, IEqualityComparer\u0026lt;String\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_ConcurrentPropertyBag__ctor_2.htm\u0000195","DocumentLoader.DiscardCachedDocuments Method\u0000html/M_Microsoft_ClearScript_DocumentLoader_DiscardCachedDocuments.htm\u0000107","DefaultDocumentLoader.LoadDocumentAsync Method\u0000html/M_Microsoft_ClearScript_DefaultDocumentLoader_LoadDocumentAsync.htm\u0000417","DefaultDocumentLoader.CacheDocument Method\u0000html/M_Microsoft_ClearScript_DefaultDocumentLoader_CacheDocument.htm\u0000217","ConcurrentPropertyBag(IEqualityComparer\u0026lt;String\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_ConcurrentPropertyBag__ctor_3.htm\u0000159","DocumentLoader.CacheDocument Method\u0000html/M_Microsoft_ClearScript_DocumentLoader_CacheDocument.htm\u0000215","JScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Core_JScriptEngine.htm\u00001611","VBScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Core_VBScriptEngine.htm\u00001611","DocumentLoader.GetCachedDocument Method\u0000html/M_Microsoft_ClearScript_DocumentLoader_GetCachedDocument.htm\u0000161","DocumentLoader.LoadDocument Method\u0000html/M_Microsoft_ClearScript_DocumentLoader_LoadDocument.htm\u0000371","VBScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_VBScriptEngine.htm\u00001610","Document Constructor\u0000html/M_Microsoft_ClearScript_Document__ctor.htm\u000089","DefaultDocumentLoader.DiscardCachedDocuments Method\u0000html/M_Microsoft_ClearScript_DefaultDocumentLoader_DiscardCachedDocuments.htm\u0000109","EventSource\u0026lt;T\u0026gt;.connect Method\u0000html/M_Microsoft_ClearScript_EventSource_1_connect.htm\u0000162","DocumentSettings.AddSystemDocument(String, DocumentCategory, String) Method\u0000html/M_Microsoft_ClearScript_DocumentSettings_AddSystemDocument_1.htm\u0000238","NullSyncInvoker Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Core_NullSyncInvoker.htm\u0000218","DynamicHostObject.HasMember Method\u0000html/M_Microsoft_ClearScript_DynamicHostObject_HasMember.htm\u0000198","EventSource.connect Method\u0000html/M_Microsoft_ClearScript_EventSource_connect.htm\u0000144","ExtendedHostFunctions.typeLibEnums\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_typeLibEnums__1.htm\u0000276","ExtendedHostFunctions.lib(HostTypeCollection, String[]) Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_lib.htm\u0000426","V8ScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8ScriptEngine.htm\u00002292","DocumentLoader.LoadDocumentAsync Method\u0000html/M_Microsoft_ClearScript_DocumentLoader_LoadDocumentAsync.htm\u0000370","DynamicHostObject Constructor\u0000html/M_Microsoft_ClearScript_DynamicHostObject__ctor.htm\u000091","DocumentSettings.AddSystemDocument(String, DocumentCategory, String, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_DocumentSettings_AddSystemDocument_2.htm\u0000276","Extensions.ToHostType(Type) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToHostType.htm\u0000244","JScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_JScriptEngine.htm\u00001610","ExtendedHostFunctions.arrType\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_arrType__1.htm\u0000204","DocumentLoader Constructor\u0000html/M_Microsoft_ClearScript_DocumentLoader__ctor.htm\u000090","EventConnection.disconnect Method\u0000html/M_Microsoft_ClearScript_EventConnection_disconnect.htm\u000099","Nothing Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Nothing.htm\u0000153","DocumentSettings.AddSystemDocument(String, String) Method\u0000html/M_Microsoft_ClearScript_DocumentSettings_AddSystemDocument_3.htm\u0000201","Extensions.ToRestrictedHostObject(Object, Type) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToRestrictedHostObject.htm\u0000298","Extensions.ToHostType(Type, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToHostType_1.htm\u0000282","ExtendedHostFunctions.lib(String[]) Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_lib_1.htm\u0000353","ExtendedHostFunctions.type(String, String, Object[]) Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_type_1.htm\u0000474","DocumentSettings Constructor\u0000html/M_Microsoft_ClearScript_DocumentSettings__ctor.htm\u000090","HostFunctions.asType\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_asType__1.htm\u0000306","ExtendedHostFunctions.comType Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_comType.htm\u0000349","HostFunctions.func(Int32, Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_func.htm\u0000272","ExtendedHostFunctions.type(Type) Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_type_2.htm\u0000215","HostFunctions.getProperty(IDynamicMetaObjectProvider, String) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_getProperty_1.htm\u0000206","Extensions.ToRestrictedHostObject(Object, Type, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToRestrictedHostObject_1.htm\u0000336","ExtendedHostFunctions.newComObj Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_newComObj.htm\u0000354","WindowsScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine.htm\u00001602","ExtendedHostFunctions Constructor\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions__ctor.htm\u000091","DocumentSettings.AddSystemDocument(String, Document) Method\u0000html/M_Microsoft_ClearScript_DocumentSettings_AddSystemDocument.htm\u0000211","HostFunctions.isType\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_isType__1.htm\u0000267","WindowsScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm\u00001609","HostFunctions.cast\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_cast__1.htm\u0000251","HostFunctions.newObj(IDynamicMetaObjectProvider, Object[]) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newObj_1.htm\u0000220","HostFunctions.isNull Method\u0000html/M_Microsoft_ClearScript_HostFunctions_isNull.htm\u0000170","Extensions.ToRestrictedHostObject\u0026lt;T\u0026gt;(T) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToRestrictedHostObject__1.htm\u0000288","HostFunctions.func\u0026lt;T\u0026gt;(Int32, Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_func__1.htm\u0000470","HostFunctions.removeProperty(IPropertyBag, String) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_removeProperty.htm\u0000204","ExtendedHostFunctions.type(String, Object[]) Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_type.htm\u0000408","HostFunctions.newArr(Int32[]) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newArr.htm\u0000202","HostFunctions.proc Method\u0000html/M_Microsoft_ClearScript_HostFunctions_proc.htm\u0000409","HostFunctions.setProperty(IDynamicMetaObjectProvider, String, Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_setProperty_1.htm\u0000247","HostFunctions.toDouble Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toDouble.htm\u0000304","HostFunctions.isTypeObj(Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_isTypeObj.htm\u0000202","HostFunctions.del\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_del__1.htm\u0000408","Extensions.ToRestrictedHostObject\u0026lt;T\u0026gt;(T, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToRestrictedHostObject__1_1.htm\u0000325","HostFunctions.getElement Method\u0000html/M_Microsoft_ClearScript_HostFunctions_getElement.htm\u0000220","HostFunctions.removeProperty(IDynamicMetaObjectProvider, String) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_removeProperty_1.htm\u0000206","HostFunctions.newObj(Object, Object[]) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newObj_2.htm\u0000290","HostFunctions.removeElement Method\u0000html/M_Microsoft_ClearScript_HostFunctions_removeElement.htm\u0000220","HostFunctions.isTypeObj\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_isTypeObj__1.htm\u0000192","HostFunctions.toSByte Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toSByte.htm\u0000304","HostFunctions.newArr\u0026lt;T\u0026gt;(Int32[]) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newArr__1.htm\u0000295","HostFunctions.toByte Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toByte.htm\u0000304","HostFunctions.toInt16 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toInt16.htm\u0000305","HostFunctions.getProperty(IPropertyBag, String) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_getProperty.htm\u0000204","HostFunctions.flags\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_flags__1.htm\u0000371","HostFunctions.toUInt32 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toUInt32.htm\u0000305","HostFunctions.setElement Method\u0000html/M_Microsoft_ClearScript_HostFunctions_setElement.htm\u0000258","HostTypeCollection.AddAssembly(String) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly_2.htm\u0000145","HostFunctions.typeOf\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_typeOf__1.htm\u0000276","HostFunctions.newObj Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newObj.htm\u0000212","HostTypeCollection.AddType(Type) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddType_2.htm\u0000129","HostFunctions.toSingle Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toSingle.htm\u0000304","HostFunctions.newObj\u0026lt;T\u0026gt;(Object[]) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newObj__1.htm\u0000352","HostFunctions.toChar Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toChar.htm\u0000304","HostTypeCollection(Predicate\u0026lt;Type\u0026gt;, String[]) Constructor\u0000html/M_Microsoft_ClearScript_HostTypeCollection__ctor_2.htm\u0000226","HostFunctions.toInt32 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toInt32.htm\u0000305","HostFunctions Constructor\u0000html/M_Microsoft_ClearScript_HostFunctions__ctor.htm\u000090","HostTypeCollection.AddAssembly(String, Predicate\u0026lt;Type\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly_3.htm\u0000204","HostFunctions.setProperty(IPropertyBag, String, Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_setProperty.htm\u0000245","HostTypeCollection.GetNamespaceNode Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_GetNamespaceNode.htm\u0000151","HostFunctions.toUInt64 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toUInt64.htm\u0000305","HostFunctions.toStaticType Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toStaticType.htm\u0000188","HostTypeCollection(Assembly[]) Constructor\u0000html/M_Microsoft_ClearScript_HostTypeCollection__ctor_3.htm\u0000159","HostTypeCollection.AddAssembly(Assembly) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly.htm\u0000135","IScriptEngine.AddCOMObject(String, HostItemFlags, String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_3.htm\u0000323","HostTypeCollection Constructor\u0000html/M_Microsoft_ClearScript_HostTypeCollection__ctor.htm\u000094","HostFunctions.toDecimal Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toDecimal.htm\u0000304","HostTypeCollection.AddType(String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddType.htm\u0000233","HostFunctions.toInt64 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toInt64.htm\u0000305","HostFunctions.newVar\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newVar__1.htm\u0000460","IScriptEngine.AddCOMObject(String, String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_7.htm\u0000285","HostTypeCollection(String[]) Constructor\u0000html/M_Microsoft_ClearScript_HostTypeCollection__ctor_4.htm\u0000169","HostTypeCollection.AddAssembly(Assembly, Predicate\u0026lt;Type\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly_1.htm\u0000194","HostTypeCollection.AddType(String, Type[]) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddType_1.htm\u0000192","HostFunctions.toUInt16 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toUInt16.htm\u0000305","IScriptEngine.AddCOMObject(String, Guid) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_4.htm\u0000209","IScriptEngine.AddHostTypes Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostTypes.htm\u0000232","HostTypeCollection(Predicate\u0026lt;Type\u0026gt;, Assembly[]) Constructor\u0000html/M_Microsoft_ClearScript_HostTypeCollection__ctor_1.htm\u0000216","IScriptEngine.AddCOMType(String, String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_7.htm\u0000285","HostFunctions.tryCatch Method\u0000html/M_Microsoft_ClearScript_HostFunctions_tryCatch.htm\u0000539","ImmutableValueAttribute Constructor\u0000html/M_Microsoft_ClearScript_ImmutableValueAttribute__ctor.htm\u000091","IScriptEngine.AddHostType(String, String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_4.htm\u0000342","IScriptEngine.AddCOMType(String, HostItemFlags, Guid) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType.htm\u0000247","IScriptEngine.EvaluateDocument(String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_EvaluateDocument.htm\u0000197","IScriptEngine.ExecuteDocument(String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_ExecuteDocument.htm\u0000162","IScriptEngine.AddRestrictedHostObject\u0026lt;T\u0026gt;(String, HostItemFlags, T) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddRestrictedHostObject__1.htm\u0000281","IScriptEngine.AddCOMObject(String, Guid, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_5.htm\u0000250","IScriptableObject.OnExposedToScriptCode Method\u0000html/M_Microsoft_ClearScript_IScriptableObject_OnExposedToScriptCode.htm\u0000187","IScriptEngine.AddHostType(String, HostItemFlags, String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_1.htm\u0000380","HostFunctions.typeOf(Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_typeOf.htm\u0000300","IScriptEngine.Evaluate(String, Boolean, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Evaluate_2.htm\u0000530","IScriptEngine.AddHostType(String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_5.htm\u0000301","IScriptEngine.ExecuteDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_ExecuteDocument_1.htm\u0000199","IScriptEngine.AddHostObject(String, HostItemFlags, Object) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostObject.htm\u0000471","IScriptEngine.EvaluateDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_EvaluateDocument_1.htm\u0000234","IScriptEngine.AddRestrictedHostObject\u0026lt;T\u0026gt;(String, T) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddRestrictedHostObject__1_1.htm\u0000245","IScriptEngine.AddCOMObject(String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_6.htm\u0000244","IScriptEngine.AddCOMType(String, HostItemFlags, Guid, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_1.htm\u0000288","IScriptEngine.AddCOMObject(String, HostItemFlags, Guid) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject.htm\u0000247","IScriptEngine.Invoke Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Invoke.htm\u0000190","IScriptEngine.AddHostType(String, HostItemFlags, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_2.htm\u0000339","IScriptEngine.CollectGarbage Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_CollectGarbage.htm\u0000121","IScriptEngine.AddHostObject(String, Object) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostObject_1.htm\u0000188","IScriptEngine.AddHostType(String, Type) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_6.htm\u0000238","IScriptEngine.Evaluate(String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Evaluate_3.htm\u0000274","IScriptObject.GetProperty(String, Object[]) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_GetProperty_1.htm\u0000193","IScriptEngine.ExecuteDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_ExecuteDocument_2.htm\u0000238","IScriptEngine.EvaluateDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_EvaluateDocument_2.htm\u0000273","IScriptObject.DeleteProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_DeleteProperty.htm\u0000139","IScriptEngine.AddCOMObject(String, HostItemFlags, Guid, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_1.htm\u0000288","IScriptEngine.AddCOMType(String, HostItemFlags, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_2.htm\u0000282","IScriptEngine.AddHostType(String, HostItemFlags, Type) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_3.htm\u0000276","IScriptEngine.Evaluate(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Evaluate.htm\u0000225","IScriptEngine.AddHostType(Type) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_7.htm\u0000221","IScriptEngine.Execute(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Execute.htm\u0000190","IScriptEngine.AddHostType(HostItemFlags, Type) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType.htm\u0000259","IScriptObject.DeleteProperty(String) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_DeleteProperty_1.htm\u0000140","IScriptObject.Invoke Method\u0000html/M_Microsoft_ClearScript_IScriptObject_Invoke.htm\u0000180","IScriptEngine.Execute(String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Execute_1.htm\u0000184","IScriptEngine.Evaluate(String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Evaluate_1.htm\u0000218","IScriptEngine.AddCOMObject(String, HostItemFlags, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_2.htm\u0000282","IScriptObject.GetProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_GetProperty.htm\u0000140","IArrayBuffer.InvokeWithDirectAccess(Action\u0026lt;IntPtr\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_InvokeWithDirectAccess.htm\u0000206","IArrayBufferView.InvokeWithDirectAccess\u0026lt;T\u0026gt;(Func\u0026lt;IntPtr, T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_InvokeWithDirectAccess__1.htm\u0000249","IScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_ExecuteCommand.htm\u0000183","IScriptEngine.AddCOMType(String, HostItemFlags, String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_3.htm\u0000323","IScriptObject.InvokeAsFunction Method\u0000html/M_Microsoft_ClearScript_IScriptObject_InvokeAsFunction.htm\u0000152","ITypedArray\u0026lt;T\u0026gt;.Read Method\u0000html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_Read.htm\u0000252","PropertyBag.Add Method\u0000html/M_Microsoft_ClearScript_PropertyBag_Add.htm\u0000182","IScriptEngine.Execute(String, Boolean, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Execute_2.htm\u0000297","JavaScriptExtensions.ToPromise(ValueTask, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise_3.htm\u0000300","PropertyBag(Boolean) Constructor\u0000html/M_Microsoft_ClearScript_PropertyBag__ctor_1.htm\u0000153","ScriptEngineException(String, Exception) Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngineException__ctor_3.htm\u0000163","ITypedArray\u0026lt;T\u0026gt;.ToArray Method\u0000html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_ToArray.htm\u0000128","PropertyBag.ClearNoCheck Method\u0000html/M_Microsoft_ClearScript_PropertyBag_ClearNoCheck.htm\u0000112","IArrayBuffer.InvokeWithDirectAccess\u0026lt;T\u0026gt;(Func\u0026lt;IntPtr, T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_InvokeWithDirectAccess__1.htm\u0000254","IScriptObject.InvokeMethod Method\u0000html/M_Microsoft_ClearScript_IScriptObject_InvokeMethod.htm\u0000180","IArrayBufferView.ReadBytes Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_ReadBytes.htm\u0000257","IScriptEngine.AddCOMType(String, Guid) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_4.htm\u0000209","ScriptEngine.AddCOMObject(String, String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_7.htm\u0000325","IScriptEngine.Execute(String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Execute_3.htm\u0000240","PropertyBag(Boolean, IEqualityComparer\u0026lt;String\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_PropertyBag__ctor_2.htm\u0000194","PropertyBag.ContainsKey Method\u0000html/M_Microsoft_ClearScript_PropertyBag_ContainsKey.htm\u0000172","JavaScriptExtensions.ToPromise\u0026lt;T\u0026gt;(Task\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise__1.htm\u0000288","IScriptObject.SetProperty(Int32, Object) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_SetProperty.htm\u0000156","ScriptEngine.AddCOMObject(String, HostItemFlags, Guid) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject.htm\u0000287","ITypedArray\u0026lt;T\u0026gt;.Write Method\u0000html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_Write.htm\u0000252","IScriptEngine.GetStackTrace Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_GetStackTrace.htm\u0000140","IArrayBuffer.ReadBytes Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_ReadBytes.htm\u0000256","IArrayBufferView.WriteBytes Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_WriteBytes.htm\u0000257","IScriptEngine.AddCOMType(String, Guid, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_5.htm\u0000250","PropertyBag(IEqualityComparer\u0026lt;String\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_PropertyBag__ctor_3.htm\u0000158","PropertyBag.Remove Method\u0000html/M_Microsoft_ClearScript_PropertyBag_Remove.htm\u0000165","ScriptEngine.AddCOMType(String, HostItemFlags, Guid) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType.htm\u0000287","JavaScriptExtensions.ToPromise\u0026lt;T\u0026gt;(Task\u0026lt;T\u0026gt;, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise__1_1.htm\u0000324","IScriptObject.SetProperty(String, Object[]) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_SetProperty_1.htm\u0000208","IScriptEngine.Interrupt Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Interrupt.htm\u0000107","IArrayBuffer.GetBytes Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_GetBytes.htm\u0000135","ScriptEngine.AddCOMObject(String, HostItemFlags, Guid, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_1.htm\u0000336","JavaScriptExtensions.ToAsyncEnumerable Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToAsyncEnumerable.htm\u0000281","IArrayBuffer.WriteBytes Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_WriteBytes.htm\u0000257","PropertyBag.RemovePropertyNoCheck Method\u0000html/M_Microsoft_ClearScript_PropertyBag_RemovePropertyNoCheck.htm\u0000159","IScriptEngine.AddCOMType(String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_6.htm\u0000244","ScriptEngineException.GetObjectData Method\u0000html/M_Microsoft_ClearScript_ScriptEngineException_GetObjectData.htm\u0000193","IArrayBufferView.GetBytes Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_GetBytes.htm\u0000132","JavaScriptExtensions.ToPromise\u0026lt;T\u0026gt;(ValueTask\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise__1_2.htm\u0000306","ScriptEngine.AddCOMType(String, String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_7.htm\u0000325","ScriptEngineException.ToString Method\u0000html/M_Microsoft_ClearScript_ScriptEngineException_ToString.htm\u0000127","ScriptEngine.AddCOMType(String, HostItemFlags, Guid, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_1.htm\u0000336","PropertyBag.SetPropertyNoCheck Method\u0000html/M_Microsoft_ClearScript_PropertyBag_SetPropertyNoCheck.htm\u0000170","ScriptEngine.Dispose(Boolean) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Dispose_1.htm\u0000202","ScriptEngine.Execute(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Execute.htm\u0000222","JavaScriptExtensions.ToEnumerable Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToEnumerable.htm\u0000276","ScriptEngine.AddCOMObject(String, HostItemFlags, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_2.htm\u0000322","ScriptEngine.AddHostType(String, String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_4.htm\u0000394","IArrayBufferView.InvokeWithDirectAccess(Action\u0026lt;IntPtr\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_InvokeWithDirectAccess.htm\u0000201","ScriptEngineException Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngineException__ctor.htm\u000093","JavaScriptExtensions.ToPromise\u0026lt;T\u0026gt;(ValueTask\u0026lt;T\u0026gt;, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise__1_3.htm\u0000342","ScriptEngine.AddHostObject(String, HostItemFlags, Object) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostObject.htm\u0000511","ScriptEngine.Evaluate(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Evaluate.htm\u0000257","ScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_ExecuteCommand.htm\u0000208","PropertyBag.TryGetValue Method\u0000html/M_Microsoft_ClearScript_PropertyBag_TryGetValue.htm\u0000225","ScriptEngine.AddCOMType(String, HostItemFlags, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_2.htm\u0000322","JavaScriptExtensions.ToPromise(Task) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise.htm\u0000246","ScriptEngine.Finalize Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Finalize.htm\u0000160","ScriptEngineException(SerializationInfo, StreamingContext) Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngineException__ctor_1.htm\u0000160","ScriptEngine.AddHostType(String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_5.htm\u0000345","ScriptEngine.AddCOMObject(String, HostItemFlags, String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_3.htm\u0000371","JavaScriptExtensions.ToTask Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToTask.htm\u0000277","ScriptEngine.AddHostObject(String, Object) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostObject_1.htm\u0000220","PropertyBag Constructor\u0000html/M_Microsoft_ClearScript_PropertyBag__ctor.htm\u000098","ScriptEngine.ExecuteDocument(String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_ExecuteDocument.htm\u0000186","ScriptEngine.GetStackTrace Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_GetStackTrace.htm\u0000152","ScriptEngineException(String) Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngineException__ctor_2.htm\u0000124","ScriptEngine.EvaluateDocument(String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_EvaluateDocument.htm\u0000221","JavaScriptExtensions.ToPromise(Task, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise_1.htm\u0000283","NoDefaultScriptAccessAttribute Constructor\u0000html/M_Microsoft_ClearScript_NoDefaultScriptAccessAttribute__ctor.htm\u000093","ScriptEngine.AddCOMType(String, HostItemFlags, String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_3.htm\u0000371","ScriptEngine.AddHostType(String, Type) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_6.htm\u0000270","ScriptEngine.AddCOMObject(String, Guid) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_4.htm\u0000241","ScriptInterruptedException Constructor\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor.htm\u000093","ScriptMemberAttribute(String) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_4.htm\u0000134","ScriptEngine.Interrupt Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Interrupt.htm\u0000119","ScriptEngine.AddHostType(HostItemFlags, Type) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType.htm\u0000291","ScriptEngine.ExecuteDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_ExecuteDocument_1.htm\u0000231","NoScriptAccessAttribute Constructor\u0000html/M_Microsoft_ClearScript_NoScriptAccessAttribute__ctor.htm\u000092","ScriptEngine.EvaluateDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_EvaluateDocument_1.htm\u0000266","JavaScriptExtensions.ToPromise(ValueTask) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise_2.htm\u0000263","ScriptEngine.AddCOMType(String, Guid) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_4.htm\u0000241","ScriptEngine.AddHostType(Type) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_7.htm\u0000245","ScriptEngine.AddCOMObject(String, Guid, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_5.htm\u0000290","ScriptMemberAttribute(String, ScriptAccess) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_5.htm\u0000172","ScriptObject.GetProperty(String, Object[]) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_GetProperty_1.htm\u0000210","ScriptInterruptedException(SerializationInfo, StreamingContext) Constructor\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor_1.htm\u0000160","ScriptEngine.Invoke Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Invoke.htm\u0000226","ScriptEngine.ExecuteDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_ExecuteDocument_2.htm\u0000278","ScriptEngine.AddHostTypes Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostTypes.htm\u0000261","StringDocument Constructor\u0000html/M_Microsoft_ClearScript_StringDocument__ctor.htm\u0000148","ScriptInterruptedException(String) Constructor\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor_2.htm\u0000124","ScriptEngine.EvaluateDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_EvaluateDocument_2.htm\u0000313","ScriptEngine(String) Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngine__ctor.htm\u0000225","ScriptEngine.Execute(String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Execute_1.htm\u0000208","ScriptObject.Invoke Method\u0000html/M_Microsoft_ClearScript_ScriptObject_Invoke.htm\u0000197","ScriptMemberAttribute(String, ScriptAccess, ScriptMemberFlags) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_6.htm\u0000210","ScriptEngine.AddCOMType(String, Guid, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_5.htm\u0000290","ScriptEngine.AddCOMObject(String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_6.htm\u0000276","Undefined.ToString Method\u0000html/M_Microsoft_ClearScript_Undefined_ToString.htm\u0000139","ScriptEngine.AddRestrictedHostObject\u0026lt;T\u0026gt;(String, HostItemFlags, T) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddRestrictedHostObject__1.htm\u0000324","ScriptInterruptedException(String, Exception) Constructor\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor_3.htm\u0000163","ScriptEngine(String, String) Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngine__ctor_1.htm\u0000187","ScriptEngine.Evaluate(String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_1.htm\u0000242","ScriptMemberAttribute(String, ScriptMemberFlags) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_7.htm\u0000171","V8Runtime.CollectGarbage Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CollectGarbage.htm\u0000127","ScriptObject.InvokeAsFunction Method\u0000html/M_Microsoft_ClearScript_ScriptObject_InvokeAsFunction.htm\u0000181","ScriptEngine.Execute(String, Boolean, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Execute_2.htm\u0000337","V8CpuProfile.ToJson Method\u0000html/M_Microsoft_ClearScript_V8_V8CpuProfile_ToJson.htm\u0000128","ScriptEngine.AddHostType(String, HostItemFlags, String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_1.htm\u0000440","ScriptEngine.AddCOMType(String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_6.htm\u0000276","ScriptMemberAttribute Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor.htm\u000093","ScriptEngine.AddRestrictedHostObject\u0026lt;T\u0026gt;(String, T) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddRestrictedHostObject__1_1.htm\u0000280","V8Runtime.Compile(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile.htm\u0000186","ScriptObject.DeleteProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_DeleteProperty.htm\u0000153","ScriptObject.InvokeMethod Method\u0000html/M_Microsoft_ClearScript_ScriptObject_InvokeMethod.htm\u0000197","ScriptInterruptedException.GetObjectData Method\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException_GetObjectData.htm\u0000185","V8CpuProfile.WriteJson Method\u0000html/M_Microsoft_ClearScript_V8_V8CpuProfile_WriteJson.htm\u0000146","ScriptEngine.Evaluate(String, Boolean, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_2.htm\u0000570","ScriptMemberAttribute(ScriptAccess) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_1.htm\u0000131","ScriptEngine.Execute(String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Execute_3.htm\u0000272","ScriptEngine.CollectGarbage Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_CollectGarbage.htm\u0000135","V8Runtime.CompileDocument(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument.htm\u0000154","ScriptObject.DeleteProperty(String) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_DeleteProperty_1.htm\u0000154","ScriptObject.SetProperty(Int32, Object) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_SetProperty.htm\u0000172","ScriptEngine.AddHostType(String, HostItemFlags, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_2.htm\u0000391","V8RuntimeConstraints Constructor\u0000html/M_Microsoft_ClearScript_V8_V8RuntimeConstraints__ctor.htm\u000092","ScriptInterruptedException.ToString Method\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException_ToString.htm\u0000126","V8Runtime.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_4.htm\u0000350","ScriptMemberAttribute(ScriptAccess, ScriptMemberFlags) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_2.htm\u0000168","ScriptEngine.Dispose Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Dispose.htm\u0000119","ScriptEngine.Evaluate(String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_3.htm\u0000306","ScriptObject.Dispose Method\u0000html/M_Microsoft_ClearScript_ScriptObject_Dispose.htm\u0000110","V8Runtime.CompileDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_1.htm\u0000191","V8Runtime.BeginCpuProfile(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_BeginCpuProfile.htm\u0000156","ScriptObject.SetProperty(String, Object[]) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_SetProperty_1.htm\u0000225","V8Runtime.Compile(String, String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_11.htm\u0000390","ScriptMemberAttribute(ScriptMemberFlags) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_3.htm\u0000130","ScriptEngine.AddHostType(String, HostItemFlags, Type) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_3.htm\u0000316","V8Runtime.EndCpuProfile Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_EndCpuProfile.htm\u0000158","V8Runtime(V8RuntimeConstraints, V8RuntimeFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_3.htm\u0000204","ScriptObject.GetProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_GetProperty.htm\u0000154","V8Runtime.Compile(String, String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_9.htm\u0000410","ScriptUsageAttribute Constructor\u0000html/M_Microsoft_ClearScript_ScriptUsageAttribute__ctor.htm\u000093","V8Runtime.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_5.htm\u0000417","V8Runtime.CompileDocument(String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_10.htm\u0000274","V8Runtime.BeginCpuProfile(String, V8CpuProfileFlags) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_BeginCpuProfile_1.htm\u0000191","V8Runtime(V8RuntimeFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_4.htm\u0000129","V8ScriptEngine.BeginCpuProfile(String, V8CpuProfileFlags) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_BeginCpuProfile_1.htm\u0000193","V8Runtime.Compile(DocumentInfo, String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_2.htm\u0000319","ScriptUsageAttribute(ScriptAccess) Constructor\u0000html/M_Microsoft_ClearScript_ScriptUsageAttribute__ctor_1.htm\u0000131","V8Runtime.CreateScriptEngine Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine.htm\u0000138","V8ScriptEngine.CompileDocument(String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_10.htm\u0000275","V8ScriptEngine.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_8.htm\u0000379","V8Runtime.CollectCpuProfileSample Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CollectCpuProfileSample.htm\u0000105","V8Runtime(V8RuntimeFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_5.htm\u0000168","V8ScriptEngine.CancelAwaitDebugger Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CancelAwaitDebugger.htm\u0000117","V8Runtime.GetHeapInfo Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_GetHeapInfo.htm\u0000111","V8Runtime.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_6.htm\u0000388","V8ScriptEngine.Execute(V8Script) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Execute.htm\u0000164","V8Runtime.CompileDocument(String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_11.htm\u0000341","V8Runtime.Compile(DocumentInfo, String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_3.htm\u0000373","V8ScriptEngine(String, V8ScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_10.htm\u0000200","V8Runtime(String) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_6.htm\u0000148","V8Runtime.CreateScriptEngine(V8ScriptEngineFlags) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_1.htm\u0000217","V8ScriptEngine.CancelInterrupt Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CancelInterrupt.htm\u0000112","V8ScriptEngine.CompileDocument(String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_11.htm\u0000342","V8Runtime.WriteHeapSnapshot Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_WriteHeapSnapshot.htm\u0000145","V8ScriptEngine.CompileDocument(String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_9.htm\u0000352","V8Runtime.Compile(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_4.htm\u0000146","V8ScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_ExecuteCommand.htm\u0000231","V8ScriptEngine.CollectCpuProfileSample Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CollectCpuProfileSample.htm\u0000106","V8Runtime Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor.htm\u000094","V8Runtime.CompileDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_2.htm\u0000230","V8Runtime(String, V8RuntimeConstraints) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_7.htm\u0000183","V8Runtime.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_7.htm\u0000311","V8ScriptEngine(String, V8ScriptEngineFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_11.htm\u0000240","V8Runtime.CreateScriptEngine(V8ScriptEngineFlags, Int32) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_2.htm\u0000256","V8ScriptEngine.CompileDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_2.htm\u0000231","V8ScriptEngine.GetRuntimeHeapInfo Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_GetRuntimeHeapInfo.htm\u0000121","V8Runtime(V8RuntimeConstraints) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_1.htm\u0000129","V8ScriptEngine.CollectGarbage Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CollectGarbage.htm\u0000153","V8Runtime.Compile(String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_5.htm\u0000351","V8ScriptEngine.Compile(DocumentInfo, String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_1.htm\u0000391","V8ScriptEngine(V8RuntimeConstraints, V8ScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_2.htm\u0000186","V8Runtime.CreateScriptEngine(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_3.htm\u0000192","V8ScriptEngine.GetStackTrace Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_GetStackTrace.htm\u0000165","V8Runtime.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_8.htm\u0000378","V8Runtime.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_3.htm\u0000427","V8ScriptEngine.Compile(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile.htm\u0000185","V8Runtime(String, V8RuntimeFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_10.htm\u0000183","V8ScriptEngine.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_3.htm\u0000428","V8Runtime(String, V8RuntimeConstraints, V8RuntimeFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_8.htm\u0000219","V8Runtime.Compile(String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_6.htm\u0000277","V8ScriptEngine.Interrupt Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Interrupt.htm\u0000133","V8ScriptEngine(V8RuntimeConstraints, V8ScriptEngineFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_3.htm\u0000226","V8Runtime.CreateScriptEngine(String, V8ScriptEngineFlags) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_4.htm\u0000271","V8ScriptEngine.Compile(String, String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_10.htm\u0000336","V8ScriptEngine.CompileDocument(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument.htm\u0000155","V8ScriptEngine(String, V8RuntimeConstraints, V8ScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_8.htm\u0000241","V8Runtime(String, V8RuntimeFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_11.htm\u0000223","V8ScriptEngine.WriteRuntimeHeapSnapshot Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_WriteRuntimeHeapSnapshot.htm\u0000151","V8Runtime.CompileDocument(String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_9.htm\u0000351","V8ScriptEngine(V8ScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_4.htm\u0000146","V8Runtime(String, V8RuntimeConstraints, V8RuntimeFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_9.htm\u0000258","V8Runtime.Compile(String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_7.htm\u0000333","V8ScriptEngine.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_4.htm\u0000351","V8Runtime.CreateScriptEngine(String, V8ScriptEngineFlags, Int32) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_5.htm\u0000311","V8Runtime(V8RuntimeConstraints, V8RuntimeFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_2.htm\u0000164","V8ScriptEngine.CompileDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_1.htm\u0000192","V8ScriptEngine Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor.htm\u0000110","V8ScriptEngine(String, V8RuntimeConstraints, V8ScriptEngineFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_9.htm\u0000280","V8ScriptEngine.Compile(String, String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_11.htm\u0000389","V8ScriptEngine(V8ScriptEngineFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_5.htm\u0000185","V8ScriptEngine.BeginCpuProfile(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_BeginCpuProfile.htm\u0000158","V8Runtime.Compile(String, String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_8.htm\u0000203","V8Runtime.Dispose Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Dispose.htm\u0000118","ISyncInvoker.VerifyAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_ISyncInvoker_VerifyAccess.htm\u0000102","V8Runtime.Compile(DocumentInfo, String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_1.htm\u0000393","V8ScriptEngine(V8RuntimeConstraints) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_1.htm\u0000150","NullSyncInvoker.Invoke(Action) Method\u0000html/M_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_Invoke.htm\u0000174","V8Script.Dispose Method\u0000html/M_Microsoft_ClearScript_V8_V8Script_Dispose.htm\u0000162","IHostWindow.EnableModeless Method\u0000html/M_Microsoft_ClearScript_Windows_IHostWindow_EnableModeless.htm\u0000126","DocumentSettings.AddSystemDocument Method\u0000html/Overload_Microsoft_ClearScript_DocumentSettings_AddSystemDocument.htm\u0000113","V8ScriptEngine.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_5.htm\u0000418","Nothing.ToString Method\u0000html/M_Microsoft_ClearScript_Windows_Nothing_ToString.htm\u0000143","JScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine_ExecuteCommand.htm\u0000235","ExtendedHostFunctions.lib Method\u0000html/Overload_Microsoft_ClearScript_ExtendedHostFunctions_lib.htm\u000077","V8ScriptEngine.Compile(DocumentInfo, String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_2.htm\u0000319","IScriptEngine.AddCOMObject Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_AddCOMObject.htm\u0000319","V8ScriptEngine(String) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_6.htm\u0000164","IWindowsScriptObject.GetUnderlyingObject Method\u0000html/M_Microsoft_ClearScript_Windows_IWindowsScriptObject_GetUnderlyingObject.htm\u0000116","NullSyncInvoker.Invoke\u0026lt;T\u0026gt;(Func\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_Invoke__1.htm\u0000235","ValueRef.Create\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_ValueRef_Create__1.htm\u0000257","V8Runtime.Compile(String, String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_10.htm\u0000336","ExtendedHostFunctions.type Method\u0000html/Overload_Microsoft_ClearScript_ExtendedHostFunctions_type.htm\u000084","JScriptEngine(ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor.htm\u0000133","VBScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine_ExecuteCommand.htm\u0000274","VoidResult.ToString Method\u0000html/M_Microsoft_ClearScript_VoidResult_ToString.htm\u0000140","PropertyBag Constructor\u0000html/Overload_Microsoft_ClearScript_PropertyBag__ctor.htm\u000089","Extensions.ToHostType Method\u0000html/Overload_Microsoft_ClearScript_Extensions_ToHostType.htm\u000085","V8ScriptEngine(String, V8RuntimeConstraints) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_7.htm\u0000204","NullSyncInvoker.VerifyAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_VerifyAccess.htm\u0000133","V8ScriptEngine.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_6.htm\u0000389","IScriptEngine.AddCOMType Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_AddCOMType.htm\u0000319","JScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine_ExecuteCommand.htm\u0000231","V8ScriptEngine.Compile(DocumentInfo, String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_3.htm\u0000372","VBScriptEngine Constructor\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor.htm\u000095","JScriptEngine(WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor_1.htm\u0000172","ScriptEngine.Evaluate Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_Evaluate.htm\u000097","IScriptEngine.AddHostObject Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_AddHostObject.htm\u000072","Extensions.ToRestrictedHostObject Method\u0000html/Overload_Microsoft_ClearScript_Extensions_ToRestrictedHostObject.htm\u0000172","ScriptEngineException Constructor\u0000html/Overload_Microsoft_ClearScript_ScriptEngineException__ctor.htm\u000089","ISyncInvoker.CheckAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_ISyncInvoker_CheckAccess.htm\u0000122","JScriptEngine Constructor\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor.htm\u000095","V8ScriptEngine.Compile(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_4.htm\u0000145","VBScriptEngine(WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_1.htm\u0000132","HostFunctions.func Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_func.htm\u000081","VBScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine_ExecuteCommand.htm\u0000278","ScriptEngine.EvaluateDocument Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_EvaluateDocument.htm\u000084","V8ScriptEngine.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_7.htm\u0000312","JScriptEngine(String, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor_2.htm\u0000189","ISyncInvoker.Invoke(Action) Method\u0000html/M_Microsoft_ClearScript_Windows_Core_ISyncInvoker_Invoke.htm\u0000137","IScriptEngine.AddHostType Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_AddHostType.htm\u0000224","HostFunctions.getProperty Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_getProperty.htm\u000081","ScriptEngine.AddCOMObject Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_AddCOMObject.htm\u0000319","ScriptEngine.Execute Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_Execute.htm\u000097","VBScriptEngine(String) Constructor\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_2.htm\u0000149","IScriptEngine.AddRestrictedHostObject Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_AddRestrictedHostObject.htm\u000085","JScriptEngine(String, WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor_3.htm\u0000230","HostFunctions.isTypeObj Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_isTypeObj.htm\u000095","V8Runtime Constructor\u0000html/Overload_Microsoft_ClearScript_V8_V8Runtime__ctor.htm\u0000265","ScriptEngine.ExecuteDocument Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_ExecuteDocument.htm\u000084","ISyncInvoker.Invoke\u0026lt;T\u0026gt;(Func\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_Windows_Core_ISyncInvoker_Invoke__1.htm\u0000189","V8ScriptEngine.Compile(String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_5.htm\u0000350","IScriptEngine.Evaluate Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_Evaluate.htm\u000097","VBScriptEngine(ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor.htm\u0000133","ScriptEngine.AddCOMType Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_AddCOMType.htm\u0000319","VBScriptEngine(String, WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_3.htm\u0000186","V8ScriptEngine.BeginCpuProfile Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_BeginCpuProfile.htm\u000067","HostFunctions.newArr Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_newArr.htm\u000072","ScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_ScriptEngine__ctor.htm\u000070","ConcurrentPropertyBag Properties\u0000html/Properties_T_Microsoft_ClearScript_ConcurrentPropertyBag.htm\u0000116","ScriptEngine.AddHostObject Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_AddHostObject.htm\u000072","IScriptEngine.EvaluateDocument Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_EvaluateDocument.htm\u000084","JScriptEngine(String, String, String, WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor_4.htm\u0000346","ScriptInterruptedException Constructor\u0000html/Overload_Microsoft_ClearScript_ScriptInterruptedException__ctor.htm\u000089","HostFunctions.newObj Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_newObj.htm\u0000119","V8ScriptEngine.Compile(String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_6.htm\u0000277","CustomAttributeLoader Properties\u0000html/Properties_T_Microsoft_ClearScript_CustomAttributeLoader.htm\u000053","IScriptEngine.Execute Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_Execute.htm\u000097","VBScriptEngine(String, String, String, WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_4.htm\u0000303","V8ScriptEngine.Compile Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Compile.htm\u0000329","ScriptEngine.AddHostType Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_AddHostType.htm\u0000224","HostFunctions.removeProperty Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_removeProperty.htm\u000075","DefaultDocumentLoader Properties\u0000html/Properties_T_Microsoft_ClearScript_DefaultDocumentLoader.htm\u000064","VBScriptEngine(WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor_1.htm\u0000172","NullSyncInvoker.CheckAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_CheckAccess.htm\u0000154","IScriptEngine.ExecuteDocument Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_ExecuteDocument.htm\u000084","ScriptMemberAttribute Constructor\u0000html/Overload_Microsoft_ClearScript_ScriptMemberAttribute__ctor.htm\u0000169","ScriptEngine.AddRestrictedHostObject Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_AddRestrictedHostObject.htm\u000085","HostFunctions.setProperty Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_setProperty.htm\u000081","V8ScriptEngine.Compile(String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_7.htm\u0000332","IScriptObject.DeleteProperty Method\u0000html/Overload_Microsoft_ClearScript_IScriptObject_DeleteProperty.htm\u000059","ScriptObject.DeleteProperty Method\u0000html/Overload_Microsoft_ClearScript_ScriptObject_DeleteProperty.htm\u000059","WindowsScriptEngine Constructor\u0000html/M_Microsoft_ClearScript_Windows_WindowsScriptEngine__ctor.htm\u0000285","ScriptEngine.Dispose Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_Dispose.htm\u000073","HostFunctions.typeOf Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_typeOf.htm\u000094","IScriptObject.GetProperty Method\u0000html/Overload_Microsoft_ClearScript_IScriptObject_GetProperty.htm\u000068","VBScriptEngine(String, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor_2.htm\u0000189","V8ScriptEngine.CompileDocument Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument.htm\u0000355","ScriptObject.GetProperty Method\u0000html/Overload_Microsoft_ClearScript_ScriptObject_GetProperty.htm\u000068","JScriptEngine(WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_1.htm\u0000132","V8ScriptEngine.Compile(String, String) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_8.htm\u0000202","StringDocument Properties\u0000html/Properties_T_Microsoft_ClearScript_StringDocument.htm\u0000101","IScriptObject.Item Property\u0000html/Overload_Microsoft_ClearScript_IScriptObject_Item.htm\u000068","HostTypeCollection.AddAssembly Method\u0000html/Overload_Microsoft_ClearScript_HostTypeCollection_AddAssembly.htm\u0000120","V8ScriptEngine.Dispose Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Dispose.htm\u000074","ScriptObject.Item Property\u0000html/Overload_Microsoft_ClearScript_ScriptObject_Item.htm\u000068","IScriptObject.SetProperty Method\u0000html/Overload_Microsoft_ClearScript_IScriptObject_SetProperty.htm\u000070","IArrayBuffer Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm\u0000167","V8CpuProfile Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8CpuProfile.htm\u000087","HostTypeCollection.AddType Method\u0000html/Overload_Microsoft_ClearScript_HostTypeCollection_AddType.htm\u0000102","VBScriptEngine(String, WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor_3.htm\u0000230","ScriptObject.SetProperty Method\u0000html/Overload_Microsoft_ClearScript_ScriptObject_SetProperty.htm\u000070","V8ScriptEngine.Evaluate Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Evaluate.htm\u0000106","IArrayBufferView.InvokeWithDirectAccess Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_IArrayBufferView_InvokeWithDirectAccess.htm\u000091","JScriptEngine(String) Constructor\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_2.htm\u0000149","ScriptUsageAttribute Constructor\u0000html/Overload_Microsoft_ClearScript_ScriptUsageAttribute__ctor.htm\u000060","Node Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8CpuProfile_Node.htm\u0000164","HostTypeCollection Constructor\u0000html/Overload_Microsoft_ClearScript_HostTypeCollection__ctor.htm\u0000144","V8ScriptEngine.Execute Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Execute.htm\u0000106","IArrayBufferView Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm\u0000184","V8ScriptEngine.Compile(String, String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_9.htm\u0000409","IArrayBuffer.InvokeWithDirectAccess Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_IArrayBuffer_InvokeWithDirectAccess.htm\u000094","Microsoft.ClearScript Namespace\u0000html/N_Microsoft_ClearScript.htm\u0000582","V8Runtime.BeginCpuProfile Method\u0000html/Overload_Microsoft_ClearScript_V8_V8Runtime_BeginCpuProfile.htm\u000066","Sample Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8CpuProfile_Sample.htm\u000065","VBScriptEngine(String, String, String, WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor_4.htm\u0000346","V8ScriptEngine.Dispose(Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Dispose.htm\u0000205","V8ScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine__ctor.htm\u0000278","V8Runtime Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8Runtime.htm\u0000168","JScriptEngine(String, WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_3.htm\u0000186","Microsoft.ClearScript.JavaScript Namespace\u0000html/N_Microsoft_ClearScript_JavaScript.htm\u0000136","ISyncInvoker.Invoke Method\u0000html/Overload_Microsoft_ClearScript_Windows_Core_ISyncInvoker_Invoke.htm\u000076","V8Runtime.Compile Method\u0000html/Overload_Microsoft_ClearScript_V8_V8Runtime_Compile.htm\u0000329","V8ScriptEngine.EndCpuProfile Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_EndCpuProfile.htm\u0000159","IDataView Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_IDataView.htm\u0000201","JavaScriptExtensions.ToPromise Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise.htm\u0000245","DefaultScriptUsageAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm\u000080","V8RuntimeConstraints Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm\u0000137","JScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_JScriptEngine.htm\u0000558","JScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor.htm\u0000143","JScriptEngine(String, String, String, WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_4.htm\u0000303","Document Properties\u0000html/Properties_T_Microsoft_ClearScript_Document.htm\u000073","Microsoft.ClearScript.V8 Namespace\u0000html/N_Microsoft_ClearScript_V8.htm\u0000245","V8RuntimeDebuggerEventArgs Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8RuntimeDebuggerEventArgs.htm\u000068","V8ScriptEngine.Evaluate(V8Script) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Evaluate.htm\u0000162","IJavaScriptObject Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_IJavaScriptObject.htm\u0000146","DocumentLoader.MaxCacheSize Property\u0000html/P_Microsoft_ClearScript_DocumentLoader_MaxCacheSize.htm\u0000180","NullSyncInvoker.Invoke Method\u0000html/Overload_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_Invoke.htm\u000077","V8Runtime.CompileDocument Method\u0000html/Overload_Microsoft_ClearScript_V8_V8Runtime_CompileDocument.htm\u0000354","DocumentCategory Properties\u0000html/Properties_T_Microsoft_ClearScript_DocumentCategory.htm\u000075","IScriptEngineException.ExecutionStarted Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_ExecutionStarted.htm\u0000120","V8RuntimeHeapInfo Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm\u0000113","Microsoft.ClearScript.Windows Namespace\u0000html/N_Microsoft_ClearScript_Windows.htm\u0000142","IScriptEngine.DisableTypeRestriction Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DisableTypeRestriction.htm\u0000195","DocumentSettings.AccessFlags Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_AccessFlags.htm\u0000128","VBScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor.htm\u0000143","ITypedArray Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_ITypedArray.htm\u0000208","DocumentInfo Properties\u0000html/Properties_T_Microsoft_ClearScript_DocumentInfo.htm\u000097","V8Runtime.CreateScriptEngine Method\u0000html/Overload_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine.htm\u0000143","V8Script Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8Script.htm\u000068","IScriptEngineException.HResult Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_HResult.htm\u0000114","Microsoft.ClearScript.Windows.Core Namespace\u0000html/N_Microsoft_ClearScript_Windows_Core.htm\u0000107","VBScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_VBScriptEngine.htm\u0000558","DocumentLoader Properties\u0000html/Properties_T_Microsoft_ClearScript_DocumentLoader.htm\u000064","WindowsScriptEngine.Dispose Method\u0000html/Overload_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_Dispose.htm\u000076","IScriptEngine.DocumentSettings Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DocumentSettings.htm\u0000131","DocumentSettings.AsyncLoadCallback Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_AsyncLoadCallback.htm\u0000144","IScriptObject.Engine Property\u0000html/P_Microsoft_ClearScript_IScriptObject_Engine.htm\u0000113","IScriptEngineException.InnerException Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_InnerException.htm\u0000127","ConcurrentPropertyBag Constructor\u0000html/Overload_Microsoft_ClearScript_ConcurrentPropertyBag__ctor.htm\u000090","ITypedArray\u0026lt;T\u0026gt; Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm\u0000217","DocumentSettings Properties\u0000html/Properties_T_Microsoft_ClearScript_DocumentSettings.htm\u0000135","JScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_Windows_JScriptEngine__ctor.htm\u0000125","IScriptEngine.EnableAutoHostVariables Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_EnableAutoHostVariables.htm\u0000183","DefaultScriptUsageAttribute Constructor\u0000html/Overload_Microsoft_ClearScript_DefaultScriptUsageAttribute__ctor.htm\u000062","ModuleCategory Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_ModuleCategory.htm\u000065","DocumentSettings.ContextCallback Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_ContextCallback.htm\u0000225","IScriptEngineException.IsFatal Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_IsFatal.htm\u0000115","IScriptObject.Item(Int32) Property\u0000html/P_Microsoft_ClearScript_IScriptObject_Item.htm\u0000185","WindowsScriptEngine.CheckAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_CheckAccess.htm\u0000130","VBScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_Windows_VBScriptEngine__ctor.htm\u0000125","DocumentInfo Constructor\u0000html/Overload_Microsoft_ClearScript_DocumentInfo__ctor.htm\u000065","Page Not Found\u0000html/PageNotFound.htm\u000066","NoDefaultScriptAccessAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_NoDefaultScriptAccessAttribute.htm\u000087","V8ScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8ScriptEngine.htm\u0000613","IScriptEngineException.Message Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_Message.htm\u0000110","WindowsScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm\u0000553","DocumentSettings.FileNameExtensions Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_FileNameExtensions.htm\u0000141","IScriptEngine.EnableNullResultWrapping Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_EnableNullResultWrapping.htm\u0000212","IScriptObject.Item(String, Object[]) Property\u0000html/P_Microsoft_ClearScript_IScriptObject_Item_1.htm\u0000263","WindowsScriptEngine.CollectGarbage Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_CollectGarbage.htm\u0000154","V8Settings Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8Settings.htm\u000062","NoScriptAccessAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_NoScriptAccessAttribute.htm\u000087","PropertyBag.Keys Property\u0000html/P_Microsoft_ClearScript_PropertyBag_Keys.htm\u0000168","IScriptEngineException.ScriptException Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_ScriptException.htm\u0000127","ScriptEngine.DisableFloatNarrowing Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DisableFloatNarrowing.htm\u0000205","CustomAttributeLoader.Default Property\u0000html/P_Microsoft_ClearScript_CustomAttributeLoader_Default.htm\u0000121","DocumentSettings.LoadCallback Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_LoadCallback.htm\u0000142","IScriptObject.PropertyIndices Property\u0000html/P_Microsoft_ClearScript_IScriptObject_PropertyIndices.htm\u0000137","IScriptEngine.EnforceAnonymousTypeAccess Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_EnforceAnonymousTypeAccess.htm\u0000212","WindowsScriptEngine.Dispose(Boolean) Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_Dispose.htm\u0000210","PropertyBag Properties\u0000html/Properties_T_Microsoft_ClearScript_PropertyBag.htm\u000091","PropertyBag.Values Property\u0000html/P_Microsoft_ClearScript_PropertyBag_Values.htm\u0000168","DocumentSettings.Loader Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_Loader.htm\u0000133","DefaultDocumentLoader.MaxCacheSize Property\u0000html/P_Microsoft_ClearScript_DefaultDocumentLoader_MaxCacheSize.htm\u0000185","ScriptEngine.DisableListIndexTypeRestriction Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DisableListIndexTypeRestriction.htm\u0000212","IScriptObject.PropertyNames Property\u0000html/P_Microsoft_ClearScript_IScriptObject_PropertyNames.htm\u0000139","IScriptEngine.ExposeHostObjectStaticMembers Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_ExposeHostObjectStaticMembers.htm\u0000137","IScriptEngineException.ScriptExceptionAsObject Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_ScriptExceptionAsObject.htm\u0000135","ScriptEngineException.EngineName Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_EngineName.htm\u0000134","WindowsScriptEngine.GetStackTrace Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_GetStackTrace.htm\u0000190","DocumentSettings.SearchPath Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_SearchPath.htm\u0000144","JScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_Core_JScriptEngine.htm\u0000542","DefaultScriptUsageAttribute.Access Property\u0000html/P_Microsoft_ClearScript_DefaultScriptUsageAttribute_Access.htm\u0000117","IArrayBufferView.ArrayBuffer Property\u0000html/P_Microsoft_ClearScript_JavaScript_IArrayBufferView_ArrayBuffer.htm\u0000114","IScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_FileNameExtension.htm\u0000118","ScriptEngine.DisableTypeRestriction Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DisableTypeRestriction.htm\u0000218","ScriptEngineException.ErrorDetails Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_ErrorDetails.htm\u0000137","Document.Contents Property\u0000html/P_Microsoft_ClearScript_Document_Contents.htm\u0000124","WindowsScriptEngine.Interrupt Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_Interrupt.htm\u0000135","IScriptEngine.AccessContext Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_AccessContext.htm\u0000193","DocumentCategory.Json Property\u0000html/P_Microsoft_ClearScript_DocumentCategory_Json.htm\u0000121","IArrayBufferView.Offset Property\u0000html/P_Microsoft_ClearScript_JavaScript_IArrayBufferView_Offset.htm\u0000117","ScriptEngine.DocumentSettings Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DocumentSettings.htm\u0000154","WindowsScriptEngine.VerifyAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_VerifyAccess.htm\u0000109","Document.Encoding Property\u0000html/P_Microsoft_ClearScript_Document_Encoding.htm\u0000143","IArrayBufferView.Size Property\u0000html/P_Microsoft_ClearScript_JavaScript_IArrayBufferView_Size.htm\u0000114","ScriptEngineException.ExecutionStarted Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_ExecutionStarted.htm\u0000138","VBScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_Core_VBScriptEngine.htm\u0000542","DocumentCategory.MaxCacheSize Property\u0000html/P_Microsoft_ClearScript_DocumentCategory_MaxCacheSize.htm\u0000191","ScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptEngine.htm\u0000364","IScriptEngine.AllowReflection Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_AllowReflection.htm\u0000197","ScriptEngine.EnableAutoHostVariables Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_EnableAutoHostVariables.htm\u0000206","Document.Info Property\u0000html/P_Microsoft_ClearScript_Document_Info.htm\u0000119","IArrayBuffer.Size Property\u0000html/P_Microsoft_ClearScript_JavaScript_IArrayBuffer_Size.htm\u0000115","HostSettings Properties\u0000html/Properties_T_Microsoft_ClearScript_HostSettings.htm\u000080","ScriptEngineException.IsFatal Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_IsFatal.htm\u0000133","DocumentCategory.Script Property\u0000html/P_Microsoft_ClearScript_DocumentCategory_Script.htm\u0000121","WindowsScriptEngine Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine__ctor.htm\u0000325","IScriptEngine.ContinuationCallback Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_ContinuationCallback.htm\u0000172","ScriptEngineException Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptEngineException.htm\u0000314","HostTypeCollection Properties\u0000html/Properties_T_Microsoft_ClearScript_HostTypeCollection.htm\u0000116","ScriptEngine.EnableNullResultWrapping Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_EnableNullResultWrapping.htm\u0000235","IJavaScriptObject.Flags Property\u0000html/P_Microsoft_ClearScript_JavaScript_IJavaScriptObject_Flags.htm\u0000109","ScriptEngineException.ScriptException Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_ScriptException.htm\u0000145","HostSettings.AuxiliarySearchPath Property\u0000html/P_Microsoft_ClearScript_HostSettings_AuxiliarySearchPath.htm\u0000171","ImmutableValueAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_ImmutableValueAttribute.htm\u000068","ScriptInterruptedException Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptInterruptedException.htm\u0000153","WindowsScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine.htm\u0000531","ScriptEngine.UseReflectionBindFallback Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_UseReflectionBindFallback.htm\u0000223","IJavaScriptObject.Kind Property\u0000html/P_Microsoft_ClearScript_JavaScript_IJavaScriptObject_Kind.htm\u0000109","ScriptEngine.EnforceAnonymousTypeAccess Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_EnforceAnonymousTypeAccess.htm\u0000235","IScriptEngine.CustomAttributeLoader Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_CustomAttributeLoader.htm\u0000148","IHostWindow Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_IHostWindow.htm\u000062","DocumentInfo.Category Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_Category.htm\u0000133","ScriptEngineException.ScriptExceptionAsObject Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_ScriptExceptionAsObject.htm\u0000153","HostSettings.CustomAttributeLoader Property\u0000html/P_Microsoft_ClearScript_HostSettings_CustomAttributeLoader.htm\u0000164","IPropertyBag Properties\u0000html/Properties_T_Microsoft_ClearScript_IPropertyBag.htm\u0000165","ScriptMemberAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptMemberAttribute.htm\u0000117","ITypedArray.Length Property\u0000html/P_Microsoft_ClearScript_JavaScript_ITypedArray_Length.htm\u0000112","ScriptEngine.VoidResultValue Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_VoidResultValue.htm\u0000219","IWindowsScriptObject Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_IWindowsScriptObject.htm\u0000132","ScriptEngine.ExposeHostObjectStaticMembers Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_ExposeHostObjectStaticMembers.htm\u0000160","DocumentInfo.ContextCallback Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_ContextCallback.htm\u0000224","IScriptEngine.DefaultAccess Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DefaultAccess.htm\u0000197","HostSettings.UseAssemblyTable Property\u0000html/P_Microsoft_ClearScript_HostSettings_UseAssemblyTable.htm\u0000208","ModuleCategory.CommonJS Property\u0000html/P_Microsoft_ClearScript_JavaScript_ModuleCategory_CommonJS.htm\u0000124","ScriptInterruptedException.EngineName Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_EngineName.htm\u0000134","ScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_FileNameExtension.htm\u0000131","ScriptObject Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptObject.htm\u0000100","IScriptEngine.FormatCode Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_FormatCode.htm\u0000170","IScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_IScriptEngine.htm\u0000348","IScriptEngineException.EngineName Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_EngineName.htm\u0000116","IScriptEngine.DisableDynamicBinding Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DisableDynamicBinding.htm\u0000172","ScriptUsageAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptUsageAttribute.htm\u000080","ModuleCategory.Standard Property\u0000html/P_Microsoft_ClearScript_JavaScript_ModuleCategory_Standard.htm\u0000125","ScriptInterruptedException.ErrorDetails Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_ErrorDetails.htm\u0000137","IScriptEngine.Global Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_Global.htm\u0000157","ScriptEngine.FormatCode Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_FormatCode.htm\u0000193","IScriptEngine.DisableExtensionMethods Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DisableExtensionMethods.htm\u0000124","IScriptEngineException Properties\u0000html/Properties_T_Microsoft_ClearScript_IScriptEngineException.htm\u0000195","PropertyBag.Comparer Property\u0000html/P_Microsoft_ClearScript_PropertyBag_Comparer.htm\u0000146","IScriptEngine.HostData Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_HostData.htm\u0000134","V8CpuProfile.RootNode Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_RootNode.htm\u0000128","ScriptInterruptedException.ExecutionStarted Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_ExecutionStarted.htm\u0000138","IScriptEngineException.ErrorDetails Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_ErrorDetails.htm\u0000119","ScriptEngine.Global Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_Global.htm\u0000170","IScriptObject Properties\u0000html/Properties_T_Microsoft_ClearScript_IScriptObject.htm\u0000100","IScriptEngine.DisableFloatNarrowing Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DisableFloatNarrowing.htm\u0000182","IScriptEngine.Name Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_Name.htm\u0000114","ScriptInterruptedException.IsFatal Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_IsFatal.htm\u0000133","V8RuntimeHeapInfo.TotalHeapSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalHeapSize.htm\u0000122","PropertyBag.Item Property\u0000html/P_Microsoft_ClearScript_PropertyBag_Item.htm\u0000209","V8CpuProfile.Samples Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Samples.htm\u0000162","ScriptEngine.HostData Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_HostData.htm\u0000157","V8ScriptEngine.Global Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_Global.htm\u0000181","IScriptEngine.DisableListIndexTypeRestriction Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DisableListIndexTypeRestriction.htm\u0000189","V8RuntimeHeapInfo.TotalHeapSizeExecutable Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalHeapSizeExecutable.htm\u0000124","ScriptInterruptedException.ScriptException Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_ScriptException.htm\u0000145","IScriptEngine.NullExportValue Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_NullExportValue.htm\u0000206","WindowsScriptEngine.Script Property\u0000html/P_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_Script.htm\u0000174","ScriptEngine.Name Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_Name.htm\u0000132","V8CpuProfile.Sample.Node Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Sample_Node.htm\u0000129","V8RuntimeHeapInfo.TotalPhysicalSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalPhysicalSize.htm\u0000123","IScriptEngine.Script Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_Script.htm\u0000147","DocumentContextCallback Delegate\u0000html/T_Microsoft_ClearScript_DocumentContextCallback.htm\u0000183","WindowsScriptEngine.SyncInvoker Property\u0000html/P_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_SyncInvoker.htm\u0000128","ScriptInterruptedException.ScriptExceptionAsObject Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_ScriptExceptionAsObject.htm\u0000153","V8ScriptEngine.MaxRuntimeHeapSize Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_MaxRuntimeHeapSize.htm\u0000286","V8CpuProfile.Sample.Timestamp Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Sample_Timestamp.htm\u0000147","V8RuntimeHeapInfo.UsedHeapSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_UsedHeapSize.htm\u0000122","IHostWindow.OwnerHandle Property\u0000html/P_Microsoft_ClearScript_Windows_IHostWindow_OwnerHandle.htm\u0000121","ScriptMemberAttribute.Flags Property\u0000html/P_Microsoft_ClearScript_ScriptMemberAttribute_Flags.htm\u0000133","IScriptEngine.UndefinedImportValue Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_UndefinedImportValue.htm\u0000188","DocumentFlags Enumeration\u0000html/T_Microsoft_ClearScript_DocumentFlags.htm\u0000204","ScriptEngine.AccessContext Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_AccessContext.htm\u0000216","V8ScriptEngine.MaxRuntimeStackUsage Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_MaxRuntimeStackUsage.htm\u0000216","ScriptEngine.NullExportValue Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_NullExportValue.htm\u0000229","V8CpuProfile.StartTimestamp Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_StartTimestamp.htm\u0000147","StringDocument.Contents Property\u0000html/P_Microsoft_ClearScript_StringDocument_Contents.htm\u0000144","V8Runtime.CpuProfileSampleInterval Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_CpuProfileSampleInterval.htm\u0000165","IScriptEngine.UseReflectionBindFallback Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_UseReflectionBindFallback.htm\u0000200","DocumentInfo.Flags Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_Flags.htm\u0000152","ScriptEngine.Script Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_Script.htm\u0000160","V8ScriptEngine.RuntimeHeapSizeSampleInterval Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_RuntimeHeapSizeSampleInterval.htm\u0000157","ScriptEngine.AllowReflection Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_AllowReflection.htm\u0000220","V8Runtime.DocumentSettings Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_DocumentSettings.htm\u0000137","StringDocument.Encoding Property\u0000html/P_Microsoft_ClearScript_StringDocument_Encoding.htm\u0000136","V8RuntimeConstraints.HeapExpansionMultiplier Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_HeapExpansionMultiplier.htm\u0000225","DocumentInfo Structure\u0000html/T_Microsoft_ClearScript_DocumentInfo.htm\u0000311","IScriptEngine.VoidResultValue Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_VoidResultValue.htm\u0000196","DocumentInfo.Name Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_Name.htm\u0000145","V8ScriptEngine.RuntimeHeapSizeViolationPolicy Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_RuntimeHeapSizeViolationPolicy.htm\u0000144","ScriptEngine.UndefinedImportValue Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_UndefinedImportValue.htm\u0000211","ScriptEngine.ContinuationCallback Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_ContinuationCallback.htm\u0000195","StringDocument.Info Property\u0000html/P_Microsoft_ClearScript_StringDocument_Info.htm\u0000127","V8Runtime.EnableInterruptPropagation Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_EnableInterruptPropagation.htm\u0000203","V8RuntimeConstraints.MaxArrayBufferAllocation Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxArrayBufferAllocation.htm\u0000186","DocumentLoadCallback Delegate\u0000html/T_Microsoft_ClearScript_DocumentLoadCallback.htm\u0000153","DocumentInfo.SourceMapUri Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_SourceMapUri.htm\u0000140","V8ScriptEngine.Script Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_Script.htm\u0000171","StringDocument.StringContents Property\u0000html/P_Microsoft_ClearScript_StringDocument_StringContents.htm\u0000118","ModuleCategory Class\u0000html/T_Microsoft_ClearScript_JavaScript_ModuleCategory.htm\u0000142","ScriptEngine.Current Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_Current.htm\u0000174","V8Runtime.FormatCode Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_FormatCode.htm\u0000176","DocumentInfo.Uri Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_Uri.htm\u0000129","V8RuntimeConstraints.MaxExecutableSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxExecutableSize.htm\u0000282","V8CpuProfile.EndTimestamp Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_EndTimestamp.htm\u0000147","V8ScriptEngine.SuppressExtensionMethodEnumeration Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_SuppressExtensionMethodEnumeration.htm\u0000208","V8Runtime.HeapSizeSampleInterval Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_HeapSizeSampleInterval.htm\u0000155","ScriptEngine.CustomAttributeLoader Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_CustomAttributeLoader.htm\u0000171","DocumentLoader.Default Property\u0000html/P_Microsoft_ClearScript_DocumentLoader_Default.htm\u0000119","DocumentLoader Class\u0000html/T_Microsoft_ClearScript_DocumentLoader.htm\u0000291","V8RuntimeConstraints.MaxNewSpaceSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxNewSpaceSize.htm\u0000193","V8CpuProfile.Name Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Name.htm\u0000116","V8ScriptEngine.SuppressInstanceMethodEnumeration Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_SuppressInstanceMethodEnumeration.htm\u0000189","V8Runtime.HeapSizeViolationPolicy Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_HeapSizeViolationPolicy.htm\u0000142","ScriptEngine.DefaultAccess Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DefaultAccess.htm\u0000220","NoDefaultScriptAccessAttribute Class\u0000html/T_Microsoft_ClearScript_NoDefaultScriptAccessAttribute.htm\u0000552","V8RuntimeConstraints.MaxOldSpaceSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxOldSpaceSize.htm\u0000193","V8CpuProfile.Node.BailoutReason Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_BailoutReason.htm\u0000130","V8CpuProfile Class\u0000html/T_Microsoft_ClearScript_V8_V8CpuProfile.htm\u0000281","V8Script.DocumentInfo Property\u0000html/P_Microsoft_ClearScript_V8_V8Script_DocumentInfo.htm\u0000117","JScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_Windows_JScriptEngine_FileNameExtension.htm\u0000153","DocumentSettings Class\u0000html/T_Microsoft_ClearScript_DocumentSettings.htm\u0000400","V8Runtime.MaxHeapSize Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_MaxHeapSize.htm\u0000284","ScriptEngine.DisableDynamicBinding Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DisableDynamicBinding.htm\u0000195","HostTypeCollection Class\u0000html/T_Microsoft_ClearScript_HostTypeCollection.htm\u0000822","V8Script.Name Property\u0000html/P_Microsoft_ClearScript_V8_V8Script_Name.htm\u0000178","V8CpuProfileFlags Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8CpuProfileFlags.htm\u0000131","V8RuntimeConstraints.MaxYoungSpaceSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxYoungSpaceSize.htm\u0000251","VBScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_Windows_VBScriptEngine_FileNameExtension.htm\u0000151","V8CpuProfile.Node.ChildNodes Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_ChildNodes.htm\u0000167","V8Runtime.MaxStackUsage Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_MaxStackUsage.htm\u0000211","ScriptEngine.DisableExtensionMethods Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DisableExtensionMethods.htm\u0000147","ScriptMemberAttribute.Name Property\u0000html/P_Microsoft_ClearScript_ScriptMemberAttribute_Name.htm\u0000203","V8RuntimeDebuggerEventArgs.Name Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeDebuggerEventArgs_Name.htm\u0000123","NoScriptAccessAttribute Class\u0000html/T_Microsoft_ClearScript_NoScriptAccessAttribute.htm\u0000604","WindowsScriptEngine.Dispatcher Property\u0000html/P_Microsoft_ClearScript_Windows_WindowsScriptEngine_Dispatcher.htm\u0000122","V8Settings.EnableTopLevelAwait Property\u0000html/P_Microsoft_ClearScript_V8_V8Settings_EnableTopLevelAwait.htm\u0000308","V8CpuProfile.Node.ColumnNumber Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_ColumnNumber.htm\u0000141","V8Runtime.Name Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_Name.htm\u0000120","ScriptObject.Engine Property\u0000html/P_Microsoft_ClearScript_ScriptObject_Engine.htm\u0000126","V8CpuProfile.Node Class\u0000html/T_Microsoft_ClearScript_V8_V8CpuProfile_Node.htm\u0000352","V8RuntimeDebuggerEventArgs.Port Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeDebuggerEventArgs_Port.htm\u0000118","ValueRef Class\u0000html/T_Microsoft_ClearScript_ValueRef.htm\u0000133","ImmutableValueAttribute Class\u0000html/T_Microsoft_ClearScript_ImmutableValueAttribute.htm\u0000451","ClearScript Library Reference\u0000html/R_Project_Reference.htm\u0000149","V8Settings.GlobalFlags Property\u0000html/P_Microsoft_ClearScript_V8_V8Settings_GlobalFlags.htm\u0000161","V8CpuProfile.Node.FunctionName Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_FunctionName.htm\u0000123","V8ScriptEngine.CpuProfileSampleInterval Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_CpuProfileSampleInterval.htm\u0000166","V8RuntimeHeapInfo.HeapSizeLimit Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_HeapSizeLimit.htm\u0000122","DynamicHostObject Class\u0000html/T_Microsoft_ClearScript_DynamicHostObject.htm\u0000795","ScriptObject.Item(Int32) Property\u0000html/P_Microsoft_ClearScript_ScriptObject_Item.htm\u0000201","ValueRef\u0026lt;T\u0026gt; Class\u0000html/T_Microsoft_ClearScript_ValueRef_1.htm\u0000312","V8CpuProfile.Node.HitLine Structure\u0000html/T_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLine.htm\u0000258","JScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_Windows_Core_JScriptEngine_FileNameExtension.htm\u0000157","V8CpuProfile.Node.HitCount Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitCount.htm\u0000144","V8ScriptEngine.EnableRuntimeInterruptPropagation Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_EnableRuntimeInterruptPropagation.htm\u0000205","V8RuntimeHeapInfo.TotalAvailableSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalAvailableSize.htm\u0000123","EventConnection Class\u0000html/T_Microsoft_ClearScript_EventConnection.htm\u0000247","VBScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_Windows_Core_VBScriptEngine_FileNameExtension.htm\u0000155","ScriptObject.Item(String, Object[]) Property\u0000html/P_Microsoft_ClearScript_ScriptObject_Item_1.htm\u0000281","PropertyBag Class\u0000html/T_Microsoft_ClearScript_PropertyBag.htm\u0000631","VoidResult Class\u0000html/T_Microsoft_ClearScript_VoidResult.htm\u0000284","V8RuntimeHeapInfo.TotalExternalSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalExternalSize.htm\u0000123","V8ScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_FileNameExtension.htm\u0000153","V8CpuProfile.Node.HitLines Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLines.htm\u0000171","V8CpuProfile.Sample Class\u0000html/T_Microsoft_ClearScript_V8_V8CpuProfile_Sample.htm\u0000249","WindowsScriptEngine.Global Property\u0000html/P_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_Global.htm\u0000184","ScriptObject.PropertyIndices Property\u0000html/P_Microsoft_ClearScript_ScriptObject_PropertyIndices.htm\u0000150","ScriptAccess Enumeration\u0000html/T_Microsoft_ClearScript_ScriptAccess.htm\u0000193","ISyncInvoker Interface\u0000html/T_Microsoft_ClearScript_Windows_Core_ISyncInvoker.htm\u0000168","V8CpuProfile.Node.LineNumber Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_LineNumber.htm\u0000141","V8GlobalFlags Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8GlobalFlags.htm\u0000189","EventConnection\u0026lt;T\u0026gt; Class\u0000html/T_Microsoft_ClearScript_EventConnection_1.htm\u0000289","AsyncDocumentLoadCallback Delegate\u0000html/T_Microsoft_ClearScript_AsyncDocumentLoadCallback.htm\u0000221","WindowsScriptEngine.HostWindow Property\u0000html/P_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_HostWindow.htm\u0000151","ScriptObject.PropertyNames Property\u0000html/P_Microsoft_ClearScript_ScriptObject_PropertyNames.htm\u0000152","V8CpuProfile.Node.NodeId Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_NodeId.htm\u0000146","IPropertyBag Interface\u0000html/T_Microsoft_ClearScript_IPropertyBag.htm\u0000724","ScriptUsageAttribute.Access Property\u0000html/P_Microsoft_ClearScript_ScriptUsageAttribute_Access.htm\u0000117","EventSource Class\u0000html/T_Microsoft_ClearScript_EventSource.htm\u0000240","V8CpuProfile.Node.ScriptId Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_ScriptId.htm\u0000141","IScriptableObject Interface\u0000html/T_Microsoft_ClearScript_IScriptableObject.htm\u0000117","V8CpuProfile.Node.ScriptName Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_ScriptName.htm\u0000128","EventSource\u0026lt;T\u0026gt; Class\u0000html/T_Microsoft_ClearScript_EventSource_1.htm\u0000276","ConcurrentPropertyBag Class\u0000html/T_Microsoft_ClearScript_ConcurrentPropertyBag.htm\u0000507","ContinuationCallback Delegate\u0000html/T_Microsoft_ClearScript_ContinuationCallback.htm\u0000120","CustomAttributeLoader Class\u0000html/T_Microsoft_ClearScript_CustomAttributeLoader.htm\u0000247","ScriptEngine Class\u0000html/T_Microsoft_ClearScript_ScriptEngine.htm\u00001727","V8Runtime Class\u0000html/T_Microsoft_ClearScript_V8_V8Runtime.htm\u00001413","IScriptEngine Interface\u0000html/T_Microsoft_ClearScript_IScriptEngine.htm\u00001514","JScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_Core_JScriptEngine.htm\u00002349","IScriptEngineException Interface\u0000html/T_Microsoft_ClearScript_IScriptEngineException.htm\u0000245","DefaultDocumentLoader Class\u0000html/T_Microsoft_ClearScript_DefaultDocumentLoader.htm\u0000341","V8RuntimeConstraints Class\u0000html/T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm\u0000331","ScriptEngineException Class\u0000html/T_Microsoft_ClearScript_ScriptEngineException.htm\u0000683","NullSyncInvoker Class\u0000html/T_Microsoft_ClearScript_Windows_Core_NullSyncInvoker.htm\u0000330","ExtendedHostFunctions Class\u0000html/T_Microsoft_ClearScript_ExtendedHostFunctions.htm\u00001281","V8RuntimeDebuggerEventArgs Class\u0000html/T_Microsoft_ClearScript_V8_V8RuntimeDebuggerEventArgs.htm\u0000266","IScriptObject Interface\u0000html/T_Microsoft_ClearScript_IScriptObject.htm\u0000286","ScriptInterruptedException Class\u0000html/T_Microsoft_ClearScript_ScriptInterruptedException.htm\u0000343","Extensions Class\u0000html/T_Microsoft_ClearScript_Extensions.htm\u0000316","DefaultScriptUsageAttribute Class\u0000html/T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm\u0000506","V8RuntimeFlags Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8RuntimeFlags.htm\u0000179","V8RuntimeHeapInfo Class\u0000html/T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm\u0000287","Document Class\u0000html/T_Microsoft_ClearScript_Document.htm\u0000268","IArrayBuffer Interface\u0000html/T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm\u0000523","V8RuntimeViolationPolicy Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8RuntimeViolationPolicy.htm\u0000208","ScriptMemberAttribute Class\u0000html/T_Microsoft_ClearScript_ScriptMemberAttribute.htm\u0000632","DocumentAccessFlags Enumeration\u0000html/T_Microsoft_ClearScript_DocumentAccessFlags.htm\u0000226","ScriptMemberFlags Enumeration\u0000html/T_Microsoft_ClearScript_ScriptMemberFlags.htm\u0000213","V8Script Class\u0000html/T_Microsoft_ClearScript_V8_V8Script.htm\u0000276","HostFunctions Class\u0000html/T_Microsoft_ClearScript_HostFunctions.htm\u0000951","IArrayBufferView Interface\u0000html/T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm\u0000537","DocumentCategory Class\u0000html/T_Microsoft_ClearScript_DocumentCategory.htm\u0000253","HostItemFlags Enumeration\u0000html/T_Microsoft_ClearScript_HostItemFlags.htm\u0000239","HostSettings Class\u0000html/T_Microsoft_ClearScript_HostSettings.htm\u0000156","VBScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_Core_VBScriptEngine.htm\u00002328","IDataView Interface\u0000html/T_Microsoft_ClearScript_JavaScript_IDataView.htm\u0000591","ScriptObject Class\u0000html/T_Microsoft_ClearScript_ScriptObject.htm\u0000968","IJavaScriptObject Interface\u0000html/T_Microsoft_ClearScript_JavaScript_IJavaScriptObject.htm\u0000398","ScriptUsageAttribute Class\u0000html/T_Microsoft_ClearScript_ScriptUsageAttribute.htm\u0000560","ITypedArray Interface\u0000html/T_Microsoft_ClearScript_JavaScript_ITypedArray.htm\u0000604","StringDocument Class\u0000html/T_Microsoft_ClearScript_StringDocument.htm\u0000300","Undefined Class\u0000html/T_Microsoft_ClearScript_Undefined.htm\u0000259","V8CacheKind Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8CacheKind.htm\u0000182","V8CacheResult Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8CacheResult.htm\u0000210","ITypedArray\u0026lt;T\u0026gt; Interface\u0000html/T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm\u0000753","V8ScriptEngine Class\u0000html/T_Microsoft_ClearScript_V8_V8ScriptEngine.htm\u00003270","WindowsScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine.htm\u00002245","IHostWindow Interface\u0000html/T_Microsoft_ClearScript_Windows_IHostWindow.htm\u0000135","IWindowsScriptObject Interface\u0000html/T_Microsoft_ClearScript_Windows_IWindowsScriptObject.htm\u0000397","JavaScriptExtensions Class\u0000html/T_Microsoft_ClearScript_JavaScript_JavaScriptExtensions.htm\u0000379","V8ScriptEngineFlags Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8ScriptEngineFlags.htm\u0000708","JavaScriptObjectFlags Enumeration\u0000html/T_Microsoft_ClearScript_JavaScript_JavaScriptObjectFlags.htm\u0000171","V8Settings Class\u0000html/T_Microsoft_ClearScript_V8_V8Settings.htm\u0000140","JavaScriptObjectKind Enumeration\u0000html/T_Microsoft_ClearScript_JavaScript_JavaScriptObjectKind.htm\u0000190","JScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_JScriptEngine.htm\u00002375","Nothing Class\u0000html/T_Microsoft_ClearScript_Windows_Nothing.htm\u0000283","VBScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_VBScriptEngine.htm\u00002354","WindowsScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm\u00002294","WindowsScriptEngineFlags Enumeration\u0000html/T_Microsoft_ClearScript_Windows_WindowsScriptEngineFlags.htm\u0000427"] \ No newline at end of file +["Nothing.Value Field\u0000html/F_Microsoft_ClearScript_Windows_Nothing_Value.htm\u000083","ClearScript Library - Search\u0000search.html\u000011","Nothing Fields\u0000html/Fields_T_Microsoft_ClearScript_Windows_Nothing.htm\u000034","ClearScript Library - Redirect\u0000index.html\u000018","NullSyncInvoker Fields\u0000html/Fields_T_Microsoft_ClearScript_Windows_Core_NullSyncInvoker.htm\u000037","V8CpuProfile.Node.HitLine.LineNumber Field\u0000html/F_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLine_LineNumber.htm\u000080","V8CpuProfile.Node.HitLine.HitCount Field\u0000html/F_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLine_HitCount.htm\u0000107","General Error\u0000html/GeneralError.htm\u000032","ValueRef\u0026lt;T\u0026gt;.Value Field\u0000html/F_Microsoft_ClearScript_ValueRef_1_Value.htm\u000077","PropertyBag Events\u0000html/Events_T_Microsoft_ClearScript_PropertyBag.htm\u000042","V8Runtime.DebuggerConnected Event\u0000html/E_Microsoft_ClearScript_V8_V8Runtime_DebuggerConnected.htm\u0000147","ConcurrentPropertyBag Events\u0000html/Events_T_Microsoft_ClearScript_ConcurrentPropertyBag.htm\u000049","NullSyncInvoker.Instance Field\u0000html/F_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_Instance.htm\u000087","CustomAttributeLoader Methods\u0000html/Methods_T_Microsoft_ClearScript_CustomAttributeLoader.htm\u0000149","VoidResult.Value Field\u0000html/F_Microsoft_ClearScript_VoidResult_Value.htm\u000080","V8Runtime.DebuggerDisconnected Event\u0000html/E_Microsoft_ClearScript_V8_V8Runtime_DebuggerDisconnected.htm\u0000147","Undefined Fields\u0000html/Fields_T_Microsoft_ClearScript_Undefined.htm\u000033","PropertyBag.PropertyChanged Event\u0000html/E_Microsoft_ClearScript_PropertyBag_PropertyChanged.htm\u0000135","VoidResult Fields\u0000html/Fields_T_Microsoft_ClearScript_VoidResult.htm\u000034","ScriptInterruptedException Events\u0000html/Events_T_Microsoft_ClearScript_ScriptInterruptedException.htm\u000053","V8Runtime Events\u0000html/Events_T_Microsoft_ClearScript_V8_V8Runtime.htm\u000047","HostTypeCollection Events\u0000html/Events_T_Microsoft_ClearScript_HostTypeCollection.htm\u000049","ValueRef\u0026lt;T\u0026gt; Fields\u0000html/Fields_T_Microsoft_ClearScript_ValueRef_1.htm\u000039","ScriptEngineException Events\u0000html/Events_T_Microsoft_ClearScript_ScriptEngineException.htm\u000053","HitLine Fields\u0000html/Fields_T_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLine.htm\u000048","DocumentInfo Methods\u0000html/Methods_T_Microsoft_ClearScript_DocumentInfo.htm\u0000135","EventSource Methods\u0000html/Methods_T_Microsoft_ClearScript_EventSource.htm\u0000147","DefaultScriptUsageAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm\u0000197","DocumentSettings Methods\u0000html/Methods_T_Microsoft_ClearScript_DocumentSettings.htm\u0000207","DocumentCategory Methods\u0000html/Methods_T_Microsoft_ClearScript_DocumentCategory.htm\u0000134","ConcurrentPropertyBag Methods\u0000html/Methods_T_Microsoft_ClearScript_ConcurrentPropertyBag.htm\u0000259","ImmutableValueAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_ImmutableValueAttribute.htm\u0000196","IScriptObject Methods\u0000html/Methods_T_Microsoft_ClearScript_IScriptObject.htm\u0000149","DocumentLoader Methods\u0000html/Methods_T_Microsoft_ClearScript_DocumentLoader.htm\u0000169","DefaultDocumentLoader Methods\u0000html/Methods_T_Microsoft_ClearScript_DefaultDocumentLoader.htm\u0000218","EventConnection Methods\u0000html/Methods_T_Microsoft_ClearScript_EventConnection.htm\u0000146","Undefined.Value Field\u0000html/F_Microsoft_ClearScript_Undefined_Value.htm\u000079","IScriptableObject Methods\u0000html/Methods_T_Microsoft_ClearScript_IScriptableObject.htm\u000039","Extensions Methods\u0000html/Methods_T_Microsoft_ClearScript_Extensions.htm\u0000202","EventConnection\u0026lt;T\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_EventConnection_1.htm\u0000155","Document Methods\u0000html/Methods_T_Microsoft_ClearScript_Document.htm\u0000133","EventSource\u0026lt;T\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_EventSource_1.htm\u0000150","IJavaScriptObject Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_IJavaScriptObject.htm\u0000205","IArrayBufferView Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm\u0000423","HostTypeCollection Methods\u0000html/Methods_T_Microsoft_ClearScript_HostTypeCollection.htm\u0000411","NoScriptAccessAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_NoScriptAccessAttribute.htm\u0000197","ScriptEngineException Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptEngineException.htm\u0000189","PropertyBag Methods\u0000html/Methods_T_Microsoft_ClearScript_PropertyBag.htm\u0000216","NoDefaultScriptAccessAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_NoDefaultScriptAccessAttribute.htm\u0000198","IPropertyBag Methods\u0000html/Methods_T_Microsoft_ClearScript_IPropertyBag.htm\u0000277","ITypedArray Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_ITypedArray.htm\u0000476","DynamicHostObject Methods\u0000html/Methods_T_Microsoft_ClearScript_DynamicHostObject.htm\u0000679","ScriptInterruptedException Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptInterruptedException.htm\u0000189","IArrayBuffer Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm\u0000434","HostFunctions Methods\u0000html/Methods_T_Microsoft_ClearScript_HostFunctions.htm\u0000828","StringDocument Methods\u0000html/Methods_T_Microsoft_ClearScript_StringDocument.htm\u0000134","JavaScriptExtensions Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_JavaScriptExtensions.htm\u0000264","IScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_IScriptEngine.htm\u00001129","IV8FastHostDynamicProperties Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties.htm\u0000136","V8FastHostMethodOperations\u0026lt;TObject, TMethod\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2.htm\u0000166","Undefined Methods\u0000html/Methods_T_Microsoft_ClearScript_Undefined.htm\u0000133","IDataView Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_IDataView.htm\u0000476","IV8FastAsyncEnumerator Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastAsyncEnumerator.htm\u000077","Node Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8CpuProfile_Node.htm\u0000136","Sample Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8CpuProfile_Sample.htm\u0000136","IV8FastEnumerator Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastEnumerator.htm\u000074","V8FastHostObjectOperations\u0026lt;TObject\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1.htm\u0000152","ITypedArray\u0026lt;T\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm\u0000579","IV8FastHostFunctionOperations Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunctionOperations.htm\u0000282","ExtendedHostFunctions Methods\u0000html/Methods_T_Microsoft_ClearScript_ExtendedHostFunctions.htm\u00001169","V8Script Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8Script.htm\u0000144","ScriptMemberAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptMemberAttribute.htm\u0000196","HitLine Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLine.htm\u0000140","IV8FastHostObjectOperations Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations.htm\u0000199","V8RuntimeDebuggerEventArgs Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8RuntimeDebuggerEventArgs.htm\u0000137","V8FastResult Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastResult.htm\u0000386","IV8FastHostMethodOperations Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethodOperations.htm\u0000282","ScriptUsageAttribute Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptUsageAttribute.htm\u0000196","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1.htm\u0000159","VoidResult Methods\u0000html/Methods_T_Microsoft_ClearScript_VoidResult.htm\u0000134","V8FastHostDynamicObject\u0026lt;TObject\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1.htm\u0000257","ValueRef\u0026lt;T\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_ValueRef_1.htm\u0000137","ScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptEngine.htm\u00001248","V8FastHostObject\u0026lt;TObject\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObject_1.htm\u0000150","DocumentLoader Constructor\u0000html/M_Microsoft_ClearScript_DocumentLoader__ctor.htm\u000071","IWindowsScriptObject Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_IWindowsScriptObject.htm\u0000215","Nothing Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Nothing.htm\u0000134","V8FastHostMethod\u0026lt;TObject\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1.htm\u0000158","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt; Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1.htm\u0000537","DefaultDocumentLoader Constructor\u0000html/M_Microsoft_ClearScript_DefaultDocumentLoader__ctor.htm\u000072","ISyncInvoker Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Core_ISyncInvoker.htm\u000089","ScriptObject Methods\u0000html/Methods_T_Microsoft_ClearScript_ScriptObject.htm\u0000785","DocumentLoader.DiscardCachedDocuments Method\u0000html/M_Microsoft_ClearScript_DocumentLoader_DiscardCachedDocuments.htm\u000088","V8RuntimeHeapInfo Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm\u0000136","V8CpuProfile Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8CpuProfile.htm\u0000158","DocumentInfo(Uri) Constructor\u0000html/M_Microsoft_ClearScript_DocumentInfo__ctor_1.htm\u0000105","DefaultDocumentLoader.CacheDocument Method\u0000html/M_Microsoft_ClearScript_DefaultDocumentLoader_CacheDocument.htm\u0000198","CustomAttributeLoader.LoadCustomAttributes\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_CustomAttributeLoader_LoadCustomAttributes__1.htm\u0000292","ConcurrentPropertyBag(Boolean) Constructor\u0000html/M_Microsoft_ClearScript_ConcurrentPropertyBag__ctor_1.htm\u0000135","DefaultScriptUsageAttribute(ScriptAccess) Constructor\u0000html/M_Microsoft_ClearScript_DefaultScriptUsageAttribute__ctor_1.htm\u0000113","NullSyncInvoker Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Core_NullSyncInvoker.htm\u0000199","DocumentSettings.AddSystemDocument(String, String) Method\u0000html/M_Microsoft_ClearScript_DocumentSettings_AddSystemDocument_3.htm\u0000182","DocumentSettings.AddSystemDocument(String, DocumentCategory, String) Method\u0000html/M_Microsoft_ClearScript_DocumentSettings_AddSystemDocument_1.htm\u0000219","Document Constructor\u0000html/M_Microsoft_ClearScript_Document__ctor.htm\u000070","DocumentSettings.AddSystemDocument(String, Document) Method\u0000html/M_Microsoft_ClearScript_DocumentSettings_AddSystemDocument.htm\u0000192","DefaultScriptUsageAttribute Constructor\u0000html/M_Microsoft_ClearScript_DefaultScriptUsageAttribute__ctor.htm\u000075","V8FastHostFunction Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction.htm\u0000191","DynamicHostObject Constructor\u0000html/M_Microsoft_ClearScript_DynamicHostObject__ctor.htm\u000072","V8Runtime Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8Runtime.htm\u0000928","ConcurrentPropertyBag(Boolean, IEqualityComparer\u0026lt;String\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_ConcurrentPropertyBag__ctor_2.htm\u0000176","DocumentLoader.CacheDocument Method\u0000html/M_Microsoft_ClearScript_DocumentLoader_CacheDocument.htm\u0000196","DocumentSettings Constructor\u0000html/M_Microsoft_ClearScript_DocumentSettings__ctor.htm\u000071","V8FastArg Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastArg.htm\u0000609","DocumentLoader.LoadDocument Method\u0000html/M_Microsoft_ClearScript_DocumentLoader_LoadDocument.htm\u0000352","EventConnection.disconnect Method\u0000html/M_Microsoft_ClearScript_EventConnection_disconnect.htm\u000080","DefaultDocumentLoader.GetCachedDocument Method\u0000html/M_Microsoft_ClearScript_DefaultDocumentLoader_GetCachedDocument.htm\u0000144","DocumentLoader.GetCachedDocument Method\u0000html/M_Microsoft_ClearScript_DocumentLoader_GetCachedDocument.htm\u0000142","DocumentInfo(String) Constructor\u0000html/M_Microsoft_ClearScript_DocumentInfo__ctor.htm\u0000105","ExtendedHostFunctions.arrType\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_arrType__1.htm\u0000185","EventSource\u0026lt;T\u0026gt;.connect Method\u0000html/M_Microsoft_ClearScript_EventSource_1_connect.htm\u0000143","V8RuntimeConstraints Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm\u0000135","ExtendedHostFunctions.typeLibEnums\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_typeLibEnums__1.htm\u0000257","ExtendedHostFunctions.lib(HostTypeCollection, String[]) Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_lib.htm\u0000407","Extensions.ToHostType(Type) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToHostType.htm\u0000225","CustomAttributeLoader Constructor\u0000html/M_Microsoft_ClearScript_CustomAttributeLoader__ctor.htm\u000072","Extensions.ToRestrictedHostObject(Object, Type) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToRestrictedHostObject.htm\u0000279","DefaultDocumentLoader.DiscardCachedDocuments Method\u0000html/M_Microsoft_ClearScript_DefaultDocumentLoader_DiscardCachedDocuments.htm\u000090","Extensions.ToRestrictedHostObject\u0026lt;T\u0026gt;(T) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToRestrictedHostObject__1.htm\u0000269","HostFunctions.func(Int32, Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_func.htm\u0000253","ExtendedHostFunctions.type(Type) Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_type_2.htm\u0000196","DynamicHostObject.HasMember Method\u0000html/M_Microsoft_ClearScript_DynamicHostObject_HasMember.htm\u0000179","HostFunctions.del\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_del__1.htm\u0000389","DocumentSettings.AddSystemDocument(String, DocumentCategory, String, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_DocumentSettings_AddSystemDocument_2.htm\u0000257","WindowsScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine.htm\u00001583","Extensions.ToHostType(Type, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToHostType_1.htm\u0000263","ExtendedHostFunctions.comType Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_comType.htm\u0000330","HostFunctions.asType\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_asType__1.htm\u0000287","ExtendedHostFunctions.type(String, String, Object[]) Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_type_1.htm\u0000455","DocumentLoader.LoadDocumentAsync Method\u0000html/M_Microsoft_ClearScript_DocumentLoader_LoadDocumentAsync.htm\u0000351","ExtendedHostFunctions.lib(String[]) Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_lib_1.htm\u0000334","ExtendedHostFunctions.newComObj Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_newComObj.htm\u0000335","IHostWindow Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_IHostWindow.htm\u000035","VBScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_VBScriptEngine.htm\u00001591","ExtendedHostFunctions Constructor\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions__ctor.htm\u000072","ConcurrentPropertyBag(IEqualityComparer\u0026lt;String\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_ConcurrentPropertyBag__ctor_3.htm\u0000140","WindowsScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm\u00001590","HostFunctions.isTypeObj(Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_isTypeObj.htm\u0000183","HostFunctions.newObj(IDynamicMetaObjectProvider, Object[]) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newObj_1.htm\u0000201","HostFunctions.getProperty(IDynamicMetaObjectProvider, String) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_getProperty_1.htm\u0000187","EventSource.connect Method\u0000html/M_Microsoft_ClearScript_EventSource_connect.htm\u0000125","VBScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Core_VBScriptEngine.htm\u00001592","V8FastArgs Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_FastProxy_V8FastArgs.htm\u0000851","HostFunctions.isType\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_isType__1.htm\u0000248","HostFunctions.getElement Method\u0000html/M_Microsoft_ClearScript_HostFunctions_getElement.htm\u0000201","Extensions.ToRestrictedHostObject(Object, Type, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToRestrictedHostObject_1.htm\u0000317","HostFunctions.newArr\u0026lt;T\u0026gt;(Int32[]) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newArr__1.htm\u0000276","HostFunctions.cast\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_cast__1.htm\u0000232","HostFunctions.removeProperty(IPropertyBag, String) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_removeProperty.htm\u0000185","ExtendedHostFunctions.type(String, Object[]) Method\u0000html/M_Microsoft_ClearScript_ExtendedHostFunctions_type.htm\u0000389","Extensions.ToRestrictedHostObject\u0026lt;T\u0026gt;(T, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_Extensions_ToRestrictedHostObject__1_1.htm\u0000306","HostFunctions.setElement Method\u0000html/M_Microsoft_ClearScript_HostFunctions_setElement.htm\u0000239","HostFunctions.toDouble Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toDouble.htm\u0000285","HostFunctions.isNull Method\u0000html/M_Microsoft_ClearScript_HostFunctions_isNull.htm\u0000151","DefaultDocumentLoader.LoadDocumentAsync Method\u0000html/M_Microsoft_ClearScript_DefaultDocumentLoader_LoadDocumentAsync.htm\u0000398","HostFunctions.flags\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_flags__1.htm\u0000352","HostFunctions.setProperty(IDynamicMetaObjectProvider, String, Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_setProperty_1.htm\u0000228","HostFunctions.newObj\u0026lt;T\u0026gt;(Object[]) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newObj__1.htm\u0000333","HostFunctions.proc Method\u0000html/M_Microsoft_ClearScript_HostFunctions_proc.htm\u0000390","V8ScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_V8_V8ScriptEngine.htm\u00002273","HostFunctions.func\u0026lt;T\u0026gt;(Int32, Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_func__1.htm\u0000451","HostFunctions.getProperty(IPropertyBag, String) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_getProperty.htm\u0000185","JScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_JScriptEngine.htm\u00001591","HostFunctions.toStaticType Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toStaticType.htm\u0000169","HostFunctions.newArr(Int32[]) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newArr.htm\u0000183","JScriptEngine Methods\u0000html/Methods_T_Microsoft_ClearScript_Windows_Core_JScriptEngine.htm\u00001592","HostFunctions.newObj(Object, Object[]) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newObj_2.htm\u0000271","HostTypeCollection.AddAssembly(String) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly_2.htm\u0000126","HostTypeCollection.AddType(String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddType.htm\u0000214","HostFunctions.isTypeObj\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_isTypeObj__1.htm\u0000173","HostFunctions.toInt32 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toInt32.htm\u0000286","HostTypeCollection.AddAssembly(Assembly) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly.htm\u0000116","HostFunctions.typeOf\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_typeOf__1.htm\u0000257","HostFunctions.toSByte Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toSByte.htm\u0000285","HostFunctions.removeProperty(IDynamicMetaObjectProvider, String) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_removeProperty_1.htm\u0000187","HostTypeCollection.AddType(Type) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddType_2.htm\u0000110","HostFunctions.toChar Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toChar.htm\u0000285","ConcurrentPropertyBag Constructor\u0000html/M_Microsoft_ClearScript_ConcurrentPropertyBag__ctor.htm\u000080","HostTypeCollection Constructor\u0000html/M_Microsoft_ClearScript_HostTypeCollection__ctor.htm\u000075","ValueRef Methods\u0000html/Methods_T_Microsoft_ClearScript_ValueRef.htm\u000037","HostFunctions.toByte Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toByte.htm\u0000285","HostTypeCollection.AddAssembly(String, Predicate\u0026lt;Type\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly_3.htm\u0000185","HostFunctions.toUInt32 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toUInt32.htm\u0000286","HostFunctions.newObj Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newObj.htm\u0000193","HostFunctions Constructor\u0000html/M_Microsoft_ClearScript_HostFunctions__ctor.htm\u000071","HostTypeCollection.AddType(String, Type[]) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddType_1.htm\u0000173","HostFunctions.setProperty(IPropertyBag, String, Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_setProperty.htm\u0000226","HostFunctions.toInt16 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toInt16.htm\u0000286","HostFunctions.toSingle Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toSingle.htm\u0000285","HostTypeCollection(String[]) Constructor\u0000html/M_Microsoft_ClearScript_HostTypeCollection__ctor_4.htm\u0000150","HostFunctions.removeElement Method\u0000html/M_Microsoft_ClearScript_HostFunctions_removeElement.htm\u0000201","HostTypeCollection.GetNamespaceNode Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_GetNamespaceNode.htm\u0000132","IScriptEngine.AddCOMObject(String, Guid, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_5.htm\u0000231","IScriptEngine.AddCOMObject(String, String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_7.htm\u0000266","IScriptableObject.OnExposedToScriptCode Method\u0000html/M_Microsoft_ClearScript_IScriptableObject_OnExposedToScriptCode.htm\u0000168","HostTypeCollection(Predicate\u0026lt;Type\u0026gt;, String[]) Constructor\u0000html/M_Microsoft_ClearScript_HostTypeCollection__ctor_2.htm\u0000207","IScriptEngine.AddCOMType(String, Guid, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_5.htm\u0000231","IScriptEngine.AddCOMObject(String, HostItemFlags, Guid, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_1.htm\u0000269","HostTypeCollection.AddAssembly(Assembly, Predicate\u0026lt;Type\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly_1.htm\u0000175","HostFunctions.toUInt16 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toUInt16.htm\u0000286","IScriptEngine.AddCOMType(String, HostItemFlags, String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_3.htm\u0000304","HostTypeCollection(Predicate\u0026lt;Type\u0026gt;, Assembly[]) Constructor\u0000html/M_Microsoft_ClearScript_HostTypeCollection__ctor_1.htm\u0000197","IScriptEngine.AddCOMType(String, String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_7.htm\u0000266","HostFunctions.toDecimal Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toDecimal.htm\u0000285","HostFunctions.newVar\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_HostFunctions_newVar__1.htm\u0000441","IScriptEngine.AddHostObject(String, Object) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostObject_1.htm\u0000169","IArrayBufferView.GetBytes Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_GetBytes.htm\u0000113","IScriptEngine.EvaluateDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_EvaluateDocument_2.htm\u0000254","HostFunctions.toUInt64 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toUInt64.htm\u0000286","IScriptEngine.AddHostType(String, Type) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_6.htm\u0000219","IScriptEngine.AddHostType(String, HostItemFlags, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_2.htm\u0000320","IScriptEngine.AddHostTypes Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostTypes.htm\u0000213","IScriptEngine.ExecuteDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_ExecuteDocument_2.htm\u0000219","IScriptEngine.ExecuteDocument(String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_ExecuteDocument.htm\u0000143","ImmutableValueAttribute Constructor\u0000html/M_Microsoft_ClearScript_ImmutableValueAttribute__ctor.htm\u000072","IScriptObject.InvokeAsFunction Method\u0000html/M_Microsoft_ClearScript_IScriptObject_InvokeAsFunction.htm\u0000133","IScriptEngine.AddCOMObject(String, HostItemFlags, Guid) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject.htm\u0000228","IScriptEngine.AddCOMType(String, HostItemFlags, Guid) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType.htm\u0000228","IArrayBufferView.InvokeWithDirectAccess\u0026lt;TArg, TResult\u0026gt;(Func\u0026lt;IntPtr, TArg, TResult\u0026gt;, TArg) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_InvokeWithDirectAccess__2.htm\u0000306","IScriptEngine.Execute(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Execute.htm\u0000171","IScriptObject.GetProperty(String, Object[]) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_GetProperty_1.htm\u0000174","IScriptEngine.AddCOMType(String, Guid) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_4.htm\u0000190","HostTypeCollection(Assembly[]) Constructor\u0000html/M_Microsoft_ClearScript_HostTypeCollection__ctor_3.htm\u0000140","HostFunctions.toInt64 Method\u0000html/M_Microsoft_ClearScript_HostFunctions_toInt64.htm\u0000286","IScriptEngine.Execute(String, Boolean, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Execute_2.htm\u0000278","IScriptEngine.AddHostType(Type) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_7.htm\u0000202","IScriptEngine.AddCOMObject(String, HostItemFlags, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_2.htm\u0000263","IScriptEngine.AddHostType(HostItemFlags, Type) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType.htm\u0000240","IScriptEngine.CollectGarbage Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_CollectGarbage.htm\u0000102","IScriptEngine.AddCOMType(String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_6.htm\u0000225","IScriptEngine.GetStackTrace Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_GetStackTrace.htm\u0000121","IScriptEngine.Evaluate(String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Evaluate_1.htm\u0000199","IScriptEngine.AddHostType(String, HostItemFlags, Type) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_3.htm\u0000257","IScriptEngine.AddCOMObject(String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_6.htm\u0000225","IScriptEngine.AddHostType(String, HostItemFlags, String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_1.htm\u0000361","HostFunctions.tryCatch Method\u0000html/M_Microsoft_ClearScript_HostFunctions_tryCatch.htm\u0000520","IScriptEngine.Invoke Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Invoke.htm\u0000171","IScriptObject.Invoke Method\u0000html/M_Microsoft_ClearScript_IScriptObject_Invoke.htm\u0000161","IScriptEngine.Execute(String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Execute_1.htm\u0000165","IScriptObject.InvokeMethod Method\u0000html/M_Microsoft_ClearScript_IScriptObject_InvokeMethod.htm\u0000161","IArrayBufferView.InvokeWithDirectAccess(Action\u0026lt;IntPtr\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_InvokeWithDirectAccess.htm\u0000182","IScriptEngine.Execute(String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Execute_3.htm\u0000221","IArrayBufferView.ReadBytes(UInt64, UInt64, Byte[], UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_ReadBytes.htm\u0000252","IScriptEngine.ExecuteDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_ExecuteDocument_1.htm\u0000180","IScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_ExecuteCommand.htm\u0000164","IArrayBuffer.ReadBytes(UInt64, UInt64, Byte[], UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_ReadBytes.htm\u0000251","IScriptEngine.AddHostObject(String, HostItemFlags, Object) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostObject.htm\u0000452","ITypedArray\u0026lt;T\u0026gt;.Read(UInt64, UInt64, Span\u0026lt;T\u0026gt;, UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_Read.htm\u0000253","IArrayBufferView.WriteBytes(ReadOnlySpan\u0026lt;Byte\u0026gt;, UInt64, UInt64, UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_WriteBytes_1.htm\u0000262","ITypedArray\u0026lt;T\u0026gt;.Write(T[], UInt64, UInt64, UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_Write_1.htm\u0000248","IArrayBuffer.InvokeWithDirectAccess\u0026lt;TResult\u0026gt;(Func\u0026lt;IntPtr, TResult\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_InvokeWithDirectAccess__1_1.htm\u0000235","JavaScriptExtensions.ToPromise(Task, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise_1.htm\u0000264","IScriptEngine.Interrupt Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Interrupt.htm\u000088","JavaScriptExtensions.ToPromise(ValueTask, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise_3.htm\u0000263","IScriptEngine.AddCOMType(String, HostItemFlags, Guid, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_1.htm\u0000269","IScriptEngine.AddCOMObject(String, HostItemFlags, String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_3.htm\u0000304","NoDefaultScriptAccessAttribute Constructor\u0000html/M_Microsoft_ClearScript_NoDefaultScriptAccessAttribute__ctor.htm\u000074","IArrayBuffer.GetBytes Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_GetBytes.htm\u0000116","PropertyBag.TryGetValue Method\u0000html/M_Microsoft_ClearScript_PropertyBag_TryGetValue.htm\u0000206","ScriptEngineException(SerializationInfo, StreamingContext) Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngineException__ctor_1.htm\u0000141","IScriptObject.DeleteProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_DeleteProperty.htm\u0000119","PropertyBag(IEqualityComparer\u0026lt;String\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_PropertyBag__ctor_3.htm\u0000139","IScriptEngine.AddHostType(String, String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_4.htm\u0000323","IScriptEngine.AddCOMObject(String, Guid) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMObject_4.htm\u0000190","IScriptEngine.AddRestrictedHostObject\u0026lt;T\u0026gt;(String, HostItemFlags, T) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddRestrictedHostObject__1.htm\u0000262","JavaScriptExtensions.ToPromise\u0026lt;T\u0026gt;(ValueTask\u0026lt;T\u0026gt;, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise__1_3.htm\u0000305","IScriptEngine.Evaluate(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Evaluate.htm\u0000206","ScriptEngine.AddCOMObject(String, Guid, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_5.htm\u0000271","IArrayBuffer.ReadBytes(UInt64, UInt64, Span\u0026lt;Byte\u0026gt;, UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_ReadBytes_1.htm\u0000259","IScriptEngine.Evaluate(String, Boolean, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Evaluate_2.htm\u0000511","ScriptEngine.AddCOMObject(String, HostItemFlags, Guid, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_1.htm\u0000317","IScriptObject.SetProperty(Int32, Object) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_SetProperty.htm\u0000137","JavaScriptExtensions.ToPromise(ValueTask) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise_2.htm\u0000226","PropertyBag Constructor\u0000html/M_Microsoft_ClearScript_PropertyBag__ctor.htm\u000079","ScriptEngine.AddCOMObject(String, String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_7.htm\u0000306","NoScriptAccessAttribute Constructor\u0000html/M_Microsoft_ClearScript_NoScriptAccessAttribute__ctor.htm\u000073","IArrayBufferView.ReadBytes(UInt64, UInt64, Span\u0026lt;Byte\u0026gt;, UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_ReadBytes_1.htm\u0000260","ITypedArray\u0026lt;T\u0026gt;.Read(UInt64, UInt64, T[], UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_Read_1.htm\u0000247","JavaScriptExtensions.ToAsyncEnumerable Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToAsyncEnumerable.htm\u0000262","IArrayBufferView.InvokeWithDirectAccess\u0026lt;TArg\u0026gt;(Action\u0026lt;IntPtr, TArg\u0026gt;, TArg) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_InvokeWithDirectAccess__1.htm\u0000264","PropertyBag.ContainsKey Method\u0000html/M_Microsoft_ClearScript_PropertyBag_ContainsKey.htm\u0000153","HostFunctions.typeOf(Object) Method\u0000html/M_Microsoft_ClearScript_HostFunctions_typeOf.htm\u0000281","IArrayBuffer.InvokeWithDirectAccess(Action\u0026lt;IntPtr\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_InvokeWithDirectAccess.htm\u0000187","IArrayBuffer.InvokeWithDirectAccess\u0026lt;TArg, TResult\u0026gt;(Func\u0026lt;IntPtr, TArg, TResult\u0026gt;, TArg) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_InvokeWithDirectAccess__2.htm\u0000311","IScriptEngine.AddCOMType(String, HostItemFlags, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddCOMType_2.htm\u0000263","ScriptEngineException(String) Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngineException__ctor_2.htm\u0000105","IScriptObject.DeleteProperty(String) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_DeleteProperty_1.htm\u0000120","JavaScriptExtensions.ToPromise\u0026lt;T\u0026gt;(Task\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise__1.htm\u0000269","IScriptEngine.Evaluate(String, String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_Evaluate_3.htm\u0000255","PropertyBag.Add Method\u0000html/M_Microsoft_ClearScript_PropertyBag_Add.htm\u0000163","ITypedArray\u0026lt;T\u0026gt;.ToArray Method\u0000html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_ToArray.htm\u0000109","PropertyBag(Boolean) Constructor\u0000html/M_Microsoft_ClearScript_PropertyBag__ctor_1.htm\u0000134","ScriptEngineException.GetObjectData Method\u0000html/M_Microsoft_ClearScript_ScriptEngineException_GetObjectData.htm\u0000174","PropertyBag.Remove Method\u0000html/M_Microsoft_ClearScript_PropertyBag_Remove.htm\u0000145","IScriptEngine.EvaluateDocument(String) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_EvaluateDocument.htm\u0000178","JavaScriptExtensions.ToEnumerable Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToEnumerable.htm\u0000257","ScriptEngine.AddCOMType(String, HostItemFlags, Guid) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType.htm\u0000268","JavaScriptExtensions.ToTask Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToTask.htm\u0000258","ScriptEngine.AddCOMObject(String, HostItemFlags, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_2.htm\u0000303","IArrayBufferView.WriteBytes(Byte[], UInt64, UInt64, UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_WriteBytes.htm\u0000253","IScriptEngine.AddRestrictedHostObject\u0026lt;T\u0026gt;(String, T) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddRestrictedHostObject__1_1.htm\u0000226","ScriptEngine.AddCOMType(String, HostItemFlags, String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_3.htm\u0000352","ScriptEngine.AddHostTypes Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostTypes.htm\u0000242","IScriptObject.SetProperty(String, Object[]) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_SetProperty_1.htm\u0000189","IScriptEngine.AddHostType(String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_AddHostType_5.htm\u0000282","ScriptEngine.AddCOMType(String, String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_7.htm\u0000306","IScriptObject.GetProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_IScriptObject_GetProperty.htm\u0000121","ScriptEngineException(String, Exception) Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngineException__ctor_3.htm\u0000144","ScriptEngine.AddCOMObject(String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_6.htm\u0000257","PropertyBag.RemovePropertyNoCheck Method\u0000html/M_Microsoft_ClearScript_PropertyBag_RemovePropertyNoCheck.htm\u0000140","IArrayBuffer.InvokeWithDirectAccess\u0026lt;TArg\u0026gt;(Action\u0026lt;IntPtr, TArg\u0026gt;, TArg) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_InvokeWithDirectAccess__1.htm\u0000269","PropertyBag(Boolean, IEqualityComparer\u0026lt;String\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_PropertyBag__ctor_2.htm\u0000175","ScriptEngine.EvaluateDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_EvaluateDocument_2.htm\u0000294","ScriptEngine.AddRestrictedHostObject\u0026lt;T\u0026gt;(String, HostItemFlags, T) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddRestrictedHostObject__1.htm\u0000305","IArrayBuffer.WriteBytes(Byte[], UInt64, UInt64, UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_WriteBytes.htm\u0000253","JavaScriptExtensions.ToPromise(Task) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise.htm\u0000227","ScriptEngineException.ToString Method\u0000html/M_Microsoft_ClearScript_ScriptEngineException_ToString.htm\u0000108","IScriptEngine.EvaluateDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_IScriptEngine_EvaluateDocument_1.htm\u0000215","ScriptEngine.Dispose(Boolean) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Dispose_1.htm\u0000183","ScriptEngine.AddCOMObject(String, HostItemFlags, String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_3.htm\u0000352","ScriptEngine.Execute(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Execute.htm\u0000203","ScriptEngine.ExecuteDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_ExecuteDocument_2.htm\u0000259","ScriptEngine.AddHostType(String, String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_4.htm\u0000375","ScriptEngine.Finalize Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Finalize.htm\u0000141","ScriptInterruptedException Constructor\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor.htm\u000074","PropertyBag.ClearNoCheck Method\u0000html/M_Microsoft_ClearScript_PropertyBag_ClearNoCheck.htm\u000093","ScriptObject.DeleteProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_DeleteProperty.htm\u0000133","IArrayBufferView.InvokeWithDirectAccess\u0026lt;TResult\u0026gt;(Func\u0026lt;IntPtr, TResult\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_InvokeWithDirectAccess__1_1.htm\u0000230","ScriptEngine(String) Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngine__ctor.htm\u0000206","ScriptMemberAttribute(String) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_4.htm\u0000115","ScriptEngine.AddCOMType(String, Guid) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_4.htm\u0000222","ITypedArray\u0026lt;T\u0026gt;.Write(ReadOnlySpan\u0026lt;T\u0026gt;, UInt64, UInt64, UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_Write.htm\u0000255","PropertyBag.SetPropertyNoCheck Method\u0000html/M_Microsoft_ClearScript_PropertyBag_SetPropertyNoCheck.htm\u0000151","ScriptObject.GetProperty(String, Object[]) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_GetProperty_1.htm\u0000191","ScriptEngine.AddCOMType(String, HostItemFlags, Guid, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_1.htm\u0000317","ScriptEngine.AddHostType(String, HostItemFlags, String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_1.htm\u0000421","ScriptEngine.AddRestrictedHostObject\u0026lt;T\u0026gt;(String, T) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddRestrictedHostObject__1_1.htm\u0000261","ScriptObject.DeleteProperty(String) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_DeleteProperty_1.htm\u0000134","ScriptEngine(String, String) Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngine__ctor_1.htm\u0000168","ScriptMemberAttribute Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor.htm\u000074","ScriptEngine.Evaluate(String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_1.htm\u0000223","ScriptEngine.AddCOMObject(String, HostItemFlags, Guid) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject.htm\u0000268","ScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_ExecuteCommand.htm\u0000189","IV8FastEnumerator.GetCurrent Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastEnumerator_GetCurrent.htm\u0000124","ScriptEngineException Constructor\u0000html/M_Microsoft_ClearScript_ScriptEngineException__ctor.htm\u000074","ScriptEngine.AddHostObject(String, HostItemFlags, Object) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostObject.htm\u0000492","IV8FastHostDynamicProperties.GetDynamicProperty(Int32, V8FastResult) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_GetDynamicProperty.htm\u0000164","StringDocument Constructor\u0000html/M_Microsoft_ClearScript_StringDocument__ctor.htm\u0000129","ScriptMemberAttribute(String, ScriptAccess) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_5.htm\u0000153","IV8FastHostDynamicProperties.SetDynamicProperty(Int32, V8FastArg) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_SetDynamicProperty.htm\u0000154","ScriptEngine.AddCOMType(String, HostItemFlags, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_2.htm\u0000303","ScriptEngine.AddCOMType(String, Guid, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_5.htm\u0000271","ScriptEngine.GetStackTrace Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_GetStackTrace.htm\u0000133","ScriptInterruptedException(SerializationInfo, StreamingContext) Constructor\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor_1.htm\u0000141","ScriptObject.Invoke Method\u0000html/M_Microsoft_ClearScript_ScriptObject_Invoke.htm\u0000178","ScriptEngine.Execute(String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Execute_1.htm\u0000189","ScriptObject.SetProperty(Int32, Object) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_SetProperty.htm\u0000153","IArrayBuffer.WriteBytes(ReadOnlySpan\u0026lt;Byte\u0026gt;, UInt64, UInt64, UInt64) Method\u0000html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_WriteBytes_1.htm\u0000262","ScriptMemberAttribute(ScriptAccess) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_1.htm\u0000112","ScriptEngine.AddHostType(String, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_5.htm\u0000326","ScriptEngine.AddCOMObject(String, Guid) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_4.htm\u0000222","IV8FastHostObjectOperations.GetFriendlyName Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetFriendlyName.htm\u0000131","ScriptEngine.Evaluate(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Evaluate.htm\u0000238","ScriptEngine.AddHostObject(String, Object) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostObject_1.htm\u0000201","ScriptEngine.CollectGarbage Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_CollectGarbage.htm\u0000116","ScriptObject.Dispose Method\u0000html/M_Microsoft_ClearScript_ScriptObject_Dispose.htm\u000091","Undefined.ToString Method\u0000html/M_Microsoft_ClearScript_Undefined_ToString.htm\u0000120","ScriptEngine.ExecuteDocument(String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_ExecuteDocument.htm\u0000167","ScriptInterruptedException.GetObjectData Method\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException_GetObjectData.htm\u0000174","IV8FastHostObjectOperations.CreateAsyncEnumerator Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_CreateAsyncEnumerator.htm\u0000134","IV8FastEnumerator.MoveNext Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastEnumerator_MoveNext.htm\u0000109","ScriptEngine.AddHostType(String, HostItemFlags, String, Type[]) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_2.htm\u0000372","IV8FastHostDynamicProperties.GetDynamicProperty(String, V8FastResult) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_GetDynamicProperty_1.htm\u0000165","IV8FastHostDynamicProperties.SetDynamicProperty(String, V8FastArg) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_SetDynamicProperty_1.htm\u0000155","ScriptEngine.AddCOMType(String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_6.htm\u0000257","ScriptMemberAttribute(String, ScriptAccess, ScriptMemberFlags) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_6.htm\u0000191","JavaScriptExtensions.ToPromise\u0026lt;T\u0026gt;(Task\u0026lt;T\u0026gt;, ScriptEngine) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise__1_1.htm\u0000305","ScriptEngine.Dispose Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Dispose.htm\u0000100","ScriptObject.InvokeAsFunction Method\u0000html/M_Microsoft_ClearScript_ScriptObject_InvokeAsFunction.htm\u0000162","ScriptEngine.EvaluateDocument(String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_EvaluateDocument.htm\u0000202","IV8FastHostObjectOperations.CreateEnumerator Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_CreateEnumerator.htm\u0000130","IV8FastHostObjectOperations.GetProperty(IV8FastHostObject, String, V8FastResult, Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetProperty_1.htm\u0000252","V8FastArgs.GetChar Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetChar.htm\u0000197","ScriptObject.GetProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_GetProperty.htm\u0000135","ScriptInterruptedException(String) Constructor\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor_2.htm\u0000105","ScriptObject.SetProperty(String, Object[]) Method\u0000html/M_Microsoft_ClearScript_ScriptObject_SetProperty_1.htm\u0000206","ScriptEngine.Interrupt Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Interrupt.htm\u0000100","ScriptMemberAttribute(ScriptAccess, ScriptMemberFlags) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_2.htm\u0000149","ScriptEngine.AddHostType(HostItemFlags, Type) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType.htm\u0000272","ScriptInterruptedException.ToString Method\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException_ToString.htm\u0000108","IV8FastAsyncEnumerator.GetCurrent Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastAsyncEnumerator_GetCurrent.htm\u0000125","IV8FastHostObjectOperations.SetProperty(IV8FastHostObject, String, V8FastArg) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_SetProperty_1.htm\u0000187","V8FastArgs.GetDouble Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetDouble.htm\u0000197","IV8FastHostObjectOperations.GetProperty(IV8FastHostObject, Int32, V8FastResult) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetProperty.htm\u0000196","IV8FastHostDynamicProperties.HasDynamicProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_HasDynamicProperty.htm\u0000134","ScriptEngine.AddHostType(String, Type) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_6.htm\u0000251","ScriptEngine.Evaluate(String, Boolean, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_2.htm\u0000551","ScriptEngine.ExecuteDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_ExecuteDocument_1.htm\u0000212","IV8FastHostObjectOperations.DeleteProperty(IV8FastHostObject, Int32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_DeleteProperty.htm\u0000170","ScriptEngine.EvaluateDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_EvaluateDocument_1.htm\u0000247","ScriptEngine.Execute(String, Boolean, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Execute_2.htm\u0000318","V8FastArgs.GetCharSpan Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetCharSpan.htm\u0000232","JavaScriptExtensions.ToPromise\u0026lt;T\u0026gt;(ValueTask\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise__1_2.htm\u0000269","IV8FastHostFunctionOperations.Invoke Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunctionOperations_Invoke.htm\u0000184","ScriptEngine.AddHostType(String, HostItemFlags, Type) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_3.htm\u0000297","IV8FastHostDynamicProperties.DeleteDynamicProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DeleteDynamicProperty.htm\u0000112","ScriptUsageAttribute Constructor\u0000html/M_Microsoft_ClearScript_ScriptUsageAttribute__ctor.htm\u000074","ScriptInterruptedException(String, Exception) Constructor\u0000html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor_3.htm\u0000144","V8FastArgs.IsFalsy Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_IsFalsy.htm\u0000129","ScriptMemberAttribute(ScriptMemberFlags) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_3.htm\u0000111","IV8FastHostDynamicProperties.HasDynamicProperty(String) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_HasDynamicProperty_1.htm\u0000135","V8FastArgs.TryGet(Int32, Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet.htm\u0000187","IV8FastHostObjectOperations.DeleteProperty(IV8FastHostObject, String) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_DeleteProperty_1.htm\u0000171","V8FastArgs.GetInt16 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetInt16.htm\u0000198","IV8FastHostObjectOperations.QueryProperty(IV8FastHostObject, Int32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_QueryProperty.htm\u0000159","V8FastArgs.GetNullable\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetNullable__1.htm\u0000281","V8FastArgs.GetUInt16 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetUInt16.htm\u0000199","V8FastArgs.TryGet(Int32, Single) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_12.htm\u0000187","ScriptEngine.AddHostType(Type) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_7.htm\u0000226","ScriptEngine.Invoke Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Invoke.htm\u0000207","ScriptObject.InvokeMethod Method\u0000html/M_Microsoft_ClearScript_ScriptObject_InvokeMethod.htm\u0000178","IV8FastHostObjectOperations.GetPropertyIndices Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetPropertyIndices.htm\u0000150","V8FastArgs.TryGet(Int32, UInt64) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_16.htm\u0000190","ScriptMemberAttribute(String, ScriptMemberFlags) Constructor\u0000html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_7.htm\u0000152","IV8FastAsyncEnumerator.MoveNextAsync Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastAsyncEnumerator_MoveNextAsync.htm\u0000140","V8FastArgs.GetBigInteger Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetBigInteger.htm\u0000198","V8FastArgs.TryGet(Int32, BigInteger) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_9.htm\u0000188","V8FastArg.GetInt32 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetInt32.htm\u0000165","ScriptEngine.Evaluate(String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_3.htm\u0000287","V8FastArg.TryGet(ReadOnlySpan\u0026lt;Char\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_10.htm\u0000185","V8FastArg.TryGet(UInt16) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_14.htm\u0000153","V8FastArgs.TryGet(Int32, Byte) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_1.htm\u0000188","V8FastArgs.IsNull Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_IsNull.htm\u0000129","ScriptUsageAttribute(ScriptAccess) Constructor\u0000html/M_Microsoft_ClearScript_ScriptUsageAttribute__ctor_1.htm\u0000112","V8FastArg.GetBoolean Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetBoolean.htm\u0000164","V8FastArg.GetSingle Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetSingle.htm\u0000164","IV8FastHostMethodOperations.Invoke Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethodOperations_Invoke.htm\u0000151","V8FastArgs.GetSByte Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetSByte.htm\u0000198","V8FastArg.GetDateTime Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetDateTime.htm\u0000165","ScriptEngine.Execute(String, String) Method\u0000html/M_Microsoft_ClearScript_ScriptEngine_Execute_3.htm\u0000253","V8FastArgs.GetInt32 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetInt32.htm\u0000198","V8FastArgs.TryGet(Int32, Char) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_2.htm\u0000187","V8FastArg.TryGet(DateTime) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_3.htm\u0000152","V8FastArgs.GetUInt32 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetUInt32.htm\u0000199","IV8FastHostDynamicProperties.DeleteDynamicProperty(String) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DeleteDynamicProperty_1.htm\u0000113","IV8FastHostObjectOperations.QueryProperty(IV8FastHostObject, String) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_QueryProperty_1.htm\u0000160","V8FastArgs.GetDateTime Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetDateTime.htm\u0000198","V8FastArg.GetString Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetString.htm\u0000166","V8FastArgs.TryGet(Int32, Double) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_5.htm\u0000187","V8FastArgs.GetBoolean Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetBoolean.htm\u0000197","V8FastArgs.TryGet(Int32, ReadOnlySpan\u0026lt;Char\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_10.htm\u0000221","V8FastArg.GetInt64 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetInt64.htm\u0000166","V8FastArg.TryGet(SByte) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_11.htm\u0000152","V8FastArg.GetUInt64 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetUInt64.htm\u0000167","V8FastArg.TryGet(Int32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_7.htm\u0000152","V8FastArg.TryGet(UInt32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_15.htm\u0000153","V8FastArgs.TryGet\u0026lt;T\u0026gt;(Int32, Nullable\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet__1.htm\u0000271","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.GetDynamicProperty(Int32, V8FastResult) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_GetDynamicProperty.htm\u0000170","V8FastArg.TryGet\u0026lt;T\u0026gt;(T) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet__1_1.htm\u0000179","V8FastArgs.GetByte Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetByte.htm\u0000198","V8FastArg.GetDecimal Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetDecimal.htm\u0000164","V8FastArg.GetUInt16 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetUInt16.htm\u0000166","V8FastArgs.TryGet(Int32, SByte) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_11.htm\u0000188","V8FastArg.GetNullable\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetNullable__1.htm\u0000252","V8FastArgs.GetUInt64 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetUInt64.htm\u0000200","V8FastArgs.GetSingle Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetSingle.htm\u0000197","V8FastArg.TryGet(Single) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_12.htm\u0000151","V8FastArg.TryGet(Decimal) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_4.htm\u0000151","V8FastArgs.TryGet(Int32, String) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_13.htm\u0000188","V8FastArgs.TryGet(Int32, Int16) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_6.htm\u0000188","V8FastArgs.IsTruthy Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_IsTruthy.htm\u0000129","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt;(V8FastHostObjectConfigurator\u0026lt;TFunction\u0026gt;, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_1.htm\u0000175","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.SetDynamicProperty(Int32, V8FastArg) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_SetDynamicProperty.htm\u0000160","V8FastArgs.TryGet(Int32, DateTime) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_3.htm\u0000188","IV8FastHostObjectOperations.SetProperty(IV8FastHostObject, Int32, V8FastArg) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_SetProperty.htm\u0000186","V8FastArgs.GetDecimal Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetDecimal.htm\u0000197","V8FastArg.TryGet(Int64) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_8.htm\u0000153","V8FastArgs.TryGet\u0026lt;T\u0026gt;(Int32, T) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet__1_1.htm\u0000210","V8FastArg.TryGet(UInt64) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_16.htm\u0000154","V8FastHostFunction.VerifyFunctionCall Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction_VerifyFunctionCall.htm\u0000161","V8FastArgs.GetInt64 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetInt64.htm\u0000199","V8FastArg.GetByte Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetByte.htm\u0000165","V8FastArg.Get\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_Get__1.htm\u0000191","IV8FastHostObjectOperations.GetPropertyNames Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetPropertyNames.htm\u0000151","V8FastArg.GetUInt32 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetUInt32.htm\u0000166","V8FastArg.GetSByte Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetSByte.htm\u0000165","V8FastArg.GetDouble Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetDouble.htm\u0000164","V8FastHostFunction(Int32, V8FastHostObjectConfigurator\u0026lt;V8FastHostFunction\u0026gt;, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_3.htm\u0000214","V8FastArgs.TryGet(Int32, Int32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_7.htm\u0000188","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.GetDynamicProperty(String, V8FastResult) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_GetDynamicProperty_1.htm\u0000171","V8FastArg.TryGet(Double) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_5.htm\u0000151","V8FastArgs.Get\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_Get__1.htm\u0000220","V8FastArgs.GetString Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_GetString.htm\u0000199","V8FastHostFunction(String, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_4.htm\u0000142","V8FastArg.TryGet(Char) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_2.htm\u0000151","V8FastArg.TryGet(BigInteger) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_9.htm\u0000152","V8FastArg.TryGet(String) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_13.htm\u0000152","V8FastHostObject\u0026lt;TObject\u0026gt; Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObject_1__ctor.htm\u000079","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.HasDynamicProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_HasDynamicProperty.htm\u0000159","V8FastResult.Set(Int16) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_6.htm\u0000114","V8FastArg.TryGet(Int16) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_6.htm\u0000152","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.SetEnumeratorFactory(Func\u0026lt;TObject, IV8FastEnumerator\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetEnumeratorFactory.htm\u0000175","V8FastArgs.IsUndefined Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_IsUndefined.htm\u0000129","V8FastHostFunction(V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor.htm\u0000109","V8FastHostMethod\u0026lt;TObject\u0026gt;(TObject, String, Int32, V8FastHostObjectConfigurator\u0026lt;V8FastHostMethod\u0026lt;TObject\u0026gt;\u0026gt;, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor_3.htm\u0000311","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.SetDynamicProperty(String, V8FastArg) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_SetDynamicProperty_1.htm\u0000161","V8FastResult.Set(String) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_13.htm\u0000115","V8FastArg.TryGet(Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet.htm\u0000151","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddPropertyGetter\u0026lt;TField\u0026gt;(String, V8FastHostFieldAccessor\u0026lt;TObject, TField\u0026gt;, V8FastHostPropertyFlags) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter__1_1.htm\u0000279","V8FastArgs.TryGet(Int32, Decimal) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_4.htm\u0000187","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt;(Int32, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_2.htm\u0000153","V8FastArg.GetBigInteger Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetBigInteger.htm\u0000165","V8RuntimeConstraints Constructor\u0000html/M_Microsoft_ClearScript_V8_V8RuntimeConstraints__ctor.htm\u000073","V8FastArg.GetInt16 Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetInt16.htm\u0000165","V8FastArg.GetChar Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetChar.htm\u0000164","V8FastArgs.TryGet(Int32, Int64) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_8.htm\u0000189","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.Configure Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_Configure.htm\u0000156","V8FastHostMethodOperations\u0026lt;TObject, TMethod\u0026gt;(TObject, String, Int32, V8FastHostObjectConfigurator\u0026lt;TMethod\u0026gt;, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor_3.htm\u0000299","V8FastArgs.TryGet(Int32, UInt16) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_14.htm\u0000189","V8FastArg.TryGet\u0026lt;T\u0026gt;(Nullable\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet__1.htm\u0000239","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddMethodGetter(String, Int32, V8FastHostObjectConfigurator\u0026lt;V8FastHostMethod\u0026lt;TObject\u0026gt;\u0026gt;, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter_3.htm\u0000300","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt;(String, V8FastHostObjectConfigurator\u0026lt;TFunction\u0026gt;, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_5.htm\u0000206","V8FastHostFunction(String, V8FastHostObjectConfigurator\u0026lt;V8FastHostFunction\u0026gt;, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_5.htm\u0000209","V8FastResult.Set(UInt16) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_14.htm\u0000115","V8FastResult.Set(Int32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_7.htm\u0000114","V8FastHostDynamicObject\u0026lt;TObject\u0026gt; Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1__ctor.htm\u000080","V8FastHostFunction(V8FastHostObjectConfigurator\u0026lt;V8FastHostFunction\u0026gt;, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_1.htm\u0000178","V8FastHostMethod\u0026lt;TObject\u0026gt;(TObject, String, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor.htm\u0000193","V8Runtime(V8RuntimeConstraints) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_1.htm\u0000110","V8Runtime(String, V8RuntimeConstraints) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_7.htm\u0000164","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddMethodGetter(String, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter.htm\u0000181","V8Runtime.BeginCpuProfile(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_BeginCpuProfile.htm\u0000137","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.DeleteDynamicProperty(Int32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DeleteDynamicProperty.htm\u0000137","V8ScriptEngine.BeginCpuProfile(String, V8CpuProfileFlags) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_BeginCpuProfile_1.htm\u0000174","V8FastArgs.TryGet(Int32, UInt32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet_15.htm\u0000189","V8FastArg.GetCharSpan Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_GetCharSpan.htm\u0000199","V8FastResult.Set(Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set.htm\u0000113","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt;(Int32, V8FastHostObjectConfigurator\u0026lt;TFunction\u0026gt;, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_3.htm\u0000211","V8FastArg.TryGet(Byte) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet_1.htm\u0000152","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.SetEnumeratorFactory(Func\u0026lt;TObject, IEnumerator\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetEnumeratorFactory_1.htm\u0000169","V8Runtime.EndCpuProfile Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_EndCpuProfile.htm\u0000139","V8Runtime.CompileDocument(String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_10.htm\u0000255","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt;(String, Int32, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_6.htm\u0000184","V8Runtime.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_8.htm\u0000359","V8Runtime.Compile(String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_5.htm\u0000332","V8FastResult.Set(UInt32) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_15.htm\u0000115","V8Runtime.Compile(String, String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_9.htm\u0000391","V8FastHostFunction(String, Int32, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_6.htm\u0000178","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.SetAsyncEnumeratorFactory(Func\u0026lt;TObject, IV8FastAsyncEnumerator\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetAsyncEnumeratorFactory.htm\u0000179","V8FastResult.Set(Int64) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_8.htm\u0000115","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.HasDynamicProperty(String) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_HasDynamicProperty_1.htm\u0000160","V8ScriptEngine.CancelAwaitDebugger Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CancelAwaitDebugger.htm\u000098","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt;(V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor.htm\u0000115","V8FastResult.SetNull Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_SetNull.htm\u000081","V8Runtime(String, V8RuntimeConstraints, V8RuntimeFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_8.htm\u0000200","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt;(String, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_4.htm\u0000148","V8Runtime(String, V8RuntimeFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_10.htm\u0000164","V8Runtime.CreateScriptEngine Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine.htm\u0000119","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddMethodGetter(String, V8FastHostObjectConfigurator\u0026lt;V8FastHostMethod\u0026lt;TObject\u0026gt;\u0026gt;, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter_1.htm\u0000260","V8FastResult.Set(BigInteger) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_9.htm\u0000114","V8Runtime.BeginCpuProfile(String, V8CpuProfileFlags) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_BeginCpuProfile_1.htm\u0000172","V8FastHostFunction(Int32, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_2.htm\u0000147","V8FastResult.Set(UInt64) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_16.htm\u0000116","V8Runtime.GetHeapInfo Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_GetHeapInfo.htm\u000092","V8Runtime.CompileDocument(String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_11.htm\u0000322","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.SetEnumeratorFactory\u0026lt;TItem\u0026gt;(Func\u0026lt;TObject, IEnumerator\u0026lt;TItem\u0026gt;\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetEnumeratorFactory__1.htm\u0000207","V8FastResult.SetUndefined Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_SetUndefined.htm\u000081","V8ScriptEngine.CompileDocument(String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_10.htm\u0000256","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.SetAsyncEnumeratorFactory\u0026lt;TItem\u0026gt;(Func\u0026lt;TObject, IAsyncEnumerator\u0026lt;TItem\u0026gt;\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetAsyncEnumeratorFactory__1.htm\u0000212","V8ScriptEngine.Interrupt Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Interrupt.htm\u0000114","V8Runtime.CompileDocument(String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_9.htm\u0000332","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.DeleteDynamicProperty(String) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DeleteDynamicProperty_1.htm\u0000138","V8Runtime.Compile(String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_6.htm\u0000258","V8FastHostFunction(String, Int32, V8FastHostObjectConfigurator\u0026lt;V8FastHostFunction\u0026gt;, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor_7.htm\u0000246","V8ScriptEngine.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_8.htm\u0000360","V8ScriptEngine.Compile(String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_5.htm\u0000331","V8Runtime.CollectCpuProfileSample Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CollectCpuProfileSample.htm\u000086","V8ScriptEngine.CancelInterrupt Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CancelInterrupt.htm\u000093","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt;(String, Int32, V8FastHostObjectConfigurator\u0026lt;TFunction\u0026gt;, V8FastHostFunctionInvoker) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor_7.htm\u0000243","V8ScriptEngine(V8ScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_4.htm\u0000127","V8FastHostMethod\u0026lt;TObject\u0026gt;(TObject, String, V8FastHostObjectConfigurator\u0026lt;V8FastHostMethod\u0026lt;TObject\u0026gt;\u0026gt;, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor_1.htm\u0000275","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddPropertyAccessors(String, V8FastHostPropertyGetter\u0026lt;TObject\u0026gt;, V8FastHostPropertySetter\u0026lt;TObject\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors.htm\u0000233","V8Runtime(String, V8RuntimeFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_11.htm\u0000204","V8FastResult.Set(Byte) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_1.htm\u0000114","V8FastResult.Set\u0026lt;T\u0026gt;(Nullable\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set__1.htm\u0000206","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddMethodGetter(String, Int32, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter_2.htm\u0000219","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt; Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1__ctor.htm\u000080","V8Runtime.WriteHeapSnapshot Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_WriteHeapSnapshot.htm\u0000126","V8ScriptEngine.CollectCpuProfileSample Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CollectCpuProfileSample.htm\u000087","V8Runtime.CollectGarbage Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CollectGarbage.htm\u0000108","V8Runtime.CreateScriptEngine(V8ScriptEngineFlags) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_1.htm\u0000198","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.SetDynamicPropertiesGetter Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetDynamicPropertiesGetter.htm\u0000161","V8ScriptEngine.Compile(String, String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_9.htm\u0000390","V8ScriptEngine.WriteRuntimeHeapSnapshot Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_WriteRuntimeHeapSnapshot.htm\u0000132","V8Runtime.Compile(DocumentInfo, String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_1.htm\u0000374","V8FastResult.Set(Char) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_2.htm\u0000113","V8Runtime(String, V8RuntimeConstraints, V8RuntimeFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_9.htm\u0000239","JScriptEngine(String, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor_2.htm\u0000170","V8FastHostFunction.VerifyConstructorCall Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction_VerifyConstructorCall.htm\u0000161","V8FastHostMethodOperations\u0026lt;TObject, TMethod\u0026gt;(TObject, String, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor.htm\u0000203","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddPropertyAccessors(String, V8FastHostPropertyGetter\u0026lt;TObject\u0026gt;, V8FastHostPropertySetter\u0026lt;TObject\u0026gt;, V8FastHostPropertyFlags) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors_1.htm\u0000290","V8FastHostObjectOperations\u0026lt;TObject\u0026gt;.Configure Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1_Configure.htm\u0000149","V8ScriptEngine.Compile(String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_6.htm\u0000258","V8Runtime.Compile(String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_7.htm\u0000314","V8Runtime.Compile(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile.htm\u0000167","V8ScriptEngine.CompileDocument(String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_9.htm\u0000333","V8ScriptEngine(V8ScriptEngineFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_5.htm\u0000166","V8FastHostMethod\u0026lt;TObject\u0026gt;(TObject, String, Int32, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor_2.htm\u0000231","V8ScriptEngine.CompileDocument(String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_11.htm\u0000323","V8ScriptEngine.CollectGarbage Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CollectGarbage.htm\u0000134","V8FastResult.Set\u0026lt;T\u0026gt;(T) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set__1_1.htm\u0000149","NullSyncInvoker.Invoke(Action) Method\u0000html/M_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_Invoke.htm\u0000155","VoidResult.ToString Method\u0000html/M_Microsoft_ClearScript_VoidResult_ToString.htm\u0000121","V8ScriptEngine Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor.htm\u000091","V8Runtime.CreateScriptEngine(V8ScriptEngineFlags, Int32) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_2.htm\u0000237","V8Runtime.CompileDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_2.htm\u0000211","V8Runtime(V8RuntimeConstraints, V8RuntimeFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_2.htm\u0000145","V8Runtime.CompileDocument(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument.htm\u0000135","V8FastHostObjectOperations\u0026lt;TObject\u0026gt; Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1__ctor.htm\u000083","ISyncInvoker.CheckAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_ISyncInvoker_CheckAccess.htm\u0000103","V8FastResult.Set(ReadOnlySpan\u0026lt;Char\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_10.htm\u0000155","V8Runtime.Compile(String, String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_8.htm\u0000184","V8ScriptEngine.Dispose(Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Dispose.htm\u0000186","V8ScriptEngine.Compile(DocumentInfo, String) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile.htm\u0000166","Nothing.ToString Method\u0000html/M_Microsoft_ClearScript_Windows_Nothing_ToString.htm\u0000124","V8CpuProfile.ToJson Method\u0000html/M_Microsoft_ClearScript_V8_V8CpuProfile_ToJson.htm\u0000109","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddPropertyAccessors\u0026lt;TField\u0026gt;(String, V8FastHostFieldAccessor\u0026lt;TObject, TField\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors__1.htm\u0000221","V8ScriptEngine(String) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_6.htm\u0000145","IHostWindow.EnableModeless Method\u0000html/M_Microsoft_ClearScript_Windows_IHostWindow_EnableModeless.htm\u0000107","V8Runtime Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor.htm\u000075","V8ScriptEngine(V8RuntimeConstraints) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_1.htm\u0000131","JScriptEngine(String, WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor_3.htm\u0000211","V8FastResult.Set(DateTime) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_3.htm\u0000114","V8ScriptEngine.CompileDocument(String, DocumentCategory, DocumentContextCallback) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_2.htm\u0000212","NullSyncInvoker.Invoke\u0026lt;T\u0026gt;(Func\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_Invoke__1.htm\u0000216","V8Runtime.CreateScriptEngine(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_3.htm\u0000173","VBScriptEngine(String, String, String, WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor_4.htm\u0000327","V8Runtime(V8RuntimeConstraints, V8RuntimeFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_3.htm\u0000185","V8Runtime.Compile(String, String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_10.htm\u0000317","V8ScriptEngine.BeginCpuProfile(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_BeginCpuProfile.htm\u0000139","V8ScriptEngine(String, V8ScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_10.htm\u0000181","V8ScriptEngine.CompileDocument(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument.htm\u0000136","IWindowsScriptObject.GetUnderlyingObject Method\u0000html/M_Microsoft_ClearScript_Windows_IWindowsScriptObject_GetUnderlyingObject.htm\u000097","V8ScriptEngine.EndCpuProfile Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_EndCpuProfile.htm\u0000140","V8FastResult.Set(SByte) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_11.htm\u0000114","ISyncInvoker.Invoke(Action) Method\u0000html/M_Microsoft_ClearScript_Windows_Core_ISyncInvoker_Invoke.htm\u0000118","WindowsScriptEngine.CheckAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_CheckAccess.htm\u0000111","V8ScriptEngine(String, V8RuntimeConstraints) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_7.htm\u0000185","V8Runtime.CompileDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_1.htm\u0000172","V8ScriptEngine.Compile(String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_7.htm\u0000313","V8CpuProfile.WriteJson Method\u0000html/M_Microsoft_ClearScript_V8_V8CpuProfile_WriteJson.htm\u0000127","V8Runtime(V8RuntimeFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_4.htm\u0000110","NullSyncInvoker.VerifyAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_VerifyAccess.htm\u0000114","V8FastHostObjectOperations\u0026lt;TObject\u0026gt;(V8FastHostObjectConfigurator\u0026lt;TObject\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1__ctor_1.htm\u0000143","V8FastHostMethodOperations\u0026lt;TObject, TMethod\u0026gt;(TObject, String, V8FastHostObjectConfigurator\u0026lt;TMethod\u0026gt;, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor_1.htm\u0000263","V8ScriptEngine.Compile(DocumentInfo, String, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_1.htm\u0000372","V8Runtime.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_3.htm\u0000408","HostFunctions.isTypeObj Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_isTypeObj.htm\u000076","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddPropertyAccessors\u0026lt;TField\u0026gt;(String, V8FastHostFieldAccessor\u0026lt;TObject, TField\u0026gt;, V8FastHostPropertyFlags) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors__1_1.htm\u0000274","V8Runtime.CreateScriptEngine(String, V8ScriptEngineFlags) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_4.htm\u0000252","VBScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine_ExecuteCommand.htm\u0000255","IScriptEngine.Execute Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_Execute.htm\u000078","HostTypeCollection Constructor\u0000html/Overload_Microsoft_ClearScript_HostTypeCollection__ctor.htm\u0000125","V8Runtime.Compile(String, String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_11.htm\u0000371","DocumentInfo Constructor\u0000html/Overload_Microsoft_ClearScript_DocumentInfo__ctor.htm\u000046","WindowsScriptEngine.CollectGarbage Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_CollectGarbage.htm\u0000135","VBScriptEngine Constructor\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor.htm\u000076","V8ScriptEngine.Compile(String, String) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_8.htm\u0000183","V8FastResult.Set(Single) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_12.htm\u0000113","V8ScriptEngine.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_3.htm\u0000409","V8ScriptEngine(String, V8ScriptEngineFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_11.htm\u0000221","VBScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine_ExecuteCommand.htm\u0000259","ISyncInvoker.Invoke\u0026lt;T\u0026gt;(Func\u0026lt;T\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_Windows_Core_ISyncInvoker_Invoke__1.htm\u0000170","IScriptEngine.ExecuteDocument Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_ExecuteDocument.htm\u000065","V8ScriptEngine(String, V8RuntimeConstraints, V8ScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_8.htm\u0000222","IArrayBufferView.WriteBytes Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_IArrayBufferView_WriteBytes.htm\u000066","V8Runtime(V8RuntimeFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_5.htm\u0000149","V8FastHostMethodOperations\u0026lt;TObject, TMethod\u0026gt;(TObject, String, Int32, V8FastHostMethodInvoker\u0026lt;TObject\u0026gt;) Constructor\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor_2.htm\u0000241","V8ScriptEngine.CompileDocument(String, DocumentCategory) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_1.htm\u0000173","V8ScriptEngine.Evaluate(V8Script) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Evaluate.htm\u0000143","HostFunctions.newArr Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_newArr.htm\u000053","JScriptEngine(String, String, String, WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor_4.htm\u0000327","V8FastHostObject\u0026lt;TObject\u0026gt;.Configure Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObject_1_Configure.htm\u0000155","IScriptEngine.AddCOMObject Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_AddCOMObject.htm\u0000300","V8FastResult.Set(Decimal) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_4.htm\u0000113","V8Runtime.CreateScriptEngine(String, V8ScriptEngineFlags, Int32) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_5.htm\u0000292","Microsoft.ClearScript Namespace\u0000html/N_Microsoft_ClearScript.htm\u0000563","JScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine_ExecuteCommand.htm\u0000212","DocumentSettings.AddSystemDocument Method\u0000html/Overload_Microsoft_ClearScript_DocumentSettings_AddSystemDocument.htm\u000094","V8Runtime.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_4.htm\u0000331","VBScriptEngine(WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_1.htm\u0000113","V8ScriptEngine.Compile(String, String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_10.htm\u0000317","IScriptObject.DeleteProperty Method\u0000html/Overload_Microsoft_ClearScript_IScriptObject_DeleteProperty.htm\u000040","ScriptEngineException Constructor\u0000html/Overload_Microsoft_ClearScript_ScriptEngineException__ctor.htm\u000070","ScriptObject.Item Property\u0000html/Overload_Microsoft_ClearScript_ScriptObject_Item.htm\u000049","V8FastResult.Set(Double) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set_5.htm\u0000113","IArrayBuffer.InvokeWithDirectAccess Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_IArrayBuffer_InvokeWithDirectAccess.htm\u0000149","IScriptObject.GetProperty Method\u0000html/Overload_Microsoft_ClearScript_IScriptObject_GetProperty.htm\u000049","NullSyncInvoker.CheckAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_CheckAccess.htm\u0000135","ScriptObject.SetProperty Method\u0000html/Overload_Microsoft_ClearScript_ScriptObject_SetProperty.htm\u000051","V8Runtime.Dispose Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Dispose.htm\u000099","VBScriptEngine(String) Constructor\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_2.htm\u0000130","ExtendedHostFunctions.lib Method\u0000html/Overload_Microsoft_ClearScript_ExtendedHostFunctions_lib.htm\u000058","IV8FastHostObjectOperations.GetProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_GetProperty.htm\u000060","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.SetDynamicProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_SetDynamicProperty.htm\u000057","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddPropertyGetter(String, V8FastHostPropertyGetter\u0026lt;TObject\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter.htm\u0000186","V8Runtime.Compile(DocumentInfo, String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_2.htm\u0000300","HostFunctions.newObj Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_newObj.htm\u0000100","WindowsScriptEngine.Dispose(Boolean) Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_Dispose.htm\u0000191","V8ScriptEngine(V8RuntimeConstraints, V8ScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_2.htm\u0000167","V8ScriptEngine.Execute(V8Script) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Execute.htm\u0000145","JScriptEngine Constructor\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor.htm\u000076","VBScriptEngine(ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor.htm\u0000114","V8Runtime(String) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_6.htm\u0000129","IScriptObject.Item Property\u0000html/Overload_Microsoft_ClearScript_IScriptObject_Item.htm\u000049","ScriptUsageAttribute Constructor\u0000html/Overload_Microsoft_ClearScript_ScriptUsageAttribute__ctor.htm\u000041","V8ScriptEngine.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_4.htm\u0000332","HostFunctions.removeProperty Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_removeProperty.htm\u000056","ISyncInvoker.VerifyAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_ISyncInvoker_VerifyAccess.htm\u000083","IScriptEngine.AddCOMType Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_AddCOMType.htm\u0000300","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.SetAsyncEnumeratorFactory Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetAsyncEnumeratorFactory.htm\u000078","ScriptEngine.EvaluateDocument Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_EvaluateDocument.htm\u000065","IArrayBuffer.ReadBytes Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_IArrayBuffer_ReadBytes.htm\u000064","V8Runtime Constructor\u0000html/Overload_Microsoft_ClearScript_V8_V8Runtime__ctor.htm\u0000246","V8Runtime.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_5.htm\u0000398","Microsoft.ClearScript.JavaScript Namespace\u0000html/N_Microsoft_ClearScript_JavaScript.htm\u0000117","ScriptEngine.AddCOMObject Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_AddCOMObject.htm\u0000300","VBScriptEngine(String, WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_3.htm\u0000167","HostFunctions.setProperty Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_setProperty.htm\u000062","V8Runtime.Compile(DocumentInfo, String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_3.htm\u0000354","V8ScriptEngine.BeginCpuProfile Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_BeginCpuProfile.htm\u000048","ScriptEngine.Execute Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_Execute.htm\u000078","ExtendedHostFunctions.type Method\u0000html/Overload_Microsoft_ClearScript_ExtendedHostFunctions_type.htm\u000065","IScriptObject.SetProperty Method\u0000html/Overload_Microsoft_ClearScript_IScriptObject_SetProperty.htm\u000051","IV8FastHostDynamicProperties.DeleteDynamicProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DeleteDynamicProperty.htm\u000044","ISyncInvoker.Invoke Method\u0000html/Overload_Microsoft_ClearScript_Windows_Core_ISyncInvoker_Invoke.htm\u000057","IV8FastHostObjectOperations.QueryProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_QueryProperty.htm\u000051","VBScriptEngine(WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor_1.htm\u0000153","WindowsScriptEngine.GetStackTrace Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_GetStackTrace.htm\u0000171","IArrayBuffer.WriteBytes Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_IArrayBuffer_WriteBytes.htm\u000067","V8ScriptEngine(String, V8RuntimeConstraints, V8ScriptEngineFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_9.htm\u0000261","IScriptEngine.AddHostObject Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_AddHostObject.htm\u000053","V8ScriptEngine.Compile(String, String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_11.htm\u0000370","V8ScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_ExecuteCommand.htm\u0000212","IV8FastHostObjectOperations.SetProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_SetProperty.htm\u000057","JScriptEngine(WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_1.htm\u0000113","HostFunctions.typeOf Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_typeOf.htm\u000075","Microsoft.ClearScript.V8 Namespace\u0000html/N_Microsoft_ClearScript_V8.htm\u0000226","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.SetEnumeratorFactory Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_SetEnumeratorFactory.htm\u000097","IV8FastHostDynamicProperties.GetDynamicProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_GetDynamicProperty.htm\u000056","V8Runtime.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_6.htm\u0000369","V8ScriptEngine.CompileDocument(String, DocumentCategory, DocumentContextCallback, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_5.htm\u0000399","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddPropertyGetter(String, V8FastHostPropertyGetter\u0026lt;TObject\u0026gt;, V8FastHostPropertyFlags) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter_1.htm\u0000239","IArrayBufferView.InvokeWithDirectAccess Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_IArrayBufferView_InvokeWithDirectAccess.htm\u0000142","V8ScriptEngine.Compile Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Compile.htm\u0000310","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt; Constructor\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1__ctor.htm\u0000203","WindowsScriptEngine.Interrupt Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_Interrupt.htm\u0000116","V8FastHostObjectOperations\u0026lt;TObject\u0026gt; Constructor\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1__ctor.htm\u000052","ITypedArray\u0026lt;T\u0026gt;.Read Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_ITypedArray_1_Read.htm\u000065","VBScriptEngine(String, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor_2.htm\u0000170","Extensions.ToHostType Method\u0000html/Overload_Microsoft_ClearScript_Extensions_ToHostType.htm\u000066","HostTypeCollection.AddAssembly Method\u0000html/Overload_Microsoft_ClearScript_HostTypeCollection_AddAssembly.htm\u0000101","JScriptEngine(String) Constructor\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_2.htm\u0000130","VBScriptEngine(String, String, String, WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_4.htm\u0000284","V8Runtime.Compile(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_4.htm\u0000127","V8ScriptEngine.GetRuntimeHeapInfo Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_GetRuntimeHeapInfo.htm\u0000102","WindowsScriptEngine.VerifyAccess Method\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_VerifyAccess.htm\u000090","IScriptEngine.AddHostType Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_AddHostType.htm\u0000205","V8ScriptEngine(V8RuntimeConstraints, V8ScriptEngineFlags, Int32) Constructor\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_3.htm\u0000207","V8ScriptEngine.Compile(DocumentInfo, String, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_2.htm\u0000300","V8FastArgs.TryGet Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_TryGet.htm\u0000421","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddPropertyGetter\u0026lt;TField\u0026gt;(String, V8FastHostFieldAccessor\u0026lt;TObject, TField\u0026gt;) Method\u0000html/M_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter__1.htm\u0000226","ScriptEngine.AddCOMType Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_AddCOMType.htm\u0000300","ITypedArray\u0026lt;T\u0026gt;.Write Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_ITypedArray_1_Write.htm\u000066","ScriptEngine.ExecuteDocument Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_ExecuteDocument.htm\u000065","JScriptEngine.ExecuteCommand Method\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine_ExecuteCommand.htm\u0000216","V8FastResult.Set Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastResult_Set.htm\u0000254","V8Script.Dispose Method\u0000html/M_Microsoft_ClearScript_V8_V8Script_Dispose.htm\u0000143","JScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor.htm\u0000124","V8ScriptEngine.CompileDocument Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument.htm\u0000336","Microsoft.ClearScript.V8.FastProxy Namespace\u0000html/N_Microsoft_ClearScript_V8_FastProxy.htm\u0000371","ScriptEngine.AddHostObject Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_AddHostObject.htm\u000053","HostTypeCollection.AddType Method\u0000html/Overload_Microsoft_ClearScript_HostTypeCollection_AddType.htm\u000083","V8ScriptEngine.Dispose Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Dispose.htm\u000055","V8Runtime.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8Runtime_CompileDocument_7.htm\u0000292","IScriptEngine.AddRestrictedHostObject Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_AddRestrictedHostObject.htm\u000066","JScriptEngine(String, WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_3.htm\u0000167","Extensions.ToRestrictedHostObject Method\u0000html/Overload_Microsoft_ClearScript_Extensions_ToRestrictedHostObject.htm\u0000153","Microsoft.ClearScript.Windows Namespace\u0000html/N_Microsoft_ClearScript_Windows.htm\u0000123","VBScriptEngine(String, WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor_3.htm\u0000211","ScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_ScriptEngine__ctor.htm\u000051","V8ScriptEngine.GetStackTrace Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_GetStackTrace.htm\u0000146","V8FastHostFunction Constructor\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction__ctor.htm\u0000176","JScriptEngine(ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor.htm\u0000114","V8ScriptEngine.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[], Boolean) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_6.htm\u0000370","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt; Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1.htm\u000040","DocumentSettings Properties\u0000html/Properties_T_Microsoft_ClearScript_DocumentSettings.htm\u0000116","V8ScriptEngine.Evaluate Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Evaluate.htm\u000087","HostFunctions.func Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_func.htm\u000062","WindowsScriptEngine Constructor\u0000html/M_Microsoft_ClearScript_Windows_WindowsScriptEngine__ctor.htm\u0000266","IScriptEngine.Evaluate Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_Evaluate.htm\u000078","ConcurrentPropertyBag Properties\u0000html/Properties_T_Microsoft_ClearScript_ConcurrentPropertyBag.htm\u000097","WindowsScriptEngine Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine__ctor.htm\u0000306","IArrayBufferView.ReadBytes Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_IArrayBufferView_ReadBytes.htm\u000065","V8FastResult Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastResult.htm\u000036","V8Runtime.BeginCpuProfile Method\u0000html/Overload_Microsoft_ClearScript_V8_V8Runtime_BeginCpuProfile.htm\u000047","IV8FastHostDynamicProperties.HasDynamicProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_HasDynamicProperty.htm\u000054","NullSyncInvoker.Invoke Method\u0000html/Overload_Microsoft_ClearScript_Windows_Core_NullSyncInvoker_Invoke.htm\u000058","NoScriptAccessAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_NoScriptAccessAttribute.htm\u000068","IArrayBuffer Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm\u0000148","Microsoft.ClearScript.Windows.Core Namespace\u0000html/N_Microsoft_ClearScript_Windows_Core.htm\u000088","V8FastHostMethodOperations\u0026lt;TObject, TMethod\u0026gt; Constructor\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2__ctor.htm\u0000149","V8CpuProfile Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8CpuProfile.htm\u000068","V8ScriptEngine.Execute Method\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Execute.htm\u000087","CustomAttributeLoader Properties\u0000html/Properties_T_Microsoft_ClearScript_CustomAttributeLoader.htm\u000034","StringDocument Properties\u0000html/Properties_T_Microsoft_ClearScript_StringDocument.htm\u000082","V8FastArg.TryGet Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastArg_TryGet.htm\u0000307","JScriptEngine(String, String, String, WindowsScriptEngineFlags) Constructor\u0000html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_4.htm\u0000284","DocumentCategory.MaxCacheSize Property\u0000html/P_Microsoft_ClearScript_DocumentCategory_MaxCacheSize.htm\u0000172","JavaScriptExtensions.ToPromise Method\u0000html/Overload_Microsoft_ClearScript_JavaScript_JavaScriptExtensions_ToPromise.htm\u0000226","HostFunctions.getProperty Method\u0000html/Overload_Microsoft_ClearScript_HostFunctions_getProperty.htm\u000062","PropertyBag Properties\u0000html/Properties_T_Microsoft_ClearScript_PropertyBag.htm\u000072","V8ScriptEngine.Compile(DocumentInfo, String, V8CacheKind, Byte[], V8CacheResult) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_3.htm\u0000353","IWindowsScriptObject Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_IWindowsScriptObject.htm\u0000113","ValueRef.Create\u0026lt;T\u0026gt; Method\u0000html/M_Microsoft_ClearScript_ValueRef_Create__1.htm\u0000238","HostSettings Properties\u0000html/Properties_T_Microsoft_ClearScript_HostSettings.htm\u000061","ScriptEngine.AddHostType Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_AddHostType.htm\u0000205","ScriptInterruptedException Constructor\u0000html/Overload_Microsoft_ClearScript_ScriptInterruptedException__ctor.htm\u000070","V8Runtime.Compile Method\u0000html/Overload_Microsoft_ClearScript_V8_V8Runtime_Compile.htm\u0000310","JScriptEngine(WindowsScriptEngineFlags, ISyncInvoker) Constructor\u0000html/M_Microsoft_ClearScript_Windows_Core_JScriptEngine__ctor_1.htm\u0000153","V8ScriptEngine.CompileDocument(String, DocumentCategory, V8CacheKind, Byte[]) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CompileDocument_7.htm\u0000293","IV8FastHostDynamicProperties.SetDynamicProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_SetDynamicProperty.htm\u000056","IScriptEngine.EvaluateDocument Method\u0000html/Overload_Microsoft_ClearScript_IScriptEngine_EvaluateDocument.htm\u000065","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.DeleteDynamicProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DeleteDynamicProperty.htm\u000045","V8RuntimeHeapInfo Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm\u000094","ScriptMemberAttribute Constructor\u0000html/Overload_Microsoft_ClearScript_ScriptMemberAttribute__ctor.htm\u0000150","ScriptEngine.AddRestrictedHostObject Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_AddRestrictedHostObject.htm\u000066","VBScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_Windows_Core_VBScriptEngine__ctor.htm\u0000124","DocumentSettings.SearchPath Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_SearchPath.htm\u0000125","IV8FastHostDynamicProperties Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties.htm\u000052","DefaultDocumentLoader Properties\u0000html/Properties_T_Microsoft_ClearScript_DefaultDocumentLoader.htm\u000045","HostTypeCollection Properties\u0000html/Properties_T_Microsoft_ClearScript_HostTypeCollection.htm\u000097","DocumentLoader.Default Property\u0000html/P_Microsoft_ClearScript_DocumentLoader_Default.htm\u0000100","V8ScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine__ctor.htm\u0000259","IV8FastHostFunction Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunction.htm\u000036","PropertyBag Constructor\u0000html/Overload_Microsoft_ClearScript_PropertyBag__ctor.htm\u000070","IScriptEngine.AccessContext Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_AccessContext.htm\u0000174","ScriptObject.DeleteProperty Method\u0000html/Overload_Microsoft_ClearScript_ScriptObject_DeleteProperty.htm\u000040","ScriptEngine.Dispose Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_Dispose.htm\u000054","IScriptEngine.FormatCode Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_FormatCode.htm\u0000151","ConcurrentPropertyBag Constructor\u0000html/Overload_Microsoft_ClearScript_ConcurrentPropertyBag__ctor.htm\u000071","IScriptEngine.DisableListIndexTypeRestriction Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DisableListIndexTypeRestriction.htm\u0000170","V8Script Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8Script.htm\u000049","ImmutableValueAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_ImmutableValueAttribute.htm\u000049","IV8FastHostMethod Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethod.htm\u000036","WindowsScriptEngine.Dispose Method\u0000html/Overload_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_Dispose.htm\u000057","IScriptEngine.UseReflectionBindFallback Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_UseReflectionBindFallback.htm\u0000181","V8FastHostMethod\u0026lt;TObject\u0026gt; Constructor\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1__ctor.htm\u0000129","Node Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8CpuProfile_Node.htm\u0000145","IArrayBufferView Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm\u0000165","IScriptEngineException.ErrorDetails Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_ErrorDetails.htm\u0000100","V8ScriptEngine.Compile(String) Method\u0000html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_4.htm\u0000126","ScriptObject.GetProperty Method\u0000html/Overload_Microsoft_ClearScript_ScriptObject_GetProperty.htm\u000049","IScriptEngine.Global Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_Global.htm\u0000138","V8Runtime.CompileDocument Method\u0000html/Overload_Microsoft_ClearScript_V8_V8Runtime_CompileDocument.htm\u0000335","IScriptEngine.AllowReflection Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_AllowReflection.htm\u0000178","DocumentLoader.MaxCacheSize Property\u0000html/P_Microsoft_ClearScript_DocumentLoader_MaxCacheSize.htm\u0000161","ScriptEngine.Evaluate Method\u0000html/Overload_Microsoft_ClearScript_ScriptEngine_Evaluate.htm\u000078","DocumentCategory.Script Property\u0000html/P_Microsoft_ClearScript_DocumentCategory_Script.htm\u0000102","Sample Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8CpuProfile_Sample.htm\u000046","IV8FastHostObject Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObject.htm\u000036","DefaultScriptUsageAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm\u000061","JScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_JScriptEngine.htm\u0000556","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.GetDynamicProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_GetDynamicProperty.htm\u000057","IScriptEngine.VoidResultValue Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_VoidResultValue.htm\u0000177","DefaultScriptUsageAttribute Constructor\u0000html/Overload_Microsoft_ClearScript_DefaultScriptUsageAttribute__ctor.htm\u000043","IScriptEngine.HostData Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_HostData.htm\u0000115","IV8FastHostObjectOperations.DeleteProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations_DeleteProperty.htm\u000045","ScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptEngine.htm\u0000356","IArrayBufferView.Offset Property\u0000html/P_Microsoft_ClearScript_JavaScript_IArrayBufferView_Offset.htm\u000098","Document Properties\u0000html/Properties_T_Microsoft_ClearScript_Document.htm\u000054","IScriptEngineException.ExecutionStarted Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_ExecutionStarted.htm\u0000101","Document.Contents Property\u0000html/P_Microsoft_ClearScript_Document_Contents.htm\u0000105","ScriptEngineException.ScriptException Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_ScriptException.htm\u0000126","IScriptEngine.DisableTypeRestriction Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DisableTypeRestriction.htm\u0000176","IPropertyBag Properties\u0000html/Properties_T_Microsoft_ClearScript_IPropertyBag.htm\u0000146","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddMethodGetter Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddMethodGetter.htm\u0000117","V8Runtime.CreateScriptEngine Method\u0000html/Overload_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine.htm\u0000124","IScriptObject.Engine Property\u0000html/P_Microsoft_ClearScript_IScriptObject_Engine.htm\u000094","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.HasDynamicProperty Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_HasDynamicProperty.htm\u000055","ScriptEngine.DisableDynamicBinding Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DisableDynamicBinding.htm\u0000176","IScriptEngine.ContinuationCallback Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_ContinuationCallback.htm\u0000153","JScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_Windows_JScriptEngine__ctor.htm\u0000106","V8FastArg Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastArg.htm\u000063","ScriptInterruptedException.IsFatal Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_IsFatal.htm\u0000114","IDataView Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_IDataView.htm\u0000182","PropertyBag.Comparer Property\u0000html/P_Microsoft_ClearScript_PropertyBag_Comparer.htm\u0000127","DocumentCategory Properties\u0000html/Properties_T_Microsoft_ClearScript_DocumentCategory.htm\u000056","DocumentInfo.Category Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_Category.htm\u0000114","IArrayBufferView.Size Property\u0000html/P_Microsoft_ClearScript_JavaScript_IArrayBufferView_Size.htm\u000095","IScriptObject.Item(Int32) Property\u0000html/P_Microsoft_ClearScript_IScriptObject_Item.htm\u0000166","IScriptEngine.Name Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_Name.htm\u000095","IScriptEngineException.HResult Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_HResult.htm\u000095","DocumentSettings.AccessFlags Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_AccessFlags.htm\u0000109","V8Runtime Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8Runtime.htm\u0000149","IScriptEngine.DocumentSettings Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DocumentSettings.htm\u0000112","ScriptInterruptedException.ScriptException Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_ScriptException.htm\u0000126","IV8FastHostDynamicProperties.DynamicPropertyNames Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DynamicPropertyNames.htm\u0000131","Document.Encoding Property\u0000html/P_Microsoft_ClearScript_Document_Encoding.htm\u0000124","ScriptEngine.NullImportValue Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_NullImportValue.htm\u0000186","V8FastArgs Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastArgs.htm\u000037","V8ScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8ScriptEngine.htm\u0000611","ScriptEngineException Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptEngineException.htm\u0000295","VBScriptEngine Constructor\u0000html/Overload_Microsoft_ClearScript_Windows_VBScriptEngine__ctor.htm\u0000106","ScriptObject.PropertyIndices Property\u0000html/P_Microsoft_ClearScript_ScriptObject_PropertyIndices.htm\u0000131","ScriptEngineException.ScriptExceptionAsObject Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_ScriptExceptionAsObject.htm\u0000134","ScriptEngine.DisableExtensionMethods Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DisableExtensionMethods.htm\u0000128","PropertyBag.Item Property\u0000html/P_Microsoft_ClearScript_PropertyBag_Item.htm\u0000190","IJavaScriptObject Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_IJavaScriptObject.htm\u0000127","ScriptEngine.EnforceAnonymousTypeAccess Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_EnforceAnonymousTypeAccess.htm\u0000216","IScriptEngine.CustomAttributeLoader Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_CustomAttributeLoader.htm\u0000129","ScriptInterruptedException.ScriptExceptionAsObject Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_ScriptExceptionAsObject.htm\u0000134","V8RuntimeConstraints Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm\u0000118","IScriptObject.Item(String, Object[]) Property\u0000html/P_Microsoft_ClearScript_IScriptObject_Item_1.htm\u0000244","IArrayBuffer.Size Property\u0000html/P_Microsoft_ClearScript_JavaScript_IArrayBuffer_Size.htm\u000096","V8FastHostDynamicObject\u0026lt;TObject\u0026gt; Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1.htm\u000054","V8Settings Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8Settings.htm\u000043","DocumentSettings.AsyncLoadCallback Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_AsyncLoadCallback.htm\u0000125","IScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_IScriptEngine.htm\u0000340","IV8FastHostFunction.Operations Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunction_Operations.htm\u000097","DocumentInfo Properties\u0000html/Properties_T_Microsoft_ClearScript_DocumentInfo.htm\u000078","Page Not Found\u0000html/PageNotFound.htm\u000066","ScriptEngine.DisableFloatNarrowing Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DisableFloatNarrowing.htm\u0000186","DocumentInfo.ContextCallback Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_ContextCallback.htm\u0000205","V8RuntimeDebuggerEventArgs Properties\u0000html/Properties_T_Microsoft_ClearScript_V8_V8RuntimeDebuggerEventArgs.htm\u000049","IV8FastHostMethod.Operations Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethod_Operations.htm\u000097","DocumentSettings.ContextCallback Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_ContextCallback.htm\u0000206","DocumentLoader Properties\u0000html/Properties_T_Microsoft_ClearScript_DocumentLoader.htm\u000045","IScriptEngine.EnableAutoHostVariables Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_EnableAutoHostVariables.htm\u0000164","IScriptEngine.NullExportValue Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_NullExportValue.htm\u0000187","VBScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_VBScriptEngine.htm\u0000556","IScriptEngine.DefaultAccess Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DefaultAccess.htm\u0000178","ScriptEngine.ExposeHostObjectStaticMembers Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_ExposeHostObjectStaticMembers.htm\u0000141","ScriptEngine.Script Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_Script.htm\u0000141","IScriptEngineException Properties\u0000html/Properties_T_Microsoft_ClearScript_IScriptEngineException.htm\u0000176","ScriptObject.PropertyNames Property\u0000html/P_Microsoft_ClearScript_ScriptObject_PropertyNames.htm\u0000133","V8CpuProfile.Node.ChildNodes Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_ChildNodes.htm\u0000148","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddPropertyAccessors Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyAccessors.htm\u0000111","ScriptEngine.AccessContext Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_AccessContext.htm\u0000197","ITypedArray Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_ITypedArray.htm\u0000189","ScriptEngine.DisableListIndexTypeRestriction Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DisableListIndexTypeRestriction.htm\u0000193","Document.Info Property\u0000html/P_Microsoft_ClearScript_Document_Info.htm\u0000100","ScriptInterruptedException Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptInterruptedException.htm\u0000313","JScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_Core_JScriptEngine.htm\u0000540","IScriptObject.PropertyIndices Property\u0000html/P_Microsoft_ClearScript_IScriptObject_PropertyIndices.htm\u0000118","IScriptEngineException.InnerException Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_InnerException.htm\u0000108","PropertyBag.Keys Property\u0000html/P_Microsoft_ClearScript_PropertyBag_Keys.htm\u0000149","IJavaScriptObject.Flags Property\u0000html/P_Microsoft_ClearScript_JavaScript_IJavaScriptObject_Flags.htm\u000090","ScriptUsageAttribute.Access Property\u0000html/P_Microsoft_ClearScript_ScriptUsageAttribute_Access.htm\u000098","V8FastArg.IsUndefined Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_V8FastArg_IsUndefined.htm\u000099","DocumentSettings.FileNameExtensions Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_FileNameExtensions.htm\u0000122","ScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_FileNameExtension.htm\u0000112","HostSettings.AuxiliarySearchPath Property\u0000html/P_Microsoft_ClearScript_HostSettings_AuxiliarySearchPath.htm\u0000152","ScriptMemberAttribute.Flags Property\u0000html/P_Microsoft_ClearScript_ScriptMemberAttribute_Flags.htm\u0000114","DocumentInfo.Flags Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_Flags.htm\u0000133","IV8FastHostObject.Operations Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObject_Operations.htm\u000097","IScriptObject Properties\u0000html/Properties_T_Microsoft_ClearScript_IScriptObject.htm\u000081","ScriptEngine.AllowReflection Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_AllowReflection.htm\u0000201","V8CpuProfile.Node.ScriptName Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_ScriptName.htm\u0000109","V8RuntimeConstraints.MaxExecutableSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxExecutableSize.htm\u0000263","ScriptEngine.DisableTypeRestriction Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DisableTypeRestriction.htm\u0000199","DocumentSettings.LoadCallback Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_LoadCallback.htm\u0000123","IScriptEngine.DisableDynamicBinding Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DisableDynamicBinding.htm\u0000153","ITypedArray\u0026lt;T\u0026gt; Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm\u0000198","IScriptEngine.EnableNullResultWrapping Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_EnableNullResultWrapping.htm\u0000193","V8CpuProfile.Node.ColumnNumber Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_ColumnNumber.htm\u0000122","IScriptEngine.NullImportValue Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_NullImportValue.htm\u0000163","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.AddPropertyGetter Method\u0000html/Overload_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_AddPropertyGetter.htm\u0000115","WindowsScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm\u0000551","DocumentSettings.Loader Property\u0000html/P_Microsoft_ClearScript_DocumentSettings_Loader.htm\u0000114","ScriptEngine.UndefinedImportValue Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_UndefinedImportValue.htm\u0000192","DocumentInfo.Name Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_Name.htm\u0000126","V8CpuProfile.Node.FunctionName Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_FunctionName.htm\u0000104","V8FastArgs.Count Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_V8FastArgs_Count.htm\u000099","ScriptMemberAttribute.Name Property\u0000html/P_Microsoft_ClearScript_ScriptMemberAttribute_Name.htm\u0000184","V8CpuProfile.RootNode Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_RootNode.htm\u0000109","IJavaScriptObject.Kind Property\u0000html/P_Microsoft_ClearScript_JavaScript_IJavaScriptObject_Kind.htm\u000090","VBScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_Core_VBScriptEngine.htm\u0000540","IScriptObject.PropertyNames Property\u0000html/P_Microsoft_ClearScript_IScriptObject_PropertyNames.htm\u0000120","IScriptEngineException.IsFatal Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_IsFatal.htm\u000096","ModuleCategory Properties\u0000html/Properties_T_Microsoft_ClearScript_JavaScript_ModuleCategory.htm\u000046","HostSettings.CustomAttributeLoader Property\u0000html/P_Microsoft_ClearScript_HostSettings_CustomAttributeLoader.htm\u0000145","ScriptEngine.ContinuationCallback Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_ContinuationCallback.htm\u0000176","IScriptEngine.DisableExtensionMethods Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DisableExtensionMethods.htm\u0000105","PropertyBag.Values Property\u0000html/P_Microsoft_ClearScript_PropertyBag_Values.htm\u0000149","StringDocument.Contents Property\u0000html/P_Microsoft_ClearScript_StringDocument_Contents.htm\u0000125","ScriptMemberAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptMemberAttribute.htm\u000098","ITypedArray.Length Property\u0000html/P_Microsoft_ClearScript_JavaScript_ITypedArray_Length.htm\u000093","ScriptEngine.DocumentSettings Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DocumentSettings.htm\u0000135","V8FastArg.IsFalsy Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_V8FastArg_IsFalsy.htm\u000099","ScriptObject.Engine Property\u0000html/P_Microsoft_ClearScript_ScriptObject_Engine.htm\u0000107","V8RuntimeHeapInfo.TotalExternalSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalExternalSize.htm\u0000104","V8CpuProfile.Samples Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Samples.htm\u0000143","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.DynamicPropertyIndices Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DynamicPropertyIndices.htm\u0000153","IScriptEngine.EnforceAnonymousTypeAccess Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_EnforceAnonymousTypeAccess.htm\u0000193","ScriptEngine.FormatCode Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_FormatCode.htm\u0000174","IScriptEngine.Script Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_Script.htm\u0000128","V8RuntimeConstraints.MaxNewSpaceSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxNewSpaceSize.htm\u0000174","ScriptEngine.UseReflectionBindFallback Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_UseReflectionBindFallback.htm\u0000204","V8CpuProfile.Node.HitCount Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitCount.htm\u0000125","NoDefaultScriptAccessAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_NoDefaultScriptAccessAttribute.htm\u000068","IArrayBufferView.ArrayBuffer Property\u0000html/P_Microsoft_ClearScript_JavaScript_IArrayBufferView_ArrayBuffer.htm\u000095","ScriptObject.Item(Int32) Property\u0000html/P_Microsoft_ClearScript_ScriptObject_Item.htm\u0000182","V8RuntimeHeapInfo.TotalHeapSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalHeapSize.htm\u0000103","IScriptEngine.ExposeHostObjectStaticMembers Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_ExposeHostObjectStaticMembers.htm\u0000118","IScriptEngineException.Message Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_Message.htm\u000091","DocumentInfo.SourceMapUri Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_SourceMapUri.htm\u0000121","ScriptEngineException.EngineName Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_EngineName.htm\u0000115","IScriptEngine.UndefinedImportValue Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_UndefinedImportValue.htm\u0000169","V8FastHostDynamicObject\u0026lt;TObject\u0026gt;.DynamicPropertyNames Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1_DynamicPropertyNames.htm\u0000155","V8CpuProfile.Sample.Node Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Sample_Node.htm\u0000110","ScriptEngine.Global Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_Global.htm\u0000151","ScriptEngine.EnableAutoHostVariables Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_EnableAutoHostVariables.htm\u0000187","ScriptObject Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptObject.htm\u000081","V8Runtime.FormatCode Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_FormatCode.htm\u0000157","IScriptEngine.DisableFloatNarrowing Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_DisableFloatNarrowing.htm\u0000163","V8RuntimeConstraints.MaxOldSpaceSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxOldSpaceSize.htm\u0000174","HostSettings.UseAssemblyTable Property\u0000html/P_Microsoft_ClearScript_HostSettings_UseAssemblyTable.htm\u0000189","CustomAttributeLoader.Default Property\u0000html/P_Microsoft_ClearScript_CustomAttributeLoader_Default.htm\u0000102","V8FastArg.IsNull Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_V8FastArg_IsNull.htm\u000099","V8ScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_FileNameExtension.htm\u0000134","ScriptUsageAttribute Properties\u0000html/Properties_T_Microsoft_ClearScript_ScriptUsageAttribute.htm\u000061","IScriptEngineException.EngineName Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_EngineName.htm\u000097","ScriptEngine.HostData Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_HostData.htm\u0000138","V8Runtime.HeapSizeSampleInterval Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_HeapSizeSampleInterval.htm\u0000136","ScriptEngine.Current Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_Current.htm\u0000155","IScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_IScriptEngine_FileNameExtension.htm\u000099","V8CpuProfile.Sample.Timestamp Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Sample_Timestamp.htm\u0000128","ModuleCategory.CommonJS Property\u0000html/P_Microsoft_ClearScript_JavaScript_ModuleCategory_CommonJS.htm\u0000105","V8FastArg.IsTruthy Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_V8FastArg_IsTruthy.htm\u000099","V8RuntimeHeapInfo.TotalHeapSizeExecutable Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalHeapSizeExecutable.htm\u0000105","IScriptEngineException.ScriptException Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_ScriptException.htm\u0000108","ScriptEngine.EnableNullResultWrapping Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_EnableNullResultWrapping.htm\u0000216","EventConnection Class\u0000html/T_Microsoft_ClearScript_EventConnection.htm\u0000228","WindowsScriptEngine.HostWindow Property\u0000html/P_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_HostWindow.htm\u0000132","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt;.EnumerateIndexedProperties Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1_EnumerateIndexedProperties.htm\u0000125","ScriptEngine.VoidResultValue Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_VoidResultValue.htm\u0000200","V8ScriptEngine.Global Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_Global.htm\u0000162","V8CpuProfile.Node.HitLines Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLines.htm\u0000152","AsyncDocumentLoadCallback Delegate\u0000html/T_Microsoft_ClearScript_AsyncDocumentLoadCallback.htm\u0000202","V8RuntimeConstraints.MaxYoungSpaceSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxYoungSpaceSize.htm\u0000232","DefaultDocumentLoader.MaxCacheSize Property\u0000html/P_Microsoft_ClearScript_DefaultDocumentLoader_MaxCacheSize.htm\u0000166","WindowsScriptEngine Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine.htm\u0000529","DocumentInfo.Uri Property\u0000html/P_Microsoft_ClearScript_DocumentInfo_Uri.htm\u0000110","ScriptEngineException.ErrorDetails Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_ErrorDetails.htm\u0000118","V8RuntimeHeapInfo.TotalPhysicalSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalPhysicalSize.htm\u0000104","ScriptEngine.Name Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_Name.htm\u0000113","JavaScriptObjectKind Enumeration\u0000html/T_Microsoft_ClearScript_JavaScript_JavaScriptObjectKind.htm\u0000171","ScriptObject.Item(String, Object[]) Property\u0000html/P_Microsoft_ClearScript_ScriptObject_Item_1.htm\u0000262","HostSettings Class\u0000html/T_Microsoft_ClearScript_HostSettings.htm\u0000137","StringDocument.Encoding Property\u0000html/P_Microsoft_ClearScript_StringDocument_Encoding.htm\u0000117","ModuleCategory.Standard Property\u0000html/P_Microsoft_ClearScript_JavaScript_ModuleCategory_Standard.htm\u0000106","V8CpuProfile.StartTimestamp Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_StartTimestamp.htm\u0000128","ScriptEngine.CustomAttributeLoader Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_CustomAttributeLoader.htm\u0000152","IV8FastEnumerator Interface\u0000html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastEnumerator.htm\u0000134","V8FastResult.IsSet Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_V8FastResult_IsSet.htm\u0000109","V8CpuProfile.Node.LineNumber Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_LineNumber.htm\u0000122","V8RuntimeDebuggerEventArgs.Name Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeDebuggerEventArgs_Name.htm\u0000104","IHostWindow Properties\u0000html/Properties_T_Microsoft_ClearScript_Windows_IHostWindow.htm\u000043","IScriptEngineException.ScriptExceptionAsObject Property\u0000html/P_Microsoft_ClearScript_IScriptEngineException_ScriptExceptionAsObject.htm\u0000116","WindowsScriptEngine.Script Property\u0000html/P_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_Script.htm\u0000155","V8Runtime.HeapSizeViolationPolicy Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_HeapSizeViolationPolicy.htm\u0000123","V8RuntimeHeapInfo.UsedHeapSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_UsedHeapSize.htm\u0000103","EventConnection\u0026lt;T\u0026gt; Class\u0000html/T_Microsoft_ClearScript_EventConnection_1.htm\u0000270","V8RuntimeConstraints.HeapExpansionMultiplier Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_HeapExpansionMultiplier.htm\u0000206","V8ScriptEngine.MaxRuntimeHeapSize Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_MaxRuntimeHeapSize.htm\u0000267","ScriptEngineException.ExecutionStarted Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_ExecutionStarted.htm\u0000119","V8Script Class\u0000html/T_Microsoft_ClearScript_V8_V8Script.htm\u0000257","ScriptEngine.NullExportValue Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_NullExportValue.htm\u0000210","IV8FastHostDynamicProperties Interface\u0000html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties.htm\u0000219","ConcurrentPropertyBag Class\u0000html/T_Microsoft_ClearScript_ConcurrentPropertyBag.htm\u0000488","V8CpuProfile.EndTimestamp Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_EndTimestamp.htm\u0000128","DefaultScriptUsageAttribute.Access Property\u0000html/P_Microsoft_ClearScript_DefaultScriptUsageAttribute_Access.htm\u000098","V8Runtime.CpuProfileSampleInterval Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_CpuProfileSampleInterval.htm\u0000146","WindowsScriptEngine.SyncInvoker Property\u0000html/P_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_SyncInvoker.htm\u0000109","V8RuntimeDebuggerEventArgs.Port Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeDebuggerEventArgs_Port.htm\u000099","V8CpuProfile.Sample Class\u0000html/T_Microsoft_ClearScript_V8_V8CpuProfile_Sample.htm\u0000230","V8ScriptEngine.MaxRuntimeStackUsage Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_MaxRuntimeStackUsage.htm\u0000197","V8CpuProfile.Node.NodeId Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_NodeId.htm\u0000127","ModuleCategory Class\u0000html/T_Microsoft_ClearScript_JavaScript_ModuleCategory.htm\u0000123","IV8FastHostFunction Interface\u0000html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunction.htm\u000097","ScriptEngineException.IsFatal Property\u0000html/P_Microsoft_ClearScript_ScriptEngineException_IsFatal.htm\u0000114","V8RuntimeConstraints.MaxArrayBufferAllocation Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxArrayBufferAllocation.htm\u0000167","V8Runtime.MaxHeapSize Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_MaxHeapSize.htm\u0000265","ScriptEngine.DefaultAccess Property\u0000html/P_Microsoft_ClearScript_ScriptEngine_DefaultAccess.htm\u0000201","ScriptInterruptedException.EngineName Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_EngineName.htm\u0000115","V8FastHostMethodOperations\u0026lt;TObject, TMethod\u0026gt; Class\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodOperations_2.htm\u0000499","StringDocument.Info Property\u0000html/P_Microsoft_ClearScript_StringDocument_Info.htm\u0000108","ScriptInterruptedException Class\u0000html/T_Microsoft_ClearScript_ScriptInterruptedException.htm\u0000679","EventSource Class\u0000html/T_Microsoft_ClearScript_EventSource.htm\u0000221","ContinuationCallback Delegate\u0000html/T_Microsoft_ClearScript_ContinuationCallback.htm\u0000101","V8GlobalFlags Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8GlobalFlags.htm\u0000170","V8ScriptEngine.RuntimeHeapSizeSampleInterval Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_RuntimeHeapSizeSampleInterval.htm\u0000138","V8Runtime.DocumentSettings Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_DocumentSettings.htm\u0000118","V8CpuProfile.Name Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Name.htm\u000097","V8CpuProfile.Node.ScriptId Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_ScriptId.htm\u0000122","StringDocument.StringContents Property\u0000html/P_Microsoft_ClearScript_StringDocument_StringContents.htm\u000099","IArrayBuffer Interface\u0000html/T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm\u0000642","V8RuntimeHeapInfo.HeapSizeLimit Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_HeapSizeLimit.htm\u0000103","IV8FastHostFunctionOperations Interface\u0000html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostFunctionOperations.htm\u0000347","ScriptInterruptedException.ErrorDetails Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_ErrorDetails.htm\u0000118","V8Runtime.MaxStackUsage Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_MaxStackUsage.htm\u0000192","IHostWindow.OwnerHandle Property\u0000html/P_Microsoft_ClearScript_Windows_IHostWindow_OwnerHandle.htm\u0000102","EventSource\u0026lt;T\u0026gt; Class\u0000html/T_Microsoft_ClearScript_EventSource_1.htm\u0000257","V8Runtime.Name Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_Name.htm\u0000101","JScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_Windows_JScriptEngine_FileNameExtension.htm\u0000134","IV8FastHostDynamicProperties.DynamicPropertyIndices Property\u0000html/P_Microsoft_ClearScript_V8_FastProxy_IV8FastHostDynamicProperties_DynamicPropertyIndices.htm\u0000129","ScriptInterruptedException.ExecutionStarted Property\u0000html/P_Microsoft_ClearScript_ScriptInterruptedException_ExecutionStarted.htm\u0000119","V8RuntimeHeapInfo.TotalAvailableSize Property\u0000html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalAvailableSize.htm\u0000104","V8Runtime.EnableInterruptPropagation Property\u0000html/P_Microsoft_ClearScript_V8_V8Runtime_EnableInterruptPropagation.htm\u0000184","NoDefaultScriptAccessAttribute Class\u0000html/T_Microsoft_ClearScript_NoDefaultScriptAccessAttribute.htm\u0000533","V8ScriptEngine.CpuProfileSampleInterval Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_CpuProfileSampleInterval.htm\u0000147","HostTypeCollection Class\u0000html/T_Microsoft_ClearScript_HostTypeCollection.htm\u0000803","V8CpuProfile.Node.BailoutReason Property\u0000html/P_Microsoft_ClearScript_V8_V8CpuProfile_Node_BailoutReason.htm\u0000111","VBScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_Windows_VBScriptEngine_FileNameExtension.htm\u0000132","IV8FastHostMethod Interface\u0000html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethod.htm\u000097","V8ScriptEngine.RuntimeHeapSizeViolationPolicy Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_RuntimeHeapSizeViolationPolicy.htm\u0000125","V8ScriptEngine.EnableRuntimeInterruptPropagation Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_EnableRuntimeInterruptPropagation.htm\u0000186","V8FastHostMethod\u0026lt;TObject\u0026gt; Class\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethod_1.htm\u0000479","WindowsScriptEngine.Dispatcher Property\u0000html/P_Microsoft_ClearScript_Windows_WindowsScriptEngine_Dispatcher.htm\u0000103","IArrayBufferView Interface\u0000html/T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm\u0000651","CustomAttributeLoader Class\u0000html/T_Microsoft_ClearScript_CustomAttributeLoader.htm\u0000228","ClearScript Library Reference\u0000html/R_Project_Reference.htm\u0000156","NoScriptAccessAttribute Class\u0000html/T_Microsoft_ClearScript_NoScriptAccessAttribute.htm\u0000585","V8ScriptEngine.Script Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_Script.htm\u0000152","IV8FastHostMethodOperations Interface\u0000html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostMethodOperations.htm\u0000347","ImmutableValueAttribute Class\u0000html/T_Microsoft_ClearScript_ImmutableValueAttribute.htm\u0000432","VBScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_VBScriptEngine.htm\u00002352","DefaultDocumentLoader Class\u0000html/T_Microsoft_ClearScript_DefaultDocumentLoader.htm\u0000322","V8ScriptEngine.SuppressExtensionMethodEnumeration Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_SuppressExtensionMethodEnumeration.htm\u0000189","IV8FastHostObject Interface\u0000html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObject.htm\u000087","V8Runtime Class\u0000html/T_Microsoft_ClearScript_V8_V8Runtime.htm\u00001394","V8FastHostObjectConfiguration\u0026lt;TObject\u0026gt; Class\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfiguration_1.htm\u0000728","IDataView Interface\u0000html/T_Microsoft_ClearScript_JavaScript_IDataView.htm\u0000729","V8ScriptEngine.SuppressInstanceMethodEnumeration Property\u0000html/P_Microsoft_ClearScript_V8_V8ScriptEngine_SuppressInstanceMethodEnumeration.htm\u0000170","PropertyBag Class\u0000html/T_Microsoft_ClearScript_PropertyBag.htm\u0000612","IV8FastHostObjectOperations Interface\u0000html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastHostObjectOperations.htm\u0000254","DefaultScriptUsageAttribute Class\u0000html/T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm\u0000487","V8Script.DocumentInfo Property\u0000html/P_Microsoft_ClearScript_V8_V8Script_DocumentInfo.htm\u000098","V8FastHostObjectConfigurator\u0026lt;TObject\u0026gt; Delegate\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectConfigurator_1.htm\u0000165","ExtendedHostFunctions Class\u0000html/T_Microsoft_ClearScript_ExtendedHostFunctions.htm\u00001262","ScriptAccess Enumeration\u0000html/T_Microsoft_ClearScript_ScriptAccess.htm\u0000174","V8ScriptEngine Class\u0000html/T_Microsoft_ClearScript_V8_V8ScriptEngine.htm\u00003268","V8RuntimeConstraints Class\u0000html/T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm\u0000312","V8Script.Name Property\u0000html/P_Microsoft_ClearScript_V8_V8Script_Name.htm\u0000159","IJavaScriptObject Interface\u0000html/T_Microsoft_ClearScript_JavaScript_IJavaScriptObject.htm\u0000379","V8FastArg Structure\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastArg.htm\u0000729","IPropertyBag Interface\u0000html/T_Microsoft_ClearScript_IPropertyBag.htm\u0000705","Document Class\u0000html/T_Microsoft_ClearScript_Document.htm\u0000249","V8RuntimeDebuggerEventArgs Class\u0000html/T_Microsoft_ClearScript_V8_V8RuntimeDebuggerEventArgs.htm\u0000247","V8Settings.EnableTopLevelAwait Property\u0000html/P_Microsoft_ClearScript_V8_V8Settings_EnableTopLevelAwait.htm\u0000289","Extensions Class\u0000html/T_Microsoft_ClearScript_Extensions.htm\u0000297","V8FastHostObjectOperations\u0026lt;TObject\u0026gt; Class\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObjectOperations_1.htm\u0000320","IScriptableObject Interface\u0000html/T_Microsoft_ClearScript_IScriptableObject.htm\u000098","DocumentAccessFlags Enumeration\u0000html/T_Microsoft_ClearScript_DocumentAccessFlags.htm\u0000207","V8ScriptEngineFlags Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8ScriptEngineFlags.htm\u0000795","V8RuntimeFlags Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8RuntimeFlags.htm\u0000160","V8Settings.GlobalFlags Property\u0000html/P_Microsoft_ClearScript_V8_V8Settings_GlobalFlags.htm\u0000142","ITypedArray Interface\u0000html/T_Microsoft_ClearScript_JavaScript_ITypedArray.htm\u0000742","V8Settings Class\u0000html/T_Microsoft_ClearScript_V8_V8Settings.htm\u0000121","V8FastHostObject\u0026lt;TObject\u0026gt; Class\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostObject_1.htm\u0000373","DocumentCategory Class\u0000html/T_Microsoft_ClearScript_DocumentCategory.htm\u0000234","V8RuntimeHeapInfo Class\u0000html/T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm\u0000268","JScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_Windows_Core_JScriptEngine_FileNameExtension.htm\u0000138","V8FastArgs Structure\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastArgs.htm\u0000947","ValueRef Class\u0000html/T_Microsoft_ClearScript_ValueRef.htm\u0000114","V8FastHostPropertyFlags Enumeration\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostPropertyFlags.htm\u0000164","DocumentContextCallback Delegate\u0000html/T_Microsoft_ClearScript_DocumentContextCallback.htm\u0000164","V8RuntimeViolationPolicy Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8RuntimeViolationPolicy.htm\u0000189","ScriptEngine Class\u0000html/T_Microsoft_ClearScript_ScriptEngine.htm\u00001719","VBScriptEngine.FileNameExtension Property\u0000html/P_Microsoft_ClearScript_Windows_Core_VBScriptEngine_FileNameExtension.htm\u0000136","HostFunctions Class\u0000html/T_Microsoft_ClearScript_HostFunctions.htm\u0000932","V8FastHostPropertyGetter\u0026lt;TObject\u0026gt; Delegate\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostPropertyGetter_1.htm\u0000196","DocumentFlags Enumeration\u0000html/T_Microsoft_ClearScript_DocumentFlags.htm\u0000185","ITypedArray\u0026lt;T\u0026gt; Interface\u0000html/T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm\u00001008","ValueRef\u0026lt;T\u0026gt; Class\u0000html/T_Microsoft_ClearScript_ValueRef_1.htm\u0000293","DocumentCategory.Json Property\u0000html/P_Microsoft_ClearScript_DocumentCategory_Json.htm\u0000102","WindowsScriptEngine.Global Property\u0000html/P_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine_Global.htm\u0000165","HostItemFlags Enumeration\u0000html/T_Microsoft_ClearScript_HostItemFlags.htm\u0000220","IScriptEngine Interface\u0000html/T_Microsoft_ClearScript_IScriptEngine.htm\u00001506","V8FastHostDynamicObject\u0026lt;TObject\u0026gt; Class\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostDynamicObject_1.htm\u0000535","V8FastHostPropertySetter\u0026lt;TObject\u0026gt; Delegate\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostPropertySetter_1.htm\u0000188","VoidResult Class\u0000html/T_Microsoft_ClearScript_VoidResult.htm\u0000265","JavaScriptExtensions Class\u0000html/T_Microsoft_ClearScript_JavaScript_JavaScriptExtensions.htm\u0000360","DocumentInfo Structure\u0000html/T_Microsoft_ClearScript_DocumentInfo.htm\u0000292","IScriptEngineException Interface\u0000html/T_Microsoft_ClearScript_IScriptEngineException.htm\u0000226","ScriptEngineException Class\u0000html/T_Microsoft_ClearScript_ScriptEngineException.htm\u0000664","V8FastHostFieldAccessor\u0026lt;TObject, TField\u0026gt; Delegate\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFieldAccessor_2.htm\u0000185","ISyncInvoker Interface\u0000html/T_Microsoft_ClearScript_Windows_Core_ISyncInvoker.htm\u0000149","ScriptMemberAttribute Class\u0000html/T_Microsoft_ClearScript_ScriptMemberAttribute.htm\u0000613","JavaScriptObjectFlags Enumeration\u0000html/T_Microsoft_ClearScript_JavaScript_JavaScriptObjectFlags.htm\u0000212","DocumentLoadCallback Delegate\u0000html/T_Microsoft_ClearScript_DocumentLoadCallback.htm\u0000134","V8FastResult Structure\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastResult.htm\u0000482","ScriptMemberFlags Enumeration\u0000html/T_Microsoft_ClearScript_ScriptMemberFlags.htm\u0000194","IScriptObject Interface\u0000html/T_Microsoft_ClearScript_IScriptObject.htm\u0000267","V8CacheKind Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8CacheKind.htm\u0000163","V8FastHostFunction Class\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunction.htm\u0000488","DocumentLoader Class\u0000html/T_Microsoft_ClearScript_DocumentLoader.htm\u0000272","V8CacheResult Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8CacheResult.htm\u0000191","V8FastHostFunctionInvoker Delegate\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionInvoker.htm\u0000194","DocumentSettings Class\u0000html/T_Microsoft_ClearScript_DocumentSettings.htm\u0000381","WindowsScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm\u00002292","V8CpuProfile Class\u0000html/T_Microsoft_ClearScript_V8_V8CpuProfile.htm\u0000262","ScriptObject Class\u0000html/T_Microsoft_ClearScript_ScriptObject.htm\u0000949","V8CpuProfileFlags Enumeration\u0000html/T_Microsoft_ClearScript_V8_V8CpuProfileFlags.htm\u0000112","ScriptUsageAttribute Class\u0000html/T_Microsoft_ClearScript_ScriptUsageAttribute.htm\u0000541","JScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_Core_JScriptEngine.htm\u00002347","V8CpuProfile.Node Class\u0000html/T_Microsoft_ClearScript_V8_V8CpuProfile_Node.htm\u0000333","WindowsScriptEngineFlags Enumeration\u0000html/T_Microsoft_ClearScript_Windows_WindowsScriptEngineFlags.htm\u0000408","V8FastHostFunctionOperations\u0026lt;TFunction\u0026gt; Class\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostFunctionOperations_1.htm\u0000510","DynamicHostObject Class\u0000html/T_Microsoft_ClearScript_DynamicHostObject.htm\u0000776","V8FastHostMethodInvoker\u0026lt;TObject\u0026gt; Delegate\u0000html/T_Microsoft_ClearScript_V8_FastProxy_V8FastHostMethodInvoker_1.htm\u0000228","StringDocument Class\u0000html/T_Microsoft_ClearScript_StringDocument.htm\u0000281","V8CpuProfile.Node.HitLine Structure\u0000html/T_Microsoft_ClearScript_V8_V8CpuProfile_Node_HitLine.htm\u0000239","NullSyncInvoker Class\u0000html/T_Microsoft_ClearScript_Windows_Core_NullSyncInvoker.htm\u0000311","Undefined Class\u0000html/T_Microsoft_ClearScript_Undefined.htm\u0000240","IV8FastAsyncEnumerator Interface\u0000html/T_Microsoft_ClearScript_V8_FastProxy_IV8FastAsyncEnumerator.htm\u0000138","VBScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_Core_VBScriptEngine.htm\u00002326","WindowsScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_Core_WindowsScriptEngine.htm\u00002243","IHostWindow Interface\u0000html/T_Microsoft_ClearScript_Windows_IHostWindow.htm\u0000116","IWindowsScriptObject Interface\u0000html/T_Microsoft_ClearScript_Windows_IWindowsScriptObject.htm\u0000378","JScriptEngine Class\u0000html/T_Microsoft_ClearScript_Windows_JScriptEngine.htm\u00002373","Nothing Class\u0000html/T_Microsoft_ClearScript_Windows_Nothing.htm\u0000264"] \ No newline at end of file diff --git a/docs/Reference/html/E_Microsoft_ClearScript_PropertyBag_PropertyChanged.htm b/docs/Reference/html/E_Microsoft_ClearScript_PropertyBag_PropertyChanged.htm index d6d404ec..c2456ec2 100644 --- a/docs/Reference/html/E_Microsoft_ClearScript_PropertyBag_PropertyChanged.htm +++ b/docs/Reference/html/E_Microsoft_ClearScript_PropertyBag_PropertyChanged.htm @@ -1,6 +1,6 @@ PropertyBag.PropertyChanged Event

PropertyBagPropertyChanged Event

Occurs when a property is added or replaced, or when the collection is cleared. -

Namespace: Microsoft.ClearScript
Assembly: ClearScript.Core (in ClearScript.Core.dll) Version: 7.4.5
Syntax
public event PropertyChangedEventHandler PropertyChanged

Namespace: Microsoft.ClearScript
Assembly: ClearScript.Core (in ClearScript.Core.dll) Version: 7.5.0
Syntax
public event PropertyChangedEventHandler PropertyChanged

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 z z`bC$n^eYy6`@~0}Wk9c=H!H0{X8D5Nu)cc|@j~|Pzd4l0CGbSx_c4pvG_@>kXui(w z#_{r-pn}80png8=AOPSK=$mT71Dn>~P7St;UOllVeqL>R>vI%5mFRnPMQu5|)L{`7 zRodG>n9X4+B6%`ad6iMfM3yKCnZ`0LQ7|q0rl5d&VY(gWy$vF(VX^N2VW<9I1`Hp; zGq7qF30Wuh+E)g$hE#*~pH}t+OBrBuE|MDSo32f3*H%XjFB!MF{}(+K;)k9J4gm@& zSoA7Y+(aUISK`Lx)c`7oqj5?ymaKhWd0lq2Q+M+c*{r{I{Y(`*YUJ92C#w^jozB|` z3~L<0gwjX}CZc8rr5C9&KTj-yI6vQ&c&pGgF#oeVq6knW0=UA zws$VoMX!6lT``(M{CGZ7`(wArxXCYd?#oT(pi#lXZ6# zaSVGBiYg_Yr5U80DNPfZw3(H$Z_*MlIhQSPusbu7sz^^b7n0hvd(H%-(=(el53x*6 zWDIny!03pCC>Y4jE6y=Al485&myl7hrr%Mp=_z?FLXHC=6@?V>Wr}x*mDUnG7ne%D zU^}!FRunv|lR?po1p5=Oi8M!&lOlUaUQaA5G5Wii^gzo&qtv2e4%}@c`J-uj0(t5$ zL0UR@xLwLwVd;f>p?OGHwAt0ZD!5z(c$~<-b7@&tM%&~nJuXblq5nbw4P$$$xUw7T z*h3b_RF#)?xgDhAR=VK`ku=7!2dk*4_!jQbEwjXMsl5Z%)fO!=%c(%(C-7N#a<}c3 z{5)~>L;a+>bd5R=s!gczDjJET+w$l?^<@!&T_nZy&0%52F*(b}@EiKZv9fxW9a?H* z!mhA_o_=opoYGrGl1uHoqd8zGN`6jG?r>k_$s1Nh+&>Qdu@T*`2Wt?F!}1Wwo<`GfPpMXq2U_WPv8~ zCh(`f+Of*9SLO9uB&8TG^&eq{r{txu`)p4|#pi}wBJ;d>f)%{Nvsze{Ic*HKQjtk8 zUaHv^E&bvrI2~gq`;MnHwR~pK3MuqJ=E(N1tnn;mw$MpuJmZ1Z+|PMI7s$B$s4+!{wO}?;w*#IZsWqYf<>0 zLqK#{$|e)3$`Si6mf@OAPeW?93CE5W5<&Cq17DjT0$iM>!*bJ>X-lc87S|AaK7m-y zTYrm@dv3E=NG5)(68#?0zGkAe)Rjx=sP+agj>br?HC&<4!Xs=1d62ubByMO?ZtEEi z!JD>&2;9~k&LP-GBe|(PkVdpd6AP%2{noVLdF|eY2{7|)EE;r1T)-I%jhr-27J^nO z#M3tADQX+zCVV0o7aM#|Ttq8L8O(Au{%r+~bT{lui-OU)S60KK7^a&7u^q+j@elNc z-u(^i+J1o*k+NzOE#8f;%0^K4>+B5T3Ntg_s>iX5RHcYM6pc?9b=7{a=Wju4*)tfrJPdAroC~bNnMEOvs}eIt85NRxYXq($$~;K|k7;2tNK%$o z#7&NCf35-OXjaqNtq`=Y7mk~+vF(^Iv%1E(>MJ4}zAen7An#weshdel*+m^m-qh=r zDcHq#D^(x=Hj0{$CFZKtz9vZ;Hpw3|F0b5S#x`cT>^X0M6M#cv@Rg?1@3x}{ar9O{ zshcL39x106fanv$1vj7CCNi%GN#yShXJtn$~Jw_I|)*kd$4|hxZHkFLL zw1T9!6z_t#%el(KS?;jbsg^Y|p1DEedJ-lGy{PieM&9aMBdjnki+<#KiX|0`SfV>> zwsJ4_sGA7QR<2}m+^E0NMkwyskgc>sv*}*Ak(I^~m(OaYdBxbjogaQ*+!7eej4451 z1R|1Hz=!uTQpUGWDoW<@8O53aee#XnRhxLNiUHpmlc5Xp+*ddr?2Q@g?ONnF{YovM zdK=4;#%(zT>bUE&6rJ6S#6Y22cLY>D*LiFB{ zBXNDgL8yXnT%vdi zXIxoYGaMyE6WEv@p%5&<908_9u#*hB$({Bz%XP8?Rh&G_vGk0M;riA~V7W{Resu2) z#Z-r(p{eS1hZ?ls?^P3DF#N%}OxnI(M3NSu^on{J?P!6(3Q=M4@3zpIstZ@XWE~@S zSWrU9BWU_4nDTLLDw6~0x~U$U_EJl{k?M+YQLmY~GkN@Zwz@$5uz5Px} zG;eSpU-@&1pn|cD-kBPO?jXpneRE`C*0cf2ONrDt;5LasDx`gABd_+>0Gee;Li9(7 zg@++EZVNOPt5RKpMnE1)`ak+YA(|ZauDdxl9Gafex}_f(?#-cK>HxDBuL+Hiy7i=k zXc4?g8itmJ(E-)=HchB4raUw5<0YJ11tIIDAUtI8llN^>?0b~r*c!{cKg=k2J?|XH z{}O2M0EV0O-}hcrJVH1ht6XVwWY~hfs`yA5F+RVrBpD!5*vlRfT!Z#E+`@%JlTl%J zxJ8nR4t7uwZ%dNB{$5+{D2+9pPuH(7ajEJTxuCr-E<`e#8-2nhN z-M>Oc#cs`Gx(q|`R<+lk4uVyN>v}^dHdrvBog_yiI`HaP=H*d6qQK|2HS8dkbK3w1 zfd?OaZ%Qcg3k3Dpu9HH>fGW`XbfHU(b>Bk$QEso?k%*Wj8n>`T){c_0+z#jEZNA^@ z_Mzc%FO3i#TB!>nzjN^x;79c-#F7l8mbAHC2sW0}9r(3RN)iOW?-B=_+eam4v1b2e z$X}Z?ULIG~7UsH|!my6c`eGCcI)!Cc3tRj7TLf*dF`UI1&9)*`WwwZ*!-?L;z1WJ= z?BElUM*VkZH^7UiyL16tB{2)&YXrP~gl;dL^>sZ9Mjdpl&K`AAn*ttPtVTE2(R%=k zB`t?cnt4$lV1!SsP^?&%k$fkkEofH5j4R63pt)cmfE@tv7kYo2=pGc}2BuGP`>6k4 zKTsw9yn`QoZJh8KeiREeIR6hg;^$b$c_gJBZa#PzYPg%Rm*k5l$$dBrt@>y6?%A{l z-XV-fe_%9*i`SK_)9ti&8qPactk;l>6X{FOx$9y38qr8C*L3N6%|+zDq-$zd&%N=} z){$~Wpbr52)bRQPmRs~Tc5Y3A@M{xw$D;La#uaVOC7i6fqlFCRoBwEHyE@}stc$Y9 z{BRK*1EbS@wYld15+L)2_9Q|Q3L^j4;{*a&4OJdz|LUZ^tHSpF)7=(|7x$-J{EYnE z-++`1zJStNvA01~Ry(JmuwLehT(W6TDN96U*Zev~BU`y>Qpq?tswvlnAO%c}^EuQd zmMAyv*T^@PZs)kihtN>DZEn^7j1?Y`^i5IJbkXqi^{?YJzV6r{LjAN{^~pigu31o8 zZ2^@s)Rq^fbx`3hFTZ?b|E-Cqe*1M}B7Ko)CU( zp4xmI=Uz|EU5J4dG-Ljwgupz8N%>(oig1JohP9g_S)v+6=FPQoH{jubwfNAy2nS!! z^NSgy;~_~O^d&X~huv(hSqHfBgqWMk6AqW&YjMxeKDol?jeu{UPJafzZs(-PbcDdI+v~rk8 zgfkdEO7NHne$%~b=Sa^caIh$s8_#}Hz}%#qjKQp6{new$!?B@ATyLOUS0ChF1UEaL z=Dpn7iq^(dNqHF5lKqy-;`q;IF_EgLaa5hd`(XlxNgHDcLDhDTh{$X{xch0%DQ(I> z4~xCl)QhihMIf}X7TxQvQ&MLl zWBZ*xss&mK1$MFJoXXswT2X(8d8Yr&m-!g}jQRw{aZUONP-#~XAn;r7uh_?L|^_(BIKJ|O`Sd0JWsIrp{ z^K@K+k4{QWlzkg5!Qn_kVq9qNaG=i~BB=F(FJ?PALcVWj0!S)oqn$y(HEO`u6aA!{ z0svh{C=)f=?1eSJ#I+s2X4*rp#m2Y9u~N1k*mNE5h9X4mmycD-D`02r`YQe3=nSN( z-U|dy_Y~+W5&q?Z@Ab{#EhV)bl zQ9Cfth>!Du8%_}6>E#AX(Li)&pyE}-b94KhRCj0HP;v0Xx8?yT&E%`bAf=`B8 zk&?C(&c7FU;Bu;_OXI)7cnh|x!X!?`;^&$Z@ma&LV?4&Vlr?0i2eBNFAEqe8pXZHR znfh!n|M`xzAKZ1B{Ft6Nm`uFKUj*)1U{$hr@XDif+~AKS*#ET+;Qt{JVN0HCok%3< zW9#1FQLwN^@4P9(d$8Xj_WUjcX(b7NG6d9p5v|fRutS%Rh$ z4;Zrr<757^d;Py^5s?1~LAI)^_~v|uLxIG$siVvDhmq^a&Wj!W(OQu|0M z3MT+{b^PUhX|X~1+KP^Ak+8Gw^HIJ0Qu8qj>@3fw(To%p=S*FoF(^RmtAkntF@Wtw zLodP$8D9YaAOx5)gWA0VdT(C5bzD0)O0CzesVr2qIyzfBhczqBMMQv^7>TL{o5W%D zDG~YU2k{Ab!*5>!&?1t3d4ME%5HCM~KM??k$O~yV`ZWuC*?$Fsxn8@$tAPh*3dJ^F zj%PW$PlYQ$i_t%&=`fj=**)O7A!_}0o|zKHGee5|T#;jX6A@u%epW!9`w1AnG}hj5 z{#tdzaqPXrBghklw)a-9z-ZdwH=4P;dr_bj*|5%@aeNr=!o-tk-4KaufgZ|TC=e$vIe9vh1o`1 zwuDys-*W=e%wpZnPUhn2kH9TGgD zTTk-x#tK<$9ZKZ3$2*F#jTcc*4?j+Smuj^^j%DLT?zZHxd2@4kT~*XNsh#`6_0~<+ z{U@0?yg5t!(lA1qXyM5Gt=#V>m87Jt{6rp4oXt++Z$>L;N4OZv{Ob$NmswDyY`vCD z%9rvvb2>Z@NG-02b9=aTxE$bpBLn8aDle}!+k-IJ%qx40VA1+Fj)aREV;SoZh&$4C zV}B9fRLo}2=tIdi=uHhvIrO!?%K}Snfx^75mQv{|M;8uvLFeJVvK(+dv9@JU&4p6t z5T-g|T%wj>v0Y}+7}_1DU{d3BNe5WY&{j~d^e8;dGwHuZCalWsimCgx+k&E*Ot(|A zSWqu=H($lu8y`Q4fM9!Dczd#p)ES&-D8UCb=w|&S4!XHLWzh6KNKEV7!>x%SvXc$tTuoS`=iH4B;0e z8%ABBxQ9v{%>t?+Q%!;`JJiqz6&+mGWg__d_YM?^)CtM+ zOXvp3=3A@vGZu3+G!OLD3k~Z1j;4(1TKGy&aQ$?t2;~MXl%>0IGZI3G;RtK6}g0KY)fqQ_70*CQXch=R0lnMi``zKo~NSQY9o3rPMcTjLFwuhPsfmu1z*UbpDRm$E2j^_@&tk8#JqIG5gU&Y13z z3S3!}RunSRNe$odwrji*OK%cfh0wY(dVrfR)!SjInZ~GM zSRB`*=arvdoL)E)##By`3G9*>%LbC^yJ#5)ob1srJR5Lo>y&tpj#+uhk(5?9Ml!&C zOnEvS?;}P0Cbu1^^}#R_`I}{@{7q8*TeP2uR8DS(9RlPH$ob~%d0)b%=+#+rGuGgf zu|9&H(j@fgIf6@CC^&oglk_6psQ7LFjV)S?oY)e3-^9@QSNVl88o>{=jypkUh9`|f zxjlIOe&O!3JkHTt!`Hn~0cbjK!~M^~Idp7erbF{(nklgHkgN)Yl+2M$`0)%q*_bvK zDJ!2H6DU{Qc(M-kYNxh|2ib2ZQ}(i}liT&?3C$^0$NJ77J{3>0R~@jgz|06XgR#&N zelxJW2nP>-JoHY5oVPfbiGm2Ik}~>zD2&sBqvVklbF9aMCVb+>jHKESC~S}B z69e1o+JF>`hPb;2c9vF>iVU@d5GON<@zb(MVYbpsbymnIskue1T;njF{-#+If!r}+ z_h(pwAJ6j?^%*|PI1;w=%JG~yycOye0#0y6eb&*5trJSj9aUkCz(G@aG&JdG@l9i# zB&KhOVf$8*=@tfG-G-3>;*KS2u_Im9T12wzP9(umSW9>zQ24DUEEo=_R(VhNBTdHE z>DB}{|1ei4n2^3K({>aO17)U7Bb?>1Ec{pe-O)r!&Ij)Y<{55(_GwO7mKnv=!Cp8DSH!78Y)bSZTU3ABl^GI%r4RD+e417=Q7&u;@emaSSsw#(UHhiw7!7^_wdIhLc%5W>T2@Q2LCIfR2)P1u)yg~?B z8TF!`Z*ghihsNoYU&YOC?O2f?h%_$hkZ_Bksn52plkT>3$bzh`1(}-TOUc#M7yuldU=`ulc9o( zY-=cqaTgQQ1C}4W-(9UbKM&J$8q<&&jtN+O^L(7Eb%xF8V$Vs8L^n8L?@Wgf&)4}F zfokwkE7eS4P?%6y+yn`P>ngBb62yo20Qdm__?&U+-ve$LCrI}+IYPATtb7Tb%boW?yGGq^{Kt37DXY+g$s@dMS^zif5b;x|NAchfXREU=;nb)D1a+|IAoqjwYD$` zd79PXP#2kkTP)7KA)$Z?ENeN0f>-&%F&cXSJN?m4{u|zmW-L_eR;j2MYsR#<_q<-f zHPaXMQO5FDM;*cZvx>rli3RoU{orHG)LpBlm)TvsW1T}-r+~zNb?-6w$mk_&xt7ap z$N2@r3aDh(T-t!R1IbXV3$tFz4u7WTBuF`jAP#GfF`|ic38L*Hv*J01`>5OkpsAc= zp&TaYz`_ec+uq~UO73j^h@En&{t zZJE!Vh^yu_4z8<&V*lop^S3h0SE9YND++_g@ikR1uMOiwmmV<;$Gi=#LU>+&Q33oY z(Pr@PjbFSi`gmG4`}=i2YtkR;G%SRCdyG!pocu&lV}_>$H7x86C-VB50@rg)jBEd_ z+cQ8$8>jGke;l%i@`M=k!L@9}jm8o`>7;BuryHgoiC?zSz1nYgFv<(NpJpseKq*aS zqR3?aTA+sDW92W?#6nvHQNu67|JKw$`310t!tz*VTYKdD-?*Exis;SQb($^Tv5w%N z$sR;})ryd-gd6m8Jwa<~K3^}3!-uVE^vY#P+(tcNiBlUz3QFZ5`W1Dx`@6pxROwe#^=i&m4C>X~)T$2e znPCZVV{=iQamK-9mSVg&D8+mCK0Y>hI$El0*`NMVb`HLbUmb0L1Nb?OR~#nq?aQ#t5)`f!ys09g{=aZ- zh)jKl|K7?EPxQ$OjlK+r13q@dTlYGY_Y8{xxw{R#e7}Rnbq&p9d=>8P6i+*@sO_h| zCl&Skaw+=Me`hH*?Pys+NEMP`5Rn)bjH}tljVV;_{8SaHf?)jbd(x*R8}y}i5h89$ zB}f7u4W1aRCK38IN@+HN6`U7X)=deb9Thzy(PEDCFSK}6qrEO5HV>C+KQ5u5D!=a_ zWtg*FX}ojUEt@s%6A5weK;~4$WbZFq375?n9XHoj)pHyQ4Y*HkTb4{@$`TV!XzEGw z^#`5vVJGT{x|mO|pP+n9r&uRL!s0O2T(x&c7`lgz7r9D51==1io?`_$CmYjUr1N(Q zE|+9Aa+i6Cp7o!SG5mOUC}7YQ()ds;tu7bv6WU5h(c@$24GC>)uTO)FSi=`qb_fil zglr@thWYC1M{?$fCW-eJtJ5cXhCd-7C*H#w^nUuxkYFe=E1WQ+&Cn{_G`IeB1-e%%77 zeya>#Y$45%vQldoE<~U$mni>&Ir|Ao-!SYs>-Gt22J1z>GMU)6ZQHi(OgMRB8xz~MjftI1 zY}>Z&wdNs;j!Y>Rx@XYnl9~SEFN``oly7l>8o}+Hm?6rD$p8o*UN#1Abmr z*Lt>fl{)MQ>iL?SweD)6N$m99_w(NckN9>vOjomut4YJd(3uod=rm++r|TK(91%rd z9mJf4c%JMgsp}6fJ%ET6LkFYCkID3~q~Unzj>@0DTVOvF0xc#bF%ELtYXleu03HyW zm@gQHK{bWBp=X%%q&1lS4HG1E5lu-J)0Ygl80SQP5J?oMq|gn&q)NoWD58}U{rsPi z0{~(Fs||=43z7l=2;cF_kFcDXtHREvx|Z#Y0cw?P^kvFs<5fhlYhh!ZF`Z8~mvYJn zZ&G_we<=k0E~hjV0D@-lk>cMiSm_`Kb||@ z&M266zu5}_;&jdy4nohXjm?RN^{&IZ6d4_tWTL7K8-uj9_@riCYbtB&_uQJ;WJIJW zU<6Px6tVONb-oer4>8D}F+YER0HiqoK=cd8V%WI{0wi;;WltS}IKg?mbI4}(yQv|$ z8Dx}PZ2rl?Mgd}DE_-^}qD~EM>83%sRt{7T=Z!L$*)|1Qy76DA%Tzx!!_w)Js{5nb zJVbTjJW?5{k?={`ra!0e7acaI106c*|B-foIoliM%P{ius5K&n42bF>lwPzp zBCG62$F=;KWoYx3*JjghO}g|mWT!d7h|rR{&8@#0K&oh&!Dcw@shsc5$srS~a??ot(Pt+&B-7+s|EqPvFv~STLHH2^RQR zPM}=23z_7FEXH#(t%jV?lx zr2?H`^L7wyX-d(JabHY0O?q@dbRl|!ZZ-zhnXk;m{jg3n>OZf};GgOcsjBm!kNwN$ z!lUN;=q$dbI_!wb|E6NbpissQQx^uibY9vzSqw~@TN#(GZ=U*v2T9d8r*NMec+uR0 zbinF#Jcf`jG&(_Fg`- z5eTc-g45}BU-xlUSr==@=B2}ZIHnF!6%4XAD%ScPs4UVQ2DXtwX(fR_C4=ZA=ed_2 zT`6b(F+O>q{@#d^5p`$X)mOMKrM$5|;)BO7G2p+~Qt_v-z%-kIFQxP{*YxD)VoZe` zS^h)L%wK2I(ZX=4c4ogjcg@I>4|%9V#`9yI5#ZR@HZT0&AZnb?Nq&q63Kuk?XdH9Q zV$Xuyn0*ObU9R91&D`^ky-fDY#jvfX&1}HnPHhps$F=wVC-2JU2=o)VW*nT2Esl6u ze^M@~F~+SZv?dOC1zy1qXGxf}=>VrotAc+sa$87U{b0e!cjv5{}u)ZE&m-B`yAvbgTfjtu2`hUNQ3-VkmXtk^m zWPgOcDc2cI@~71V(%6*vQb~IeG7Nb4`k7?Ay)39W+26vN&%jK#UM4t`%xkyd#J{smNOfd{JQ`8(ckb*+=sxknbtQ)Mi6B4jj3;xq z`56E5h3VqqLo7Z)AZ_%NjI{X8F}7lNaAU1zJh421w%qTox*3x4ZSXJXuq}kxnRQYS zk*_-(8sAm9Xe*9}Y zvCPxazeR;}Or{#P<;lQ&ZMi3?D1=^A7O`Zh!aRLDyD{(#VZ#p4jGC`z zs`x4tA(_v2+*A$9$#mv03|dGpw_8=q+$T2y4zfu-5f9qK7+mDyGQZNjDfZ3=_;cfq zrk58hMY`i$u@??br_Q*GPfGD5_l zl{l2*5TYMs|8Qu_c$+h)0W*@#zpYW(VA}yXCtv=6sFv4bG|o+k%Ras#)?s%USzpBO zjzUS(v50FcshB0-pnWAm3*mMs!EUb6+Mm=HkI;Ezwh(En=DDna)a^6hKR8mpx6jv} zVN!ZKpkrPH$){)t#eLu)&<*lc0KafLN_Yy{mE2l5h}_R<9qE-Wpud;gz_!CbHv*A2 z+ZP?z3!z;VpCGI;%-?t?p%(!Bt}5P)h{ZGZ(`ztTVEVG#E5T4B=jz1Kyz)4Ey6?m6 zHZT*1GVra6lFlYyM;i*W821TV7`D?>PEi}E?6|aaeaY0bj`M{HLv2V^)M5s&-D+3oQfDBhZtG4vd_-8&pP66VN+bCT>mK>Y>bPiy#H``Ct)Y8xCrME zC&AttuhAg5k}d*)pOQ7-Zn4}yusfxO8KbaIOW+tM#iMRUbNnymT>jta=TLqa9F z>n_PACzf18=9DlC&-?qK4Q)M(n_PX@AOq9J);kX80xHtSgbK;0a;B6c>@ozK(6aHN zo#izmJ(%QDEWPbA3cpyP0&FAM^X$6ouL54Y$GZ0?CI^@%#0OGFksncfa^f}A`SiSK z?6qVoHjAl&!%!u3K_jG!W7$c)wxf^RoP+Zjrb`ZOYmLr$uw;vsRcaD{=IR`oEiaAd z3)clX_X}!rc~Z)0X(T;46K^9)5y z4SL|Sykd{5R4f!X-@8TXFe9x)NYipRq**|fCud}IHC%cMr7Iv8{}G&4is02W1bebHA-Tt>*Yod?d>hr3$_0q0SZ zn>6S;NU}!s-&s$UZw86UMQPuoduS64RkveN&$q9$(ZF&+J?BUB)>s_;uynK9f?n$i zI%GqiI?-b-EXPaEzAf-=@2^kB&F3^2*%fCc5Q6nnEQlcIAa1PtzUc3)klc$%Slr;hmn1qevlcJ1&3Y137>*0saRY_x`N8*+xlCzz z=`$}{mo0ipGfW;`4*9%UCAi6$go$=fP5sk;fVF;+!yzi`S+vTZH+wUl)iA++y>!S} zoW<_~E0KfrIyp6*{gF70}nJmQ+_?1!DcTj%CH~;1{Pb$w7BwBNIq2vSKF+v@ItQHqNLn%{QSlGsW|R*Sk%VDk4Kbh=XJx)My|8~Ao;JC z{uew%6Ee3t>`C81*V2$9rl$L$+1B<_L}sKBY0AxDkt7BkGQ$IhasTpP8k_*+iQ9tl z4uOg|a}|j-9t7qDoKeL8R>~Jp`sx@5OxkZ9FK^L)d4T3t%Ao)&uTu`C*iwrs`l~># zE=Mf=KJ7NpEz#3N4s+)fk1r< zHtBO*K1Xf}kv}T3zuQ;Y9xPj2(g;uu==in;@WRIJ{Mn?S&?FNRt9uT1pC<%_)G2DE zR!5k?a-)0=L!Swb&{8qo&LWrBi_L@(V)I!Hu#s&NkANOz3^<(#9`3`Sba$7l@8D+e z`Fm-VB@W;6bbVl<|B%OMbmX{DI3vc(4n41y7e2!&87ZRWHEPvTBgm~l4qO4YeYIu# zan&%S!KXBDp>;riDa=-#JJ0a;EhY9utbi`xKCDRoS0%hdRJOU!Zf3T4i1Sf|C6*2| z&kWByL%5%NJeQNj1g?SKIb)PcXn1;fmm5;efi*MX>t8Bp+9^8g*AkorSq?Nb{?U)7t$N)bp?qeYq ze=7fJZZD0x@p`*1m>^4n+dDVBo;2SyRsXYw@XJ$(|A0Z^ka3Wb)ytO?TRLuCzsIhRGZUt7m(nt(91`vT zbG@wuzU6X<(vVl)z>aZ&VCJQjxAq)$(Xxpim2X<+5Kr4NN^4%!xeJS( zyYqG%;)8ce!u3WOJC1D)DoMl{zzYC~1MK6{y14d{nS-}3M>#s?F4|~1g0%Bj{+;#? zpcMB*Nc=rdwo8h=8_YnS#w4JrnmjyYS+ketP+6hh|48EGIX7o%+biVJx60>1tPiX% zN=lb9?8Doy4q4-Lt}aLYcuM9J`i!&hI=dUWyiris&B^FZ5weD#l!* zo-Dd8g60zMhk|-SJoJz~T-$~In0b;@mIi*SrrJ#enZCMJW1oX*z!KM60Nwb5u09(f z@3`sXpy1k3s(pr#*~3-yR+M2H6Lxr&`GQ1j4Xx(BLP#9EudvhG`s1GUls-%INfbLK zuE~@o#~qp)RHW?{ouUWq$a>mS9t{dJZ)OUj?oS?B=v7ML7WaDEJ|jMME6oWxBeY?< z*)xVSl8fI0wDXKyz%F(nKDn6t85of$qL|()gxX|~0p#Z=e+Zb9N=tWIIPy6AI`VDb zkCP*;!_7irgK$Z8T?N^k_8l6W+Y$V*na?$6PAz$#UA(W5_YmT23FN4;EanRO{ongx zek(45sw@>acPlSVbRdjT5mIP-G1AGG1hq6ne{8V;{8j4UlEVBi$z5i3}KRR z_gWYc`FY0pp^C4!Wt=vAtW8c9(H<}g01yCD*0?AhbHvx^0$f3wa`uVNsCK5fkq%L3 zkA9HAM@;)fM7Eujs5z)$FurSv3p>C;r5yp0*CpMp?EJAId`O$xO%R!5-}!_C3~Q;L z@qMdg(+a$)T zyvlI`mxszI;X)*;CkZV6-683JLW$m$GjXuu{{z*(bX@lXcan) z`tDvHI+?Uo6{x$=nRvwpGlSUw+A>} z%)P74gdkQHS|cKU8@m83#)2gODHkuqd_~C>A7Ro$xrWo|tdvlgbYd0BagFH>d--cN zF28d&>|ED%8-1|_`hDbPKd2t&0QsN*R%SmGgD4bGDwFaq?DB7 zp*4rPYW>oBhq*x&o2N_7l)9-)dvjyM*5h7s4R9^k6n3zdYScFA5La(~TRou)>bVCh zm=x+6nK$tL2Pfgr@4f~wMNu&DOYqL8%ga`tgALcwaXQUXi;3p;v2$j$fpNca&bWS1 z5Tzp%G$hDUXhrZ?q^WO%THszl4QeQ1_8$f%L8Ux?5Rg{@TZ$$70K)}?b_}`{Im_Mx zDHE)tX5qxI=(Qr9&ctz7S)BfC*#LXYp^9BnHt@sJl}N~bW8-H;w&i>8!P_vVOlzwy z6KTnh*qOb4R2}o}k$2Yn?pN%w;06p+^yc?mHyC!#<G8KutJ>a80WHD`~`7}>Fju@njplChF*S*!LrA^45&QbAxIKVW!Fc_^tRB(ei@ zArnsrOo=p@cpC?4Ftu`f1jwUi4!ll`Hj@+PYPtM8x^JroHMeRT^UzO6l5<%n#GI=S zY%dWZtUGJ3_C18VH8N*Pm#4UX*L8m@=1H2VCK?||%OW$vjx?is3RdRzQf`rP4E8lC zLH@Y30mNJVRkc)jm6-#J(F(YKiz0Mfm8iTJ={N-PR$JuDW@K<3q07fM2Zs)_g&ye^ za1pQ9iZ(?~_JuY&FL!ap(9;dA)dim9b4ov6|9 z;R}r6VXv-vB;(3b@#Upm5%t}V3Sjc{tUoj1#W=uL+RA{_IZwCTTie8F3RXbet8KPz zvcT1;lCu~VQ;p#@cG~um^I31&v!ICEd|mwN&!^lf5y&n~ znO2}N8Jchag~W7(yn6oGRNl?yo1DAiyYsOvispO=5{y`MX31J9Kf+z_aXU3av&>*S zCacxtE9EXuJM8dbM;1u9-_!-#)=VFtRP)4n?1?{<5BK7xVGguJp)eilxa4%o#^vBw zZi~v1_a~^i4<+1K%`X_xj)3GZMc1rt?6gBii!R4l@mS(5JS_KBN>utw*4@KC1aEX% zb13x`W(g6ZldQ#PaE!Ox8aW#G_eg?lr?sSm!M71FgOlJG zx^ni87qtemr`b#|6!r#p^Oeq)l`Q}upRU+w!2f7D`FKN0UPxnayKMJj!Jj`J7x!bz zd^%lj4&9)dWQFI#+}?taU4<_~(o%b!)D&~jC6(Nf`w(pKv6HuR=5-p6UT+l|rm_rS zbP$j4hv7#>N9;tB%tM6}`t89n#{pIAAPl(F{pU8 zez2*i+xY}NpKvgzw36UUX*cmeJjZxA2xTI#Etkg;9oze*Q0`#;-iqJ|g(w!D?zA+N z9i2Y~SB~%z&uAnhqLK_!$RtR5dOi@+q&#Ne;}uR})>ea-;(l5;4~3mX$8wJQt+h`z z@Re-GMhc#0%$9g%aRbg!ACzxZzfOL8<`9J(0&c?Y5c2bZ&QlmaCzsp#4-H@LhqOKX ztlzEB={J)1di)!xQhZ&J8fEawK}|9@CZjoJ!rwzD-7$Bcbzqxsku2QjzosA+%Wut% zAi9IE;A8y51b=3{`wl*3UtT-gad4DuN=x1?svn{pB=X$uOp=%|$O4LHubn_Q(t!2Ap)1Bw-rt-&#c{QHd39RX(1P#y-&xi!Uhuu$cf9UzCc2Wc zixT{$c424u+g=_-ux}NjYsNU{)#PF(vvIfWkC`@vwbDB|2T@gj#h|vU zXAS9bNO6EB`X@jT6!3_ZGJMCLPg;&ZY!yO-U*BMHUpu-!B=3N$jJ1zZe69MDWnz?% z_vGzaVy3YKV~} zSJ1#d^-sX)fcX(2r58a61v3T9mv*akAuTT<8k5X#WJ|zA&dNes`Fy2|f>+%Gm(YK{ zFyGCkdb3TK!|Q;&YmYfSr81>Dty@h>VWa>_M$0b+H6fq(yIC238R%wgA`)t{0{}1q z6z_(oHB*d-iLfcq|A~@R&+)l4`%I(JCjRa`<&yXZJqnf(&kFQ)TsDx>-7s+YCu}Bi z6$cA|{qHVj0jucD2HO>)iNzE3-VBu)GV5{dYhE~x6-o%sb_C)wrQTbuh)+0tY+$X z!kb-cd&V2+XlqXkXageHK(M`e>}S9~yxT%m%yr=;;i7t_=?^lws_{@L!lU^Sq5dUI zQk63_2WSHTZm{GSlN);Chk2sJPDo{NSv@5kmMsc(XB{t?U(SN= zB>Hh%cwt_n`@jAn{Wl-10P_Ge-Kk3Xu}O`MDGfUTl!Nwq>(Q?+Vm~u~%e2N2!(@k= zbU~P&hckU1A*%xn*3&`M$I=$N>BRVagq4F%FK{_Ovkts2U?8{$l~Rvj-hZhyd>Td9 zDonh9x(ML{3l!%hl=RqBW{hyT&$NVF37%lqpq!-9C>3t#oNnC~C#kQhS9m4+zbgNY z2M(}F$Wr_(cQt(7)F2%-R?e;ST`-Z$` z7}>kCTccJumw2}90vflCpQWw^+OZJNIZx6u9tabnO0$bR!e#iIf&xfgdQuV;9+(=vCgGcdls!yguvqOYx3G{q2B{lZn~jAT_vRl$& z7c1XPXaN;24t!m~G!>)qK243g%pJKjqQfk*ZTyfG@d1HZG}x%{Lt=`OCLvWLqj>C{ zy5g%e!wGdSMR>U=y)}#x3XBMMq23%biQfDJF;WEulzkF&yeS>k?DHzw^yPhLur~q$ z62mYxm+CwE((|LZEkS}aOP6yJ^JMRy-N%TsutU}aGI66Z)AQ54IgG1jOY&O`9-re2 zAJVd{6*-_dR>xx@(H2XNP8UX;sY%Dr!^*Bs2Jq0hxYUqDVK~V$sBhZJmEzsgaN6v89 zn@+dCdYW2Vfyw)&Xl(wbMv^bSGvp7C4G$0rHnB3BuVH*RqmG5fep-+sta8%FmvdLL zbKnadVZ$!ha-r9-68-9%Otxf zl{Mi?&=D2J*+Dj6)LS=qZkSeX$n-@VG7S0|ehPNB0Dgf0u+v&-7y%|AzRA#5hK|o* z@1frZArv{vL@P3R4CeJrb*0p+19_zI>SA#k2$!IKtFzcaAcAWLn z$Thcv(v_qLkaqx7W&_brDnVq%pCZaX0N>^?H5NZV8;#DptIuYxNv^St)yAp|QfbAy zjU$Jq%QjgZHE2@Og?Q}1L_?_`TF^gBW0MKPg{FThE+9rI&>S4_+P@>*bOnCSIfr5w zpJ`4;VamBIi!|_>o3cjtC;ozEiCtQp$FkCmMIPwrEmK?Uv;2-ss!6KIR=jBxP^J$l zHAU-0SG#4a_f9fmy%Mj$-OH2*8AvXVtH*$|5irdaE2fnl`D1C(V9$<@a8!*2v76v& z=mc!fnqupf#7WgG1eH=uVL8{a4ik|jvxo|UzYHidJ-JlUZK7ux^wAzGZ4|K4IRgipq)!KpyqDM3&&+~GT&t-U%+ecgESP&x z7hr(wrvpk8Lc&so;t#R5eZ>iHjW3yuY$Oqn=k@Qwg%wQPpL6`NLZcV)c;~6Ly<)lv z_th2I1hqpEXCQe6J5e@ks%p-nle6u0zgJPueFBP8T)G4@_$yf1ALzy{luT;+-@FPh zv8jWy5DUTF=R1KZCO(=1MNbfSNL3Iu(9mLs?JV|F8#^N8usQ5Hv_$pg8oV;Y)}aee z3xscFi-HXZ(v;^acY)GHpMR;;R9I2^X22yzTQQQfYxd%x7*WuO5#o^aOCKvcOJu2U z%ndLNsw3E>wRm6&YawvE17fG%I|3}9>duT0hRj8O$I^D2it~!!yZEV)s-aSqk(4@G zUo5nnqaAX_I~l4RE!Y$<4MfDdt$l#`#xzA&4vMFn zK;B2}bJn939qpaEUbX|dn$UfpYIh`@8;}!-bh(gA0UL}9#ma$p%P4sm;ByL6OXA)| zjWlYSZ<{(+)~>t{681!5e(t~A&2kQYcOc~<1{;F%CMP)Bc$KmDVX?!J^x3YyQ3!|a z1?qHu!)L5$nVAor|GOt% zZQzuy2Euf65+b-r?b3JIMQbg#U%|MdHdW8HaS<@`{`+QQKGJeL=9FPLxg;Q_bWcc^ zPCz3BffY)r`l!vO^agut6H9R^ z63dZONn_a)YH#e6SgLSOf|@P2s>|2vNq5DZ-@WzKJpyab4nc`9(xT%`1NQSGJgR-> z&DSg398dA>c)V{FVj;Xp6ncMP4}#oE#w7C?BKVf6`FGnz<@iFmGr{zF9FI<~JZfPp zlnxz-t6>q@v4kD4m;cV8mGd0wysp{CzO1}Hrc^?^SKdvGU|!1YE4DIAyh`V!>;K@+ zFL(=?@($J66q2mPW!(unlw`&(6VE!P;-VZ@5?aWwL1BZuB)EA-6caX~;8ZT~(XX8=J`!;SVf;z9Hg zuj?;LmU^gaf`62GAXVW=BW$x_*Il*X$c5(QY_)PRZcff2H3s@}L6H`;grsy8e(e=q zb{t%fgbhT1p8tz>dLt=os?hx;QBbvJ^JdS{>Ch}H7y!;GHYW&W0XX-Zm08*ZnEqY4q<5#X@% z+Z0)Deg&WsRCn4vyQJTac;MtMPRd7PT4wBOKO4P&k1T#)v1|)eT{_#0(5zVd2SgN@ zG#$HNIF0Y8EGD3gAE9~(>A|OKDfCVXQV)YT?G92ujVQR#FN*_CKB*vBlZMT}rHR+K zThyphVL46ivIl#fO|L|`C~3lG|8`ZP%jV6tYg`fyxOV?HXgJoAYXO8q0K3ViUZABp zm}gT;9HK6-(bK&aw=HdV8$d)~#Wt$Tx`Yr-o(M+qsyno5E@7A$mu$e2-8W>S~3J0ezpk`9-l0yT(sNTo}|v2mw|DLBc))0M;O!tyo~&L z{+QBUpoEqIDge#j!#JrBXd)zijJQN`tSiNVF*CA65x_3qiD|ULWbgY14Ry1tH$IPxVKAGYEBEzY|=XP{8 zpUmdOb?aLFoO37_+{X7S=y;LBet#V45p9O~UlffmmJg3WpqsMgXru%e>ReUxV{>D6 z$sN5#(M$C%I0`_S6y_nhx8q-KDWp$0<~KC%`^tczt6ri^pr`Y=)nfdp*FhcVR-7vX z1FJ{<8PttfM@1N3tbq~!p=?0gvmfkl6p^comT25cHT9GG>6x53*wIzNo5!M-eO?&P z_ktwkO6IRg0Fvy_iQMtDi3)iI(5UFm0J9#>UXzKk5Iu^*Ome=R<|l)u0c1 z$+5{%?6A;@Tmu8hWHQN}!+UVF(81|~(Btk%;sw2Lio9yqNzmBG$H$#X{7ocDXIf}~ zn3{{htk2u>Bha9REjxJ|%zTJuMmS-7SiR$_lc1CRNFP4Dt^_T*OpXe~SaObo`cA)i z;L3?LC7=lD7LUNN8@=Bz6H?5YURp@Wf!m}c_zNqh5^z3a2#1PKB72f3&0rHD@W?0gIkJ`;2R_7wFargVJACL?y?&P;$sBpD3aFZE0S6L2=G-EB>QJFDY+OqZiMG0RW~!sG8Jj zF}bsun0B2UBH-BJaWxQXBPk1wKIXVzF+iy3C7Waoh(&-2WMJ1QEgh^iP@^?vwLTTV z%;K9=OH@!zymZd`XYhP~+pVoJm>|E#lj}ls^5Ub08-bNz?(%~cuS)t;qX#S{W?5L* z^Y|$RbOojO)G#!$fh(^H19aTvD)O^Xvx>TISA$eORG?*csxAW^tq}1 zuUpK9l%>!{9>~t#VOR6ITt2#E1|u`bim}YX$uV_WRZJUY-A0*mxQy3C(M&~sK->2- zj+etQeyf0T&g<2Qgs18;bI}=k`U^A;;}2g0R=y*r`nLk`-E9pHAY^?{>~G~7yD6u2 zX+7DA0~4L3(1_)=RENxzr;BsN)eRcYJNDs?##n%Ea(wm&J<5kWXtp@ujnd{JlHt3q zPXyK<9ij#3_i7v{QxiQ&-W;sG#~R{&|9J&y_3S_Xktb}Hv^UrEBBV2ktq1VegO_X6 za#`HlJVMW{ytNFRM^R~v%WhA#iaqYUrW#>iUi~P2{Ie537g@RU^nRnH$xGgv-3N>k zs8Eq1A#)0eIfssOhFxNoAvBS6<Y@(Z7=hHJR1^{FN0DOQWt_G=(r+_mkzIL?z z1u>O5qiy^SyIynb6Sb@S_s1x6Ql7kuB4vrg{@eeL(FIr!(bFypwXbcgO=GZ! z;6}dSS#o)97n_fSdKtoWc?R(h9jXjg!9TL~{zr!H1<|H87%rQn$3V}e=i6d{mZ1G? z6{)2=1~ZzR*mxI)y&IUP@Ss=F42G6~6JV*|3YxbjHQviose8mLI= zD9aHtDE>z;AuSn#B;2uzye80&BqE5#d;;{0{Yd7}+r?S}cJ4pdFh!;e)SyaEkxv~- z^nTuI4VnzjTlM3Jo4v{~W|9gAjcD6UlQ1R=fWlckwAzftqB#%;G18452zY#XTlH6u zIlZ~cfOF8R&C4DVOqXZx>qqJ{t}+#g74}vI()o6`j?seso7_ir?_K=57+URT?T_xA zaHHb3!Nq?w)gt!G|4)A$yxFJ8rvb)k9DH8+2ppHSG^)M(OES$aoP&cAq?EWcN`APd z0lo9KVtmfyrGY(fnD}bVLaoDJ;UH5T4ly}9g1$)UeZD^F3>n#D*->C;kJk)LD5Zz- z9-$3FZU5~|jNGgS%c7sFd#%_>$nvktC=V|}nEMoI@>_kcZ8NAvyI-t9o+B)RhOj6S0fh98_7A+*;~Mej92@G>(xy8c zWSVmNFQRkg)^XjCuzO^;6A`=oX8_y65P<9dQ#w=>zuj`S>XSr|pfp)z7|jKXw&%k- zbv}KZjrN&(y^wUx_pH{-f$ zt27=f;7;A9104@_=KIRDgj*&qZ!PNm1$g^^)4C+qZSEyris}AfK=#bCZr)ELYSX8XUw#poBN;AArk#WmMM4g zGBnmQD7XqSynnFLqkXso*yUtZ#I){+m|WItmKw?fv5q`NsnJu5%rvA~Ha-#SR@5M# zmd>j+1!9`AVNHhersH%igwfppQv8qzuRd`e|sv{fMW?cSqb z!HyZ#M9wR;_bIX5eDXGtR9v(cf z`--IMku>1=LeI*u22SmQM?LEDz}h|8BA1FGOW+2J9!4?gpfAA<*9!cWEX2{Gm-~x< zHbD=?j9bya5hHuc+f)DP9LXoE`ENTl%zce~a^qMvE>^ew> zvxuNE^{VWz5pm>lUi=q3twH}+++k%V?b_O%y_{FRGYA7G<9s46RHEf9RdBzLZ6W{0 z0H>Y%1_AWTe8+2K3L2;d*|T>Bp9^pi*pJ?QyAEh451CWcVzJyeJ6qA}5CEy?Q1}}k zt-0I6qBY7SVe*#AScK3dQu>sYIM+1*iZc+#g}WK#K`6KTLnrJ3xkZf0S5pjzvjKg$ zI4a_yqj9t_eG$}hma?bFXo9#?b$72>9YzAEu|tfjKVflfC{ZB8#G3ShI>PS>G4mrD z^iVS(;#pe-ccFcEZwc+P$!p-bqK5Mjb$m2NsiK>jSkTedwpJJ$89nE7w;Fs>>Q0T9 zYUov-pzd~DeqttDW#Qj>O(;;*yO1=JQ|Dub9EhVp$PAKX) zf~PerNta>l{DLbB-7>^RZqueIby#K~PG6arO^57o+@%Z=j0ERQySz|`A44Zjq0d~5 z;_37b^OqGkUbU@mbsKOe4{x>?OSU#-Xe}}KfQ@*YZf84j2pbj3bc53}G9zNT_kYCDuL=7Sn6tF~lDcR}LN;fYqOu02QP2Tq<%9dSbjbE>%M(#`2DzJvo|U&c6tEMmB8WW4+NRQ3Gr>lp zCL1nZ*%!U)$&_Ignr~=<;4?{TYYFZlAL70UBB0so{^>qG;rTqSFg;U@h!Bw@(4Ly(elEP$+ zuW&t>)t!ZPcyY2V>NWZzZ+RQkG*Av_@1zYZ5aPm^_y(55+$Ame3cW&G7pC2WQt%Z9 zUY$)cT~Pm&w$w!8MtK}fPTwh4axZ7Es+|t- zjnY5T zxQ+Tjn0GGzsM|<@<|E3abjG%$_x>Hq0@N2>ozl zt1Rg>m)S-h4s*;B;Z3?AK7imha9^ud>i!GH2(vy?rP2+6+tr4L$I>&H|1R4{6PYR!HCTkfHPVCv%=u> z-naN{0KPX6X7D384rYQ%8|6NBbeh+uzc7p+A~)&n{fa>KoM?&rgTEEvt5vo5z>M!=&`o=qbuuiF{u( zk(A8DRT_Y&U^aO804w^~z=ax2Mmz?w#F(t>*l{|M=}GOF=u+~yz@@_r`KS6{a4ejZ zmz&cSGYv;IeAxV>OgKrHbrf#r7uYZBk19!JLr2FKsRH47PmxbAB_*)yZ7y613#o9t zZD|?C*5hL)v<1?>FA|D#7hn;GVy5=)NYMsBgNmJzrmy|Pf_#T(-np$0lK{&GZ*#JO{S54Jyf4zASZ}mUDSex*m)pjyHl5 zqh z@{ZQP5Pt4uyR(FeH|sC?TOI zX!!XSIHG992xSp=*h%sxwD*dA*7~={cg2I>aa(c3>uy%gNE7pwcva?$>wie4imgRD zBT9&i|IGzU>%p60ZlrIZO1Gx%5JdBn4nD~0n#6k~FsG7R`-JmKU-gK`(sFGs5#J%J zyX761hfL;76`F$I^NCzT$v?a8)TgIa#US#RopAe406K$Fmlh#cP!wEn@#n?q0sSVB z4W+AYgNx$22>lSNp&L6-Ane2-|M+5gKX3*zt=m!lxJ^}CGC5o8V9*$%jj@JNsde8% zkxm#a`S?10iFYGt7iRg`L`m|8vU}8T^w_PD8N1TF{RZw=_Y~pP1U@hvNl4N8aU5i0+wX9|& z?xa$Bv~uTkLfe8x>oK>!yC$_2qT?wTs{1K7`ikm&f-;r&W8c#Q4ubb*KUN50zhbLS z!aO$<;m0#l&dI#yz#OhXft^4n5Jx}pWaEV4JhH}Xo6Aj}5G7)R`A6APbQ8vF_OyJr z3t2mowF zA@xjP!oadv;VUbN>gZ?>WdgxC^RHm{b&CWImU-eBS!v!q1+UBmq~FTd{Z6!IZ{EKM zJdxAD<@WcbLa@Q@LFM>Wb?1q)5vrxrK<-AOU~hzO;gVOmU_C5$Nmu!L24APwx~EZJ ztjYa6Db`p<9}x?U=KcLpzZrTES_#S29{@=lKQaViXw`#WF+WB)9vYBj0HNGPIhL-% z8;dCo#XM9cZ`8}fPmp9Y373wV?+ulXSu%7hClDa@LlFKvRmuti)8mKPo$TH3D$ z`M7RQG)O%OJtGhZu#a9O(?qV%^ak)o_{DD)G0GEoP8n`W>g9S)DF$7~MJ*J#hh=S{ z$K2N%@>?}Hs4aN!3HQ;3<2lkR+RD$Ro=*;c2!Z!jrs$tdCch>0P2WWcEF>^q2cprE zwhfhV8J$LN=!Ju=6<^UOAFje_ZE6}EUBootuRK*LGeFYCI8gPRCrC^agRXrIwdY!ubifRGEx^Yu2x!F6A>O`YM?2Yv&bpk{Fy$~Phe5P; zNy%#hmqyB@r3oyrV?Iww5L8rI zzG9DjYb{Jpnx2kxrYL+hR|MLJ-x4+e!+Y`>q%gT3F!{4*>T$_S==|4tZ(CX{m8FN7 zGm$NYYwM=-97p7Q^=aVL>SNJW2h5+$g7F9oCTyzpR76fe0oF%K%a5-*pI#puP+;Pj zr0#w>2$JALaQ{&O&IMLd39(4nqbuPgPj)c>5T1Z@A%(_wm4fzrA#(kv;!y((7Y4TH zg|1Ex2$kA*q}>!If9P%Qbg(8`1vjg!Kme|okq4(N}E^48UDsxD3HD=rJZIqS8`-gx!;*1V{O`C-jTC`>t{np z=s_GYBti@Z02TlaA;?2gg>}g?`osem%}GGx*^l^-ZeIe7HNCK#e52Y2HDa$ge;AGY z)4I(=pUz1?%R`|4_?C45AKgoPt`H1F}_o;|L`FxxzQYatM(E2L8LJ4bc9N zI7?^@FBRqkE(Vw8h=AonLEeADy1;<~*28IeWu+;z$;=-rn2(`Lx|En^;`gX}iD}V! zdRS2nkv*D-2cVOg^9pLyy=EG|-FyVUuwX)zo0`%HpTEZq1k@$9QnFJ)6h(BwKoTI~ zC-R%5QLg_#rp_rk(qQevor!JRwr$(CZD*29Jh3yeZQJ(5wr%UroO3SzTB|SmqWi0= z?q2=Xe)s!q!QBV~Cmq6*oVLJ2ea=AEjOX8qTYSF9fG?^bT$L|oAD%^fIRu1VjTU+wXoOjo$ZC18`u$p z2MfBQAmz#FJ74Z6p(mhiYCvb;?n>;dA;Ei9XLp6E+{6KS?@7TyY5h{k?vbKKIsi#v!ls`q=1Dz#CCvu~XW`nLZZ;o&a zrTc9AJQJ;;;tM)K2d+L-8Z{x93HG3k6NRc|)XKu<2P1Hd@l~u8MFSdu5&+PE{c7<3 zwIq}U6+YXjPym&x}wMnua)%W>+c;toYK08C%ErzReK z>!Fi*;|THIi~6AcjiT6DKHx&B&p04$9o(-2?HeB#6$?rZZnE|ZCTYVau@o4axuuvm zL^gfhj2xCeu}XojB1zqWX}CGL!g}R9^Icd-J^;Nt>@3Z@mas0OY&c^l=Gfg+RMEeh z1w~=sg73s;=AXGiv&)=l*v9_%4FLoAUBCEM^#kQpqgYH&?Ye)UlRgOpHnS<`rp82{ zK2eG9;X&RRR=3-(;Y@$I`J-N;AVe%T9-yA3gDA!-Jy>NlMNAvaFsQ0#rI%(2$eJN% zP*yA*3^D|U{@W|OoIg#rlLYuiB|-Hl2_ zXj<%emIJhCPO9m^O+1Ru8yf5LiWN{MK@gbJR+=xj9}u;W|GWsP!Sk7rl*+``4uZXq zGQi&o9?|3k9r~U?jUNGhm4OBfK+FUo3I^~C?o)GU_L|UFS|5`>oS|P?2@+`F5a-%rP2@4I zy%St_+5PHi7s$ruY6A#AuEe`&u4_zi!E~;@>KojxxD6Mh2(ivR=;LI6;N00ALUOt_Js_+*@sl2|%EI5Mv@_q@Gu zebyQxVeX7iVVgQ6NxSHQnRMbL=OC=9XFde%^(hQUcy99 ziZ(7d0qoZ`~_w8bcBL&~c&)@L|zR;w2B5}oic&C10>Q~vXcC2NYf znuflJs`Qealz2%Fd@TAyG^U2kdS3wTa zJDb}Kj`+&FWT}coOKzowbn4AILy->WIX&VuODLzus^E1Z?38S1eVQ9DNVV_f-Jn=+ zb4x*%cxh(?qlhv*3nHsf@dinH;IG~-I&R-=X&~RMY1jOi-=qf$i=Wk~f7v#Zt4mg< zyz+kIMuhBJ-P5E4-WMltr^M7NL)NshXW&dLEY;Y#kLhU}W(!gVEJ=5{W-{ElsMTAI zmSxVa?H-33Y-k=r*NY~ao5+;)%NM8;8!8pq9B!c`8&(gD$V~|dP^RR)jJLogho7wO z$pw8w?8}|cu$A#|{Ts=B`txle*)2REk2h;h6FMxOZKesW38x7VJ{X@A77}kq3$T<= zZ!5CbhK-%=45p(`hAY@d_jfuj;EAiy*@i0=+D(OVqDP6}4?EB+nBTOm7J}L$03Br& ztuir|k5&|FxY{H02nYw(1N#V+n&!WagBptsC*rHJ%h&S|%jF4Zsq@UNhiRpaT;375 z*G|yd3c+)3@8&PG>M0Zt^Vl+IJFu;y&{bPvCzO;F9ycUn7G^6!DQ+2G zR>mfAZ05_MJ+D4Nn`Wzr)Z5GtuyvvcQ%4WlFin3`Bo5!qkOm9VDAHA7cwB&OV=L!~ zlQGG9upzpp==t}?3_7Ygzx z=KeZrK%{*ktMLlk%q2X(CV7fh!_WK?Q~C?JjYB)uJ*?7;{XD#FIhhVWSa8x;V0mSx zRnB|WpmfH3?)TUMNac9|ns@=LQ^C?~$o8Sqr#UC3Fs^*is&1{{L&!(}gUWcN7AxR2iOGr~qE7+ABM`crWVa+(1&E4Yk*?$SfYGra^L zZO6=XldCkUA2(+^69jZXd)sFw>{bWH0*txO9+-9Q0DWap%7!0b^K2^WqOwa(oK<^x zG5=fUuFYBOuw$_e;zihPNVWtEt}34N^&#V|5)NAYORZP0*;MRVmC?d;)azWdHE;TM zp+lXRzoysUd0LT?@U4gWO++G9(QD*A|FlmZ5Uw1PcFiiA43dV7p&|b1L-(Gs*TX8; z4>6b-f8X<&PZ;N|HCb94k`-)O5LWBWDCWJMR3G-WF&&x9Ax0ztb>9O;^CMuUs{Ljf zn3Zs@5_3dhL#3W?-?Ls*bIb=~kKK{0-m7zV_}D@~?QTl*3bk71;lmEz4w0r6_D3gR z+Ez-{>8Q(DBVt3}^~Xn8O{bmMe&l_*R2dn_3#U`jP(+DcE1ghgi^kv@MznPw;jbfY zTBxRUmr)Q7Rwmrn>44U#enn1s!5zgL-=!8O z>!#h|Ncbv!@}Q+uOLGkX4CWu<3#-coMK0~Z{RE5AP_+lxxHFnVY^ymzx1ScbE$-XO z8r}F9)&WkQzHZ-oZzd&~)0v!V{5u_aJP2D4Uo47pA-T7(C>}^xnmgqYd+-2livzaX zSn10X=TX0)8waVN86NDFRWCFT0w*s47u2k@40CAVDXk#`WbU zOLMPN^F2%AtG0b8VTs8r8l|+9DXIjm!XZ8zsI>K!Zf;TmLx;Hxl5%W!?_G1G%^VC2yMu}MAL|31DlY4Xmcgl@c@2f1-1@?iM$lV@kD+a z7K6yZ1a?U>5sLE%=;?t!b{!YrfwpIsSiv!-P$zgqyR4(WTlRjgDkb)T9f{G$q@00! z%+K(C&2f&{I&S|0AJk|eN9Y^;;vsj*5C%!3_Cv{>zn@RQAd-1T1kHWOu zaN^HSzHK^esGpr?uip#KEqJrb%U;%2n3#|zKP)-WJBaX51q_T# z62o&oQGG|zu>u?Wn8?*-ceA7Lc7xsG1~7)`380GG@Vb%hCvxUI*ap}ES$ zpi?h(a-ZD3r6J-3n}8<-e7>+6ro6FFL$f>pdjx}d<)Zbyh9Yc(qody(ZBaYaLyO)V zo&)1t{BXR5f_ujYG8H|`!W+c4uFP>TeMmUMKrh)+K%_oDoTR-;%Bs}k@ z-U#-5pStk@|NKn1ppb>2h2RgAz9sz~^oqO}a=wC~{ygKk7K%;FV~6aEagg~2180~q zNl?G_;eZGemB=fT62@;e#kEH%EvV+(+M}FW1~&Jzq2SpU&Metmq9nCCI=PLhGWBiu zzaln1{EU5uE>rV=6Y?Q`Nd`aWt4Jki`WAnqUA4mi2LIOV2_TbIyXDg7b>H#)${8D4 zZT3bDaznRpxDmy7H>9#7VpOMwprp%~p460zzv5~TdWc}Y3P&bBC1T$M%-E|wiKDWN zotHi>?JfSjKO~DsAHi2mx1##6@$kZrdTLbuQ)^-GN0=bY%bHF*H6eQVX{9bS)@o;# zd0X9n6APLR61Yf?keb^MU;qGE!HO2=27)8vvBC(mkkox>ZiMd_24H5gWOysl%b*s} z=tW4OPX<1m6lF6B$UB#lmb=~Q?~#W^oiXxQGYoFW{w_z?M#<=DaCQvUrWx{cftQg- zCol$t;<${qnQf}{rDn74MQZP3BlkH*YU1=818Ucs<(M4E>j5b4ya5_gyGINY8b7#S zESH#lqF$o)g{Pi%z65^d>(0pb;V%t7wjiq2+3~G^N=_Ll+gB;mIGgAgdsQl1)%`S9 zu{lFH3@VOI&fdaJY2qfYN9O(TbK8G?YS1rPkrQ0m_lBF$3y+nPD5B{4x9{I6Ej-*h z@A9A_Op+_4*-k=JWPIC{_rtCd#&jUFY@!Q}i8modgdBFBD&u?CBuv>}3|VS9mCAo2 zB1ad@%3fSw>A~{A&5VrnSk!523boxYmHGpfmC@>y(EpwT;YNh zgb`3kGRT2*!09NA6gW5l9b^Ckm~_eWWF*=r+xGIZ&e2f5u_n)gAnqsxLZ0tZYwJXx z#6f-<7EYz1Yi=T+LDEa2n)p~#J%cXV%o4(h_zb%U#-0a`x4hS%4%S(u)5+^a&pOlf zii+t;A`e-ukD(i<$ySUC&&uMWGSQW84b@+|Q*#o-mGMV?p{fOd=2(`iEW{2IsiPxF zfG0-u8Enx^Oo>r+{Hn!$@;MjlR4yX%8yF}^7$E20UabM5PF}2XCkNF{->%T(e)kFW zZ^cz>?WFgiTZ8I{>4Ecs(ip%{%VMque;=*=b$A%Wk9O589M(L)Zhd z-6304H{)jf#?A6`Kn9rE4VEbr=Ji zVqoLoXUd|V%yu>_T}k_$0O;QSsxiZ@=94R1R@>O?`Q{^F07~XPFot{A)U(B*6qrhK zoW@H}J?*E9?JOs$xEf170j3c3I5P^Q-zJElYBQgqsqkzP$+lSFg;GpcP1%tTvY|%$ z@?yKG<5P*E2HiPBVh&D@P9G_xjNRkP;-6h$JGt+jBWE6U;HbrBMx|6kzoD-1(~O7w zl8X{Tn9oF{q=Ju;jj2u1iR)E_?kkju`mG(kh`{ZH9|C3AWmiA)vno#)XS#gv^xx?T zZz<$XK>2y#xkfjRM2H|u7{L+oNnmy3sbz=092>#JJ76Psn%BYq?br^mv&fx&O!LO8 zT{Au<@)&J6}v-b;AW}{U!kDn7VLi2%X{x6%R z7;epi@s)fSPa%5;qgiin)ikF$HKtGX{YxU~ zm|+_MRg2P(`Z*(>vua^P7Q71oKtjy`qt13>5i#11w%(^_9w&AK`Q}w9A+{-$0PY<2 zW>DWT7K{DmaBR-itG)dJdw3R@aDtZmPMhKu$7pTaS^)7o*0~5$OJPrEJf|uA$$emg z>qw;TMFnpnqo^{+O{W#@Hmm{Lr|^p=(rg01ZJ0OwYG(n~IEOVEH=@B!*WNp}doXMX z!0FHUZ&v`{O?@xxNjURx*w^7UzB@lJYU1G0Cz1`KMhlE>4Q7~L4Al}qYst~I)W%n3 z2^Z`b~_lhkH2=Fev^M5fVi|U3v>|>#RDmZFa+PG!S5kF9C`iKB4wng23;Q>6$|>^Y?mBiQV5d)L=Y8D0(owX zOT$u&!ZgUQ$ts;qUUW1qS5fFzFgn$Aq`;LnQyrmUvq`%sgZ2urw(5m_ZNVIB11G8w zF~|!~2`-G%OfHzpHx#4k+=9J4O;?}T+2TexqPZUcBjL*zMG>m*G*BQ?PcB}z(m4J6 zK<#{tAC33HsDTG){+rnlDE-|o!a$U}pTumeSL%{kZ1e4Gv76H(<42@G*4#FlZ0RrSY%W+wMc@9b59zJ< z)BpfcBN!Mc09v3&WQx&V^d0P*q%P3_NZfd&A2!Z|MS8Tt%TsPgdcKD77mt~GW5MUG z-XCQSE9)+E)G0=U#hhY;B}RZLF^kmL`>$Y{!O?gWc$6z;o}F(_j3A&KQ9^>B;H&HD zXLIvr)5FuMR^CIU&{alv;{wI0Er_(=sH@2}m3nwfA?bkTk6kb#JP=h-l>K0JehGg( zAn+e8K_$@jdfuNBZfnTaXx0HGCkA148)u*{4=cLslTK*uaA|ozla>4OG-I1WD2UfC z9rJT|v5(0|f8s|1)1@tnYkJT*z&r)URbr(~BYl|EjnskM)DTrle&E@7K-7~NJGr80 zmA>4XtP??3r61XF^m`T)?AQG*WAhO(ds7&pexs6^wxr`#t*htI%;16KHR`xb!aEq5|9y)UuP`6H^ zyeb*pvM^*}HjSZs=18o^O4Fg`_z~*leLE_VqTv}HnR35hSxQPJbv9?f5}q?_5!0Sy zix9s*ho)J1sQ*RN}KXLS|ExGLJ3#?hc5lV#=Imu*3i>kjfDQcH{ zlqDLE;DcjJFjRY$@X`N7)+EL~s~%+2VLLlfpSHEsm`5Y&sBG~j5wjL@Jf*RuUXiI? zIi;&EZ8`z&>1eNj1P6aKijN_DaRBFjnLPX1OMMB(QtiaE)8 zRgih=wN;ci+$&soq9MI~Ui$$-M+u$p{WKk#=%pZ4>%9pV+V~@ZcVPp5%R8?#mU?5y zUnV(+HLO*#E`eZMsiZ0ll<0S32{4wl3$;Uls8$@NcKc|jrBP7BuB9&#ku+6a$!{L= z*|a!@H6};Ljy-3!*^B99CaS3VOE_EOAt_b`3ADLA*f51Gm@}>l)r;CaA8is$R5a%D zlteS-Vr_neW}tlsSYuc^hwQ6|hLm=K-!c={Mep&v@((FxnUwtHYNizj_1alUS>Vby??XRc+Lee@~Nx4@u;Y za2QYieWZocB&Opu6|ayFk;JTvr_vwI2>2!>bOh7u5*QYv1#$X~$G0c{!8a?zDdFqq$xjrnwAj zPdE&$-qkjXgMI6TNpc;v_Gfx+vcEj}jo5>CS$IY-(#E3c7g42VZ~PpscJN*up+t3MYLJ_M=n6Z)q8zb9DJb9Q5iJpM{IAX7Cy=Io1a^ z!-#|~kvl0jWj|irSLUyjicwU>e#lH_J~qvyhOFJ6l+_|4v|Vk7j&Z^XkP;{b`2~N+ zXd0zRfXrm@;*odJX%fo5oE~X8TpF3c7%39!)mT!8^(|dc6(t4|=Q6DEIKA|u$^;Qk zdrK47kAKU~T5~#c#sXCcvLiN7md5s;$c)p{GS4)O~=7GOYD7Y!2~Tr=ru&EMT78BC_Cv_;%_n z-wX}DIg6(1bu(m~t(;*#VW!_xKEU&^=+|BtTp9nOHlE3R!skMUCn}vbSq0F2fwPQQrZe}3{Zq6*tzliT;AclII%W{UNxYCKIqkIWR@djMEH27)<3_$E z+O~Ek(0qWYy1DIV5R-2Et+ZU>z3680d<;RVcVU9wGm2vkXI#cHZcheEi#M3iTikPf zTSsS{3KK@>V!;dMqGlq$F?U_4u){gQjDyL6MDrOT4 z;zv3sukGc^+V8VJi-TB_(`1Eezj)oVtyPuubLD#;HKIM?h}+Pp`iw>bH{LQQMV3%~ zJ!*vl7dWtpE3i_NHiA&!GTrv!9m++T^p)e_yG+Epj?>1qw6eSe%G=7LxS3Nd=g@2> z2P_A;)%8K!4U-d{c6o`&i}TyvR*oC%P#@qoBQvfFEHX{(Hr+;4xYl=y%jqCGx)H^}7Hb;g$kF;i-uYwf!NZK7Qk8^}?I(V0H-y9wge-ggx@s!F+p`F_be2eXGg36o6w_RcO<>^lf>}3=Fxh!eBn5WT`By;5aTjb{AR>%2I@MV`M$+EyGh94dMs&2^D zB|9G9Q)20H-FAf|miPb#5FB*AJpO6}8ggEALAG)9!xXlW8NKg2s`B|E_^(^avA!OF z_xr07F7#m`*O3aKcCBrwdOV!y4)F`j9>wwf0Hc~`DuUP<^nzBERkh8^`X=al=w*W) zm2UQ=sHmS&d|VNKnX$_cWES$YLmmm#9})n_1`o)(X_fZcX&}N+vbV=Z|IM>$H}yzO zdg?Xr6zzbP1YVql!zhFOIJt;xjGNCjL!XyQ*?}o^uh28)xMX_>jA!}BxL7Ez=esfr z3@8{iaf<@AXU_MjBh0%W;`V87fY6`6(BQ|~lbkluARcKJZJ@jvmCwH+|>o z9@WNS-9MBGssUn|ep#w0E5~*7a5g?MEtw`ou=pHC-h%b2!o znf%d5GjdFL+HA&QE6PGhlFetF;v&#vz|W>b67g}yPDM=~Ip#15Gf&4J>sXr5)(G?d z%inMGJ*0WwBBM<8nZHlxgdTlZSM(jS5$Ccq(S5}$79}jW3-Bkoh%N)EcJFV2Q9fK1 zIZhL^o!}_&0lg#2%BrfR=8M**z_92*bKk)}$LqM#gx~oCfJUES1Qt?49B6Uub(Fqi z6$C>6To(YK2k;G~JO$n(m+M#_9+G7qox#VZuPBJOZt@LSBBRF=WhT^sPpmmoIxSzc z4m777=R;PCM2H3}{`X1%K>Pav{Y7yQDfI6dFN^s~;ns2_TeYxo>d>0Z20`(61wHmX za+}Iz+d&J&O^tniHk{IvA$MqGPJ41v1T4Z;ou@9=^WC5|f5uq5Rb=|I`kwS8kf3uY zc!Xo1gu{t1eFrwk&sRaPy{d`FEqDxZk_&8BFQA1eEclxLI}-xHbK-1qr_{Nt=nkBg z25~qHx+ZgLykj_ZLORS3#S70EK{*yKxd1j>#QoFGklq~*E0YE)j2hTTI-2pX=h;c| z+gykOKmq`00DR&OZ?p77O+=r>?)dk~JQMiN{qV+ZB6cw5%wRk$z#{C#xEHUe2(>rj zx+fsxjTjgOVyM0;teUP=U+@ej7NcJq`wVvAS_k9+0mk3u#m~YybQgkgSPr;8XFv9w z=y=aKhnJxe!R=enPT!L8SL{;H2Wa&<+HDBGO;J4n05>3b_Uq5l$#GOwvtXcBQ6jyx z8>dR7eOhoAiZt{C>TVR=sDsXrI*;gBdMOXpdsEEFElX22tZ)qUI)dGsa=ar4VL~Wa z71qxTd&h!^Dqbix+pK`Hyo{`2Y+RBAB`dmM2ris|vlAW-L_NqRl#t~D3*wn!$l?4& z@k|5*DG!9}AG8Wy>y&e8XDSp4Q258F>ExZ6s7oqoFoQT+-xpz}|N7lx7jN0W(Hk8~ z-wz|()JNC=ahc)8at>raw;WA`PQP}JRc|R+TwGB4q)CoDSG^)2`i0tGMZrHW%G5W z>|+;ko-jP)?6KeQBm>qG0s#C3l#_GLh3mf-c%YYj8m`drX`eVvy?Ecacj4m~vb4=z zeiR5f6XpcO%<~Ssur=H#l%*`dkBS6q`AH(vyJV!HwL8en!wqM}_@ix#&o$f+e80CLK7T(C7Z5Vvi&U0Z{@toOg*my>Vw z#hM+Ulr4S}I|Bejz1o4Sk86FTmg`0};m{{@B$&{Sw;@kqA6jWBsz{-D2+o#+!1Ay3SPKwd13<%N{;zTRNi&nZFL;B@Lzkp1%sD9NHa#$0VQXujH zp`hO>2KA9s6Cj>(;zxM+4uHQ4Uh#byM2{8W;)pPi9h5r8iyH~2*qr<6HH2CYVDLVO z8Y(v%tJ%97aY^4^QZmwC)&AIQVknPdm$;Iez>)9Y*2B7$)|#9!-crhUE+X$`l$$0k z_3o*SF%qtMpEfFS>+rRPyqqrA%NTKdkIM+P)cHd@#BVEw4WtOE=3y1=N#?s`$3pE@ z3)~w@z-R8&g|)dYfpi`XtZ?(0EGz7tyv?7$gvJW440ex%k=(k_PUZn}^;7rElf}JU z3>i^^Ijc-c;LkL@Px&`UIb=iWbS++qw$I$M@%ltp!~%p@UTfl3Ne_tTm#yM-cA098 zV{lCf5SI;=eWG{)1ECFZfS77&Cm@7d3~>e#5~adci^+qHZ5NCrg7#QqT2^3DjYSPe zmjpyju89F_PHfEb_XB~J)V+2l$J|OFMpD!K{dbPJ42>4M36+PX@7A$O*jzF|3Jqhg zLr|J!n#sF&ZuYhtO~=(&_s#7~`FAMipM%M?+a0kSj!Uor8Aqy`qU(y}<85VE_k=#B zdiDD*2F*Qj+6?SA3ddF>v}JR@`sg*=wt4$6-ZGg2#7fJ|8)vb)PB#t*T|y>iE^a{Ok-VdZrGZBbJh?zTjskV ztMcQM;*!%73Mz8y8-v4O=+mC9Ppt-Y7~>ADXW%HVnKkutwiPi)v|>AJ87U;o2H59@ zC-XsO|cbMkhr7CU)~1q%gW;bU2ae>I}!?;-PqkW zshUb(M5s5^O46PUQ@7G%Zb_B6VSDJd6nh}wMZ6KFk=Dn^cR{OOJSie&Y(GY>t$Zw! zztcdjlgG>@SBq;6DRYF2h&vH(8Ie+qIaPk;nDq+i;bd*M)_PLKkh=DoC&I(68gkiW z1?qB~TkaLSu^sz}$ytI%CBDe0BHY7hQ>Sl~6k$N=&RjWodG4JogyUi<-o|%Nlv;F;OthGR+oUgg3j%(!IAR zZNNiwqM}#n0QXJoBNV&p)=A|A(autC&?mOKD5$7@?XZ7_iI$P}?W$`^q%`|d#%sB$ zi8Q(9r-i+5P&(H;8!82aa`PBPEbiMLvm~r?BKfMaztrz}v;5pkx3@xbXcQxk?p^uX zjE@hCt~!3uUHLmz+27E^*h3pHnZ~KM@~f)9wJ>Qq$%~&NPvIpYql}^XuToGThtGF1-izzrYNNDkv@1c0G_{L7BV5v`30tQnL#$zva zmWzl!YR+F(Bb6Z_Y>!c?y(aHUg&1F;6zXp69+~n_`zh(Lj^hS5cPg*{sF#XoKUp2_ zsv77I+H#rz*_P@s~bp zVwk{N*$V3YU8825ltEP$r>chn=PKQ(6@>@JqI>H7(*gvwb2B_mb`53-j_i4gwmG zK+yUR7#lOgPce_51GYsJ^mfCei|c87CtwDNT$vxj^rkRe!9ZiKf_Kg$uPjG_Q zhI17a3pInvJPXdL+{4RgITB2Ber8ET2U95cQVrF3?s+wf;kWnaN|%EI$Q zv)E*Uxbr(6KEpuEm&hwd`l4D0zq*)Vr>!MJEE;(UtxQ5N#!JAq#=_i?woWzPXbG!q zO>hb%^xPT#?H#RqqzPkaVE%D>H8#rV{Ou}_L%ycx9d5@scj}i94SX&ic1U+|qkJSb zucj~|9;H7044*s^6K8E|AR*$d_Fu6KJoz~s_xIORL5*4YoBDF+IMs`2u*(B};(NlX zIrJ_)Pc$I)$;eC02oqVEKE(ODhdbVBo=ALSL1my@uC-ZO8?KI^xHscmWY;sVVYxZO zNDw)b68NXMyn@8|J6@;%ug`t#4p7CRg&2DM^oeRB<-dxM;92~92h}N@thQe_Vicq{ zK48k&5A_r=T}i3a>XPMQfCl|7#m>+5k7P*1+nfU`b_kig`~6w%UEIl=Wd3{LfA^%{ zj%_?lzsxE2CN=HxFSxy~3*JmRTid47SD1#Tt~Jm6%&^S?AdEdcltlbmkeO{lg{@gUYX2Gn`;PF)M6 z*x^h$>|36{6>cLlWC31nIRwJc(TKNNtfOygg9m~ zOK)mCY1#AVH2tFPbI!s$hFzue1j$dL@TGjjGXX>+p+NDobre_P|E^>OSb3Bh+{Vot zrTq=j;p%o6_5-x$;Hp;IJ~Czn+aHTy+5T?1vM`XYn+@&Bef9;Lkng?JbN1YHtS<3u zOM>5h9*!dx2_%{t0PqI@x;$moq+Lr_w;^JF{q=qS8HoLNv=Wy5u|-ALq_4J)2SoRJ z?+|Yb-__30MRBK@?=HqCq#V_z`m^J=o-gUu-O0psNH^RWimRVCdJcC)+p#-A^nd3m z4_9w?ui(rn%6jW{lb$6sf)pX<)v*uM>MD!GGtrAPM%IcBe1G~(;(~cED71hG?DEos z!Yv^NTwxw9>JZWKq6?_u|6z4V{!QBtdKBCjxV_5m_EnD~#^#hWfC}3Hx)~2Fly2GS z=Iz%{guM(a47pHYgJm-Jq?h=E1h%#ucki(^k66?9ulHw6|7tWVV^$HT7A|%w9S*EX zVT{Q(h`mOAS}|p9wWm`j>MLe06DWpN&*D4j2hRAn1YpAO$}?5xnT)xVMz+03rRveg z0{NwgQUSC5So}Hk88>7F@gDnq(!#AO^xt}4fr~8VvDwb5p@GcWbsig&5;~f1ka9QG z8-my_rEGUwAi8N%t#5RE!ybRlPlTT+Cbua-_*uHke(9x66c&rqfltXw?<9J%42K|GiOcalY#$?<09-m4_cb5`$`XgQi|V-06m0$oJN%}kKl7>q`v@<%hj z{TxaC7i+^lt{{?-?a_WyeR?Y5aauuEs56Ch?{@9(%knFQom+mYQ@A4$lcaIyI3j$9 zty)!^*! z{c?P#Omlcw+fBScxiB)mTM~_?(mtUAiPZ8lX#fVyN8t~cvxPr~gFrgS1mIi7oq_Sk z1V(9ZKf8RiOMPH#8ov~Gq9x|GoOCl?V~}S!00mtx=r}NdYvZ$2@9iy1U-C_M zk!ZQ*Yvo1RFTgx5Q&dL7mp@hyDY{5xDSf#qv_9vo`u}!71^kDa+S0c76vm2iRnveU^iUwsw8M|=X#PkWg!XsW| z@|!K(6dD$O;+i{lC5r}IqYX{5Vn^ztD$q%b zFFZQzp%kw(V5KM6A|d<2=W=xwRd2F0hs(QT8}5hQHGg=wM3XPKE%Op3zD_YSBFk&j z`n_`w65Jz$G$P+K*1GHvrn!>khh3RvP}Cjs5I$U7W$@a4Y0zXu_(pneV&S6Ck1z|z zQKo+yNym(Z^y`I7omovG66UcF3J?mOXtQ^LXriC7S%V|3IZnQ622MX@Wu4_D{#lre zMYnJ&&}Fewd&NXYONmxh@1t0>esM|5j3N!He%8J|sg|0F`oUJ!6kPgagU*v{70Xi@|5Xlq9-PY*d z8zT3@PZJhvZ&#U@Q%0~@=M*2S=qdyL@s^C8)il$U;WL3>BlE~+u3y`tmJ1EAJc{GbtKO$St9&umHOEtrNflsYtG0xRS3w0 zX7ZFcd;re@o;PhB(>20ckdV$)Nm64msPB{85>ewtV1aYHi0AzVB)T}I_2|$z5gvQN z%%39I*$5fblHfH8!5{rd3B)DzmO_+hDwdy8?x`=N%U(Un17e0>ue_b3m^O%8c$U_YsocMGfURFLEGri#+VPGcg+dSLbt)EbUoq zp-37Mt+Hu6UuUFbLB#igDa!QhC!a@lXFJhW_DV51$KZKjOcK&P!FPi9I}Es*l5m}) zHCxC-qjnlVMtc|4?BSegveua71MJ1y3acqLfU?Ty#`4L`e9ckgvbE_+?kq5t9y}fNsV30dW z9{-dE#%|>h?Kb~b-a6!6ro~CHhVv3;4CgDK`>4YGJK#P!=4d^uvLLspKtGp9`3Ci+ z?$*V!pdUCy1^!bu!T#G$Bfrgj^?E^;EGx^~Vma`%`E;-`pL`qFWu0-IuB!h&9`_3k z#rqy|hb}oqb$rH!<+|0~!|$R)Mh~TmYBW4llEWe{f^rrTi^k2Nd>& zJ-TsudFgL9tdMqP^Xtgva8k0U?_F=zp|Hr{B4ZtT45fw|Eu-l17E#LCNW8y(!NI=j z{U7e}?L&f4oTTQvX@%K&8!7ajKa0gR0=AD!J|hbnf~Jkn0C@67Ei01p+jXwSPby)P zes`rkV{VHo4<(k3Z?1u)Cz=YI|MF?uhdrRf%ADFR5Ltz}YhiQ|`L`>c8e0(dDr8#} z8G)?No&*p^43iCP8mQ|A%9RJrt~#Mg(X(*Q_+zc+!4yK^YVuH6fp;eJ$d$owS{sFj zX(adlOnpaz@APp@M2XWCCYA-#YR3;Ld(F#dtg)L5?G_hWvyd_F&7_nCDm#wg_TE~T zize;OA38}l(=^BIk4{wbP`RU&^#SrDilY1|eyY3g;cu@bz^gL{abZ=*_S$aQ=OG<9 z{$NL0DzIh93{8))*%y}0IG--w9kYEnep)Is;QK`7avvvHBpqF}F%~A%kg4FsLh!m5 zPj%tDMs7SyCsCT@rpb;XMO_oN10y9*)S{!sR1TsPk5A966QC5)-?cROQxH>dgfb0*pzK9NqSs^C|g1Oug5w##T<$HV<~g zECjQ~5ra5qILXGl5dVOPsAoW4yn(dSpcWfq&VKlex{j(<$3u`h^?I)mRcl^bzPIOn z96*pceCIIy8=+QB^9gZmlymJ0u$onn5)Qou%Z%ab&S5U%f(V+y5^CL)@i>FRmm<5% zAe3!Vstl4P8lY{Kj4}#7to>yqzQLq@*YKqJO=|468N*Pfj;ZE-H4aFc{J$+Z8i;F2 zU^Abuh`i{sDKlwZ${JR8H^o23wE7-S(P<)b`dGK)w3Uy%| z$}em#h`)GKsdWE}!bXVuwJ*L)+EpIqDLMTC{o|sbXk)g_=Ik24b+5UhacE& zx8xvB*}P*ao_;_(|1%l=&g_@{o%bEbbv};N)r<30VSnTSC8n6Vt8_m=RteW zo0JD6bTVVms=H}^@)Hso+Pw>9VSC7BM}p9!BED1hI|}esHxB57y{d~0q-)*8#LGA@ zbN1L7O0goMOjk$9iO^RJX2K5LxC=MW9={}_tB-b&I#PpCdXZhoR9}=v(Id4ARbk2M zU`3(}zNHWzuy|}D#3jK<^Nr*x_jhK%*VHOdBuhaccJUAK$u(#bg5yBPSi5P8OaC0* z%sYW$7qTQkb~p4f6o-GzTL=>|KiXSj5GMl-h0PqHwbAbVG$*@Irp#ojd z`CQW_hx^jS-=l=w{6ql7)j@qxC;9QdfbIp9O&1S=77fE+7JyIdi3ra4V*A}Dhhg&D zxforeHwl;gebCwv-V~A7Gi+SoZI|L=dFuKlp?;j468>dGKls5${9hDLj?+*F?={$b#r>HH96QCq;lJ|*gz9%~w_l&5XH>3C8?V)y&oLdaezKF=o7fwE()}=w ztalWivnij=8{cf$+DcOK$@#Q^#~5kaa@n75;$3`q0Sy7Hjdz80Pe_-coxe=2)p?ec zi;wWg){EHiuPqxE`&B&77lPJLHc?hK+?18W`9_VEEC~I@J}r&{Y839+B&-pdZZoqP zj_QN>rLpFH|@VCvhS3J7Y)=m zahdROB2W9u64Hi1!C>_`C{z=n!$0>`S|Y+p7=PW_4@CGv!vCHn8HgPJ32I4Wjk5yt zH`l?gRX=VkcmJB|O!tJd!DS}xFz-K?coq*qEaNw5n+iz9c_n%ftwM7Btn4yU)71%b zR}v}&Vf=Rruf>eS=<5kOm3Kb?7B|Bj5ONI>aos(wl{C1;zfR~NmYgO+^I;I{VF_Lm z?-aP9O3S8fN3J~iRMyn2@ES)VEkW z3<%Eko#;T&JR))6jn3Y{aW{1e6f*`9l3+Zi=6OZ~Pxkvivd*zR(rDY-727sC9iwC0 zwr$()*tTukwrzE68=buAz0a5Tob?0hshX>*uC?YI;~r4PCnQ#Em-1_CO}s%D<^|Ro zet#zCrj`PfC!k)|KT)WRinDVx^$-vPy2*7BRRDHE?#JmKyH>XVmM zpl?5XPHv*3H7OEtHSabk`OQOJ1N>6n>-t5>RB%$!e9*pMFc%a6zyq-P2N?tvoaM#- z{8ZW}ARYL0$>O-FotC3BZMiT>=8}P0W6XNn*orWk6TjK%^i_l^M#f>od?NLcKTXr( zOma`L!0^=5gO?^5_!4flknOa6`RH&`6}W z*^SECQs)U2^R^g8pv1TG83;hK$`vvvii4SqG{xY`oxVpH$ndE#d=^~qtY?v_la?+8 zd_EC6@gvfhI(=MH$TGJ?Zf)4z3&r)%N_&fF;_(6!jSG&Hj!2IctoBupRV1x=-{J56 zNGbR~{nz`kD)=N4HotiligiibQofWJ*~*4Tv)h*RrHFLz^N~Hy{__v{O%wrIO?2=H z`kb|;=0m^`N~Mh_w1tdwBZCaw5rDiIigRN%5}@J}#Sk+?kL;zD^4rpQHhe*j9W;GM z@qO_!S-Zb9R=as7wft?yOQ@Cp_ss|1!(S$m^Gap9s~f{~b!IIQF;M>+Kn?)dfY0C! zM`HLQ?-A8Et#6xC*r0aQ2c9Fg5%Kw2YwbYxKzc;`!~>?vl(4i?9fmN6_Sb;r4<5NZ zBL+hS#FaP*Z(Ev;-{jo9u9q#G+KDAQahTcTz^9WHFt5o?pM_qxP>`OYng>qdU)=Pu zUL$!#FcZm*3~*uMt%mhRvdLV4XOKpcF_e06N7{sjqWUfkA0jF{=x>CXV_XXGjFlJT z%rs(sH7jnB3Ua@^DnTSXUo2xk1~MFIAbIrJ75`^cvRyjd%7xTod$QH(-qP= zGoZ*7~Fu1iNhA#B?p%+iy_n&LwUu$1b@t?-TM&v@6Q?fwi0mTo@ z&liel6aCSN}B$f_h;ZDi@FTV8U)w^A8Tnv6iV z#T$lcI~;Qi4hNqarqG0k);Z$NvIJZl&WS!>8L%CBc|5t@q7NkhBZI z1&JG*tW09JJ3cOQ-L@K;LnEV(5*?y<*Wz^cbCJ3BBI zm^CWzpCntHHdvsWi>iBa7io~&o;d{L;?jWV#7n5dmd939rTvhq*2aQwdJjctY0#ee z&BN^=9cyXFBIL5FRg$>YzOl%mY+}w+arkjCMex=(R~F$DqOV-J_O<~uyeedJvy(B0 zg|sR!r7Qh=I?85*`Lr6kD7{{s6%yQr?fm);&i?La`(k6WXhl2d#B0=e>i$!*>is%Q zd$W15be-O_;}Lao{CPdp+L_82s&~?{kqM?%)1{Mx+%?F|G){fbb-Q*;NqHwS=d{<( z!*acQ2@r2L{DBhr0EWo5Y3YY4vy-F01^uQLxkUDrP)Q71m7sU0QfVr3y zX3;BNE0S3GN_!hk!-;-ou?c`i_^pj>5&vOGB&kGij*%y`SASE)&3X;hW2wqEeQYZ9${)3Zg!t536F<(gdiOq#NTt|exv0&ROc zb$)9Y>AurN7M4x=_>=_Mviu8#GAfZCWdL?PFv1RcmY?iT&+wT;w&>9pJXf zXxOc=ICIMFYv=29O|6IrIjWBG1NhCUU2fKZEo#BwVEq-}f5{^Y%#AiyRb~}V(FC^o z2_+diL|zCqMSQrvG)Yv?I6X-Y=)G3W-h)#t{upiZtmL#xmiDZJ*9L^9I|GnDZUY=_IXivmtfBdnjwDesc4bQ8e4*)4 zwt`=BE%?}SgRAaOA)rp97Ox_Qffwc&=G!F7e(1 z@lOd9M$Rj&EtZUHR21EhV~^`&#nq~)GXn@7+$LyQbmu4oKx#>^4mAE&76_Nzw6%P4 zX~1xrv9-~of+0u@-pQ#X85G{=nJ=q4P0FhD6iq!cMow_xXnfJYc0$sBk?%@M1EnEo z&xR)CA<3>$ey+VLiVtngDq{}4quX6lAfZg++mtpMRu~~3QEgv)33QEqvju&`WL09q zg7b{hIUX{>m7LxKcTVNBg7=+>@ym|fR^lP!#}lZz ziVGzTa4&;JVBcG?RnP5^SX@~tcvBD*9PF3tWV04bqVHHKHGaTOz}K#94>dJ^!G-wp z;5Ovwd+-+|T(#Vb#UAfT&xEeCB%IIg-P3ZuVusz8MUgGRxMS2vB#?NjZBv||UudCiDbe8dJ8IVrX7Yq!qhBE0XFwwk>V4);=j5ba@nu|= zR(gV!ETH$U#OX@vZycB9*%s+~t!;pL(c@#$vT8Rx^%2ygJp6fT+48q1!y1=zGbFdb za>4#Z}&G(aAlni4}qKhqjfC#RDoo zzOH~)q|znekD!^4vg^qCgc7cA&*QK1dDN4HNuAZ2vG;T_u}{kPDwv)t1+*r&rL786 zl}x3faA`MMX=eEN{o%h928|UKk?crQ2H@bF6S-slCS;Mp(j|}|(Z4ge=PYV=GeM5; zfr(iANb|~UafN>0Mz-h-3zb>slaH81);ZSpZxH0P4uKcfuSUw|UQ+Y^XgoiNer`z@ z#=#5PHnt6E&E~h6a;1gyu3Tg_nAf}7m~{ibY8Jg(8{&KDqT;dbXAqYN?~ah4qafk)(=P>dD7tpcj?ZPKcyTw(*1*`iC_QC{$U^Bg*6h3g#m0vqusonhTU?zLH^X zxJ0Qo#Tl70noNVW8lMUkm9nJ9KL7lXOp>2Zi&U!I;^+*g&*K`2MDt3w#ap<*TK_T) zKmgsl;#of8&8(Il|MvYfY>{J=fiNcU-Jqt z{|doiy8C5>-Aq)hX6#9f(ZE8lbK$qy(jas>xPaBFWqBlv_e2D)zO!+#)uFR{;k(D> zMaG3Ix#m#kSZ=2|BLigw&UgB$dk&RuK-lWMSyK|R9_Yz=ikapv%m(BX{$+H=uN52I0 zW^ls)(%5_fI?N?akNZ;Bn+@8{ckBJ+5T$J)tNlixb=v;6HvTGVW8x{9-4rO z=<6XAHv{bEkOSRpdbNck(T0+Lv-Q2%N2)*`CxiKLnwjBC`UZqwLsw+iO1r7e#AG2g zgM~Vr$jB_noEn>&Yzb_i@6=iLtx_3gAtTKLtHD(yg9wq_{M&gifEpXn?i_eeFCPhr z5K3`q)huMFzTY1p`&#exrIsD!m^wcC;E7uP+_^PxTc{e!t2x3aT|hc&2-;9;GZl&U6mzf3hjT!eya5VEf8JE8EZ9VU@%_Ltm@flMq|Cx5uikS|%(S!VG6TC10Ps zAI8r@RUaTepq*chY-F(bFTWI9e*aUH+yMTB!!)ScoeA@!q3T)JA%=%kenGh`ViYDI z%0&c;LVi+IljUzj3U==&dA#m?5HH%|A>#8PjUSjEmX^#fxq$<9p}Z$OA|O`x{;S9? z(Eaxm_YBYri@1jfzxefW)SZujQ`v@yjy5xl*ge=|39v`#@}mBnjVWc!oht0l@j-sg zGuPNMUPYrUA8e__;|S>Iy++5s%hOJa$BPpq5-@2!dxePc_mW>(a)?4guixY~O4hJA zfBE_}x*=>J-bMiVI8KZE9I0bd$vfMaR7wMNV-sMTERel;VAr8*nGD1TlgZ!nz^kJ+ z0FA~*29Qz%V0XP`I@Lo}ocL+Srg|yb9eq7@;6kV{pm6{3LLmU*0i`Nr$4sx~zP^t; z2@ao=Bm_ANw|7Lko?N{N5$|QC&w_E~$nm2PR8eX2m}(>nog!ZSRk~hG3l>jV+M(*_?Kj%HjXVo~ zfgmhWDF$%Zmjr5Z>3=3!!fT3-4iuH>cM)Z+cP zQxd)ymWR-69mJeu1QDd!%)ceDo=5Rq9yPFF%p? zi}j7WyRt(nR<5o6KDWc+6ysWLdN8fF|5o5I=TD0R`d9M~Af`;m_?w-}yh)e^Gqlcl zdQ_w`4AC5#aT;*dc{lhMLTyc#R$G!cMf ze3%~U@8N+5<-PmOqV9?+%)su;SB#!q%|bIdwE8^j@&Gsr&3oW*xicG%jv{VBtx$#j zv&Ey?yLMynmCMUd-ZR(Y=F#&je0Mo?j{#q)esuSNXG>cu3SWsl;$dE4d?<_N$-1spd{O)`Hu* zW;cy!Lct0!ANljedeNNdN6-RUI7J9vf6;CpLV3V%PG70y~u-mHl{|q9F2{* zG^eO+oA?HZ7sZv{65|@(o5$Zx-@iFFR!RZ*IDj+t4?e*NDxo_xzNIX=Yt*nj)Y2Bc{1Z)o17MMxN$=NEW8x31TB4U&uWV*hI_l#a%JH0qrr#+!byHwVVD zEf8HbJGR(#bR0Ig)Iia#cVPnge}X*j0fL7CW2%masmM--nk;D$@-_i_D zZ!HJnvLW$5$vq#ElXK!9c+r1?{x>nkPE`-I=Xu-n>Ct5)d80#9pgDe{QhLkgG8(zO zc}uJ?I4wZGR3j*q9P?*Bf4q)0ACN#MFc+dYqz^)94B!S+AS}!df^8)9Gc}1J-Ehz< z-hXik`zT1^)Tl75iTr0{IUTqW<8mUy**sKfx59L-)R{Tn1ym+LquarU$C_TVyirY| zHFYb2Q#-+|qP&ZVHK2LjzzA8*yQ#*9AMZp;GAltcEf#e)wm#ILxm+OTr}hQugSXPq?j<;TUsz$gc4{uqb0cnD5%do#u)?(`yqne)z%pYet06N`^XCiWsJ zj9uz%4%fxm#eAfW~^d_?HKpey>?zcG<%bDMsKVsyck#J(Acr- z%2VAtLtMTI+2;qeVV;`8{C*SsGQ;xIezZmN%2;F0l}+2ri*O6riYk#o)TN``qL~yI zw2$BuKe=_(yaZtdVpB+=#h^&{H^aEMS-w&DjDLh28 z&j~8=Zq|s*=jQ*KEh0n7QeZ!Q{?4lB&kx&9&$N>0&^zTeOXf}*k%Dg)(3Xw8tP6uvb7=h4ma5Gn!+EF7xsfjU4%4x3DMwX~> zcDGQ)HO{XsYfI#{er9_Qd<8I$1qz#oS@il~v2=$lL@>Bo{IO*t#Ps(85Bet;evtV< z&+`ko9~^)K$qq(ITpLsUH?Y3$BH1Es^nw+yfl-sJM@B4uVA)9Gt=9tYjVgWRilimW z;SEEnEadmjx?Ph-7mQ}jZ|8fg_@#$j3R47edwmTlh74WjHM8ZFa*g{6uVeGMzUZjO zraNPh%{QUPz(m2@Ttt8@Y^vA@{u&D`Dq08zAI`eXo{WFee=il~-Y%}yPM06Oz zb|%qs{yxdL9Qm3GyuH2tha@|QfC+Ji+l4zEv#FT6sGTlNwLZ82Pu{@*Y%CvzwG{HU8R``r# za#L*^S_s(LU1Q%8M-`T7HuTtZVoCfE9FSs|t z$s3^QzgktZ+QxENV+n^v!>2M#4!V1>wxPJ2JiE^|)KtpN3p;;|D3(x?j6w{Rz2W<% z^_9r3CfKB#NVc+##}n=urc)U_fklQLi9cf-NF9B`j?ogom`WN_`YG=7_qe*x!u1`y z3A18vy|4rtOeQ`UgZe|vP3^NN!+#0SSUA+7nA2_beH+1-BdZ?U7ddnyLO z9ozn4x3DzK_R}_GZTs_VLu=nVz<6M+{hE2X4Ew|ZGRP}sNPUFjonCth8vLm1BH)09 zmdW0xo~#3>_rP8%TM$iw?4Shpj~z9KKzb%CniN?RjWqv?G$Ojn6nHO{{_R3{v?}jU zbN4ISQrScaKW4Ez`xo)p#|p8Q_2*W}y#j;^H~d+qL2 z=Y`=$+*0aV>kavU@kDR=Rq(0%Eu9}ZCMeU7%VyQoF-|yFCJy}zt1`1)tXxDnZh3~5 zO4NCdO)G|~T$i7+uX_kinQaLH)SLqdCe#bJqtDn=rYhY226Z#K_*k~9b{iJUfB@I* zu^(-CG;G3x<21z`U4-#m4e5SrGm#VOc`atcu|>8?8i(O5H*9R)*Fs(knxw^jl;j~L zF0zOf@%|0gdRS6Da0tdLIUiio?WsknJet$Ebgw}=x*P^?DTD_ZD`Y04j7XIRRP(CA2S(t-G*WO-BxotT3eWh zNmL2BXh-A~D5VBI&_59Sad9$qx7o_g-2Su=p=EFGW}Ppb!rtQ;yBfmug&G!aWXfJj z;v~x0LKoYsU9ONv*k7uho6&+pb$rZ4su2kO>l6G-_weKn^vm+^UX1e#OlSQ3&Ci9t zC4(Ntq7`@u3mt$@4GX7+-f>Ni*Ul^wVYmEdm275QYAmKJN&l{*eB1bKl!~@ zT~ZU1K$1v(Bb5SJSBvS-q5uhm>s2PV^K`;InBVbwM-peVhoQgzNc_1#sNjtXAoQCO z2NG1d22C=!eOh;j;zqs9pD~7GDx&8exoT=*aAs32X?c9K9 zN_WlJuTR;;_BSYGz+bkfhoI{;@sqHWMd&U$BYsU6uzt0K+xLu=xA@)W2623YpE79IWMIR2h*K;rzX6}w)-KtO3Z1#`cs0sv@U7b$F z)r%vy1jb%0_b5RRmgtw>#rpU~viMuUCF+|GF)*nR&uvRVmca>==%d49nY|?v4kKx% z9Kf#!3IJdOPLO-bkEsRDcraf!ps|IR17p8th4o`^as&L2%zd;xsn%p_qwkG?!Xk4$ zpcKOTdsaCkMirMgK{2A#F23Y=@ylrU@!p*OVjn&h(cjl<=)TX`=*KI6Ut~d` z9pU*7X&R3zH=~ZFlk$C`+o9M~mI03h5z^CcQi`sSB}E)>^&XRp&E{m!0dz!jbQ0%W zR+pC_p;h<;|45Snz#icBobBf~v=!ZpdeLD*fM%H7qlhgc2oVF&v|FGa>JP^Xvkm$k z_xjOix1$`I>NGaC<8xQcL07Z%)(gD(ixwhQVK!g##n_aw=sqkjVHd10_Sbev1z92O z;=k92F~edj$hMsHEqA#gBjN3hIPd7!n~Tr)5ZM2ed1vDs^}UeP64PD3Xe;%(jVGst z6GkmTRpHa{hH(@Xs>epRE0J0JSR_?^%nqznqjYe~DM0<=B}I|Xq}+7eV(cE5!<|s) zbuej+nZ>_3$Kd1B!mwMkt_A93)&LJ3Z=7UgQJb48fa2I3xSA1+sMkJ)YH zbAKECuvJ!}r0DvZi}H+0J1A1g8IK^6@0`H+ZR?JEP4`@DuywmvIt1t?0Q{SU`+VD` z?gR*};uHzWR2r6A_6P;Ou-i1lLm zKoi|JXm|MvA`7xA+D)Eyk?G{%2wWFoOdnEa5^2QJU1K5dUULSrU6=f!4lQ-k@E?Ai zp*i`15+K_hg5FiaZ|!aeDgWPJ2pE7s|0A%*V2drW5?JGjrAiE&Rdo4?%9M4PIEshZ z)&;JU$F$(b=>G2!z4*t~0)hPJ9d$?v3n+p~tRG4&l6;3J3t~;|f$H#^llLpxN)?`X z<^>xoC-=9^(2#XV3jcO_#F3|pNJ~p$ap5rqflVYWwrdZQ$mxD{WM=wSS1v;3%qE>T z-)^M+dXxI$D8hqh10Q8;B|;Ew^eoBeN8yegKhy7TUCzH6P?-j(dilqOgdcwNS6f(P zv;+)E40ac03h2v?fQctYNwC@r=cP$o=PNfpP^74_~B1Z)4t9qD$6LEl@mSXUrIqMP zbt%K{#?q@c6YgT=asf8(2b#qFvl`9ZpWwUE<}CCPjdx5K#BM@u9SYVMrxBss3;3e7 z!>_bnGNm@|nASP!6y*25&%Wu)!=1e{H&qLMUU!dq`5LFIX3Xk^e@^p{33a!oj#3!|MTGaBrDi;Dga)oSK4fU~oSNy&{+brFL3jCANzA;3q7Gj?3=6a+e*7>#1;CGz8-Ph_)e!oU+x(&Z zSA76LpUP{_NWVHV6w#5M1ubHr#4FYFVHrlYzX(4dcsquiUo@*VW!Jw5H$=)OCc(%(6`D72%wV7WHqEQp!)Mq|J2Lvm#v3= zBHdoy_iYFa)*efDL|XTKw^{eW^Vf%Pad7y6@k!?1^Mhm+II1h+>kqmc#Yh>LNj92j zYU}eFpgG7X^v`Dgmj)Ywo@L1WMVb@t=AOQ&IdZ>*I`gTa|4uiCfM!v7?rG|dbAtJN zQ*hpq6F+CfXxkeve1G~q)Aszm_e*l>fG3)L6ruP{Hdc-E0FZ~N?ZJcIG|lG&{8AkS z5dKe>$MHW2GAge`PXQ{KV#KcO^?#`~^OLQ%qHT6b<7gmBE}bk}x*8l>F0Tfv{#PzA zKQ%Uh4ft0{Am5Q`uxxKksOcc%ZlJOFayp13T*S}jwS(!driKd_TUYDkuB$EciP5dL z8rJ5ds7beBLz^iR&L)a}Yn$a}7IrP)KtrdbJZo;Hy`swtS zX$mn|-+3zjpkOUpo8DN8f4DQtxFT0iYjHjbRo&u8lR00LVFs2TL~(w4NoJ~lZyr%UXtRDsaSa)ED9O*+Vuz5^wqX|dFW%>fP_-CW@BjQp{xSpBc`hePv zhVS(8#S5-@k7r(snUu&RXfhWi|BR}I9o0)pSL2({`N=V)q!YmHF2bR)gQ;0a_M|Xa z4LJXRiew^7XBmL$RNoClFR7F!pPne%-<_zrsgowM0H}wQbpA zodcU=*pxD^(&~Xlm7QRnq^PKf+`)NtAzU2hNJqVFn!Ij6opBld_N{A7>~#qmNb6VK zue|NEq&{R3+K9?ugD6+UrZgtQi&UeU(7Ph+m9%(v55Cr-+3+ESfmozY? zlUM6d@+PoC6W$p_VRF^)TOZB)Wc`BHfs3mJPtgA0SBA2@(Hn2%NGa!L9AWIV7B~9> zwvvYp?At0$F8jUj$$W7~_k>CkDbtsSk>ROocuM4^2MD$9_*sRdCgO^*qr|?DCg&7M z_MIu`hOc&~?oJk1_MEo=F&7H@wC#t_hEXB1cEpyc;6yi{Us1UeWELTc!o5YMXx6W{ zX3d-p#kD)-C%DzXt)woOuab2_|MynB-p0hxDL*mr-U`WV>t~k%GrNUmo-!|Y3E>LW z!R`68-D?qxVW2-|(^gCtB@1H9>iFUpnk_SlosYBT*DmlfC{_pG@m5>$r~-#M7Mu4z z3HoEOZ|r!OUT&aIi|EX=jGFFgXy(-YqMO51PN`0c4DqYGmIU#{`>Nx5K(=+*d|jJb z*-Fu{4QxfG?M3&7QOblQI!l6z@`JilYVd0gjNLK;`9v-K22@Wv0^LdABpkN9<>?3ZluD?1@#=2v=8!!z$@D4no#T3Uj(#ACwdtHC znhaweY-p+ON}aC1&laosG`DxPZA?KpRI-6bT)aAGSq{Li8QuBxq_tbZPsk@_r z;Gv7efp_~!HMMQ~Gg?kH1Dn63W_A5_Uu;<|@jLeksoKwP!KMa_ml6pCkHn!&84Ru6 zP!|QAh&xO>h_XZ7BdFFjzzNfpN}YzAc6L9(4!aBpKCuazU#UvNWXme*XhxRn>o68e&oW8i4>OOC8VlYdgcHXe-r|IcG7xs7R4?=NvIuQ>e|I-3 zBeeaAdbv-8IRiV_pK8{yPh9NEKU7ykKUaRf zBMnlr6zsLq;I39TgQ0bB*4eoB+w8Ytpc6f8t-h9a@9&&yNrCa0tkEN(=H#zpI4^%F zxmM|`K1S@YM4c%^y83ys!Wg~UmuYv9`Fto?!kDmb@fK{*1jkdk2fzp#z_2nLz@_fC z1kwVIYXS@G&(SJ(;9y~q|7>uzTO&tjnkuHJI84QUbQ{ILSpM?X_?5?lItSj@P^=yO zb}{P~SLaqxh2?KM8<^w$uZLI@!UdVEp_&o~H_q`8$F=bal_y(7m6S)_xzx_!`qAby zB8$l*-t>CP@ksqrRw>3=we8+h8D`dj+w!@NQ1NjM< zyH2PFuQEhu*)waP?#B!eKDl0Zy%YW?yoQ_4*rC7=b?s#{(TmPei4q>_MK3>9#8B6Pv)Tg#v7n(zU7PZQiOfQM zvpjp{^)3z#EGeg%?i$^&cOL@F)TXQm{7;Vmj&7_AiI+zWk2A30cOKaqM}GvJ_4%h# za@KmYcpEu-DxZX1|GC^W(JJTcr5v5YF=O(^un#5rhJjS z+Zj#HX=@^5r|QLq_5Mj>d$LqQND~~DTgO<@hrbJ0l7n)(3CscvH$|s}15!>d#>dxE zJIlnRA%txya)p4Kk(TV=zE6<93gvXUz(%=}lIwB{Ce-Tr(ECw{_HK88B>`C zQoh8!$L}lDiwnb#fM_(n`hKH-9SuG3@QU_8STPDac*#Iz5~ji5h`|y@MvnczzaR*Z z-U})DYpeW*v#$BI$h_&iVC5SXCImXL!>VjhVZ_{i=K*J7UzakfT~r8eDB{)|ZWmGW z!ktIStkTRtKt7inAJf&2x-9LJM^)$C!iO?K*0|NgLpF3pAGA< zf3)m_v@lXB4D(7-n|t~*PY|7DI@aMDs_i%cYo91VU^qL{lvRS~BtwTEnP>yUS~7e2 z)DEzrQAEP^DW`+vL+`RBbP7=eP1DCjm>lqT=i`XilSKE(8i9&$M9Z18@F5FE|C?(6 zbNi^BNlC$mtaM1M9}ERz9AoXXB^6>;%U^#dxdOdqt}QjfW*_fXJeF4D&mgKRQtjbM zbd^yF;k1&(%4MiRva99DIURNcgn;!NEQ?)x`F_Fb5LS$yL zepTf$mKynI>vvl%)W|Ofu{2sZ9|BE@_@yYgTxTpu5lomAtcGw-0wxBQ_~S_4rCIG2 z7w`7cQQ;QTlDo<%;^K{b_(<(_8e!?VZdC|!0hh61jlHccFAa(pl8(2^a^wXKU0S5G zn;F1nJ%PJO6dn)B_aC}1DjiUAGNb~O00a{fJvSSaY~Uh<0J+0PxIr&DjD`qlmb-~EdAG0lbx<9BXqC$}Jr=}TrxhG;} z#VvpQXxiZ3I#-J4pDg{RI{#bzFp0_VTd3GsVxDQ}CjEm#TMSzB$FjfRBw?CMP`S1W zRT1v21o!i^ZgceMMwWy#_H{*Fv!{zXfV@L*z;6(Ic9r(pq@JNgt@h6FbKm1>pb9tb98*VP0( zUF5}?g*udv_r_CnaM!2(2^m`43DJj&D7M#9M9fIh5bD(5B5hnIje^ryiT=5V001+f zQnnLm;AWX~MNbEqO;v?;))>oYwd#j?_B-Iy^~gj=j(P z20jMtyGGx!u>cxS8NiQc7$9^xc{ds%uiq}*=mNxlq<1&bG5*?J+Yr*Fj}8F}|8Eb& zB$I}$9rt`D#@JSTYfr|SHT;s0Bye9fLlLlyNO68Kh{_#i($U{D_jLSX=a7@)@lX7>eg{chdS z-m&rN($cihEWH(VSz}#cY2ziDY2>(w}>O7oSe9EP+9UI{Y#J)qQ*+RGS6V_ zQ9wMQvEET>{;r{6;XV;1EM6^iP#k@Xc1Oajbgv`rQDUhgX^uUMYS^5`p0`3qMLKgT zXnp`M2VFB6p*#_(Heo$86&C7GxE*n1wG3TyS;;(8Ct5N8?uv69BWJm488!4k6PYu` zigo|AflMpQO6gjrxAz|z{+&GO`utL!t!AFme<;4?e{|O7S=W!rcw!o z6UVm@mPYexD8$+-ZQKzn@g{^+<*GSn(u_JuX~P}gK_tT&m{Lnhpf!u)4;5UdeU8(o zl`XeFuzE|H1L~75Rt~RS2RJh2LJXddBu_981c*PI-oCO)QS%cPsvFn%v6eKH%<_}O z77VwnP_`P<_bFPZ6Nbhv$x5Jx(=+SN)B^|lh4^6RsIXeixy(hOPGm_xs+`B5Pas5z z-AUb{bNXNH0`Q6(3gt%@N0Kh>;F^|MW6dQ-l@HVyESK%oHYiPgYH+fkHMCLs>C~K2 znbljr5+APNi?;@DS{xrcSDV`;KG)>W$!oSW zBv!)W%JIN$+~UuNMWFoSMD zZp|_M_A`};gNci;!SamJxG|*zow#U`Z|(TLQ#d~E$PncXS?i|WiW}K zk(soT#DEPllX^34r8VburspiVg{_~FmXQdp;3V0oY=;k*x-V366ufH_Ocu<_8;MiI zY^`qo*j4sc7LJo`C=$-9ieTg#V7MLu(~*o(bjPd|9VzEjJqq)~QUzMY#!&@c4y zE!!?~)uasf6M+tGJ)NQ_J|6`Yko+*un5mI5!r7 znh|h#mHcG4TJdee^R9C)bBCdwKJ+SK)Lmm*@<}|%>17thDtuJ zO+#T1%WuM$UcqRgCVOG2CA)(5Hj$`?8;R2so0}Si&HxqoW>CD)w*xbOBbF4RV6g=XT^iway zo(VL`ws=75+>Hn4)UaI~!F9Fl^8{QG?kOzg#;|H=$;TGEjlE3AL1Jz3ck{|Q@3F4J z^2}zniBbtFPo>(YvThBXqO@&Fk=+H;@=t4bsS(GIM+mLcq&bT$TV3L3QE1Pi&NI8P zOXv%b?uDHNV0!Qr&VmK`CNZ{g5qp$h&#Txq!D*+&b%akMA-6hj>>mF9X` zw%{K=uBC4FxurE=`fa>E+Lc21E!Rnoe2(P^y65V9#SyW8GX(LFmzEqD zH!LRhAFjAi59?=iV~as-iuAKajW^=rHJYp;DP_~LY3U5qEVJ_>vXn&Csx7Lm(Xud@ zi`&`_j_3P}npq>9L^2&5vec~9cES6RL${;6+^9qlqYp8Yv?vFkP2&9jr%?IRbvp zfyrbLOJA6b$L9GcDuElIetJ`}a$| zZUkU8u_k0G0{UvYu7@E`0Db85nJQ0sSzS&23$g_v^*qpDOl(VaBi`}a4tZA@%i6FU>zwv&l%+qUhAZQHi(f9~J&9=>(l ztGl|o*6Lk*@9T2~H(DLFR(e=Ry3lixChFS(0qbPaI9KqztgzcG38Vb`o#j&ZOMSb! z9Fd`b-^x2s0Kx4OF-)igDMU_?-b-gh;s2aN`2i#Bx%SP4yx_l##T!sxa)ZwNS7I*2 zFG~m0upb?~LD@w3%rH*%DoUfEP?SGZU0rpnPQCiNb#=pRD+1kB5sCXt;x1)J$EKvG z30;7$?NbjZe^;x7s`>rbU*P=OldOf!-jcUh04?^fHC0J>{vB2D?=gB*Bi2EQMX!XH zS4^&uSWwPGmVSg}#MsU*hb)aP^5S0yYW5e@gV2HKqY(&tDY9$US-33(i2%N~+5#$t z98WcVqkH_&gbNcJ(hUnAWWyVZvMVT0+1@skOpQz$*}4t1#byO~>19-#HY-%wu8B!1 ze31@gXz)2)(Ob6~e4e{#No{%ezm-QhxkFBhQ1&y;)Edtg>G;H4ftl z?L4|C*7>ds_!etE`p=}VyTVgn{9dzk(jqG9Oc3{^kHG67m1y{>fG<_CnCs&T%>e5e zH;DZc%8k{Hg|S$1X5RhOnwAbtCAy4AeX{gW?#Cgw&`w)p+HfgTo56KNG>J2%b!{}i zA9IPHfdrW8_7?Wn!;aF53NIim6m!mX;O{&W(RQveM3f`uX1#3Xi?u9s%?cswwDwF; z=$$GYD_2uc#A`Mfo?^OXq-_XHo{_u0hikKjj9)l}Vq&p57E+_@JYg5jTpLEx!`N=6A|7J8-4$X>9$m>n730cK{xgf_YDU7C_e8Y7!-jT z2Yb=Kp1ldSTgL;7F%0lD-lXE`VNFL*p((>J=_?VHhz?xk>Z{+yk1GbHi05zU&_jPj z-=sNQN~|kB374BAPc@z{V$Xd!&G8*ogyY)5itguA-rW z4^n<9#2B^1=L^8qnnas_2B*I2ApWc}+s0-eO>7PgZ?DT%ruSL5(0@|aBhvfihVJyVuin(cmC!P$}D3~jxFc7xr z)~4wAg;7NX##9;i=G9s*XK@u0adE&9Zsu5OQoHm~AWiu9ulu<4wz7GX{nv4awaO+1 z*8Vpa;Ox~#LJ zN+e$x$hxZiG21qO8H4LdR%pb}KIHJRTRucS^Z;(HtWMlt^k&fbWmXG5{07^A)8$Ql?Wqgn9aJW(+N9 zKZjqF$jm;c6`xR9EWBZ93r#FG$#;mohL2PKG#E3RBRiXH`9=UcMM7za7_H4{wkVg;- zY*J=M;s5r7q$sVu>#yXfAwY`q*XNWgJ=wc`K6$~3sTe4}6h_B-!zv9}Jr*(gPYw5< zT8kl~-TE+8)bq$ufW3BRtf_(n=?+i(YfL`yTtpkF#!y~|$nEtc;W)5V#2fbebfFTG4zUCREJVX*lPK^9QaOj+!Q4<^Q^L@Q43m z8{?)pYVwc&5|as1NWXf3!9o^W&^yRn&d+4Iy{iAGH^lchh`_XH|Dhspfd|K0Z14P4 z!W{>ON^TE76CdzH;)T}!h}LTOKX2Jbpr{vjc*RSaJ~C_r{?h$FMs?b$mlz8=pxlgj zc<9VRQ3b<2rV-kw@V|rR@WIXe+FE&oVEP^}(m4hhqTfaD#o3L+xr!R5Mn;U+_=Y)n z0=Kwn+k3xlekZ47rKP3iCi*}KS+)9}llTMBHvZdpZH!F6R9=y&J0?B7Hyr5ShvZ?6 z{+GuPaugu>@#0Z^Cz8AAH%|&2mR45Pw(hr>IBSzmN{+Xt0^M}2Ti&|tJYC;NYis;5 zNrv=*1$FrDa|ZyJK=fDudeDE^<7b|%g1Z2G#GXV}WKMqIW)e&5S{}blSgX#xYFr$f z-=A|WIW3<%X_GgauVZEk@FH`_)+?Fo?M=e?vy z{m$9?Cg91_e|*PYd%j@;`Kb6us}op$RccOsiiu?zT}ioduu`Pq307i({X=#d;mf2g zaw-08+MLLe5hZ+{1zPOFk;mqa^{aD352M*QlFw?Is2dr@HNel{kFmkEnGzBbAFlj_-_m!f;;3*c}Z5>wU&tSu^CN9!)HT*=kK>4hdj;8p22udv=CR* ziol=&jfK6M-ZzT3O*l&Hmog=O=UMg+b^B3H&HO~{Q>nQRL8%CmlI8Hlz$J9IY=)B5 zRA4$ScpEx$MSD-Vs1dD`q5e?5jb7YDvZ)vUXy<**!K+pWa{R#78)Cg7t{&2MaE-|e zfAAJ2odZS>1K}Phds13am6r00c%Z*wiSlcr>jhPVrs4LsQ7x>hgR`*3_AVCy^+OmW=+GlI904ZP)AgqFJ+dB+p9{f*IT`{kco0@)WD?D)Onau%x7@AFW#!* z4(`o9eX&FI{wd4XyMFcv#EM;tD$c!;#^K(>+>Ajs(#)>KCCcRR&J@ElNmubCZ(|46 zJV?`__E{qv2i?`>IZ>I%>;xTG(yP7MnOB-6v2?doK7lNiZhRS5rjs|`hJ z)ERfpaN~^!inRpb>p8EK=Y8|&+QgeF$HKpE6_Lzq0L}bTmVO5Aec+ufw+Z9JJekO7 zCzbW-f*XiFq?9Txi>8e8_xuVPlixAFqK$H3`mW;YmA7M`RSi)}NT#Mzj7oLycV1TgLxIx&%pO&D$^0BEbbrQ_Z?&c3S9qZ<))i)hdFWy-#q?o+-bN{g_?(tDm(EyMo^gtIwU%K}pteyn*iS}00a=rrL*Xz<6iH_X;TMdo z;v#zC=)w`ka%_ANboIHW=d{CRa=stgX9qlT3}mgNx8X)+v;ljcZl#MxG7Oi25CGQ5 z>GZ8}V%1yPKpCz*seSikuV1i;73$C$1nfQA&)@h`^37Ej9o;!O@JVa3cDUdLhF=1k zvL?T@H?E65eAY`AF#me@keE(Cx5g{YpJ9osLce@sTVd$Cxtt9)?}w4fYVDkKk4!Vl zbajP9dERA_cUWz*UOuNW%2~MR7_$$bvg%SAd)YwR{6M!p?H6-q@<##gbW6AMgCYBA z597&ECB$<#&}iNA#hh2+7kYxmfo`*9&GU#Vk7DdoBADP9&G;$qJ45gBa9yNGJ1p{w z^y+Kpm_|#5(xH=WE46vmRW0Hpl{`&rQKAUO4@3OtFBsdUUaN5O8pWEvL7{uy^mjoe zq`X+;N9cAlGfHJW*r|Ncb@do>qS}6DYP;kt%RT5Grr=UwCUMRP{oYi%1+&oLHgHK6 zPn+M_K5_9iNR`GbXVW)s|g{#4YrFWnt zZ}KG_MKK&)PvOh)+ueZorF_(q%k;{D+xGg$$eq;mHbuV4b_3onBq4ueO6pry_q~dw zJttOU3Z<^#?d9ucC!dIaT@bJ-LNC zS9r>(>Gpz;cN^D(RjE^&WH8CUW_h;BfFK|Q)IL^@D=ww#tW}posFmu!JT8f{%w~|e zL|gYGNvsKuz5CzzjpUL)@HY{2K|BcRcm05x{b#AM3zIE5e9~rfn5`VTxm;&4NboU| zo}PuMwkhK@q;dbMl{l->dB{vUZf$RZ>9;#PR${LBYLi92^9_6AxY`BriD8oV9Ct^-_xQLZdLWO)1LanRSr-*GEj(G{9PK82NnEJc&dE*hSkBi%dszuM96H!= zIe$Fsa#>iQZ)r5Y&LKD9goe?Ej9aIMSdo1)jE?ra%l=`m{ zw%hr*H{8<_oe31|$c)}Gg@Cns?eqA3ouX#W+Nm-3wU>`{R1My8n;^I~{wOS7;VM9} zR;mclH9RekO=~C2){mxk!>D4`VkZ3;M7uj%TLrtR6ytHa?!`cz(yA?D7JJ;wEq4*m%mF%`~!0P8Q$dI^A4e?Y|H!CW~Nkn zSJbx~paUH7)x&lM&JO&_!O58~eLR?95%}!O?6L-d&7`%6V~ylaG^mi~@UNpX<&!ik zED6G6KDfU}Va7E;*MgA%wE%#Thbd{q@h~aL)k5W2W91E0`YjyW!udv>9lI70WtJxd`6i?IdZ-@>8Lq@^w-T}$_gdb9W%HaZ z9M*V1VC7OEEO2LVI!#_1e5o@%Zl|J5}eU?!&(s+%ar-_1KB1>*x)<1U(abO6E!f)K%-u=!Ra($gOf(* zoZ5z}A6YDf9M=myuFqm+Da%UBU|4U_a*-)#kzvksh>zI~a`KB~g6=3-#szO+l#9Z= zK1Wv|rV(^0%(jca{VS>wi~!|rcnaCMCL`7ifi^_AJGw!GWOEDi@5QVwCc%F-{?tJn zZySW+9rud@*K_>N@qv}A8*dWV79{tJ=F_d^cVCoEg6&yeWOmnChl6I&t1Hn)-1&QB zF3Yz*=@P*79_gRED--@Y`du^a0&PlL6$Gyn1G^yED`8` z-wGSh<;QCn->lD05c+E&Sk{Wf6sfmL{N47Ae~Gs4PKH=C!G&8GY4Dmo2!~#x#?Mfb zc2|j)ZIh$A9p*`Ki1Q1hn|3twi(aYDJD4%HZR0sIfyYax#!_n~gs;QU^oB8Q&i=Az zJ*exRep%IK)-xoPli}FxblJr8^mw690r@c3boUs&X2mxFiK9a>zvG7NKc)~FK+_SW zj<%;j7PZb5vXM9(Q<^eAfPr!u1a>7Hn9m?f35`XKu&2YYX1E1Qi`AH$YqlsAr)--exkEI7*sdvq>;!Do$8>q-xd~A*n8VZ%P*B1*27Bv|s5r*AyvJ zY)T?Suxk28Ze%=3@9>K{q3G5Lb=P4>X6|&ByadGb)B=5}q8t4hK6@j%PnM;Pj5zUU zXR>s+yLDS%vCMnc)f@Fd<>UKCQ6k@u+^Z&ok?b5bam z5$#%1Rjgbj>wgj$&UAnHIckS|j2kY0t`zm%!#MTr@}(WS+p9_UQWtS^z=l{>ye`k; zLbbFhOd@Az?hOnKm_&Bow(HdV+e>#MBrV>Dj|ovEkn9FoRthv$MPE=LjFjdMKoGrO z9JtdOYROOZq*`anu*$Gf_g=QNlj4s*t^S@RDw}+$fXq7CA}fUY)U16KHw}|7y1*ZY z6%G^_qCGq_+c7g|tM_<>UAx zWHdZp!c9t=MDi&`1Y+bRtLBLzyR?5o&z20(4G`--az{%0YZm)E7^9DfrQtuqhg{8q z#-(fjic!7CFGAl!ik&W_<6jXxGEu%BvU`Zf#R*HnoYj#&^@QE@(Es4Ju#g zRbV17ESo_!hJP{=RX#{)nhIKa#ZP}c(py8Nw?gNq$-5y(QLFU@ z<^X`d1mZ*Xz5JZ=0iw)y0PjE7?^j(No6XubSJlhSZF8(1n_1RPP0LqRRWvEYBK(OK zRqJbw9|RT@V-&={XAy2Se0>2xw1J?0frh-<03sq}$UYo(xmyt9sK!z};osWkY?)SY zv*o|dM1M);$Kc8 zTrY1hRMP&5u!~uk;n-Z8Yq%?36sf<#vR9wmyu10(U3#psrEgbNT)tI(Xg)C9Z8eso zgU(!e%OP_|POm5^M`USIP^zNu;j)5ppW*CV1eIHuA5W`|pIVwCn^wq&Q52Z8fF|(9 zIFZnLLQ>H(@7Z#z2wu@((a@gJ!2|^D!hemf(-5jHdt44N?pJSu7NpN`9k-x#GNbFM z0E3&?Px0E-&T5I>-!n)aH}%v|loS-~YSNpEjEcB1&bCnS{DIrL8d~wr-g?68D|~vG z(PS8pKTKwi8k)pfc|6n48uF1>V06)7HdoMP6xF++#TXK`w`(p2|9gfBx7S;bsm{E@Q$YO{yoY$ybq}-+w7=(-l(Cs^q#qFQP|YA3b(2w6%XQnYk%y20vi}c zf`*EjNQ2>KeR)gGhFa+TthMTbrK^KcCyZq2#v~l$^STnO=vDt*BSvN;&gPF}`}|-T z=QrH}f?3_!0Q~tDUG1*AWQM}f6m8O&3aP!rZa7Ry6%3-M){f`72nH)c4Esv1<7pHh_^{f-;n_$TI6 z*+3m1Fs4CWA!M=3p#(~N@1u1_oaJ*CHg4j^(%7N^p`p}W=st|p_5Lcia^nH_*?(77G@f<@<#H!dgCgx`178lTzV=-k!OfsB|j2m88Rr-?EL`S_1j0mBYu&*>~m; zJxM@d6X{fu6%Kr0d*@6MPCbl@E?DJgX)(eUQ?T&(Wqjp$KDm{#%Rk)Q=6dR6tpUjW zG*rPE3fv0N@Qbf+~&LVi1#9!Tzh}7yBNZFfA>%C`a+1redFE=NZAJ`^X z1xYxVi#%XaKdE*HgMQepD5{=J%tSeB|AG~+ut=YPGqS5<8g^@uP`@%oT?*m+stf(s z@HZ*>!c40}XVK2v`A#@JPdnh+osV;vmwRZhnu1?~#hWNhE9mzr)!QhG%Ho1xg@8{i znc&E9Bs5({oZ|DyzV3u^6hVlo=jL|$9nRS?JU3>G+g`}3d?kD9@_jPy0_G)YRWK?z zGzh}h!{u?P_~`TXjk1O${@!0%Y^55wG)Gcl(CB{J1(LF;iO}2)Ur{p?5c=d)^_DoL ztvQ8v@d%GtXY+6K+RmTsJ={w$?)4A$|B+%r&PhozMkgwjS}OMlSC?m;>^2)4Wg)gm z1JY)W^klk$_tGP{Q#v0*f(T zaEC_C?1~w<#9s$L7B1@$QUWiNi?`P>W)~`W*)YK0mL|y40!|q0mWQCiP;YFpNj@=> zr7N3S>!J&^a{jMW{`i$IZAdkV7fE&h`m5E+on%oa7x|T#-WqfW=>E(#@eeZ<#byGZ-8(XXS2Fkv;ZOF_A+%ZW|w;tyD7XEen_-Yp?3C|}s zhtIIMDC``0W@j&sB&pEH<&W*ANOPClx}Ur=bAIc}?mKDhDrt728WCJ}hhlikpd?o6 zGd&}+{@-ZED4{udDxJq@995=3RpBf~D`5N}O zamvc*Q%5D1jR8(KQpL8R5;e{XX7DgwIJifg@R(-Op*C#|YR;~M& zK>&N?SnYT0Hc+A$y5(Yw^?BG**_~|G^DEcwOXL>0!7!Fb0gI7AYNtz3Xqo=S%>R0~ zqwxYJ;J-6-tWFrW@DYS})~WH%2Dy=mkXYG|&q7ExwnOTh3eaf-sWA=_fp<%Z)Q zUc%t8sD>OZT^-S1QwYR9IS1f}o30?!i{9$8Fij{JJA^oxu@G2^+k`g67f3a@qit7& z+5v_Dja_8!GLN|;P8@GGyLy2{DCC5CAT}aJJO~TSBrg#lpqefKS#5Ot(h$4iwG7_Z^4ly zJx#x&7so{}hR;IOt>PPE&jZAIRYV`HXh?n_nSd7%qr>gA&|7nbh-B#p|E$jWLLsRa zWR(PPOCYiC<aR93yPfS4i zM}9DA3F;NH=B(VmKm1IH4sp5Yu5Pp^22;j%i(Z)?yq74%dWKp83JZ9a)LQEJ4WsWj<0mHwI~K(OHOT7(FoHkS=jJ zZ=9f4SSi9%R9j(M>6HkcdW~b+Wv!=l>P~UVC~7H!(ot2zF`R7O8>=L-PYSYVzXJk_Mv&f9`RF?zROYT&-qbLb4yu(7xMwLCGjI=?fxw!1CR}O z5if72zWzQK}* zlcfODY}rU}Dsj5-&}&&aj7IEfTtr*Op=OVTJmdP`tVjSa$C>>n!DVF`Udj<~k{DuQ z&bsc(XblMFv%01E;yI1waT&Z5Fs@kGqsxmS6?F6o0kA5cnkbp(1MbxdK)IfPI~|o@;i4CS8(mqC2RFwm?E$PjjE@ z+QDBC1g7V=^3KqjT&+Lk_8F+R(qsTp_pWBR+I8nw&;qO5L9w2N1V!C8*cc4hwNrky zU3SGz##RUwE*sl05x^G!=p-Ol+yqlHa^9fsu&UY>xlRJpJap5rw0%7bf7THByJj7E z)&lIQ-0}o#Bd8j+1lHImBOJDAm6U5piw%F_4C6SvtWDfnZx5_>$I$ba{XTPd6XeK~7rbc=2RLVSO zhW!Wsv{Sja$Ol&`;MW08{_7E|Uz1W!l5CutxBlmlfDYXrp`0XbUR8o)e5j!T$2Lo? zV~$qaSkG=PVXg6pJ|yMT`_QM#{2HBVSGc01rMwo&x|QuvxP}JuCtxL1yo1LYO;*KtV5QH!!vFlWZYd=)W|n zJudNWH78v*T~)`8J6ufZq^hp0YB-vzF0s3%*{oc$?4^JDuIrds_pxk!#*M*%`L<9o zfkB~BZV`t7fH)=v!>3jcTH>Uil{#($?5{2s1~ac z5x{26kQCwN+hD->JNZli1hmjl2+%*fB%DNo13xI=Od#&$2ChmDV|gCCaqx9Zc%hP#qU~G$9T1@_9}C~tia44o+`^D9BlYQoS zDXO48uX*c^faTzB8ll5k`NwEI4fffCG+{cZh_U0u=g4`MH9Wh?W;Wr(7xMjDWdB-^ zH6o{*`CbH9bFiaUS~I z2Yr^I6&bTY&_lO6&pL#{PCNQT=1(jEYWyqq%C(NXo@`x1 zwxl@M?~?8%{^?s6+9O_ne2qVOc|zsG;_=CcATuDbm>GW-z$XsfB)c zx(YQ14lqW4O^tSC@NOv=XO-5p`$J8C@cExl+tEw&Vmb!|Yq|EVH`e`wJ#vWB%oW{K zaI{XEhwsYc;kjvAO-^YUE*_a7j);hIYP1T1OB0~*m5ZGbXFO47_r&jBXHE0XRNDTJt0AwW+O4lRjlL4-pbRM-VUE+^9tgbIt6aC zJqEm?E0!%$OpKFH2khQR*s_&PFgjSlfzGUNjAhYDZOn#2qE*A>HfWnx-ECxKVJ;lSMFRC% zZs#MMd;uQFJ?)y_@BIbFMXO^x8mS`S z#*3`ey&qWfN{&7)6%qX1N!%|%%Iv*Ti}Ie@o*L^O&rm!HyhUQ=HEgiemo8b&@ zGGO(->tiRG?-XrfXLX(Va^R49WELAbcvS_wq&HnH?C{HtVqh}nbqB3pTy%+w;iKL@ zm5Hd8Yn0|Id6d0RzF3pBm8q9&Q71)=)KoLS@211^0?4V8f?vCz9FY#LE^U9M7 z6Nd=|&8qjqJh`L)V&1g&lWcUf9ols^4dogIhuM}c8(Q6)M(m)v#ag7KmN63?@YQNm{WAF3Q{P}HhzSovIEf>dZ zWpLWSMsQi+{NqUdTU2A~g|>~?KoMlk62*ux^9kbjH8+m#*nKQGL7k<`Mt8gwKJBj< zwG>7xG#}m~mglrpqm?yHNV1eR4o>c3K@SscR%C{~*ObHs&_E*Z5hOL2XN%pO+O!)R z?>cY+b>)>X`h$}0K^6^d3XYbSN=KTg>b?Pga5%~5umhlH9f=#M`R|*nmJli@IA~p4 z(X=HRx+Mp_9S+WV!u>lUbGG{UCv(sHgZnUdronDxTK=@t5cTG6W^kB_1m>sWIEnc) zSM;rKX~pynt&+;dU;M{94%n-S0imVF&~3~HG3#6Uwjx-I`dXbJ-A!)>rLn4uH_k_+ z<{=37!qpcG_FB`V zYok9u73cmrN-FY8Yg#e&D)eC2!fpYq1@r`5ud_Te?tKI(+DHKT(`ErsX~wJR;HCt%{~L0TI$ zj^YB@_5~s}9hTaOqD00`>yeSJMYOQp&$kFhJqc}Wex^SS>HZB=*8w_gQi5Ju(Y+SM zJYp6M{s>38qNFbDyqDbe+a}|D>OJQ)O4+`QZ0yI^f28^1SDg|tnPOAp^%;g-k$H?9glSp#2zS?=-p*y2j=z_v@T{L!+yuc z&soIen*SFge*x_98|}agMb={%k~`cZ)_+q&LntuX#2O^67lsRQbE{)m38j;*&(W_6 zDsK=J=CbgNtQJ2N3pc_?jd8X~thGr{mGpe}Kb$n`ib%yBDIxW60sz2(Bd^dE)JFOj z5zw0(h}%d=i#Vh*0qmcuMxm&mU?c_Me-*dcyMBE0WU}GPp}f?>ed#a`7d~~Npt?)N z9{PfM1WdF*8gy`iiP=_dNPROA2oe21i2iI=14#e`R2(g1`&0KzBe@d?s_Q!2l0j17w5p8W`K#z^=XO&t+=B|>{oXvZ>h*2lrn zG}rTJ;j}MMk*Llpl9(Udb9z$%w5SYC1p>$RVQNy&^`1rfel8=Wlf@%i3CHh84MtOR z>`}o_ovIj478L)*yRVpRjF%*1Cx*|-t+KGDR2>BK22 zz!G)e_WTp)X71W0YrI*RCzJLCs@b%aye}H|H8E3F8LTWdrV0;PH)iuWbpy$x6@i|= z3OT(^KhcyboXl`e+Vt89_tLyQa8*0vlLh3g^vqAwE^eJ{<5cV{IZ~&UT%+wxpJO*Z zO&E(RlcwxB^gG!p+qNm z`eRp|bF$*b80UHZPH&wBHU*VoQ-gPwmy0_US{z9Z=!|}<=6Xu>#lYdDdZTaFv{qzC zwXSTau}Vr8@cI5~U>Zuc;ntm}?CridnJWCp)_iI5Pj<1WU6@Ks{v` zJ>*9p09-`AY9GI)_<>vX87Q6gfEU2A{#OeY@*jj**Ig$q(r)RCEhrMXXm5VO zee!EyjM<`6Q~~;hlmcZrAy@Lb3g}yjA)+;vGth*}*?@R7b~V^lj&)jcownmEGBY`aw1Li*9p{L8d6*4wFl0R#8@0I#ma2FW z%$O@`NB1XehiliASh>?*$Lyv-ij3B^beV~zB(|cz{&?ocf6aSYcUuy+MJK4x6R=g1 za|RFkTI?hJr#0aLxI3vB#O8E~`Gyjp1t4PN_Ndx)cZ20_0X4arW3w3Q$6V^KU+Aip zwiM`i)_B)|nZodw2ALJQx@0_uc7OXL8?t*D;cH+%BirM~aa@>{78g4 z6<)R}B3WLN*{6Oodm!cs;S}Ae1pQ5(d0J!7$!rpDWs5hbC}BrPeb z=pip4bX~}EAg@=}w&@Ee(7$s^ga+J1{YN8M1%cium++WLzlugtFq-OLe66qKvj|tD z&{}E_TU65JBI3%gQTKg6D z_IYC6;{v|=7uaRZ zOHm9ui8)7#V#9IwN8Xp}VMR|W1aCC!Z=tf1k?%v>IHpL-45L2n#uR1KP$nwRA0C<~ z8gDBr;Z=!^w`;!!K-~2Tzto9u?7WutS^dP`O(O7jj@r5&*V9kmkk3Au+2gn^0oSXn z^Gj9Rm?WQ**x&z3e;0ffGtmshUg_ce_qWglOu(_e4*sJ8n)kaq_SN1zreAdcOkIyi zUfHKWa%efZ0;KY6Wi`s?h1|Vub@!}Vd#-wtYb~?gh~wbIp9y7TW@MDhzSCbDXRDVO z4L-sygGp7p05?V?Btk2oKcI>pRRE+Zb{X}tu$6fez)Q`n=Hs9`K};Pwheyc!q62eF`4uo*+YcrD6@KHtoyDtF1 z4**>iCx4@|p|%E^JONuO=q+uzf?khRPfcd&JBuq@Ma(PN-NTs=TArWD(}agH&8##1 ziw(_JVoFA)&fHep^>>YmI$*nFq5}sBV59^B0IZA+T`xx^!C_aZc@fU}84jRuzI=LRz+1{e#TJL->u`f|e zF5p`|ttJN$Fabo00$>5qC^Lc&m2wC-0fEeW%)2l~0fYAN&RFBgtR5XLqZWr78?M7g zt6j}v40s_#y%Tp_qD$XoT+lqd&d8+ZdE|i2g8o@|*&>AfEEDki-aMzY8I6Aqj~i zUjRVDF}FF11pT=8uSnmWGMg)Dx+3AjoJd{j$cB-LiL~0DVkO$nKAmZP0V_^5K~-23o<1t( zsp?(7sVAJ{UZvJIJ6aIj+YDE~ioeNC&&sj3Ku-X9AFnGQKAl%8Gv6$8;4JGBEeLBU z)%Ub)^iigUA^E`xPB3AkoA2lvUB$Z1Huo9T@dX__`olyxAcY~4PYpKdZrIAV{R%WM z2>@s7a#6oM)U$jx2XJl#BVLrABP`GFq3!fQ%D2Om~-Mj(Bsg)A^3I#nfvtV3X%zS6aM}6l%zW* z7ea=9Ds)ft(OEx={>iG>V!D&82f=3=@!(sNPnWUtj+n0}_QT7)eLu? zUuTr4Udv-pich3zT&aIrwik=rmSCIjva7X)3T@3Vrt47x^rEovK4dsWmvP4W+@0J~ zF44#>Q7E_NEzqj^Eu#NQ|1RERO5bX~!uMR#%X=q}VH#@Z(Kt z71eQ>%qkv&iYZ`c4w|*OJ!Ci{nzN_eM`oRh&Y_Ktu9HkrDUfhBZDDNS=d0l3iFml zXD#nM+ZfvM7EOu23U*5JMKZ}(U8*glvrMd34ta^X)S=9>e|lS0*PniLhRS%3RrCBP zUv@_}$d&HM|7l!g6@7eOX}eYkLho`J;h#kj=Go5qV_mbuh!AhvIj*&D%0TzYooP7gB5aY}7}oU!ju#p@+I|YDgXdzA zd%t$b@YOKCz;Ri)8%|R~65l&$j_Z7XWLKHP<&*`vujgw<@sZClGcaEEm3SOp)}PJLs`6-LC6yFpi_HM@csAHoaiisD=o+Y2TF zZL8og8}>1r_T&}p^k#|;fNg0=x&Fjg@b*ipNn~{xL1adEqL;9h0^f>PBa_?s!XFVo z4=5*T8fkL{nS@L&zH$BZVeo(d4(Wu#z{XisPpD?61{oNS*9wUYN+Vc_Jxn$ilwv$& z44`ZfJasyDund8WQknOw{ST)aHo$kQ)RnCR-r<_z{44lZS5CS{bg`(Vta zMkm^eHLJ|***q+68LQ8|+*$kQS#K-iI8$!3kD+>4SDHy!*5=|&wpc{7{2D^)Ps)zs zJr;G7UhwY_vtd@_wHD+AM>)kXYTUa^TM(adcLlsk{Mr5(PVH7DmSLJ1(~_-dOhdt-hyA) zkSyNx;&9qZq1LcJV7fMUfob!`k>0r_Z@Kesj78w0dFJxRWsYHIGM|;)RGYp>8V#&v z4Vwaem&U7==w6vFKgj8T)fD?@g<0frsM=ZoVynMon04ffJyswNiK$K}kzzfC zisxQ%k-o;ie$Pm}IhRX1pvrYYfd$r-8#LH!8P<~MuCtL@w&v%{0fk~ze~lRTRFoo~!0%JcI2rV3J~yTN#pl@%~YuPgJ7 zG;TRC_sj(`B+o9MYk7OvS~#3zcVWZko}ZFZ-`FrNJ$yf9$7uN;O`ts;Ec225Q-z5E zPdzdxkaDV)I?Kv_GKVxFy=+{cI8M^)KlNbt$e1pk-LxHO>a?y=-SjdO2%8G!`BZb` zE}wL9QJ|USlrcDL!y{EM)(7wQ_*zW^zx}8aIolu2_p*0rfyg5NXgBoqQS>>Ju*Im= z`%>DlT-9XWv?N%udFV9I`=&woY5)bF=4VpBSn503`HAX20Mg4z3I&#MQVJK{`xK-_ z)fhBVH9Yd0OULM+*)>j=n?p3`mAPTD(LU2dEg;>_y1%bV;my3v%FfK>)BMj9X_^lD zj)<0^CjP7Mj1)?f%(#T=3OQs_Q;)Vg+maWnjuGi(7-sLHe*eXQ4`ET+-kr&Kx_l=$ zD;uinVr)Nw`!Als26Ph1l~qmYd3{@$kuRF+)2G6ia56u+GO)lumh~68QE^g2vQ4=( zxs$9vE?{NwBpZtTUSq5cqh6b?R{wu2T?1ofJ-a=%ZQHhO+nU<8r|s0XZQGhoZQE|A zw%glzzndShvy+^ildNaK<5D*a|7F;j?ZLx(4%QcSgNa`tO!Q-ek zX&=+7R7p|dha(wbnR%?SmZ)|d5;x(C!KE6=GQ{Rm7$LvlzQ9Fa4%$HEyU4$B9Qyf> zv(VGh(8o$0IL$SL$bnSvthK3z>##Kkmo+rvnq&@V+Uh{JMXptnnJIKhwSm=VvR>e? z>}#9217=B%o*;;fe`%Ofur?7qZxY}mO+myYR8%C_KxR*i?aNVFC#nSNwlq)TM6!qf zrvJ}LU>=6b(_WKKlTa%ea=bq*R#dX4ZPp1A<=@+Ur>b$DQ%~M%8({Z${n!P(%fx2r zV`CpdabLRy^gGdWo7sjV@oY!A;7>H#+e8*ePuC=28ju;i{m5w?`wvM{2d1<@@P)lq$d z2vdA`i+Ex*f)r+qEO!Tw{7cD}L~$YsX-Zo@DXX~l0Fs3T3Zsi@p|nid6uJG`BoXdheAX zpc07F+mnD`Eb!gEySJ zs_z_wwdZxSgUT={y3g>bjM}L@b049s9;wC7NLbgSU!Cw$pl=%%nZ0ogB&__1E{hN&+Ixc6PpEy!p4c#_iS{1bpHfa-R{^%(_$MZ^dhvq(os0{K3HuN4d820*yX4If4$F*DZo7otM#TLuwS>)dgvP9!(u|HS^!*)g43RH1txV{qSIFep4NS#;f)==eiG~9kXIxR6 z-|75=x4;>S;AG~!YL&A2q!ry8GE3ihR%CN4<~CcuSjuNp&~wIJLU< zg&}iGk5@BhVF%+Z!F1+tJIkyNIF(|K;3*rqEV7jnuazh*PL46=6a1j7HfU{uXo05k zQ`+JcSOM+3%s23&^H1*5DDObzGpv}}(ul(_Vp~mHHsNMwO1#ORI-A`P_89aRhm|%0 z-fy=XehTP$=6a!Pkm0gfsudEh%S|URE)MhHUN-Gl_fA`puQ!kJ3+DA0Sf$2HsaF=N z2R*uJnY?sj!%wriP1`y=Z8909kMZ4S=hZKEyXtDVZV+?^uhrMkHs+S?BHYgxaui2m z4GS5xBoeF1A^fLdzIR%O35r0fOg$!$!vjo3Q`cGIo%H8!Q464Em=svWag)7#4i5KC zhp|??Y1?gY#%n{}Pk96RpVh7ljKvtM$f&X)8SBF@+G_!IPv zi`U+hg=#JD(S#<}|7!M#f;7Twrd(n^AhfonG!8vCuQ8GIU>k&t zi*KIxAJr{IqhPN+YVQV@m$O9M>%mPBx+|5 z?j5}5_9))Q?&feSxg`;WQL?J!RycW=LG+i_Q)a0QgdcHLG!5rn^Oq)Wzi-Mz}| z4n(ul)xcofSbi5p9I~m~^4nvM*~qI2;;TZ(Y99$hf=XkA1B~jztNL-(;rHX#DWX;=DSY>DFpdMdP9C3uCbUTyr04eA3(Wzc{VsQP%~oZ?uKNGSR+5`l`uAyws*WPuz3fXWiibu%Y;kB5t)G4=@RaPn=1kjzcSn)(S!}m6>^+FK zIeUGW6Dnpm!`<)!*0MaZ>hB`(-UKUmI%RAw^%K>^XRl8=e)ZzkY=xI_x80IPja_Ts z<=^83&?uirxrFN6ID3L8XXuT(N%0pAA30TydV?d^8A9j&7ZJ2`=VUp}j;!W~d)50U z?8T2?XC}3y9i6>49ZFOyhhfbqFiOYba~9g+n?0x*@zOn^4(9i82CS^kTW~(~IH!Hh$s|mnKAGHNziPp;bpa%miZ6od_tX@U^(gI}_RR^y3fa$hGWm zwag`vqG2y6@Aj2)Ga01dtL~wHS$Yj`+O^n&psD=`?pf@$+w3b+*AK1~&QYUWq$Nel z#yP=5IJ9u=i_8D3QB?G%s3o{_tyinC!ShRzJEs{6{sTNmOG(*)?^XSNrVq$fTVaMR z?^;~cP9o@%ICgHi#87oE_$cOg;N{o|w1)k%#nE1U@6Yujf6}%y@WSmBHZgCKp*Pc= z90w_*jS~$4IKe%j}zSJ|5%eD31I3_~j!U|}i%jeqAiF#x#2)tLFSGbDlT9pzI|sFlLImO$qMAq# zEJp-wB2b7VHZ_0p=_*A<=qeF=S}*Pl4{Dx@LG-NnwP8dL;n{y|*N&+t6n@rI(vWMT zP|1?=z`2sJ0WX;XqG8RuL!w|3zI&NP0p&S@H~O*U%u~l}91(84Rmh7ovfSPh)Ja+c z{*Pj9s`)R0;XeF~m|@Jj_u+0iekOtZg_|f1soX2x$5#l>T}@@zD5%bM=I~s<(uWVz zNE9KR!+dM=6zoPI$p}wj|>iZ^x_vcABSC*HBeRMcH=6wgAR(!B}K*7-<+e#({^P~$v{DxmZI z*b2=xcD~)ZiL7TfeOypa{oDX^@wd>^K2XI!iQJZI`}hg-OP3wH`8Q*j_k(z@ptfgU35^8(6*`HVK8v1~GljaHHJaKauAL)Uj{EnHE~CxLY!{q@S{~f-PzAmA@pKN1GsKpkepTj7 z>5P1^Vk8HSo(IEA|B>GK7tVFU;P9&PlOAZ5;y*WU!^I`^#xsTt801Jyqw$RrH6ULf zV2f0S*!A6UVdy9i8~PJC`YN=Eb#%wY*qirA&3=%A$dUe)25&}S-yLCB48OTkG>yS^ z?GMHUT#!>mhGxXgrK3ZWEbD%QtQti7HH8wCjGl_DI{iML$o#?Tj5mJQ zNY!+AO+2!CbyB&vyUgw*;ARt2DfS!syRromjQmysD+ zYJ}=luB~_YbU7@-v*4$|?akPO6Ddtq8X5|gWn#vbL=4OdvR0JH288*a;+SJk3fYn(e z3B%Rh;pf`@b%12N6YKSWNr()d1x2~#ePck9iEJc2D*COgj@d99`_+&C945^H<&`dt z8Rij3ssn~K@)oj(VsPuq*w$t1s9xZI*jZR}t}X zcQOdQ$4f+g9JM_mj(TDY?NMvGxmxaHc%@yjNN(B?6n($m=am{WC;YmX_c2!|EkG|v zFXDRQ6Ql^EN4xG$jEN%1u`SYyTGyFYyWvKkc6P0ncoL>xELstCFI}I_q^0jMSDTvKIjYFJKi7jvH`RjpJqfN?>XRq+=JXkAaemTj z!H&l?$gF7GME#kv#Is*a+*Lme?Q5xdVE&swhSIr?aC-P_A+*xYgO5q;HgRjgUun2v zr7~8*+Ovo5W!l-7v0Cbes{C+;59xsLm*!_LnMx%8;BVbil9h>taY@@w3?8K={+K6& zv1{z>PFc0rD9K{#^d-i06i;Kup3)#;9(fH6R}=`Sbc)Mu?y~)<42JPGD3J<0IqK?G zB#amOEymR@EHsFpgOvlH-#pl&+pvIEUNKVbE$@*Ng^#&*pK-Y}CtFk+V$Y6dn++FS zet++{4s_9Mm)>!|@t)-`f6zJ)=U9H7wdRZ--pU_&VBuzf@9y zkG8grX%9^}?V9CsPr|e^irh5~1|95(X;ngr2DJ82e!2SLsWy$#M$1I)cFQdhSXV-a zy8JfqdWwsd&XDQOpKZe^gm!B|QHL}ozMH>w3tClPviiZ`OBv{z)_`|vDC6uJw=LW7kC6s3Pf zr~@=8B=7hnCrYvvBvYD_u-Lhp9aFBVIcFJax+Ph$&l}4hNGq{~Q(z`DaAGpu z>&f`rvfOXiA>)jHiF}DwKN_ScD~M=x)yWy2zh{6JlqyQHd0>4x_q@f4mbU6%#4(%% zh`M0@n+zbz(d`t6!G?J!YGQv1&@m6*qqghos}NM$d}4WUx#jZ?tN7cE|nBB#ZV&i?tj%(OfJqa3MriZ z4CF4NjE1PCgf!OdIcY81X}!_*w$?fsDc}$M_tu&Kjw7}vYJ**yrgX0iAIbb_47RtK z8x})3r2DIho)V6PBbH#fCRt~dy#&dMX&a73ILx{j78JP+-rZD^m$Ep|CJ_XeIHsEm z8iHc?_BW&T6daVrX8XVwAjj6(Pn8nAvU_oP)P*M2B-VumSs(&)4FRlLuiRNDi>JE5 z>D>PzP$I^R{}3qkTcQgvL?)XU+GEay%gm8#+HjX>=a=Cl9}<$dntYuO>y9_qB3obA z$MK=a9}I#&+j51%fTgGw zy)GD&y2m$M3F&%vTcL!?M&D2HG3_E*wV%JLW-2P3@J+Opt7MhJLiD8kIywIw797A! zI*h8iA0`Yf|H~JSp2)+>2fF* zPmpQ&i9BP33SCxBjrszn6OD08cQWN4XJ8~9a{rTD5}f&B#}`PuQR4{qdPt|5x%8&{Tou@IQ8c*aJdx->tZ?poE2yj;23HC<+n z#4KOp4(Bvq`G}cyn?a!6-=aU9uA)p)dTI4EnKT$?&&Z}7rM0Qq4K*1%qi>m|hdyeQ zwHL}xs(`$1+^3*PL{YIiYtwvk%$T8tE@O>lh=Q?M@WJ7D5!6VR0zH==bYqzegQ%cP z7LYfJ2on#{I8}o@438Jwc+hZj_b-4X~#6anJP z*I)!vZQO>-Di4it-03I|v2)@_)YR>_?GKTU`XJMX!Rve{)UmbKh|U+n7eLL`E+RC8LmdY5F%}f#jP?(9amA8SrvOuZS}_OwT0BLIcjiCoi$FmJc?V#iI`CC zY7R7jp<@QJzUUh*lE@B@4RGkl!@lVGp}->FSYmQCMnzrSaK`~As+V&nEf8%9db-L~ z->gfWBZKp2`!MSH<|8rf!m$iw2XVzf&n~-0m6L=BS7cwcIH&_WI^ZHaXP0L%A&%9D zr1T!$?ahvf!_)8X$^4Bt$q$}Py%DNxS9XRg<{)^Zw-(e@lL}6o3VtsVF3p_)cdz8& z&2)dD(G1Kho;gi}^1ktpeSqbWO$R=#HH-VQ0^w7Ffqda2e1V5}VS{pl>j7h%^DtG@ zT7Thhs#SO$Nk{T*gRY?>O;vkRC7iU=wubcxUgpxr9J-;Lj2Uy0lp5wDQKck6~ON{^6Y^~H({AuP+( zOP4p{0oOL%H2-?`i|Q$m4|>`*Cw;4?CZvRPl6pP9AGw7$`gyUHY%><)Ulc_&yv44( zDaZS?7pS)`l7}yy#jNsI!mY0)loeE1N8_UZal^e;)e*I&9K4lSA z5|52E%)C<jBYi2tV1jXqS)DREzu$Fst;ZY zg~yUtr+-17{_ywVGmKr1u|s3~MLKJ$Brz+LrVygRvPF z(c4BsHv&KVSZ_}CFVmUWoU3X$JNIklzChu=-rcfet`$aSPKKV&Yg9}MQdMQB8$1lC z(h(f~;s1Fg$aB9$hwOw~33S+eey#R=QL$)On+`Rl|} z&y-)*+LogrdR^Gj8mU4zxD$_~6=`SNfqbebGfh`Hent5rAnC39;P zj=CZ0a+8MG-E3@q?iu|8L=!2e@fCJCC0@oX3i$Wp5yIi)bHvF5UEVb1{nihp#^~&< zZd48uMU0Akf1*kz6ghn|< z{?MAo_}k+&vwYa<1QgaWO;Od*Vd_@mSL-}YP?hseic*m{s~au5iGB!U zN}aIE9({4$Q5CpPjML@oYN0EtAS=C4@IfY->E2lGk7x*S2d;T|QVY@Q$cfwR|?0q6wm0-4*R8GC!pvaO3kwiSQR-IrH;Qewp#D z6?b9@0i9{He3Es~cFQrW2+6Vjv)fan>=dKXnK5T zaBv)8RWshX7?1M4eW_}p@lX?(b*RU@5zN?R-HW1)OO(gFTWzr0-7n@n5I3DjU9J-n zZR^huegJ=xE%0WlnQ(I$Rd|95UsbAb7X|4(%2UgXh2%@&e`hQVU;qAyYH8Wv=f%Um zQf=CfC%Oz>Vi={$^~2s!AZk7g+q()5p93SJPd=$ zjK#;3Gn+RS9qr%sL_Rc>Dm^XR*h)1ewHkA{&RF;3%tw@^LYipXLR4%f<J?giO}KK-UMzkvTzfY~%6D-h7Y^AR!bH+q>K;zFieCdy z9eFHAP0dP?aLtmfmCizwD8m#$Q_%O6hLyZn{p;s$2!mUAa(?C)B3(CK5dqn~R&n3`D zwr44-bwUliI1cgRNAAqU%Z|n{P|uY2Ihw}L85BYP+_A|ZgpzafQW8LlX~mZanu$zL z@fZvQ7tdIg&QvihUVrgHg-9x2aNf0$FhU){T5nB83Dbx=41bPr9rc&_g~RRGCO=nf zMIs@$!~p2y&bN-_UxOu)B*174`}0n{I5aHQH5z$`gYbFBNmU&j8Tk^3dU*Oaj2URP zanzsbFZN=C5pQl>Vx&1#j_YRRfeGo<)E~O`(J&{-2I}IWI@4(W@Y1*NY^E{ORx3;@@P!yVl{n<{a7|ap4QVnuOPhn_pS@Nuwr2fflB+F>?H@{oyI*1LY2SCdeq~ zSnN!Y3oG@vy1V4w{o4oG(SZ9Q@@R05Fi7iDZH!~oRvVMkB?zru^`?IGqvXejGQXQ; zs<-^`+`&@IiI(2yJIhy)^@PIv^5J#9Jy-K&!q{7veFd$|9{2N(2>M=l3*OiJ+K=t4 zwLchiuRkZBu!tV@-TE3EbK!*masTEJ5&+)s8#SQ7HQ{KZRIO{E5g+y!spHWx8?-KM z_%Y>@hl>7>ZWfZh5yd+dPoS6r%*;ZjtAIg#*yC1bX^oF~K1NnO(-qw`^d5phT>jQQ zXSN)RuFdGvSTg^BQQ36ac%RcR8BX#kLcHBHnjo8DkU>z<~gu z_elw-V7b6XrpCN@V^J->#bp5VdUR_GH0;4M{l&>DZP|uJUMh(=67LA8XJ2_cBItB`RS9;Jt30H<>5Yo zUnmJaIV62)<_0nja#i(ZXq}eji)XZY$+mGVq5jM~uDOz|d#6mrei5f2x^{-Af{O8l zOQFjg;wF^f6XUnRT+-z2#Pe$ZV+VF_yNVG(8ZX8v)2h6L-n4a4<-OZJ>%){wwB;sS zvV8!7llUP zDM-)Xz4uY1;DEB0Wy}ULMREU_Jg{}*xD*a+;PhIDa(%)zW#ZF^(4cWpG7D~8VM(wI zy=5R4-@@|+PC0Q~c^+hDa9IlxCFNTPvrudi{>syLQ4s4=k&M#s`~&0JvSoUJW5>{B z;tj2>f~cYwlOrP6J;naYxHo_%MasF!8V>F)6}wd;MpqBjut7b79Tvw-F7 z^i|8Lk)IB!lHzr+%NR=w`yb667}qZH#nS@ZzF#8qn<+SkJ-mMy&4!$Om5MOcv8+Q* zhlGL{J4-c~O{dAr{-~r9F7W+T%AexWRr$tsn47zhXzJt+O$(mB;i~|$R=s57fR*#er>)P@{%w2RbT1#b-Iw>a>Og? zErAv)7~uEk9M&0IYTNLF@L~Gj+U`0i{>w210A>LK74uy+cdm)<>1sz!>(XQs=qP%T(I5|l58*J=Xn-g~w2 zp384R&`@vxc7FkY99f=|@Yg77-fjPvaB-O~qF~vRnmjlpKLFM?Xv6|Jv}3{X15&EZ zJXHe{KxQ#>D2Ck%s);9p`(mlU+V0NLLZK~+SJs#cwe7rgP;Rr}`c*FH^q2$a9B zNd$b6zZUlUjH~^*vZjT+)#6$*0(QT6L>cPl#nIRJ>hE_vdm%*0pBw*X1pwem;zFC) z6_GIrE_6$m`t7gmeqM~(OW>B1^2fL1x0OL1$Uh1G5XIZ!Bh(crIX`!7Q>WGA{|*2eH1VE zU9Q;z@7TX8&km4jdHv8m)Ht$$5F?r>G?%mxqnBt~m1n zq#$u*XL`i2srv^}y7cQMy_6IUGPS3V_4Qj`qfjNTccXxv)_&rV)AOlDL5tc9lC%9K z#Ko@4^n&uNLZo6!XA;Rv>?w^yK-wYtJ5~XC*1tYkhbc-i$lRF5qJdd+h~|I^Em<^@ z#vmQCExfgp;+i+)7`n*}cNG>VPHGtBJ0byB#*wuR%Zo><_fN}z+hD?~21$Ma9R59t z3Q&I@p;58KN#EcbGH8uL3f2toSZ^ypm2$fk!vwZ?Hlf+lUTbFSXr4Pr_T_%PVo@zb z4<6Bz8<;IHU6unXW}fKUB0<;@_#5y807yZwHZjX>vlv~r-qsfc6e1#i3r_$nD*rGm zJMk+aZvdLO4ltMDX{{XY`bxqzv;=E7eA4O=GSO0*$>!N8kE@O?NwLr!#6Dsj5Rij! zpBLaK5-|-npbd;M9}4b6?w3u%E{A;vMt{Wa$mJyM0jYB0WeH{IA`g$?_YL>$2}!M5 z@vw89)@IcD3H8|c@Aig#kEji}yaDQF#Ih}xo?s8@DCR7ZRvt=lK< zYEmS6Fs$HIUlJeF9KP}nyZH&z3^|QC8!`)9t2FPdOEr-?PmE4587%>IzNo3RW~a{5 z7VY;XcKVIGM#< z@-3TKG-*ykl$0$g(`_?N20tO~uClcBqnux4<4Y|J;o^aX)Ht%*S^J3H(sp-b@&EHn z;F*PfIp4fEa62@KWbVDlzHgt~Vc9Xwy zP;Ce;rpjt+Z)q*7Hy1in$uj01 zCecHXrXP?h*?nk^4*7^{rf4jTXc(3{mkP!MZi} z2>rrxAv;?K63f}x%@AF-vVhzS9pV-LDOuSp=Yd$i3435**1=R@6 z2Q}U^?tQjNt6_Xn@-XPQO9I8YMkLHrJpxC?9usbA1Z+lP>rHF20^H_YZB7~wCJf_T zW1~&kO;76UF*ihud>kLi`ud{H? z9+0q+XYa4tdHY?FsyBt(%t9*HEK)08hroI-))B3;<~r7aaZwlkpGU9BUUYj80KA(8<)YNa9yd3(>9xyc0R_rBVX~OQqXvP>${G z;A?DVY3_I{f9zPo$J!;mMzqdofge|UD8nFH_mg4LmyL)^%X3s3mNP?bl{n$-2Lwi~ z;VMK4%WX5lts0wK2dr@}D?}0^*T~E;*5sqAO*t-NZ1PoGg}JI3*DM`*I^04uwzR{H zuxuS9ocYALH(bR5U9{(Ez04R#HV%I5)m6w3)v9@5m4A8ZKCHT{i;6~tyT0g)m(PPO zg%gH=Bc{4Zh}U#CxFRY#|6)5-pGOVYw(TO|F(}>z^u;&3Mt`%nLU+M|pyH9P4BtmSZnxput<%}DvVr`B^=u!{{dzVae|=1H zC=~0lw`mim%C!jYGIQ|7s47Rj=v#y{;nsIpw#V)*Ici00RKtm^>fX*_m6PpM{czeV z@r=q}Px4$mxuS1woM%Fj02B0bS+DK3i2a34WbpKtA5>y8!8L5S++g0I)g0$QkGgFCtciB2 zg&^L06y3U}EHof+8A^LQBOC39@!z*^1W3$!O(M|TO~;T?qg(@Bc4;kcdDOWPoKia` z?)6go@*aRgx)-h5%wn{*LYgfApTa7wyv-N|=ngSOYc zKYVhQ(dEj!dT_j2alE9^K1$i8`@)`8(jd81gZX@>Udc-HVabSlZw2O`IT_s<5h27I zb(oHmw8*ML_^CSQ=9PFOXKJ-5+iU+rzRp777s|H1p+fwe2Z*)Bw(p3ujd;cr1Lnyn zS|6d6nPHFboI71W+^zWwaxkumqbhShZ$BDm67-^EXE~?4QX9FvunZ1j1f->gCEJvn z4^B`OQ;4a5m$3%%rrjBp84hs$F8a+KXpDUGINK;s&XzN&Snedj-gNwOv-SSsMyP@& zZ<^ik^0*A0*ZWUcOPC`q0D>>)1aI-J%6y`860 zuxU?X!!H>R1bchs6XuEz?g1Q{R8q_diGi@GbO>Mc_2l z(+XSJh)ugqS<4c;fe~`Z}Z9Jn-uMSgw_W%L<^n=)12l9fl{+HDCMHz&UTZ~mK<3N@ul=ILPW%+Pi*ffduzozb<0oWdI9TP{*pgx&BaeLT*j-B zSPUB5By{a?IS#L4LqwDd%$tsXd!~m|n(eL~yOg%Emk>Ax_x!zfqq+ct2Fw4&<_iq3 zg~m++h7??(qr85+6OXE4-Z$pu#k2HFZMOEIvfK|zBo`+8YI6W6I}h5tuQf7%pOdvv z$?~_BjbcS{qTD?wk*4QO8)xw4S?8M;P~n4y@dg$4 zFyeLJ#v%LO?1$z0q;>x5G#YQ`cB?Ta=ic4d;km*57w;AcnoGXHCteGa*TOFrjP}k` zo^~{U1!disy3VvOcp`k3_h(9_WimiEn)^jZg`K|NrF9dqiVA$aTuC>L#kxt!=2;$U z-g2Hp2Nb`JHnA$nuT?XVwUv1SZyL}mt3Mr1aAe>Gn3*z=@$>q*ABKJ?^Odb~`k6l9 z$@j691vL(O!jv4gC(t=VYIM{F%vHV+5Q4{HN3>lu23GsoPZ(6-`2-LXYAv6a=f^8$ zycY=c=p@^3C|vJH<+Uf1D+H#8F;mstWy6(<48_u|fV1x--gg5B3`o!gLzW=6T*CV>*#P|h)^LA&weirpuK=D|mYA&ojChZmw74^X96qoCte@~d^Vonu z$Ow!^J~$n^6!@p+vz9O+pd)jtae&ol0eMAI9ZMfTr*GawLW`8)ULQd-B#6Asv4}pY-AVbQ2EzW)z`=k09 zlcU@E6bRWlbIBCOD5wwk4hi@GVd=l0q{`7jW!CS6zqR9QxRnd}WZi za7gyu`4nN#%**1&h@2H&pD+yU<8PIYpn;5V7EljdcXHXT+(BIJA^Z_&N+pCCC-`52 zoR7c^2xe6}T}xz(K6yC=g2vj?gX`k5*?~oLAK3r8w$&T zAWWqgNUI<6gegJx31U>qGUFv0patN`zfjuOguCSb_D2LnP?P#VA~3-xW@Xd~tYFP0 za8+|sq7&c!bOEq`-$McTozGeC>k$xNB$4}h=^y^=9&Tc(?$SrooV;IB8)LYa63|Oc zHwW>C38g*GyzSQSM?IvdvopiYT@qo(EmZB zfBbQ$94quAxCk%<09+!>iUswJlaTvZO!&l%peJQ5;POd6TPJ*g5d%>Od5PI)Z^clc zg}$~#y_`7eUrttSIhcBtywS>M&lqDgN|Nj-;YLi94;BDgIzi2fPw&2ZM!mygGc}g@ zpcxcslt4RyuA;6XMu3e@aswQ6kUKCSdA{ZJDDqB_mrM36;k*- z4H#Wu_V_c}PWO6ZEa>()JXNd_qg%-g#2m7)w+KT_-i%dK z=m5kB%FaK)l``;i*Vy*L;a__Gs(U?w-rLdTGu@3h9xNI3JLi_(KFp@qYt+P*3~AeM z0!MX?^(sa;p8Ysn+HC(QlKXh)(>lgg^I`L&5OF;Pwl@WCnZT%j9!MGrr_3t(8g2VP z?kL&FdXl@fJy`|~q^y3|1lodGM;+5@@U6dN&>~g{>8G?G>Z3#t1MLAlOkTqZW4+&3 z%AqBY3r#djEmSE_$3Iw6>DNl89kB1DZ!c*|5&Shk$zHlna%D8c5_H$j;>0EkIuuk@ zPCYOvL9pm<8DEmQvuNbixA^k+@D+WOw)y@)9pepz|Kn5tAZkT?T}rK8%Gl&HbMw0J z_|Z>L5^YJn)}M6urbQmH&E@6uA@tH8dAp5NcpWlBf_jkiR|Gt7<9mXp%nFC8^U z8X6pf@)dhIhiCf1<%D z1_E&6%)H_G5Mn5?pU6;0Z?HHY=sz4D0l-(v zAig?2Q*Kmi=os}CVgCU;7)ar>V3 z>HjAGJ2Uw^Ie9A#rlr0uag>he-MU+g3|F?4Su1T*hiU#AE)UTsJ5LKLUqGxu=w&d-q3Dr89H3`XjW4U@q27_CaX6$tvgdHH?NGX z>5?zpOIw+%SGmaBtf409hS}}P7wgw-#mqK1$L*aDuF3$3pd>v&fxw)8Qi#BSpRj=0 zsNdNjsD8bdZ|fJAE$1EEmm2OS~njL8;VxDjc#3DQDg=mt2+3m}D2U_=Wa zp&nphBA{8Y0zuI^apIn705DS`s>0BV@J?Z|VYHQTmMg|mxMk=NcBb_L z5fWl4a8P7>^PO!ijL@9PFw_)`LIgx%yMoztSTC`^v6Lj{$W@0lv`*@B@JgE9UYnqI zv%l~td<1NjPmpr{Ty`*GRja+{Lz~H<#dCoL%E)Wy6_YA}T2RA{Ph+};kUI=L14`2t ze|ktO_L3!0Hq~t|$)}e^>WKa1pGxO2)T_n5&NeZKPi-vD_klo(F4an~_1@Jkg%0A+ z-hInilO4-hYQ~eyw%_=MpC9!|6TmK-sD^9(rAy0TXMB2G%J<{_l@+_cqt$6~TKvdQ zB{i9s%azWf+!P@xdE+FbI(O3r`*n7t8Bc9XW(%rxQ}67!)XL&^9mxd6Ah$p+U7O0C zD=M(vF0!%0SY}UNlqwIaEz~h|{2hNX>wGjp2Q^p5$|;t?lvR22c-yjjGy1-@#i249 zt<7D=Jo@?fMEAOmr&MRU_qntyTiKc@DfrWJ_3Jwu*BHXWEk9ZU_x>a)+q>rz%S_JM z&?VXn^R-~*t?;G!bOhnjN55(kJR<$<4b)LUur=)4`+XXr3sVO$@ zYurg!JSz%ZJl^Va-!nv}ljn@sC!f{VSh=n4Pb>eT;)&D-s7_WFME6WXudQe%D=n4- z>F=mV6ohmT_-8fg32!uo6Ol_shKyEE1qy*w7wSCe{7DIRJjkh0c+e7mr zA2)(;X+}oR3d|;Re)oFBWBe^&VWnGXboizhix!OH>qNtXWschmIAvM;xDFZxKJ!%rVr=nETOZKkkJ8WR6a#}2f& z@@SG!ri=uc*F~qsmI4-vCu^<*P>v1==eJNN{GuWI$|_0IMI}3L^TH%at>BgwVmMKK ze&0_Hlk0Km3E-{Wvx|_ww~vci)r*JCj>O*E$}z2J!+>kkT{=G}i+TT#Ys28Jh_f5od(o%R`nUKEIyFIN=V zUAVY&M<|92LmsTo7%(PlgoqR31==Sr<|o8Us?}B^D{U?}+-9yfhw#rk12YdU?_JOF z*)=7!-WRn}=8z;syoM2NVt>2ME*+Vi0id7ITNUnBj1VMko{ zQ5)BJ*A>SoNLKaLq0 zm)NtS;IczW>@U=-qQcwl^`o<813jhix3{}q5#L;D-VpjC*Z{BC(}#7l{_1r@|Cn#( zAkg+%iMoEcib#PR)jS6&5`pg2zTUTl$ic+ai?D8_tmnu@Jdy^}efbA!;3Z|2$iXkr zEcmjKoa^e=F!_M{@PMD4E{T;^IDa5tdB@7N@@A{8|1gf87I<0in?5lJn;~>xP6HbX zJFMS&#BJ2Z2kfV?xq1r@!8JNuwPlh-{VvI7h5kRLzOg%$rRz2}c5K_WZQHhO+qP}n z&W>%{wsvxJ#`Au-^#i)cs;bdlHP^&@g?#we6?InDv{Xd7jZ+xkD8%%?r39Ay;e4y?8fi@Ex- zWxgAVyT~@uPDi~TKUJ>r5j>i@{5ync3RvAqbTwT&*C?w5C64N%jB)J=f9C){3=4Mz z+Yd#p3HWMpDO=-qK%s5$I}z!ne`Mm-ziT}&#_SO43SUP$`_EGL$FfjBM zoa*_BY?GsHJ=_3_Csy#>k!2{{&ZhEmHYmN@Y^Par9l*eIjw?qw@IQ|3Wh(!Kges|7 z=vv8i*(6)8t`GkToFCj6NX~_P#~CrCBv&w}BvF}r3$`j}VlMepG%Nurm1_$pbJ|wz zbM8X!rv?N+dVJijgoDhg#b93#$}|7AQ&0@eymgSSsG+LCJYo;^iomtT_YNbZ_^8e$ zIV@xQFBREiNP4N+VU7mmn$AV59bOO#M!snN^Y!frFXlq$*ZROvHjP%&-*=<3p@}?P zDQf-=<&?FAqswxsk94^e+|kMc6Uzvh^;rs8jUjC&A;M!g%3tVGCyK{BHMNf6e13k% z9bCjx5F>NT)ozt@e{MgOb05n2Aj+i1hU~ezelRfB-lC?!`wa+4b^dkrQ+*pQgye25 zW-)$MiHyvB>7c%EK|3WLF+BmRDIlq&8OMp^|Wy!dhdaJiK_)&w5E z_O}uEcw>k%NiU4B4O4ishaXkIz=jyXlMrlNC$qlyI0(Az2otYA^X-U)Vlv%&7ddTa zrqU?z3&WQPF>Ka=Y&>yUenB2crTu{I+WNDH%|={!)ZPC#_a--FTLUsuO-$+DEpao|D2z(Dki6Ciz9(Yr%my~05Q^-ruqlk@I;M5Q%CMxt10`|Ua{Z^JTKI%0CgrpJf~@8Y+P z^A(6Kc}KmOBRczdO$HpG51nCoO!uGrAX?c}|3l_jj9WyTEkY*RDYn++9{}e6uXX@{ z53WUqXOk+M+Npku;*lJ^8#v)qzSgYP2GEr289bhpG1h1}f_hgBRq082qv5S= zS2gP(WXJ?K4$qHqQhVktGD-6^E;Z-jjRya%0P) zA@?8R(qi`~<0b||2T?(=H2}ZK3`wRC_J2Be4I_tJ+z>c7A-m5m6*Twn{`Ts444dFE?s za83)=uy1!|TB{0~60W8LX1-FFqG8)6Ee#Bg__ z-Tf4kBbkzx4#Sby^q7i#`pt0Ce2xW=*WgM$%NJ1AkNk)j9PVSS-7pBkx%?(oxn-Bv3{t2S?A`huu z1Go@86m`rayFotx1U%t??2%#V#V`(Qu?Y#NXT@oySQ}$pwhWGWEE2}4jSAQqywBZW zrv-w_#8j*MGzLabJ0O=Cd8pb%k?*m1(!X4jdhCb&y>GKPEWeVY3(|MlXHj1nb`O|@ zrp@lLq%0(a<`8riaCdKNMTELCEbj`B)0+|F|U70L-k1$k#WP=Wd+#`5>eEYKDGqp6u8Zw*p=A5G zP$NeW<^q;f=NH^*V6#x?$~lNv!Uaq{jy>?7ckc%<4N_5d4^NzK+pAXChZfmPif&g4 zq#3ye&b>KIVVw|PlhnQY$_cQP46Z}TS#55d)7*y(^gMgBjaj(VtKffC)&r!j@t!0T z?K`^$EEKGwzw0_4_iB%`wcA*kok^mY`B~ro73moBIELnCVrf}aq9YDkdI5;9QD~Mz zZ<+5P{d2!LFXI8{8qGvx%WHnhBegkAxw2H#owk`c1}}|8xOXUC$$+Pob-U5<9u%>^*8^)R;2NO=ix`)#HxeW< zuT4izlH%(se0ofzm2Kfhve&d09DDXh#AktY$^kRBw#zqH897jnwlZ$ z(H@FYgWDM~y;mSNO}yyOMU4~B97Lb6elg?o`PB)xfw=F5VGJ-qT4#+dh72dYNv@2K z5tU3@3`93bRAz8$sIC+SsY~SP-Z}GBp1$fU1TW~RbstzY?|z1V*SKS}twnu!pxG-e zdMBa^?aibQ@jbrT|LLxn|HCuvRO|6Kn3x^LBqm$LzB{@Surv_u2{%W_LW!TPiQ8y; zYBn3WRugK>mY8PfM*a2s1a!6g>;C{ujiE20|2mDm#j}9Cg&olzCz8xljNf@hE8m@P z@q$(FpqAJnt}MHz^}|W6^y)Okm#pNju+nd|=E`N`Q&Gq{5i3qo4PodXSrRa&fVVa4 zQ$=ty5;(-Wd2Ev)_az!%c$Y}cX8+S+K?Zquw< z#jUVhp7dkN2aRfqhEtZOCQ=Gi3W9`)G(zAL`)0N~@l(Ex=P zLAbxKMWNOz_>Rj*F3Pt)OZI1rCx{mj_Czp4rzjbSQ?W{*gv7x5=m{{$7MrqEtWhjT zq6t$%Uh`B$xB%I>u%Nt$Lpouche?L=2qngD8WOc}w870s=ZF-DPlsMcOINw9j*v>O zt!`u$Kej6tfKJjsuXFQ?|2T*g@>oy}sBRioatB(b1}jlfSrF*xc%P%ER_h)tN?gKW z)cp!)G==LTRH#HN><@k!FxRcUJ`bNYyt-S1_#IkLCP=m4k9qdC8!Ags!wWJ9kg@nZ z_&4&dc@ggZcI=%`)s<-kltr6sJ>fN#DOlZd+T3SFPimGnorNWw6s1r1H;4=Neas}m zn8`6SDX5+K9&8>T9io}`x5|KVoGJ=lWkaZ(iO(VFq9hM1QoEeiCPdJJY!qT=MANh> z>a@#@vZt}yT@uVW3PuryTsN`??*?4N;`63t+>xfJE<@om{h7WxeY++F>a7HIFU;Pk z)njc|HLW~KA%Q`X@&*6Ex_atR%0C$;m|CmOocq7jP-O%}#8UI8*Q?dV>{k+bLM!Q) z$58*B#0Aq@2>{WXYTbj0XSQ}SEh~3Mnz*>vsB$W@rPvkz7+tv#N7R!hoWV-37}F=c z92E~-buhvS#nhryflB(!O)26Iay7gglYidXQWZE_7Rp+y&Ij#MYBPL`ZR{Fu_-i_i zSP)ApmfTfTP`F90@5HnR_)wNszBr4O-9NwTmCvb>lCpH=Xw&ss7p+P8Aqd9UiI{80 z?812Ik#Pt|*`l)|Ryn=y=!b7)<4VAoWyuEfV;IS$u07sG6tD@P7F5iW%fRd+ae56q zW4p-25=GRi6BSEp>fHZ>mJ>Z3)o#3kh#R|J;Y-kd-oO5cIqAr~CeOQay`Q{44(5)$ z?FV-K7>U+!>BLdt4Q|apcxX_&Y)5n`?Z|DQMA&ZdW;@-ec^J`LbHegERt%3ot)t7zGmah^0Httx!uhO&b6oOTD3>++NQTZ33mqFYXJF4*6Yx54a?u+__?i=hFXjv=PVBy$WFcyLtK{vY)7+`&3T>! zc1f7f_2-$4B1iG^i=Pei8xCd6R*CD2a`qJ|MhXshLJ^}{RKxhsPLKIsFVe_-v(hKB z+lIA#f@~+}=Rsu#N!{S;v6;xFB*t@Pz7@~PuC3Tf$8ExgIBbw|yCo$-N9pVjKo-LrVtP%J0Z4r@^wiV%&uf5$$Ov*c+ zf?eh9wfIbm2F*iAmUujtlDa8rT9a|?^PTsyE?@4dJ!JdltuHBU+g`ux6k^-K3sMHS zBOQ}P4>a537tkh^A?vP0D#}yh2nfHR0}_wm882ps55ix?SaAzlYh#1?F6t<@CVwHW z8G^*!^T=*9b#CFPS&cGFL4Yyq3`LWtwxG~V0^LSi zAgqZ3R(TR|-snBZoflF#uXD;!i~QbRkAEpW9ErW%9$L7pnqA;*gi$@uF+*8qStC<; zbOJe;7OR3Cp;Y%HdlwQ3hE}ZcW&bL~ldofo5W2OG(cHAj!w`@LzB}j)W-05&!m2=z z;qu5-hf}8`k~~oQIBH|T>rZLE=yjH73*(A;UWsNcU$ob@fVJ1vxOCwLMX4(_4i*q+ z>R@(kmJ^V($QH43H+M5~BK>dW=#{sm)_IqB*{<)Ign%Jns|Q^|Z==rA-Y_Dj_G1l6 zy5)G_Lu+L4sg?>^2IN@CJ--K%H1C;7kH_(KZ6bs*#3*Q>4jyS-DQ0VVMpoBRm?Vx3 z6Zocrcc;>fZJDp+CTAXvYB@7jy0Lgxtx`~Gg}$8Yf!pL#r!R77xB;dZ$xZ*%56kT1 z|FgH8zn5t9b9+W5eb%L|;>%&iT#@W{98{e9I-UMd`2%j#H&RVMWgRjUb5pCEH*tUJ z2DJ%UbR}x-ijsJ%m z6Wr~FKG@C>&@t-k0G7lz@I~>#h*62)`(k2W!M(G(tb@WUQMsS()GhP&4wE6(vw~uK z{Fi@cZz%SRQ!R|sJ+snRqj1hD$Lq;oQddPKIl;7v#cUb zPfGu98eVA#YN{Q?KU+Skm$?H}Cly9-{UPZWD2Ek#L>B2pd4s0f!phC7p0 z6LXmLy14Kwc<)7qmVKO3Km?*dWf<$&ihmqW(n6>l^OE|$ejaT%6VERk;0iKlQ*qzS zd|RYC6Fwmv86PTtmA>4YkWWQa#!|8^)DfHPDeOp=I2~XJ6P6UKqf$A^fK{jrm;T<@ zaZI=TSXgs=EHK|tbU-6V#{i#$1WvA%vd)v0%Cy3(5l;&#uL?B*i@xo>zk-i zI<@iO#ch#?a9aEM*fC1CPUd_|;*J1#RqqZ3yg+0y&N*8mY%uDCjZxoo%YFZLWIV`- z^6F28SXw1uYTK>Yx_30yI(-v>{8ao z5bPM&n3&0+Ucg`~U&U{9vq2%1n-wrdlrvReC&7%^$Ps5KjMEx-j0H{&;gV=e&xd&S zusi*>&GVLFqP&AE*BLCOHuoVvyT;Zdrv?N7$oB;h%ms}Jj67PnGw(9ND@f^{8jI>h zJSUm%Um-0 z!KQ7T$)8K9Tz^CV(gAfiT_yyA^M$y_{VHvvf*nL;NkPPM=|IQoty+&3KkD1tUQ|)>*#-HxbO%m`ax!@p{LLOu{p@ zJi<7q3dMP-aSy}$=j@H|DvXF*;)|eqVPpaU3ODBhrGHzD7uc*3XQQ z38UsPe2(0$@lpvMw&~*5_q;ElWk6|-VRU*zjZw5q@P(U4lfykS)5YCW)7{sytmrox zcwuVj&3vD(`F0+QGyjDcdzGaivPcB@9vQq)J0&~!haWz<%YEc^JS{m>|G?YE_z(e}cy?*AQWd2;{ZT3oiT?!?5iOcsl_;H`@l_6i1)Aw-(sY-WfSw(=C z}pxbb#fC>iwzt#QmFZtJ4?uap;7c@-0OyVIUDY!khOh?Nn-o*D*6>ucZTG@FI?>j z>Nu(0hLe=?93gf@sTx6_%v_GbXP11~6g_ohSRQX(xeAmK$x9tPCHhfgXjhte7dP72 zf+ZY`a%X(sU5t?COMQ=q~}G;VflcS7u?2hgV7c@a(D5Jof6{9j2O*< zdV|qZ=3TzedLR-mPSr1s4%#sIb3>r_yrSKtw<@a8VTv*Tht+!`Uzn$;C(s#3mb*CJ zH`|ELUicG!htrSDkr#iTEXzJ1#^_nx63Xc8QV%0nWokI@b>^w+HsObM@he7MzGz#J zVGhwUWay8p#8diCodN4s8tX*rd+2tOSB&o@o*|1@u7xQdP~St6q^S3Z@2j>;c^-wt z;Ox&sK9|MEEiDa>G#t^hqp4?@>&x&{suK5gL1|ta+UgyhFQj zM6?=;>c$a2o#kXtLQrpi>}lSGih4?1M!Xd!<3m*!YBuAS6(`MI@qnJLtcNh`O%zX3 zy5me9Nq(M@o9om=3v(nLi>aWO7Oa7+$|OIZT0I{m@s2;W{UG}uV~~s|*DTKjRwCNi zf0z>icS@q_i?F%^0Q<^?nJRg0wc5D_i~EWttAljH zMMIy%N<%%$rCO7rnEDl?q0dI!lkrc~%awX^t!SHPtL>tmO7)hPh-m6C*bZl0#&WoH zrsQ|bkLf}Kt>AJXaab2MN#u^BtGTT)E6H~LY3`Jo1tUJO)g2^?azc+^m04%=W#pu9OU>+n> zKBcz#^(LY-?buZBP=YBlNyg!?vP1v6inK8en=7wP6v{}IO{{?^R*+CH?=PO6B)-qd z4Rmf0`!IH-774ES>I3xkpXlfpg-k2(`%%y~As6t6mJFkTru3$xY~h~7DPd338V7v? zYaP*YEho{u5?y|q+~)At**}Pnda61#_ULChMK%_&H9P8d>euSOLax2j9-D+GI%B@3 z)ZE~Bq)(NFsDKXa@*<=`U1;?E?9x~lu#iw71~@ACZ%-S;f?~c+?W$yMBH%KpIz>?3 zn+%(e5BV5ro{~{rm`s$9L%5DY%n~oZ(43i(P~8}=;0KpO0+0@2kCjO^VyOtwWl!8s z1~1xouEZK(XhWpYfJbKC|+wil!ciAO_62$#b3jK&0#fqV#}tS0(FqTSTq9f z_n^k#)!8h0^L9N*jqP8yN%PJ@PGnHA_`Kvn4A=Y{W0hE8#gC$3pv)Zf^Km3gjh`ns0T5J;V%fR)7T;+beH{ z1`lWnZ@v$wujGUsvV)%j+ zkq9M14wgDWJgjn+jXz#7(1<*GI`(#(?X zwQXiuv=rH_G#a0$s@MQdeE~=+4hy0+3P9Iedy9YofdxZS0~p^GeLeGH~mD;Z!;nxi6OXA4b*?j zILK{N+t_>jJLO`jI?}4uR4Q&EKm6Sy#?=PftdL+_WDPr2Z zv5IWQI0;phyBmaEsA^B86a$zGW`;}ZK>hsr0pxb}vYAzUzSf>%*jfFQa%LFAmbr_` zTXOn)X5K><=s3rl{Os8y2_QqX&y^@1K(&I)e#Ar+D0W)D&ccpxv|k z;+}@s7NhK|hyh+>(LOBr7Lv2f%p1|^=pE6C_!H5|0Jib9>Z$YjpY#`o`t7MxyLwGKmLm#ym3T=+!j!uMM+ zCrgj~bYv_F)Um6c&*w~S5q}D&niWlz_h^HH3i_5 zQ2Q)rNM;#8H@c@n#ikO%+H0^sSo`+;eO9}Pypuqf|J-sFV>D}&HfU4BTbbr?W>o=} zfb-{@G+mDTK`&+zpEGI6)j$0~=vnXf0>cn~4y)(7HFN{`pjFwlrQ#{5Qz}`8f1wg2 ziCleFqZN3Yj~(t4WH>fqFJEM%YPE`pz#VI4FrW|bw5P!ghE62c9Y0=(j?l)~Kqn)f zm(fyC3@92QC)P4}em&EYM}2sCe5lB1Syxkb*a-mUmw3Ex0c$vb&8|l)hb|Q%X$5n3 zY<$kyBJ{q^>LB5(CD5yfdD+4efF$S}@qMEEBY(@}BQ*2dj3Dq?0K&b8t9RCPOLsR4 zY7EkuR8|b(yVq*TtK-I-){hXcs)(lY+_>#E-W@KszHz{nl@h zQA_I09MsBPUv1`=;YugDQ-UN08%vzqoME@cTkokA&AZ{m^qF#D|M0xb7xc&OjzL4= zu(Ez)RkeO0iCa>&HfNGi`pjOdU27{S=E(*1BXUEWJLfqSbQ@|e00EqX85o9gLr7?D zYq#M;gJ!C?q}9~i-_n4h(Y{eEktPX-FYxhaIE*UMvhERsqoCa1&(SNo8(%#yl=Qym zq`YW8KO`H|bV~JV{O`I^c;g?~{2|(zX2UGy3orhwP|twi8pa zs_6j}25-m&wWhY2xeu`WwgO*0P|OOlzCzJ!ZBEG8*}7pp)! z!pV9UgWAKo$Z++eME}{T?jf}QWG03%-^i_c07(P3^=>HD`oo>zGlLc7_jlYxdE47DG~S$1+lMMM!SByr|mN6RM?84EuzRSMpj&9E_5>-UIF-n z&?`pd1}iiO3sa!OO*MMb;UKs965(ucULT0QUl)e6ySW;IW$^Ms3p<_K2%w9rkH7Sg~j`o2jn|7JW>4kGi zYHuzsM7gq*KsOV?n@kyAn?Yg1*fhGkA%ZT04W^`2R~Ikt9^X1+luF{{Tdo;M{xUm9l)fhMQ+QD%{KL^X-h1}uY7u@qs^_qf>NFaan-QD_k)0TnkQYQ_z1kfVl^uODh+J3~jxv4dv z&(a+u=|&)RE}Af{PCEbkdghif$8E-?1;+F#v11wNprge15fjX{<#t!pOnU_41XG6b zVS9;(Ul?tZB4U`uPhFRd&?AQ0DxP}sU~s++c5X~^veg%jy&gM0yelX`bolg)hRkbo zq`5jL7dR&?r;Q#U+^dgle)IygH#R?vZPz)UzWIg6HXh`=?Nyf=!MzD0GpSfMfo6M{ zju|&tCH&9Wln5HhtaIv)#?MSP8CXyP^qt8&9B` zO?E(Lwkm2}hgb659JM!kX&VA6$xV^|V7&nb+O8wJ%YB9(!Oc6p%i8H1s48qRkOwhC z^W&OoB;j188}DB$dKsND5q}~wTvKUNx3OXwT@q`X9|Ojb`iQt;@-^L@!tQ9DmxJnJEqtyDHg z)EYvPqD`vxl+XybSN7FcmnEQg`Cpk&M}0)Lj0O+bXUGH#C1S*FF%R)RprjGmeJTos z0&u3QA>`J(?j{TjM3b2Ac2&Va{bp~$zkNTPk~--@Gw!stkWh=F?~*an>DCq2luPdl zcN*sFbQPtl>Mbk;FSqJj6RS05yiyd{BV$vxg4%1aE>3nHy&|LB3Q84nF}D(w;=IKj z)KbWKm#)gIv+81~n3X7R|AOjL?FUIR$s7ua>?rbZvjK{+=s4M(&CKeX;eMx+U};6w zZD+3R;LQ3HRT`Y%WwNN`R84TyxSNX92`8o;bF4B<+r1b%p>Ch32dpTzuN5-ZkWC5{ z-SoH%n91Crlf34a(5fpja_|s;_r}xX4m>QM0R%?k%Gc)os=mepOwBRtD?AGtx$5FW z8Um;OK|@vdVV=ErdbAS)#rH#H`sxXSwdCXd1SN-?eW+& zS{p&5tJZJ^(nOd#{i|AYG-R?GP1rV&(7}<2irs@Kncb~D)p+}g&>@^l?gXxJ2%1+7b}cfLs=4K4twpoapE^k%GFBBGpX5>yhRRU+WN85oiFpq^rr_p!!)?lke}1@v zM^^GT!%dc@m}HivNrIP&dLp~S(=Wr~39>{Q`o{5E#nOAd0oFH7NaOg&UQAW(WG!T} z*Sy&n=4ogM<}uT~JSbS!uD4ks`kkl}h}O7goZnF0BJUIv-g@33iI3m>t%{#TPm5m)cAAew#Ra>J?;Bv;Oaz8gv|TTJ*B1NE|^Iv_GD2brP}fXUDq?X^?s(GdH znQ;p$N0~q-eq{JXH*HT`@+d;&$7dN6vv=cpg2?&7TOT02`Uu{Evv0r0g16{9aPOgl zBwomGw*8NMwte7N854PpC*3EL>m#I8|Iy$>;lFa=0FwQbZo((O%%7dldSS8TtqaqwllKp?s@AB_dz z*p*j_McchQi3GC1Kbrcy(j5G!^Q0@t@cy{|jtjtG>HoXidI1pk&DuG_*Z0%*eK-yP z39zpY=SAY{qvt+WSbU(YTe^Uvl8y#QVeC4#nKTm8$q2 zD?rA|9TUO2@^n`CFMxLHO2>TI>^t=$ZYXyR6xj5k6F;>Hyq)8`+9>FRk9Sk*9rehd zS(s8E!!Bh5)tmI&l;>nM0?)L&{RHyT?I?3c%)gVkZOKi9P7@8CxLSDT{l$JW?q6X( zY|PEvCNn*R^7kq3lICPYg3Ogl75(dG87 zib>C7Xmde|Pv<3vGkK>B-c&T>ZAx&8TxzmCItAOpm5RWr(R~U$)rTxvPI5wEw`Tm< zqIbed2HaMoWrM1}bS+$z-u0iSO*MMdJr~FE=OSz*pk3RRbK2{fJS?62RC?Y}-XUEn zR%Qe#tuowKwZ(A{zSMuM7t#!Kd>1P;F!c7cS{?#`0&cs9Uitlb^YWW+9cqY5vEl9t zB586L$jZR&Z)m)gtZkK4%L}77yLPztLfT*Kb+>;RoL^nyTXW!m%6w587`9%z7=CxN zA1R`8u+7S>obvz$Pfd5^M4fDDpBYoxr2*C%(?Lr$Me<@HR_>iBsM;1+#Y;jHi_U3-%hn>z3MJ7h-I!r1iN%wE zE@pSv%*+_gM-IySHU>)`26bSr@2m2oYg#iiti0l<cZ?i&^>~mDVD=w_7!E+v ze+TAyABZLyAfdn)56v7A3};Rf0#~h=;>suD5U)Jhf!L2`B~B~r*ctp2LNPzG#=$#a zuVv_Gv0*gBL`JC8p(Qr;F7Hab!6q(m#xRUGsz(d)&f(^dvd9N7lUUPQ;Y;F} z2cMg$JZG?{t-9t6+X`AO0T1_|$29%``{abJ-!K}V$NG*=&`l&i*Mf}^c=S`fkNCx> zl%U9Nvbm6iZ-WoK*|GQe+orh41OR(}82_hm;C$@oUqlo9?w7mD191F*pcKG?l-kxjdBd?iz4f+N)3ZRb>9r6?-c*!F&n&5WWBa01&{o z-e+ZIgP!u;wZox77|sii>jtROQ5$?|Vs2Mm@VvN=kOP~Z_BZ!W(rxVk_H`dPm&SF9 zG7_TxtlCfxih`;wog-wW7{bL8PhY~jI4Bn~DL5W=&+xfq<$R5xe2_q*i7`y(c=P6f z)iBTrkyLWU=G_=7&|LhPn}OY9VR=qYzJsswQ$1@@2h@ybX2}cz;*NA(A1w)?_cMmSyoZB zqA5!wF|+x`w&eXw^-J`3^!O&_<7tat{}SBCnc0cJHP1?u6PL)aMgiXbx30y=zIxGD ztGDk7qI{t5BRTd?=ZEh)yKxOnOnf8+20wK9_ZuH2>w)8Y8qB}luq)K1L59%rc4P1f;8-<; zWDVHABU>MTTbA>b(>6VxbITLYD1~NOs#U1X32??=kZI5~Dh%=(?8=lK+a09~_8a&{M@1Co^psqUSYQf0vd8FM-3P|m}d)I`H!vn(3YY^qw*}<&0yn!483IOo` zn-2hhRcQJ|*Hks)kWuwXv%D)VEDwOJb)TguGqM=gBK~1(9IjYVk2tIrkXWA^O)PZ~ zmQ;9goVn)^o7;GXvprCeTjfThek39;`_o6iGRiKq(_HY@PvBo*`+^Vq-|3NCipy-y zm-Axe$kPYm>xQfSKYM>JWBXQr9smE{&JTVdpHATay#6r=seaQS0qM0Ib@CEB zjM37@r5WL~;3rTIO;5I07$$Ap(CX@JsYw<*j^|$~odKaej&!{W__HWppIGVSAqzQt zcwjRT1sTwCoFx}kuM7FhIJKdrB=XuiNO=;ZNxvjiO&I~=0Rb`-*vWx`KYw0#Y~7x( zY&UNd z@bQr#i1+uw{qf!eKq8?4@&9DtmBdLdh`>;w{E;XPATyp;&L@*spBpNtcu1rMQY5yV zMDZ4v9y3OE8b%f$;4(yEY2YwQ6%%A%u|}}U3Xo_;FF?&0K4WjqoB|Pauc=PNbk=$- zlqRt-LdaCum`W}(wUifcyi#Yn6+U;UMNe6t!VFE>AD^Cun|Bq5W?dl}VWE}?G0drJ zKIfBD?aPG|#7`=ePeOhayB2b$p67@EmMCV+T!?ij=hrT>kigd<@G9k1JW2ez6w|{# z3)^EfKno%TbP(oKm>i(X$OwHoy`11_KzWb9i4#a7+uq7+)^?ZL>4pV`^-T$&PEB3& zQH1++(~M}5(mUJbn5%ylh_oiLd0t%kl1Q{swjXbaX$wqsvB|>MZEe#8Z43mYg>cUy zrOkFJ<{uteuI+8L;1wzO3TEp}o|;760Q&p!3GB68+P=y&feRoYcIjTqGM8!n8w-36 z>SE!$AQ({kauMd$DhBjqOVw!=KJXQHrO~vg zkW5-dplw)L!p@#C&dg`B-o~t*XD+}2K@RsxeCaqwKabs+sk5!PYwNmxl(48S>xVdv z&lE>jeEq$;q)*(S<{{U$U5yaBcA2&Xwf2*iiF!}Kw4Lg=tD#uFZftja31Pv#Ysqy@ zfjxIuLk!wCYM&B@pteWLu6jyB-$`AoiT<^HjXmJ@kv%}V-|J=b>!FEt?DvQ#COk$Fj7+-e}jhxjWZ(} zA$4~6rVYytR$zq{TsGgKkTIutpt!y378rY?e$nWW6}qcR<6J6zmCfknL>0Nz+z$2E zBXqB}KUr>n;@!(v_=tu6;IuXXf!$>}reNkVYd$Wh<)YAGhZA>Z17TWYEqaqOs4w~m zMwKd_-pB!59%|`Q-!$^y!laob#6S6|0a5Cw2`kLou$ODfvq`8TdZol#E?9WHA464z zFm)30ssp!_%EFls(OL*qw6CXPH%-m8sVd`mrrR+OM3F{a?b|QeZMi~$z+uF*5R?6b zoKeu-?fZa|Ap!sBgf8kEs*4tuNTGG8S+L2Tmhv5l`zWFC4LH#$aDs@?FG1|}rMYiD zW!NnU*}&g)-MKD<0?NeY!Ke%&uk)IOQ+hu3|_K3jOt#O%!bljg?^lC1HKQJ!jTs!@J~kbEk9fx1Y=r zZX2RDQpruNA^V-%lG!8ZZr~2%ZwzF%={;RL=X-@Lw^5grL5yCnm224qRIj6zvN(JR z980D4n$1dZ>P{mpyg6v^09;FOiYrc}cUTr>txC{`X-HTh9u7Mjo@fe88;Y38R+qsr z$kUMgaNX-B!qe6T7&Iex$d+peW_4L5o6GmXN$=n@+?E_&B14Bjz4!>55@J%O z=ki(PH1*>U+rp$WR<#>YL|+l9sIH1z?X(t3iDfX!KbLw=!snJOR{5^dmyDzzbxTx2 zh{pG?sINNYSzJY)n<^Q{s3@cPe^_a~I^1F>@=i!Uo2M0Z5?Y|fScDJKA9))#xJ;S3 z2rt%!co%mAkJCTh(@$yGWOa_PR*N1vaL(sO!vky2Z}PIKeIXTJ*DnE*p-4Be@K$#y zMGyjQ{JIsIQyivsHwILimTAhF;UbBa8qYVee_Qrra*WAyIfBiF@9lyLs}UK{HeYbL z5)=8Ur*@rxp_`R3a~?zzAv)%@2`IAT+BPG&*++w=x~Mo9JJK$`2qs7;Cs_W$n3yft z7!te2E+$J)^Smc@s_30Z_C+us58y}ZVip6rRKkY>f|b8v)3%eB4WsNa6tlLo0^*iB z%jqs|(Qldi6;-&1MkE<(c4-~FJ?}1NFi5jCbYB~f_Vlh|-O~eYQsRufv^T+sS_H&u zxQDrC-GbbCB9U3w-5e0sMhiiMLzmdp>%5Wn9HwLU>EvuLEO@V{W^>aOI_Th|-gSyY zqs`j$yS*$K_kXgDuD9E>Rk`dBZqu@NwqoBs%07k|=6m_H+CasAnMT~P9wrQ3iMS)` z8ubi?09Ah7^T^Ik4#+6cj?iBa*Md;?%$LG|8Z1DH{rEj5@pgWpDfZJj7-ZXX53%Rk zQZXX+;8l_(Wm5N4yC{PUgt_cGZZhQ)bHbg8rsU!w5j{DTOT4s7DWo7lGe)d3{ahYq^RN2T$`(7{L>Q-lGLa3L6*aKIQ#-z51o^b=lz z^=iu4z{!@@>{TfiiS@7q&S>7F?_A#8;HcwD(lRIx(FML1McY@#CeyCeqUE}0JF&-k z=#P!*pLFjzZxlRE&9WKDAmLkK`RZ*g6U`iUFNYX_>0CtRoVdQLfh8x~{HeX!b!TwO zrL#>u(%?`ID~q5rFw;#Ilyw~lYL1)3O2RBQ-yaIVr@f~xt}4P(cu?s-qJ*r z;f@0IAQ~}TzRh|T5}n8m#j1F^MZt^Ii&&b6qOwKV3N4a)Vu2m)w9GbIV|vU*5c?)t zoO9be!awTZxS>UDl8B)!{HR+|bo_A=_q=i*hAP)xs7R%Y5hl4l#j|zv_@;rP;v$*= zh6Xqa(`u(LGV{T^YT}50lWc>raIj-&NmS1S4#ql30iW?Axd}?3hF55*Csm!Wfw#2i za7gB|Hb%6F!0lBwOP8qMf+RXV#0r26<|5u`+TBND%!*FCv1A(Tym2O7=+{HWP*YnC zM#O2UU^BtBKJM()(@aHEKJLh;0o5lMd!!c$)U7idyl`M*Dj+25KCvOvBrQyE2~IQ{ z)=bv=J3ct?3Ja0YJ*#1?Yp+%~xib^Mer!(SA>eJqTq;4fi8Sj9PXbz4avXTG=kB&> zXoOflLu7QIc|UQQOul+RA&2&LXF5_w_;@lc_jFy$m){I?Nc3_klg%rlF-|S}$~xJ$ z-<6xh=^x%k#(UCG?Lk#fTxC-x9_9&YPY(`0 z8^8AndYNDt@6-leAcu51=qISYI^C{r{NrF3Fc<;sxTl;NXw-!@g$j}F*-f+o~$rZ|6q@cK%IGa#NB}~9zO$w zkOjen`laD)X~|F3yXk3(S$Xqx5>x`Riw(&h?~}^VQ?qBy_A@Zs8Pe9Ce%c2JT&dPA zU^f?-5Wd-;%S_u9ymu3KjufTLkXR&Z8>})v`}pZ}*pG8g+J^DvLX7q#{9lZQW3+E=ItJ zm)^_X59REr>}j4J!uSAc000000|0!>qfXxgtQy+OZB&E_QRAt;;&|AcYh2C}5zxx7 z7^fVKZ=|-7^CZTjCbu3Oc{R=@{F_-xVVnUS<=SJD<8l=wiE@y#sm>ZwaPBXpy1D0& zwmIExR(5bAbc*g)q`f9iq&T`ScpO&qZ9V0(Vq&(S=*^|3r&E&poZ!^&V&7efAScYb zeM}~X()fVg80yC^^#_J<8%jt@QHE-6#_@q=6lpxf@Sa7|V1ZQrl+zlweWBS%!zvPw6eY1jM7gl~h)CG4P ze(;n=sS9k`#8tb*oXmgUE<7i%DkV&Wgx@@>oJyE=r#HB*L+!7xMVKrn>F~vx!l(wXghI@nJ_mXq$5HMiHK0Hwj!*pu#%^4&+htFBC9-29D2b5gd3Ml9Ux(b8r@iEp>HGRV2t-Sg@RB{1aeBLUkQAZtThg<> zhYb&OpIkYTyyZ&qUHMjHDK8Rvkfca>fi*|XVmxVR_TB5`+dsz>=!;0796><;I9jUj6=iBYFJd;leKVC5 z!mZi9YR=XLH!D`WUogFKf2Xez|H>MLIavYL4}J1%Nk|+Bp${y5KQf1QJf$e#U2d6& z--%)})%HS20I~o800093R(T;W#agn4ZL>HqqE&&@Rr=kk#sHSB4uZFWXj-c<(}wed zm8(IxtK_1kmP5j>S*&9Vhp{`Opa%qwAS}N=Kx>wC`4~X}C<_k`ov8OmH2qrhwci=x z0G6Z$Fjq+PV?wxs00000K|NEXN7#oeD1AQEZ}*uGJs-n-i?X%>-hx57Anm)w2w@I1 zJwUlJ2DUDGPC0}Os}<|{A(2Ix71(V|jEXNwkM?Zi3R@%%V^Gbb0=?c{UR zHe>+|nU>AyLQdosRz8k0sp43sHe7Z~7?WOdnB#>n8c@JYq>udoBD1ymM4(pkCXyp`199@ z$BWuosQTrfNO_vcP7)mcwi&dX8yNaB5oFM=J000003IHx`J!o^f z6c0n_rGd6>XbhHl<=hW_+hQ%=)er}_3@oiT>cs78@hSt>x73R_F$|;IRF>@*P1o1Y zRR8HI`E}d{TWIk0m4GP{2kZoyt|L}OVrjg(L)#2D-eFvXJD5NmmJhGw{6UC^8yq)R zD82O5Sd^~U=%N|ZLKx?Mmqdi$gC2ZMi7H84OEpW%h2deg?rNgVSO{iw@34} zZ==kc@;2Pxe1k#H)y#RDtuuqjaS4r323i16002Dz-dTs-r0|5Fu$bPS2Z3yVv~#2+ znRMwPE0MsF50o-0j5}RXi-O$VYfc^O^Tq{TqL!E$;7pEH{-g z40R$k)C$^n>KKZeockxbN7TI!e!Vc=+E56X)Adc8)>`` zUeupDko5px{U34^6aJ9#z)p#zHK}%smTg)nT+G1oWn-(p>x1^o2W`&|lbhP+S?bY6^5+}Bagjj$$0XPH*^B!&pSYOTH6-#g%-)I}5&dle4|wZ#-ipepX6C{F*-d`3c^Lh@hjCE0$?D3?AKq zN$JGr{b%2Y^)x&Y0~v9-Frx97n%ts1+U6)Y{(lFwSC;FCJ#F=B$Mu{P1!4CO(KsQB z$a%PpscYbJP8^@8De2(Teix0Zp8Iq@k&3i90Dz$eXbho>REeE~PyEmlV)tfPPXYPi zMD~5&GDCYE|M&0az(%~1AUq@U^A`h-<__)^{sSUlARMRP+(}z-9y5VGT&Ny9pmHo+ zCmdEJR&luJei_lg7h`W&pv=JljH*Rn^HAcxJHWu=*8wy(!@K}O5D)?Y002WYKr;XU z4^^}v+BY;$YIR`O%himRN##pC+XNXeS-*TsmZPe93%nXX+xVq z30tRj+etC%(3+X-XuJ8av z003r25RIS!-~WBTyW8%*_O`a0>)NJlSJJL+>)Nhs>zb`Jk~Cv00h@#itXdpo!js}K zirs|KKmw42X@L?#10n=Lf_#Pe9|3|01SBIAAn5-f49$|zrsx=%GGh{1YtYIKVO`QR zsAja)plv>6otNZhaSk#@r_7HYI7%Olo{?o}L}6$WF~wPCPb}U643opS*U*vE^^DYL zD#LRuvrQcGtI{C}9@HZSz#OxYj3d^=0jwNYGjmgDJ*PI>m`Syi8q(upEt6?=Fvt(+ z0G(w9H7BRBf<7B!Ek1pl#pns1PAfi|`Hri5^*tX;l}R{U((f~s?JJ-@jOPlQ?&Un=`8hz%j%;ZO;qZ|Uf_bmN zDDQ|m7X-p#tr*gNbu{$(T?(3#sC0l$qjj#0XeDqBuE2D|5OA)mx2aS|v}yM`Rv`(% z$(u)MwAf?`HK$g)W=n=|UVIfkm`WO1>A&xEHw{UHy{xef(*-((bkh4SZYfOZjaU77 z`Nb1z*Q+7iesg-#Yr?KYWP0GqdsjR0`t*wOY-Y`u<6b1PvW*CGUAHT`DJSw#j)v)qcOH#b$4r* zEng{`g*=`+1G0HFqq5ywLd4OKc)kXw@!p-k^EnTnc1*DSVc(tsIlXA591H!T{Z3dX z6Y8O?e};5^QvOvsnt!jQ@(0n1Jqzz^-! z?l~iR>TsFG)ez`wvyC$`4YzVx;s}k#;#xs2>5RP+aGhEuh*hZ#$TWhlcM&OJrc7`^$Fh2pl->|^cs;g`(T9uar>D#ZYd;pz*qr-NRUj&%+P5k?Js4?nNs(oC3O_j(@MtsxfXsBE zc+j{ywgAF)z(qicTKv}NeThp?PDTfzott=tf@t%6E&~qMARJb zT9uvX*;d1w_%++chj|A&AWfrPE6|;%z03JAD+meXRVIn%nk}7baxIvaH#K{xE<|cP zZu5Jc*HJ~kxwNL%guku6OF!`DVf|A?H@63Hp-gDhpzM@SA4`#`Ex}8BQwNsgV?hO}A*M{c=CwPs5K@+85 z=_uR1VzgK$UQIS!_30vh;dt?YaTB-WN*07_W>AK%AXA=cZ?CUmbr0?pa&pGVsg$$j zW4MLf201#sn!yx)?mgaZFtAeLL!FM(q$N|YkT(wQtPn0bkqkASifbfA`3fJeP;~`i zQhR%d6lL(Fym|Ec`0qbb7I^ToGEqz2^atC^uwd5u^Wb4dV*quz#t8Vx_pSP*#-(A4 z2dJm9Od-_E(ZqV~pYLuc@JXJ6!|3dg$1Elub-2GPsU3S~xt5c>$+BinGcint``Si= zxe(HYc>`li8(mRKXyJ9JIjl#TVWMzT+BV5t;g1^@;jj4`uc-DtT5f-b)KvG|^fbZQ zaoC=(&Xzy1?z6{n*sL`vbbjOW@k)vwC~noZE00l>YsYJ5&Uuz}w%aaelQK93dYawX z%oYBLKgtsta`jzbsL7?Jm!xsb4YpG*t%r7b4xB)TUFXfoixoTc4R*Gr?&dEm$|X~m zm*mw$7Q)r<@p|g!_f^(?N?o*^iu$9hBD)&;zI1&yNKe3UTorYJFuzSbtMpeEv(`mt zLqnPL@-^D!exR>C80P#HD?|V3k#29da}&G`Ou&9if_^IV!~*PSt$=kVh;;a_OZ-@Geu zhzEXK_;pTWu|lK#LYRdze$aX=WyZU4LF>u-ib*k%TUh94)EiYf;PGYC5+JU{f|#7k zy&It=qPIrq)9$8Er0z)W$&?|XCR2fAn@svq+?I}nPKH4=nN0VPDu^~k!iOszz$?jY zS2-s#b=P#HZRC0lRl0&*G*K7we3Egm*Bc2C*4?|LhObw7SJd#Qr_Xa_oK{$j zpyfB>u0mnr$RUd@7d#d#r)chhNcELLmkT=GD`W8y&pifn=KG=TG* z__V(r4Q>ACVh&a%Q8Y#7KH5{g5ojSLQ;!>Qk&WW%Do_SH=GH z6Y3vkaOX_l;+pAtrtCSiuV0t??J!d(?W=`4^!tVpWV&|@CL&h6xVrIj{zz**_T;kP z=sO9fOn$baR^M4o2Z^v2GMlcDG5LhV5pu!q zJ}lsCuvGPR4%q!myvXC9!NuQnKv%>tp+K+B-T7-yDqkqP{i=vl{ewJSkCYnPw#Eb| zC?XV0rv6zPnis8$A~^S?jh%}Y!PpwkKjcB&Q_?A_{R$K>Adj6~XZ@lrD6J6L4fvkL zI9s*wiB=I6!zzx{-{R@Q_<&&?hOt$|i@*wjg*;+%92zWUiqprWVxLcC$f#SS(mx(m zuQpTm*#QWAUH>`qcD_Ok0>1#b00000902{s@yf`(SgX=2y&w+DD*D_72(g%Dd%b!Y z7D|!Lx!D|H<$gkYpc6+(0>79nZ*7gBUj+IQ9N6)SbWo_#)FZz?IT*LzK94 zGZ`8mwCdu>)vwgxY*%OjJ8k|6$-$lt73zK?1WR~bt?gJCxD#s4w05+fo#Ly-q1Za= zX4hppo>Pi#>xeh-ZcGMsCPewz?b9{&`cRy_}%WKhvyLX)OyD0N^ z!)YW`fYYoGLQI)Se(HS1VqXZ<;Cc>P0Wczf9smJQ8@vPHB7^_{00000007kczAI~mZgJ-MvE=eohW%rUt;qIj-g8AB`19Yk(V`3SB~qiYktra$c!vjv@%)Yz zMhIB2_lBm2lX^ibNkQE|-K9m&Ez7U<($t)uyR$rkX%5`{eHLys!2<6MXHfPCsZXE zl1DT{17HB|0vMJc0LU8v1E4o}2f#!K0000000000?OvrMGgqMYt4qC^61bVe$$e?5 zPUgwfd3&{wRPq;dw6Iyb+lMXv!91DTc`6Wp(4`XMqgPY9rIuyOQ`GdOB4vi;0sbfp z`wu>eGb@&&MTYNhnFV)HB|4FY1#tX#zc@36e920oM^Wbho zlJ|DeM@uE|7`7R3<8{=ey)>{eQVrLMQ70k#!SKVO`A8>z0g4#-4&)sxk7SiskorH4 zhmePfP5Yrt^hApCwp4O-Ox};AnZ>u_B|A!IQqZ*sUi?hvAd4x}ftFqlzzP5W9so^& zS+k;Cqu|@|lEi*rm1WdKD@g4-J`=Z4;5T+xBaVf$v8^*P3+C9_Xt9Lq5lH#Bq@Y`o zA=S)Gj0i6d0~W=l<)f`y2-U{bOEgGdPj7#LA~>>(RW+_#>G`95Pz)_$B112oLtX~E z$cE9HT#*uK@d%ITNO`7=)$e(clLOrpNsmY=QccAcrw>S}8g^pd0SX1w+BtTT6kH?MmvRMNVT$kGps0qQi*fsWqi$omKz>Yl# z7;a^V(c}r?;-l?|=Ou}O4)iwC=qoPIWJRLJQ=-RFN+gA-&YMkda=y)>N;m}ZFI3(z zCW}5d#J8nBKsYjel*=DMWtP{+?&|Tl8~>kWa!lCUi>8p@aAa=QqV8T*i)JzryDBrf z8>(;95P25ZJ!R@b@1S@W@IR(-wI@t+6X}l0LBF{Sa}Od9gDJgrHB%#_+OPM zt9&0k?I$Jw?DGbKfZd66S2{)J6GxUmOd@99;EOL4<&rKF_!5W0XJuou#&Mj}VBf*V zw5=w{td+JL)UMLSQI-0a=#*g8G05)7v3!d%Tmiy@?QOp639}Vk4|?nW=M-GRUYN)I z1^;Y##m1}nXE=iAykf7f`-ro9%IryNnNt)ssJ3X%RJiXs>>d-Z9|`y1NSjD2m;hKl zocXUYCGndRNOC8(XtQ?Y#^m??In|ga841&#z^y2L%=);f_{SqfN3X0BU|dnqvS*4_ zUnH#aQ<{NPB_E7>8znW~zAO(GQTpECDVbk#9{YT(vt{-lmxE-69V^6DfuKD`jU&NQCCZBu#%!~en%d!+WwDG+tA)`02P}_ww%uf9qx3M z?ZT5$YN}&LAC-#lYFCbNllP@8sGrNn@@9Y^ny=+r412{ZL>W1ji|OarX7hus@V{Uq z@9uou2-qyNTwb||uj2FRPg8*?q!+HP!GBZ{*000YM9AhK+da|3=@mmQ^k|y{I zS}dB{v5ei~;x1ECk%BGmce15m0PefDGq4i7cZ)MO~89y^)>vvJJQ-Ef+?6sZtf~&>yOAIk(rbm9}s@2(y$oYPE1)zni{Qz<+>mZnLs^?#Pa*(`ew!Uh_!m!uSD{bNDZ7kWvnizaHik1G(FzP=P< z6Z_QB1eaj9bNL0Im=Ej0WxG+O|9sn_SvNC9+cj-7m!~rL8UVg((iD#uF>u(7STQ+W z!)lJZ$NE}{dp)|MI{>$<$S;#UTEsJGQVtV*3=0jVwNG}eLP4^g3R5G3EY_%!CuiU{ zS8&2*P!w$b7pEINdpA)P#UtWuu^><#XVGhGQ&;S7>r6vpkzwW-qS6D#`Usb`YerKn zk>0c0(rB(GD}w)u+Gwu%9FK7hYT%^5#Bp>h?vc}6(}|B58am9_aETNoZEj6iNUbc+ zcDRSVy$z6;(w6KfH5LMmp=KAGcr19;@B&QsLz;NV2SK0+RqOUdt*#VLWbIf`fKHVU zenr4ub_T>tukCh(eof`A#4jilW&i@Jmd^$S2^zVre;9pVM{NK!0-5OYDn(|f{9NVp zFw6Oc;Yr0~?s32(@qbDz&fB>3`e+PUi_bv>lP@jj2UWftmhkk<$p4YEJ)%dGWwk4O z5C5GE5=zUyI62j-#%;p+RB_iAk#q1Pk-)ck-U#@_|{eZMfo>Nk2@- zv}gfFFwl$S6>&q3?}#wyeLw49IZ8VN6d@}mVus}49$_9YgpIe0?v9)(l}TKeya<@C z`Ke#f;_SU7R-->fonH}*#o6sTo1)|vMDPK813d2eECYQmFGvDUg!~X?ntxLz-4StP zm6|9S`kgjAEA5~)#5)6wnwP<3n<=|TU|B0Rf?z4_c&npUA8Z_QISGgxEPO;xsR;A= zPcQ?}Kc7C97W5okiw8CMNBh7uCbBRuGYQQgMh>`|pitASULhr+A zDXGd`nA-Js8q$jM$57j8M`5!II`_L++j4$2RGf9shHP-hHbO_Y$y#`$ar$<}`{&a$ z4W8GXHCNZ2_5Qe+oO}d>1bvAt;n%fZv; zi|+iXzhQ=qI}vgE6OUpOa@_g^1jNy1_Mc`vj)Nh_IXfVj0{nEe&WO%7Nw=0G(%@jf6 z@Dv(!b3(N8$o|`ru4+8oX&O477DzhC(;g}3@5}f@cNj-fbhe~0^L;3S>EO>#JZR1g z7wo4@nd1(EUY0?FX5e6VWx52Ss&^hLkIC}(Uc4tHXRkNT8cf^hR=Bn=vRpY?p|G&@QqjyWcOiw zg!6U8?L>Bf3HyvZ;duP3vks=Gv}#njyM}xfjG}*Kd2|o4s`jI{8a`-_>B&jcp2a(- z;)M0zseU9gP0~H<2B66c?=MK0+|GF& z-7Gy<$z&fN#}D-_Q+O&SEQ5`NxE#PPvrx1W*vy)L{=jb4)RV*3yGiV+LMfBjUdzC?O1yT1n0XSA-xjoBUr40n1C5t~7> zFT|YK{;eN=*cJ+tV<#$wVnROFKaAO~ySlsnw9{W`x^bJRS29ghzZxWlb`OieectCE z%@c;Lwd6-9&-je}#5S1mI-&Iic&lH_kgW2Y_9SFIYZhZO%-)GcaqsROzE4*yrK;HQ zev9Mh2h&cF%_up=zpF=q$Rqjh%Q~G>4P|}7+WpiCB@XKS+?Eh(@v_@S@ufjh;g!qi&geL*I5HXeqbDCAp>yhr|NTEVA9I$Kit+rsjg9>|J*N zr;v_@GyLC72nGJ5=&zpszQfDwUhb%eg4U>UWAh__VP`Q#rt`}4_okNR`}$XR8u-jx zROV4rYd=vBcqFUT#Mcbo;nC6?+ZeBJs1v0T-eA>p^Hi64e!#+Akm|1@F*K+I(y7u{ zz%{<9+B3Mti}Cu+?ZaoGn@Ln`!wIy_RF9d5RWE*i_IRQZMD>{ReBIhw_wGDfj8u(+ zidVhgY19~R+@kY68o#p$7znnqcRoJFX%cl=|xwl>rTnn8t zmD)S%D4YZ=AEgC2%N13+`rjAbjfl)X2q4$fmUwwOfXb$rhN_Q450%e?!>62s<`gjU zX5pt6m(_-_P{Kzn zSZwhQVS_%`I<&7*buRH)OI0(@rg-neHdiZn+>ANn^M5#PpD${}SnB9_`=HlyR6i4# zU7Y`|1xG^~4@JRyKxsySrv zvd6U&xQF9kTxQjr4NCPL7Cq=qlxKdY7s_qe_~$T&$VWO-W$7(Nq$=rnl26dcwMmW6 zkF;NzbM%?W?4ex|7rV*`JWQk7TLNH_r3-0Mx_E<3e3AXcDkZd>s`A{qGZT@Z>72Xn7em_N83~w?u9HhvTWT!Cq>v_d~2ksg@F(JB8 zD+@YqYc|6;B%r#A`a^~R&iL|IiUb#D*`?I6ATFVaOgm3=CPGDFi~{|!S~==NQc6Z2 zkWO;@E>(9h^O?crAJPd%iQy$xaiOJi9A_gLuNEK-_17|{dS84>Rhk6GVW#Kgpg^#W zmEu;5>+e2{thqI+8GM#LN~gh~{FjPuco9XU*KxJr#5(drD2L!#Ze6&u0-j2{JwOXS zzPDmJ)qLxT*m@6d3qZ=N3buwCIH!Mu4b02~pl=!&n(87nTaX1xA%B(KPjEs$?FKPR z4sc-kbNeOBwZY!*UCl~{kH))f?#_$hLb}OE_6JMv{f1M9jy9#Mhp{cbySXisJi6v$ zTZG;HgHWiJx3tVrI#>ga*gN-zn6$-DO$e0GTVfI9IcR8J6}_< zPj@tAoOKz6N3#M?cqUk^VcY_}4(F8#?H8g1*2exL=q`Q~s;@vbGkeKsTI_}w-;%9a zrE+duRsvT( z?P>1M);3E0E7(Y&)=^cArYa~#Vb8$`_!^GVZ)E12m~T~$Y98ZJctvj&{2^wl`Tvik zJpo<-X2|qoob86^Twk2hHFL|sKRi6xq=E;3jwQh!!=GM{g zRdTSC&fc|3xh5)`k|)^o{K$9S_Dv$K-&4rj#yY)98$ajR8=d~B2iwcvb zV}X$a&gv&gT3+7*K=>$n`Pzh!`_@dyA9_+B!)sM4Uds@XyO2C@xtH(+(*S1aG{I2KJackFvp^L3Kr~P}x}@L4 z!W59UYt^Nf<4axwFLjV=+U9Ws3FXAj-xOs?0?-EmQ1XBPAV6pkAju`{T}}kv?WNPp z%HTv_!@g1jFslO(&(brPK4CESLED)vfQd>U#>|)ougJk%SEGv$;GZA8nDQEz|8i4V zOmHOL-4_XaUccxR7J*UD`~!rFF5PF5^b{WJy~n0>OE?|oN6 zETHUf3cJqVJkgX3(yeOnq|2~0Dh_H&RAs5^L8)%_GntUtKXBXG|EMI%v6T@j@-+MS zOo#`b8z#ntkmOL=03twu5Fk={5~Uo{iIMR_sM6!WX!1WkF4dmB9i^*)!ZxoC{i@2x zN39#n_YZW#B_w8{je#4R2VH9GLQB%RMzanVM0YJGK4|8Rt-j$Mt=|{=#KIjm#I{aL z4XCLA)qPG!Q;fIkl}gi4nWL*eY}ILAXrU+7mTD}Wq?%lO@+C}F3#*l#X<2*q<-CeE zPkC`Y?wC@P{s+@vM&(vxamt5B1LRIha!CGrlutPE-?N1cS0c`O`v>GXT?H?Pjlraunec z)P7JX0=Z5Q=hH+hD6K$-N&|?_ZCD4U5c-080RsH}m2#vf#C0+N=X$4Gq5;PVNDPW> zxXYiKqiEnCvaZd`Cg>CNJRnTgDkNl^PcxN*Io`gE#3HfQBDa*oq^al*0Jp#1@yl^1 zxILHJ`Nh`BA#R_(vF??}h5CZR?PPac_o_E=W#`exe?yu4{^XR#ZMw9WyMe@}g4hOS z7S62=a3@Va-K?=7#$&Mr*zBo6tY9<~XPrNIXP*p#H9rdEQNqbP1mTkvkn8usI#W}J zE%ERt|J{aT4=vE2q<6pb_dHS`^k?a*9WX`~;d`hvKMa+*h;4@bVjF3H$wk1!PuqHh zYbu_kXa*>H-l8WSkk~cc7=e=}*xeEVbfUx%Oa1~ImSp$z*}M1SzXlOdKs@Xi#yS4hc)=&_?oj3rHw4#*IsR}R=>FM@S7 z?-67{NKllX)zeF4$NP!(!qE>*gpxQkQywCdQyU_a3mlF{AkVF_z;B-R3;%88^ZsS6 z_`RMm`4O;Mm2LliC%A`dbqT83-*5B0_^K;V$@7zu$*E<|6cBnTF^p0VHzcy5|2AV{ zrrNC_uPJV@QRkjaEWWtR@2-Q+myfzG`&}oyqceHrAbW9r;EnUV&#Ab25TA*+jE2um z%w$7zBRkpzNO?~)Uvbv<><%S5)LP6P$3MqVMYZp(P9J@cv?_pU%1cm`NRzPP6m#c1$~QdW*1Q+^N%AYxHMwpYBzo zG1EFGnSdtyQaUD`qw}6ZiO%dMN)U{$Ii`d54WbF4^#0rF)0^ZR{!APbOwFIfmcPHr zM6IpHa}dM>nsjw)c1b3iMotHxd_I*LW8ReV{blcfE?0LTmn#mAa@B+FBC?_ktlD+1 zx?JlZYYN44$^|HdlMrVxYLzCJ9nohtG~sP&SwGW+4oTb411WK;O&D42V2D6D!jxmJ z0ce}R1b4eQ^PssV@XyI;WxT#@M!l$$M;QRk5D)?Y001*IKr{dVZ&sKfX+L7cXvy2{ zl`Y-IRFbxSaXBSP*d{~Tlv%s$yW958Ztr(@HCyKo#t&dGK!CXZVZ8u=nIWqg0DwF& zj}#5RYOcAQoGx9G_{d+8sla?2k@T>}yD>&WNL_VDorJWtU=M8whd?;BZHo^H5>i$k zPr~USmLH}A_*bAZC^NnUfL2>%lLrs}I3`S{*@0XxN#=?^3;ZCH001)rW;6x>_Xd5> z&-2^en|Et>?zXG#J8rE>t-Wiz{cN(etJy4Dr_rh94QhfaBGg+6ENvJOq5uT238*Au z84!RP2p|cB2=q^aL5M*SfB^7=9tg^a3{Qecj86DSP-&=yff15Y6hSZ@6|9wsNyg-1 zF{iI$5L(%)b>0qAXtg!MLv=|8!8PMhY*w~wl7yy0LY;Amn`>nPh}5B|I%}&O>=3Qy z7DHMKysUBMD-dEw$>q7v#mcoKw1#L* zl;cC}rb4JSX|3dp?D#lY)!I4E|KM6sv&xCz|O!;$0&bSx)3qShu;IU?bEQu+I( z>frMOl?2;}Kupk9`mbZ*Rsy0rE%tpVswl@C&yb=rCRZf&VoCyxL71^oE_}h&rsO*F z#K`tJoU%AKzvR529zGLiI!su$5zU?4M6+bdr|4$h^u-OUuW}scYqvRV{sd&vpR;D! zSG8Q4e;+iz^V1YTp6-L zW7h5xYel1tH?^8qOK0{ul}5^Cq>lD^bx9|KxgfbLD?^q=9Dk#0yI{h_(c4^8->F*; zrfs)|@(p?iA{g?ObZ6GG_^!Hb08d)fP@vWRHlp34?%Z_^*$VO5>~hpa#pQwp^{VEA zqssP2Ja=9%*#YY0);5VYahpx3RHC&YsUAclkk^3heW#}?IMiVBlVgHVu}k}M zRES1HGw8rJ4GR4^*T0zkxxWI|7C3!f!M$ZPmNDxS*cOs8&0mx)mYpoRt#c~cW=r1E z>1snoa*VmvF3HK=(Vw-%CL_=-@ZPJ&rg-0(J47+Nq?F6X26yZrBOuh;Dip%;#SEN6 zWYrt-nac8nTp!JD+T+r?TEngA%bH6T1FDb5RB`oYlb(Kd{%-aSwKjo9UE=t)yQtfn z-U(r()d+Q9HXg2`n%$ErHjf?gC5wv$t}2)_(I>^dRgdHrMHv}@GI{0J6lLG(dj^Gj z_XW)wyAuHCL7ZC|heZJHM5lAH6 zDcrSiCk9aFxu1i^TpZ#oO$}rzo=tz$j3_Ihl2ugPjo3#BsHmID@iI4Z7Gi0uj#q#;a#WzXXq0X1i{K2=G)44MkZN~~4}`w+L;pxXu(qu{h=1chvzg267- z7|gerX0cMlp^G)sf$SR?&DTQ$uQLVo?pZs?mxh6^F~nfS2IsR;ZFaC=UsFk>`p^uO zwM4w7%lM#XeiPm$^e52mmIdDHUN0wGABmL-iM($(>tb;^;vRm;hF5Tvyi|QVD?~r= zRAErX@k=gJeH#6EI}89m#9gMXu?*viG7n~WhQ-B{cu9s?@Fh#8B%iZ(Imgii34cJ} z&l|%hx>Q#7K(DP+Q5%#b2;*7*J3L2jVY7=QWyK|y>h;e2~(BNW``H9NcL*WYNjQ8udi0O zK=oAr4lSh^>-y2P+hPMr6u3d+&4>@Re8&MFTPwpCIv0~*9j_;VlNlMJ?}RLe>V4r& zR>9P>7%M<&xVsw$W`6C$P1NluR=pfCa|Sk~nA~}b+F(2UxL7jU3;kv--qcS6h?j|x z=s(T{72Wm(QyMfyGUCT$tQwD3E{rs;a`z&=fW%m{O*F(31j;KHq7kgYNG#)uDRS%C z#Sv9)z=a|0BHbrDw_YS~w5PwAtvrS?)SPs{oHMQpPsDYiZ zMrby=^fdbo5TZ{WGUv4r4${*&*uhl5ZkLITQBSMlJ?AW`(34Jg%Mauh;<5wdROTU>KaS$ zczmR!ErG3mp;zx>d`rQH8qUQpu)8kC0kwf4#(zbw*XVvZ`5Rp!4_id|1(>na9d|*| zzC6HAfOHNa73ab7!mTxap1RJ_=#&tNf$k2o-l-z4AWFor5c9ZJIgZXAmE_H?8fm(9 zKB#k@O{#)nofLN@@TCx!h1v+DdmOKKS4ttUhY(W5K_&oZTVmCE^LoH$M#PDUcBmF; z+Evw1fHjSu;9(c3dkZ=qLs7(HKyCl{FAK*#fx)@jFyM{9@6FItqe@~70?bSbyxbkX zV7e-z^kTQV+-537%3YTQmnS_G)I9eK^1G`k1HKn``;mk+lyi=A(^8)~13Jd?#*+jd z-RzjsjQT{@<8E8DmP*NJba-EX#fJX-z{i$%kebV22Dk}2z_K1-2G9e7;gYWt85-!O+CycanC_Ri9gcB+u^-h+{)gtC;h%K zz^b-1SiToU=yLduA#_(ujlt7W@ycxi5@sm%~B)-?fU z32w7i)7LYJ&>0LE02VM{MRUrtz6o|rS~NE<;YZUQ8075qzKU{0$G8b>jAftx(L0_l zd=be){3Sy3A;7hZ#Mm#QVxT7!zJ%&M`qN5A)OYA6IXN_g@?`%hQ;Em(_Eh6Woe`bF zP7|J14Jn*4zN9d*;N`ley1k|!6Ii^PDZC60=xyHC$Dx>z#;GGK;_GE0r&O4X1)v5T|( zcY|@SnM=wl?RN&_=Q%CzpXtzE=9hm6v)CW9+Ue$_8wPFr^}q;tKM3b;f-<{8(c260oa+M_ur$;SLNrw4=UYy z+3P+;@;+KNCYHcNIMag>n;PTyd=F;f9az<@Ad3>XRq zLpSU@0pFdlPeI>qtS6=_$t%V7)oh$3!h(omsGgm(F6P+NM%?X_nF|rBLOWveo|eBT z#N;vM9JXtUKFtJ}g&te3-Ozd8l-OI$+yOZDNqO$*v7JJBim)tZ|G*eA@7c!ld*ZE{ zlbv3W^K$e_n)Cc5Y>*SZFuI2>tLF2Rgvg4}7GyTzOah$902VM{3>dl}z;qJ^kj2}k zc+D((@&zc`KKxq855k1-4W@SC*k@u?1QIsfw32IV${*# zi`6dNT;i(iyf$o4PM9Q6iTQb+7DpKu(MwWUn>wBY(Fso1XGiv|mE+CvbSAI0F+@S-E(Rq`7p>Ap5;{X(t#{(0H{JX~fZR*bp&|X`50fy*cz>`jnn3o8R{xVwZVvh;QuQs>t8JG! z6fT}{CZ&@(ncTGOoP_O~ob$h=Q2fOC;vU5ZVda{MLexY-V%xh-gChzMkr6bJ{s8fW zm=PdzH^e+lP2$l|`Vm>5nDN0g4B)f=xF<8`_Dn&VJ$|%>;{ZU2I)JGVB~38Hc|jJ7 zhSR})F@9k#eBb@WKX~C8;(OQ+wt}G=WPsSScbC7uE^8Kg;PoF!cW*#sG2};nSX$4A z((gXxv zYidIhG=oa#qV0)yTKZ3U;A@0G=bTp$Dv5RB*~Xq=+;e8J@#c`X=Q)#@`0aVnXZEu! zHHH;<4jp^n_>V=YOoiSPilugn_LXhK5!Ud5HV!2Be~rwl$P~xeU#b{ws}@+G#rtC` zr4H7C{li_}iXh$v2*6*hh*fuMFce|__~?)D^0O^un1QZ7Z@#ZSa9PLyOnQVVzi-S$ z^~&|~Yj|psTCfBMwrHB;aq_PT#>g(0xXI|*tDg|{vpk1LSO1YW-9hgqSVHv4XY2Od z5-X%XU~=AdpN#<63~RHn4JQnQ6-Aay;Wqmo^_YSaU*jv4NRlEM&u7~$)ozeK8$p&+ zL{sfh-*6@8dtD&aSBO3K2ceKx&{PMNXqzG*lW6aPKN(6Pu_6lG{{Ivom67BK66LGv z(}=;GV6`0tF1vj6`AdCMioukfhi&kXLZEuBrnk!KP~)NR@(FUu0(|w95A+eTCc~Xb?n3p^xYgqVP zdo3FJO;OZqV$nTjb`gXdeo(HP9@Z1lv4?)DBqsz;l_D5|RMwNds5||4BN#bMHDBq` zA4}OUl12Nq>NT)URKw4oo+U@K$rB@2i~C09g&Ef96yv%&syH#iAUZ~fBal>pzJfbG zwz1vbZBLHEqzeFCuw3bO`TI?I{Qmz?`pJ4#(xmb&|HeX$adUe>Uz+jx8)OT|? zU<)npF54o{LCry$V&j~8e=QUj8@L)OfXKw+oj8&eid+36rFBY7 zQ@W#F4NTw@;*`bvQ@*kZ`-vJKF_h+I6#Fd;_Napr5w)?F_DwSSQIrFP>xgr6J%EYf zm@|FI^c8PPy37AG)I7pqGA|)>@;!uj%8rNv%00^SVPqUlIJ&?7&^hn`dUct_hdN6t}<-jNXY;ut6)Zq2NHe(Arc$=F425Le8M(i`HAPKvc@z;`g7@TP|X5QMU}hCvfHiPiA_ zCQtktQ1KM$A}mab`1t>s2ErE#3D|qjC&M0&6oVjT_5Iwq_vKc?3l7-z*pbK^sPZF7 zcN@ZY1g5Fc=1;#5fYFhIhYdKYBjY4-^1{f>Btk3qJ$0vO)Q zF(V6MnDc2IxfOwUil!X)M|3bJ7lt5W8IQGF9+cB)Q6$&T`%gCTM?>X;>CZ+JRjOD7 z(o8=R2cFcC{VJr@xKg7viBDCzcwwxWB9!h13C*QRX;;XZ;r z$leh@u$+Myb0-=GcqfH-uxn(|fYTFHP0yU(c=doE7ERG|X!yMLQYnAD9}^A;JVEJ> zPI5jN#-XhqtaEjI@Zi@skC8*-!EndC%~}VXITsk6!JG#iH&MgU z{lY#QrI5?x`v7l*Ps4`)nZHN=>ZdPx1g1){PAV0fG^gS=d-4%}gnko1D<)zd*1c)R zxHKo#bGVFw3S~;1`_o|NJ6!svJi_NtF_YC{y8jO<>4Mwp$@$@PR{}#7KkTY(!c7k_ z;q{!K*wv$9>aHEu=H}fn9f^@Aa9xwDV3ucwQx z^X%ZsIy5)13S(dCLc%ot)jFJ^z`|FhsuTZxh%x2-_9%(?eUc8?)#oZiSd{N^LZ z+=|1m@cc52$ncjmuu4y=PcnY1UzH1OrlGF2ak)(`+`M)>Y#S*zJ1q%Nvg( z$C50N$L9CS@x0%Wgtrabb~d@I-FA0FM{zze?g(}n1jY3j)&T&KnJ}XQ00V$uP^XSo zA8wLU_{3Luf~^+j)YO&>p4erEtOe|_yY6BK3|esPj?G%6u-JXSF=WAwoPKc#Si5{2 zVr{W3zdi*LK-luip_3X4l~hhLq*GwBlF3_}G$h^t$N&J%jKCFv0q_0Z-*@-#ZoM1h zrM9*#&71CZH!U`drd+S3?OW~EB`PvD;G#t=5=dx>1lhKL6oP;NA$~xnGLqU=LWLrO zMG9J|5~v^uAi$3xAORG5N`XLRhYM*OhzYr}yadmtb!Fsc3@Iz^zP)+e_XmH8@ACG7 zK4}q{BGhCUg(>YUO73QWL*=)v!dV}sRb`g~4M(P?F<8Z=Pdv`u<)Jqiy;-I|mJE;} zMKdK@1ggrdq=aPHn$G9RyJ}AEwM_(p`&+%aSBpsqvCR9%IEZ zaLPV6t_HGe#t>^}R%H>F>I;V*m<4%sGExt%^`thCl{;-EAlNor$ec&Ep`^dFD$aH7 zG!J-;Bc7n2po~+~lCRyi_I*VezmO!JBjJ7h3Tlu(^L@|+3YABy6j{Z-?D6blLV=HJU!m+$Jh<5*8u5H zv|CNLp*lePwlb#}WKnBCetUXCFaBXzTZApgoNrp}4+6Yts&B$8D*tnHaUjoGTJ{X{ zYle2gUT#A@OUyl4&Kb7LJ=rBm@yRx!nqs>@BQ3%2uGJ)^v|~138$|JPVRPwVXSQkN znI$Ed8?vRvPB*y<18Q7ScllyQnH;i5*$BlIeWs`+ z{P+Ba39*1BaYNb)Fjw+~v(bJA(G_4*1GJj-(G(HALlldXL--c_$l-1J=`k1rvo+z9 z0WZRokpoK`KqacMz)@G;4wPD;!ySR^-mNcx=lO!F_Iaz4O%-2>VCd^0HAsn+F}8vS zQH&q@+v28iBM-wX-cT;A`Y z1(BVNO)E`}B$^WbL~M}}y_ta2%N}X*0lEYm!=IX_qe_7gKN|OS;pr1BU?3%M)#Ys4 z8nuIpG{|W!*E+0fqr+U4r8!8gmdBIK)h^)D!KH218^qOXufS4DSg%2_3=0oYoWlEJB;F&V4-)K0p|$9}bC3in-}rKR^i~CbQ8bIjm|%f0 zul14@07ILDN+t{yxdfF>kRTnUc&O{=wkSn&+!WmQN-&{U3*s#^=4KOAEPr9uDF+|Q zDEa7WoA1yg9xFd_TFo?6pE}{0g6{_SaN6DryFi2jn6lAp)L?Q{9B|invQ6`E+l{^? zD#HSTr@hLEJ8*%;Y4-c1N3ool9wYrmAG$rx`(KW?$j2-jJom5tqXn%3R;sqchvwg~ z0GU|H1uT$W0Ad}VV=u@RNu!4*K`L)_hJbRM%WV20_Ieer%eB`lC*SB6)%kS>P ze(oFvXK=tLZ2oG`P}^LvjX7-5x(CC*Y{Nb?dfCaRQ;AC(WZT)rTQg1t=h==D{xK$5 zz}$bSi;XnKr+FF|vHm)L!wT~Hu#9ADb)?+Ag`uT&6ULGM) zZ7I2OuICLGZHSqHDo|^HT5X-O!dqh|9_|-5%3jxJ z?kLLc+@{(ib*ZgTpPUeTZ5#*x@J*m;rK0-uUR>a>F*s~Bk=YH=p6-qEk<8e-d3w^Z zjx^&wd9cr-?X7%&m+A%kgBmW^z;sT_Gx)TvXMRuctw^y~C!^bRthPxWWWR?m!$gfA zwxQyHJ2hEGT8&Y4aNvdE4?zgW8optF3F~W~4*YFXx)#A*kb)>xOz9`K>9J4=&mc4{ z#cn%A*Q!3s;51Gepy@@DNHC5$LQ^2$?Yt9taEA=0kByvr+(b7&_LyTJM$P?7uIfSNTFkTKn(gx6*ho5Ch_kT({Ufm)3)7 zph$Z$JG#IxoQ8~rTmJDbqF5b1>wDrC-hi(2@LM()ZJP<0^{CTFOOql>a1G3dw1M#Y zMlV%4;u!gAIrnMY#jQ*#+|dFIx)}080sm(Dud9FlBQd?kfY|5U+8QTJgY!S!oTMhg zKFVy@l#WGuwUCOm+?%z705nyr=~DE;Qk|*7)NN(h8MqA|Bm1U|>Z0>q-sa-ZRqv*Z zTYvjq5rn`TYMJ)%RXB?I+2$h%%gI8z4-|sSJsf^ zX0WyXf6bw0msasw3=iVMDM`32Ar0TedFBj8HH`xlIRJgByCTae{EN5tbr{pu9jp=A zV3zcBsRwFyy@#*&P@ z!U)dp%#|PPE)k&xQN{ppPIwO%<$jv{nf#c^-BArclyu*lc*(qx)j7L(P24Q3_G zT^4buHb+8#Y@Rf26Rm$oj$Z|wm4ur=AlM-NKK}45%!9!!19Eo2DOf3b+S$?M2IY=e z1&blgm7`P|r#aIzA*@{SLLeVGCb~R`d9+@F*&$p-(($llQTZ&KgW(lL%coFQOC} zS^G4N@k8=F-_f1sW2?2ICnN^ek7j#p21T7wJ;V_87WVE9^_Pz}keSvN0aFt2#$=0D35jhBIgRbt z`%<3q^Mc$wQ>`_``SbCNp%0SeI5UMd-T|tXNva5wdt9cd6LtX_SmCdw&3%uh4y(aC zfy=)nh8fZkLh1b3(Fmg1{VCKMRg)?Ps-QB8djEkTWwB4PXsypg^WT@d^lN|n$lIzW zzEIL*j!I?3-{D;f^M>fqkVeO2VUd?iJ`uHGY61(ezzZzF0&ISYppHb8i7TZg_93H1C<(E*X^+YcmF z$8W6j<+O+lAS|!~3$VZqENgoKi$VrP!OT7Q)o85Rp9wl&4}a;(dDn9uSiOd*4Lp%3 zYDxbmnytp09-&zcIT+H|_S3vSuCKWyOcMvhx(NJ0@xbHi1Z&6^Ti0m-KAjivY<96F zx-vg=ylfxn-zq#}ONA-ADKe}rAVSO}HDUrbY=u1zj72XUp^v4^*LWay=3wt4r^{|e z_f6`f!iT$z?qN)rWlkkgMTxQoiSe650H}<)#RC>jeX8E>Xs>s5op5rEx$3%5xo0X- zibWM}5k9dY9~n@Gbma~UlOb3Dh{tAdTF!egPMFd(sf^m=u*pY+m92AC-9xwDJ+}3T z88gndK4QkP3xuH5*x5JRa}7UkH>9dCv>GDrzHk*f*6nepSfC9~5-K63xBBs(Uj`2G zOmiH2nqsenlcsaL-L^Va=*2BVHJrJAHQ1TYwz=0e%Ma%wf!?h43~<6z9k+2-O&XpD z3WwOMbdIrn&F~Wj2wUZHGd!g#6Rp{-W#{uCu10ctlj$I9 z%Pd@bzU(Yznl~)>6q{6iDA&j35pY&$miqNO%dXx6hq5at6;~Q|WTCmPYHp3yl%J=- zL1t&?shMarV|HEJS`2h9WeCIGe$DjDt5Zkk$}yVbC}uAc39VL- zbi1Q?tEMFGnf4~W9EZ05Z3!?ljL_k~o65cdbBL?6RU8(=0AeVgxxrQ|E?1i44(MY# z#|5bc{Jw>!IIzd%-$g#bRlI8do%Pu8(Jpy*`W#QAOfRn4EzLh zH5TPq#N44HHA6@Yk!{b3bxX~ZZxYGJQnya#73NSV&HbW;j@{3P49xS?+fA2k7kR`q z;2H%M-KMZuOT9s5G(GJ|TVc=+f;0nP0w?B(@}xKd$jP`ElpII`O^F83k|E)UfLL+% zr3^W-^$-W5hPy7CR1Spxba?|~ZUiK{h!2+?^N z+d~NV6Y~!bCTI`}>rb~S#H}wdmW=2aHlk!MqX~#JP1J>pyMd$1~isd^v)ok`C$C?V1K>;jpXyw5!_P|FLC6&=Hn-(L>jNJ02e zKUog{*@Rs!-`0y-yf<1sq=>+(UbH^YsrQO`Q3`O5&cdLw%2G04Z3bhN%95r4K#DZH)duM9v7O zj6;OZ`?-+k2dToJnxGBNC6M5r@p*27Op{;V2Y=|Wll3T}3jW}9pmel1#1zF40nW1i zr{wX6JOST|%nwCp`Gl5-&vDEY5$|Rt-g|^&((# z7XPq-<$l-DJAOUhDSvUgF@LMf(P$N*wLM@#lY>d**>nv$=|!)>sO#ZGLYkMdka9mt z9{+t?&@W2ZVQTt*TJ05Jz;Lpu^HB%vUH`C#y$EEG_l_ZZ0Hx&VfCc^c^Cpw;08#s& z%X+N#u2flx;wbuk^YgbqIZSr`aLlG$E_{UVjwgS9^Tgd6eeyoqrR+F=L+4frAsX~Q zNbX>0TOpKbJlp#M)L==VY?G`4_`szY>Jt8v;2U6fAnDFG2)7q^CrAHS`2jGT&oUh` z3E9AugLV&}Q=9mE7^Vhp2F@)_3>gQs53vuU+aSZDCE=A;BM+r>bD0)@FH8I>wr7Ox zR${|T#O->;C~q)^@IoQ-(*yCN{-$RB6q(?J^nYcT{wHfC!qzI%Ba9|7p{f1~6fHDg zwNn4dmK8SMmdI{Rs;7c+S?kLYP%nb*)UvWwV}NCWY~{tq5Ya#%h5n?AV^j&+a|yMC zmfc60B}qS%E)sUf&7({aGct(bT;1dBUp?6JR|VG&(W2sH4&lYxmc+&t8`@%6D<~iW zFjD)bHdQi0K{ z9Q`lL%FK;mkoS62_%;DBT{(lZ=b3lD60nlPlV(ypQES-{zDHa%v3nVq8!CpM% z*7)lKICZ2)cc{{8t}nS;sc(8J(JST7DhawPa6172)vg5Fs--k4{U^Dh1j{yM6+YeKX8g?Fw5pKtJ(<@@1t&FZbhW>j0lLB!PG*bN>5QInai6a`)>!|6 z1z2DO7GQxY@vh|aace&_t^hC)5CQ-I05fwyGXMZ@SNS3K16G_ZCA%HAd|gT3lH13r zT-?~PCWOR}nY-K0Yu)zlmb}*e$MM40ix439Kdcu3AVUQ=BLD{g2E| z4k3Qvdpavv2R*T;SLwRxBUg3mx|ghLTWfaOC5_k_)m7X2s}|c;V=7!3!{S(y)vTIW zm=&`rV@_7xqwyCW;s-w+k39H30sJBWVE_P;8M~q|fV~Ia`|a*-yKn8gZD+e1Yg;?n zBWl;|+PN-_+-u2_E*sfoHC3{d0F0#L0vaWv(3prD6s19u6oLQ^QV6vJ3V>wz3=)Vw z0U-kX0tiIn7nnawL7+rnTGi{M3c+~H5?1D54lSac7L1sX&3UDiMZ~C~nOw<$l4fSA zq|wi6*?K92(<9-%ibyqeAwfk`=T*zJknee|4O-W;nVfvZvlSD#!{;JYN2=x6fS75` zmLwKO?@VLyQm>1-C1H8o2;uZL;f`^t+e&_&=Vx=;v^Hri0t+NaT^aCdX zClgMvRc0VQ&~kJq>up)-EmehH&aA0?SzfmfqS|EXb*`e7ZwJpT)FttWmNaHBf_-_* zsEIL!EaMoB-B+jxC+<;-(ppD>J{6B&@NOo&~6#8coU}u?iMc|xh zs>AOqlGSl0oEx|&YtkZ1>|r_9jJMN2+ODrXs?nL05L+a@{F{rqYjwyu=zhB!<1`-@ zPpRIm_Zyp4W~>(|=WeL83JhZCsB^W8)1ma!s!3WFEc7iLwa%1w|Cwf2%I`+%x^sUe z!KdDBLpWVxvz|&r%b7!mNSCKASTWh2h zL=iRBN(tPLx4&kVR8PHt8X<_%0!_FXhvy84Ad@jhMU{C2zd}}2T4MosdYzHIikVK`OU%`k7rCZ3| zbLz++OjBC!DxCXE;0~am+`VPPogG>J+A>tn;b|`t%>`m5`K4(_x*0m-uU!yDGdo5O zWzy+lRo8b*E=G0IBc`}rhG0ing`z#7slxY$EJL!ANsk;S3N1;2>O)&_&@fN0(7mWm;OJ)_s;g6MJHrd^nTzOkUpX! z6fxK^Rlz&p%=}#FmuQz#3Z_7=UYHU?hH=w0Rf6<)-YLaZvF$N-KvmND?CpIn$V=i+ zyogkabKF~XZJ^y@A1op;;;st1>?5w3j#{k3T9?4(k0BJ?BJ14}SS(LfbmiU6^zRhU zRCNqAEMwy987t!z$^&aurE{eL<2B!73en|=ocQ?zy}QF4q}@07(=DANIvGCplp+K^ zhbi<0ZZK0Vy@Lg}6k%F7a4lW5Oh)h4Y~XbS=Kb_et+jK%7Vcf*1=x9b!rw zDRJ;OH{eXB}cv&A9Zf)Vi z`%SxKK*VdA9pFHq0CrobE_}zSjtWid^4>4|~QR^@vi7sJkB3c=301zyEt)`v0O znW@2-N{fpa(ZwlnQ860f{(DQgZ)DCw5h2IMSaDV2av{x$t+&0K7kU>J^TXIw`mtIf zla=$Li;TsWEo2r)Wiu<_^uhj>^hB~o&RYTd6V94`(Pk>S9pM`p>liDp^ z?Oq$-cuSDfYUOx#@h^^{B{+69kyy-Qoi+*}H0sQrdds1dG*La9iiQ*wb}=8uzlK8g z%VryXn0|YywPVdF)Rt|x$5w}vYL`4-cDel(Sr~_ht=+#4Gn6)J#ZDUOM@NDq6tRwP z!O4$`kl{6rLxZ&qA*a$3FBRTKo+K)z7&j~=4O)jc&z0YQYaNknn6_e4Kp$?p z6L@NU$(|l}Y-Dn$+V~krSjot`<<9k5W4CO1AkLmn(9Jr@bDC9O-KKn24)Wf+#7X(8 zf{+#TYa+eVg5;ikSSd$Xb3sF19p|%);j97^7F7wC7*e3o=o~^xE2G%;MzCMgjjB(d<}5VgptukbuKI9q)N7L^}nxn z5{1~PAJUxR#>akB{bJEbY1T&E+zaM9ilcdD=M(tgi&WJG-uBVnsIs~u*8BY5 zg$E>;C)>2%IOL{wXw>N=rAv_|x<+z`x&?B{Bi>Zc*}+irvcgH_E;#Y9Fry6_fMBKx zh5VV9|7P=tf9si^`6AF(^Z`i||A7V>F{Jm?GZ<2r1*lpfJwf3xJ*wUP`n{g|dHi?j zfu1bJIC@KF|v?*cJ)2k zivL-_av%EzKP+B+%x~4j&KpM|?_?FiBL=Mcmi4J2RVVM^nLic2J+FOj_B0y;dhHAmjw06U9~W9I`Rm6wF4y+Aw&uJC>e?#5vkYuw zE~S*?X@>s1Bz^`ByQk*%!EBCft@RsOHyohF;Y@vcBs*Bvo{0%CumZz=y{#4(>S7d-e?S`ia0 zzWX{>&(N?hsv8`Ob_&-i&)Fu)j-CUL5BeP+JUAYE6sIMuSHG9_d1nUzT$S6X#%LUA zsv3vin@2pJk{Y=wOm(Il7E$f^ixqry4Y6zs7kS&poyGYJqetFlQvsqKSr_0i6>Uy1DvyJOW3v$NLIj$ zdjEx}R>yv9?l~qOmk%fK!~ftZRe7USzy@@)ffBDk_Pj{8KI@E=g&oPq6u36Cbapt$ zNS0#y>-$oFIwHCuwJ+(T)>Y~y#ON=iixdq~)Im@89B#E_cO|ED#)6?$vuc+v z*R&^6DSZP1eTOxqO9(B7L#wI8$E`LySg0?TTA}=;%QQL#YaFWvnKp`cuXjW#2@mw% z*ypiqW$F+PQ53?scPa`_o;2*oQwK zAr2%X&0_3r@F7x(&V|VK@}J7LNA3NvQ<($z9}FI3V>3YC7&Y?Gfet{&W_ zyekqPB8eEB@yQ~2I#gnm004jh09b!|Wb-~Sv4?`7ui}x|e;*-@JI~|gv2Q4A3UEss2n4XhK6(+5P%+mO3gl;mrcfqshXI67 zx95)X$V-Nvwl}G`{Q5CHoKB1sf=Vg!c~?c^+Cp9Dbt4O}p1ciZ=uk_u!$-&2Rv&Y= zeW5?oU^mL`TbA$nGJI6 zT{aNCh#jmAU!jKk zsY9vUL$?*vmwtBkr}h8y|B+BD;+G=i5yl|9dC^*HcL|z5QMq?9|2icndDHP3GE#)` zFQ}0+oF{qE^?9RRA2Jj1ZsUwci0+7zGG2i|2Ut)~0M5u!vy`H%fn705kVjnenXX0t} z{0=HnD0~(yONBQZSzT;Y5Hb)r9YkeZ6#xJL0B;6BfXMX9^J2Gq1Ybp3wWT_^V;XH| zg)*@@KkZtLQnwO0?4=vHa~olI1*WpiOJtTFlghkEKgq8pGZbcE$lTxr5!$6B7jibz zjcUsPd}=g>mc;x1D7M9+b{$wfSpsJTQ2@yR0000RUypt&=6FP#OBsG$5UvoQ78!8l zqpmLM>boFNA+Iwd<1XXb@A5q#O)y2q+WX5o27b_RZWAUF)nMsFRd3I}pl?o2DZa40 zTrZX~v1%%`^CB1)4uBT01(m%>%gf2;WrOC^B7mmQ*=#@Ch`=_zHjSj(>d<^(8o3T4 z)@RdDe?Jz7wjH6zFEhun6|X4pKDvNM;eym@JOkze zBorVi!-5deFc<(x0e=8nm~DigAj%8XhN6TF5I`C;#;8gD+Mrp0HGl<}0XhI0QIRr0 z#KKoM18lQ*vwk9rF5>%M#BV?Rx|`gaW95_Dn|Zd6yM6e8ksJExq1S^9fOb&B5@7S0 zv^=1iP@`dcm_t4zk3($_A^;=+000252S)#kwu|RV*n>Sr z*|f-@>2x;R4>lsO&94n3X#su!01yxZ0000pb3h{i0Do5fBAyb+)yjzm3Ms~E{r*CL zL2#56u*%wv+V-s5-3=Y*wy?VtUCQ~>cqaB~lCDp!p8yyc0HP59g8&1xB}+a$WJ#7J z8P~Fk@)LeYAf+Okz1(dV#Y>e`yK=9+p##d5-FA-+ZWY+e_S0!EVNs^%G}8kfV33{2 zbW9I=wWla(MB(@83n^jB@033{e*i!R0BASMj zRoyKhD` z1O+3;E3_5JRtjPJPDkYJ>a=&Jx&2$$Xtwor{_$YqbC zPWL3R23eOvDZ^D{DPx-ybv2%`O)B!2g4VrPx!h~pw(ZPcmT1G*F?y{f)3$CBiMu=m z79pdmn!|lytAHN)&Br#|Y0U-l$;>zPl%V$<>i0;zXyZ0;diImRROwCog~n|=YS=+& z3xHl%Hs`&GJyuPdYBmf{99yNMw@pgA`?AlaWCNv(H76Y$wzX>66p`>Gy-_s0vshIk zZu942T8>pf*QM{^Y;}IkwTBwc_z&<_#7Vi`Br&v|Y~hWB{|CKYF)^z-+GwcrL8Pfr zywh%w6gVo00V=egxzz4 z-DZRQ|H|Q}NVy--8Ud~250geWVB$GwDzQ{> zq*ae+Sjup^S|PJm`s^D2O*JMPxo&j!3SOgY<30)1^qRO|%~FNa+<#me(zPs#gUpwu z0Tgj5l&5GC@vGVysScs(!t(V1dWOoU#%{Fd`Vg0)Y89B)VGnH63vre*lk}Sf+*i}r z54T!YYM$rwbLnmDOtKM4aY$Qi0 zr{hIcFC1=8nWYe&Mq6zNwtmf>ym#jgaa5xY8RrK_?l(en2c2fT9=V(nx3%&5rNULz zST8cI7Kf6KJy!Oi)UCb!EpvVB8mv6jOyjkAtO+>PSY|@I+_>-kU~#s2w@4_CY@Ue~ z>oyr!Z-C!#e3LiI(wQJ=#J2WCFmb;p>RxPCj4&myaUfb`bS1Q_{SMLODBO@8__T=J zNDDQiB@9_sq309TQqnrR>^277&jJF^+Nxxh$#8GXk1AMBDXiJ6ZUgQ`km{8kcmgv~ zxOm+Dx>J*cq*cB7Sg(eDjdNRT7?O)N``Zjx=&eO@5xnBK2=}@|ri=c}qq13Cz^$OU z$&CUPfD0u|l zmtO>au|8H8I-$oGqhKu9KXk3@-mVS&_Pw?(E7pb*bR5lsczm57QEK>Thrg1kzE6#y z$fIb*T{x@i(L}@kzM6b&HX%OHLPIUuK;Kt>gIS3X=eN=Hzqc{D`q?m4xyG8hJ@T;; zuot{tF!vd=w)U4?6kPTKkA~T7yV~wdI5`M<0?z!x8K_```(iVbW{`nSUPB%h59auObzOmTdePQK17n><~D{~QfZ!QsL zCIYJ+G#9p7)qUa4RgMLZ2>Fgwrp|HoO3R5!EOjzuc_i;4ok`K(N^_ECQfsa3nM<&1 ziKciWB*wf`WEgnq!{NyY=a|RLX!B*7 zKZS#4G{myhz?!(c&483JnhnkSsZ7BV6vj=Ov&E#fMkbpM0mG!ZD;es4%!hh1g&v3P zNx0Amm4GmhhmkTVxrg&yR=NIp9IjIjnZL@UE|pb{t=+t&gOx}{+n>lPEbk`QvmObo z_QPzkQ4&PjFZi7I2mIfu;U4`gRp*4u%(g4_NBFGI@k>nFpe#1;N-%w{2;M5li2q!5 zw6(Rl4u0Mr0Sh2zv1UYh>YigF*)`!$Y(>gdnL}H$c2W-ill59zPo=5f9uKDjRaZoM zoyq?Xa%^@4K0^%WvBHahI&F(aPJQg_NWHaYyS2W_H%!CWN128ReTXVcOy zQ>l(plhe>?ns_Ytdu1vjG(ZwusC`tn#V~!ZlxsT)nF?k2{^3bt1)i;><>OpMPtchS zGzBTOl@d|&*i#S`5|>--#8J9AJ=U8OMq{t8HSSZHGn$#I#Vca%Nw!fs-{rk@GGB>A z=2{7Mowu)0&ToPVIcaSB~2cwsOI8SyhJl zYqD9R>oQ>jwb9wxR^L=CZ_~6W*NopVSTDt%q0-WR$@PK5SJkek4g=DQV0eL5ZrYY} zfspp|e08nLI7j~ry7`;l=-4_i>v!rlJfOEcJ(iuu+cWWej^RlI990hz>Sla~zY5S2 znEk4tBY~w&j>-|8F26^-g^fmL(1dwiAN-Jqe@^ke_zPi}!)ITdaM$=ZFlOH;;6A0s z)P7RvV$ZUCUgS+pttF-N6s@+1t-0KFDKL?tokOKfF=n%-KV|ukTy19?McMgF5U$&3a zdou1urol2c&NxZ>TUBGsT0(J?%wuN5l!k$k@iJxaTTrxv>ZUgq5`KiP@Q?fheaBqj zKP7RvP%QNo*TKZ%N){YjB7~74y7&ybg9V5g#T@vJW>=ht;{OVzN=IFF9}v{FP0t%1 zm*je-kjb+RCIUMxd}fqQ3ea(PSz##mX2Op#yeb?2xDHbKbV&6_pE)JgHCLepskO5` z32e7t?c~JXZFus&Z366OH1Z84z8BW7*^ADE-%nMQ z++J$$e6zcyEFG!`u`HEpNqn7CC!b4H$koNPh1Kr4t2>eh%<*p~Gf_^~LSJ5O zi}&s=bCJ)tlatmeg2h~X>*u0X3SO3Sx{vqfd==(wC@Q@Oey|OfBYjFZ!RwV2Y;{2; z@(}pknUtyb$iEwtTwRVXXSfu9o&Q~_*;*2Qse&V;&Z=()%?t}7G8%2+l#n*PWAw-Sb!F^b(7>}Vcoi@K4a3A{0 zGpn(sVSUohICgF?GzEgWM&3$(j;PQ=a)=3_Y$X>sNx%Kg5-Jy1+-I@@2|^aeGd2RG9fgNW22Tb^9a6X80#1*Kz6kxm5-qF6jK zF+pJwlesCNFp|N5KG-*fY<9CCgUSg38}-N6M$#{0002| z0Sn#r3rq!;|J*X4os7|hSNvmsk(T(AKPDGX5Tg3o%jQGlXJ!!btp~ zoBHK`-s%GVOKbdDC)QnAfo>3}^axV{|FhQ$Q{kU($0B4hUXEI-Hw zH(L}7=uaWRS$Hf(E>v3t^g^>y$a(Kg>Au#k{?W0%0qes~0P#Z?8r}k+0OG+o4cq|` z0H#7Q0GJl{Xaj5j4g~~kD=ropcmr4f8UO+SQLrKi1|(ZwvS@q2h(i8B3rp?kUk<@f zu`hYFKVSjS0HQ)S5{F(gj9mfC0OQ~r000001OT=_U^a+XbG}m#Zl&=vSf&anRDteZat=8PjXPBc?`G>0qQdp^D|gf1gguY zj%&E zZiC>~!$`cV1Uy(T$XUI5yk=(}!~8SJ(4mBI@IQyh$F(!P_2|&gKV z%h5=Ceo91WqbHXkMQ74ju%hLdi6pU#@3~__Hw&d+%yCEWAgdaY`OjL;Dj47y4W zY7t#%u2%;_N183YaMB~)FzW?xG@tK;X%?I`>;E1r&4Uji{X>H3FqNiHLI^Nr!~hon z2S5N+18E%5&A3pPu^S!glh(NA;6j2)@p05;cmpxu!i6PbE{zuxas0z}4DSKpJ9Oj* zd~xkmuHtSsRQ?tO?1L8o2S5Ns09?Qw0JNYy6a#=M002NbU;~~dCE&-*MYAMQ4Ua$; za6tep01H3^RsbOiL#`n#eo446 z7=uIrdV1>b+JXfIA7l?%`%>KrkUCb)$U*5XSD&j5_GTbW>>}_Tx&h)6F*s%Gpg2!q z9IQK0o>;^uPDn|{kC(@jU7bf5T$iXM`0Q@IC$`2P38aJCP;+SCRAm3aC|<-X)Qx{XcUMNhwm#|IZk(Ib0GYRC1t|VoRTF zN3=b&wCk^RLl*R$AW{$z0ssI2Gekf$000kFnj!5Qj5u=5a$;oJG>&egEnz2awpJC> zEUh!cbV{warMzyv?%v&z+!q-y!=AtZxnHoJ0Km))8I1sd85m^S*?x-})mCXp+9XjT zwZZH5we#(9iCe3^Zd8X?ap;Kx82=#)?aJB z?Ka)r-EZl-x2@Z3q@y*KY8w(=ixI#o5@1HliJ&DURZ#gE5J3=v00BTjeGmabMD%?D z01=2(A|QwW{2?E2l^`aq?n53-k)72U1Bvmjd0QgQ?Y3P=c;c;e4x7#0f4HfK!YD5r zX&q$~SkAR+sTfAj+t#Oec^J0Xl%v)%mP1BfYiYzqI8BVBvBlgACKl8fG`d`=l6o{5 z@@g5$`n0md$#XUulwhZVDswZerA6?irwHClQV*p%iLGL4`Cj?gMJ`G3w|h=gB|Gh% zfv5W|sWK-TbK4t1jw`VlKkWv8&s_~R%;CU}x|5T9G$`_C!L0t`dySa80&8D9`J z5n(5F64`8NL|)3nYAE5tyPa4|n7;J>Ck6e&_epJEpPmoi9dtfHQ5a2KlU)p6`2Ht_ z9m4lXA43Y@mYnS#DthY^b_snLrjb0p2c`%3KdEv=?vp=_Wt4(5SUj}{7BvFlS^f7S zt;h`1ngR`)H^H0KiDXApzl6gN_kBpfnwqxaA#s##1R+uB$m0VZ39M9Tv)2_%PFu-J zy)vDEF9hHcP-{98*5#jN*%rs6GOvyXcBs|c zfmH${CPsKO_OAzrz4}%=vO%-s(jqhKw2#fp{8(m!U6JY@9gfPUTI773irxS~f$mL;~U+3b_&qnx5Vc0YNB;F(v0-|uf! z2L@szpJsTTc6tlW%X9KHdMuY+QSN>-WT8X&M)U9`=V65OiPgq!HEb-T!2S{02cx$Q zCTXAlWhXh`-A?IBC%AJWa313nB?aTV4|g>WoJU93#t|2A&NKLHp3R@0r=q!NN4|DU zfg73gl<$G4Sevv`WV_+7YiPISh8$>z>(X}U*J}eShe+??YplBYdyD$QN+XR+Wm~lo zBBs@L4y$*$i~^`?SkM^C=|$JbdsW&-Z;TcaYon&dirgL8tYfKWz*ysUoHi=c#Dp*5^T9~70!>-|chxS+$@Xu18)!svRl5GZn z)xwV?_4eF|eT(RGbT+RpLbTcC)U`_F$qVjV&IKrTI^65ldB~nSEExEJ_VRNZgd4fe z6Zw{KO_0G&6g=IRk~g8j3+T)|q`UCzb#6^DjJPAktb`i^bGAvQCW$nvfHxj2sdM6 zc)YgUyL`5`U1jeyadK1+dt{E9wnc_eQcbKXPOppGIB9Lq;|h1Va+MA2gB@Da{_byS z4`|XVRwe3AzPkA#SljH&_3;~@v<{owEZvgv3Nl_xPd%iUyRAl-c{g6?;X|WlvX~~e zigP=CvBZmT41P+Ja|b(IdQ6V47)3|It*R33z3(f-k=qQ$<;u%VjB-iR<0@A$>=yp2 z_!pP+=ecn@(V&^8`7?SgosnEjL0)h&{?}()GD|}8rFNWh7Feb~1LIstOm>K5D&eu{ z|G^9NhT#~AUXS~RS}gBGczM9QP0kIcL$d9_>p=2Yy?Fv5QL7TRij*mX z?XWajkQVmx;u|G)%An2lr#(k=JQHtUgb&%^6PloY(flj!UM)?2vV4#hl=m7}`_4`0 ziNz}9AD>oi-_hgoA*u3nW7MDD-qM|2+_J-&!~1YxD&%2bQ})S{%Tj#MR{i6arr~#a z)!s=ZNr*JE@NPoc(Q7;1@)my7RkrJvG4H2PW_3wYDrbf~6^0TLTvwA#-ngF@a~U8p zj;q}o*(#OCu2dU`C*97T%W<72?OFu;F6&AiucmuHD||w^<+Q2yDm;3c*4lEdbTkou z{YHNIO^63z@e9n4_eq|ahbMcS_bsHVe7clFYPakMm`Fzw(OO;Uzor+KLZ91O%9ywGIyHRD+x!LAM)6l|Xp;OYAWG-;Z{%$KLsCdW5p(Kq- z>5C`e{fc<{ue8OJdcVA>(~uW6T$wGN*D5Mz_Eg0sRL+2?klK!7F-hyE#2gm8bQUbC z35L@&54xiqQamdKt_o`W1MymM9hSR$ZB=SD?uO{(HH=KO$7=~?KE^NZn2JRMg8GBc zO$CcT20rvVYTy`v1S6$$^8xon!ySkA2BGBzgxZ1qkg4Aw1-!+>>={}YwAIOI_Ba@(7at{$=L#NwbQvjq6{V*Q|5tBx zEc^HQhbFP|K3R4d`+W`SJ|M;2sZFba_j(qj;_n>CM{o{2%++GT&+?CgsyW`^zKMACH`vgx{cDRSzQJ?T z@?N)!8mtb0`Y@jJ*vS5PW@W%Bzz2F!sKMo68Y_4Wg#0W&O`R|mvuB9%ToFKX<^bQx zSr8+x8P-CME4W*a`LK_$!TJp)u^`DZ@A&&cM39{dE6|UDmxGxV(`YR8EOXBkUcKJ#NZ)5NV@WXpHh7JYZLvSWzoYvjP=28L5>~bP$ycM*+N6cE65t zf&7LBjz}Kg+z2j+f7P+Y5&3H0 z&+CK890wp}uKxI|AJRp^_N3Q`#_;!%aRwLPa9nBNSNk3Cs$v${KApv8f&9K=!e{>0 zddecWYb1aGAV3HZ0t8C}MDOJu z@LulO1XU3ij`#d@qmy&6iL-f>Jg1k}2R9}W{N(e2s(-fR3QLxjTFJdg5+{R??NJ(3NAX$R0(@8?G= zJhGha`bbR!cs?|r7skE<>4zd1>1cS-=v2h&E!#AHY_oyn>sDPaXLPTM_x-`~us@wr z?QqIR7ZpD^24S97o5B>Bv%u}0S$``noSS8t>kFOR<_%pbd$*ovULg~LdOfmLQa%u# zX4F>z)ejFACC=sq(ytPZlXA|oauG6K2@kz|zY~fiDX7;YENJJ7jKzK+;&C3V3gQPf zW*~;9?eQ9LkExAC2y{;0#+vnlOo`;ZI;Xrya07+8w|*l%pIW94@(DmCRhh6EO24J> zqW>>yt~6~a#2OpQ&)0^uRQAhwHfTS;E@(^v=?GTkL#Qzb;`n^`uh@dP3+E);x3tdu zhbe@f&jhHb2;f6|odNr?KgbKdiU#G0;7UY1S|hbt<$pT*aB z6Bi2?zO?+-iHlHuq`9t9w;g;Kj%g(pw}?VG;IR7r5CvF7K%xB#ye(Yh-A1e=#!#{A zyL;=Ru-EVktgf-}M}Rh9h3Q-XJz@9wFaVGbC%hoK(J@^_sG|K`Dg^|1KA^`DjqPAZ zN6|jG`~2w&2lyG!(Gq$jV<)q5^2sSwmZ=;g z(Z&m#tcMsGG$sg*h*;QVKpF@T0t5g7K!94#$}my6S|$i#e8coi9bvJeNIE^gMM0I_ z=!X$!xhSI^POL40=ZDug`}K8o}Q4u{r z%b&8Jdv(~o=$Z$h1pf+RASY=4d#L8F8;h%1`~NCgNADj+Q4j_*2rvQ!2LTM|5Hc5! z*w~pE@engU#KoCy+4eHQuAkNC584K8kGC2{#iHVN}&0;(8 zHHb!SQNzufIeoy$6zNV$%324$#X+Et%lG$s5b4-3&S+&~x>Y*neJBMOJF$y|A#D${pBXw&haIeeF0BRvgAiIsW1%(LCEKLCd zfB@`4vSDf83IH?Y9OO1J+Uj&eqhb&$x`Jcy*~A4YO@5Fwd5!WtPIBjo_h zrpTj*{ux1Lxb)eDY>qrj#i&EZ$SaDS0rfWrBH#Trm5X3W)zdtS8&4O{4V+-HD!29= z2+v$<6c)E=(F9?msbY(hcY$*%SN{?;u#pkZ+jZg@T~{rLEX{CP{t|{8Acl&XB^6;3 z05Iz(>s(=U6_Kn+NT80kK5?DZFO0{)YHZ@6r~|9=pW7UGT{q`>*bP;jqmVv<%0d(Q}Egj_ny zhBlik3wSEYyZW4hy{SNEY4>h<=1yPX*O)3@H=EV+pzgnp8Xxc4*O5!sJ6S&1o~j@;Nn|jig6#8&?4TZ+{O_Y*hDpP& z$Cgi)O+i}HraV-lv3T59Z@rqeSsO>bDT2^5TiLA_hhU#=rVi=ZdM#EJY)L{8PL6)U zH;+d3hT6(A=h^cA4+KU`?Jr4qB7YV?6%hO-M1}^&_ubNiFBABbGYH;=HlvBkl#bl) z^s;zYjv^r&?Yvm4FKUs?HH{$4XT0{$>YP$fXW~uoXIn{o9qV{KgH1L_y=HWJ!eMzh z-HHIh5D)_Z001*IFf#xEZ&o}Ydj}Cl&I6=Cwy{a#X>=sAM6y5P4x7@(i6b@WS+{m_ zd)=gMg>-@QgYg9HKme}qtPcPfnE|4a0I&c99XsN$+Qg>Szmsl?nzSc~u;A26%GToR z8^I)r1vlLz2dx_1?A>Pt0(RRTXIllk-PcyF+Vb*);@Wok9@?Z>b~)U|6sQE`Bd5Ft z0gQmknoNImq9l^5DQS}50E7SlW=6n{&H%sP=Xu+mcJFuFyUpviw`IGv+ilu*I_j?J z-I7OJC0lI(00P8D7#UhwT+;!R#3DwJe4tTLiU?ra5)%Ia`WWZ~ppPgZPar@{P&~H0 znKDaN9SM1vh0+?NvT$YU7G`lbE;2+{m?^TX;<6fdMOX!ltSF+S7Q!fv3fuA`Tt?B< z=23J93L zIj6*thb+>Bjl8h4gMcEIi{~s?chx)DRwVC!zjy^2?RG7+aLwNJ!JdWU8gVYqgFZf!qhOw2_ z%oABER!hunBzr3Ka;%xu1^umSu2ZD}+HtEReJ~yOtSv6v7oXlHn2Sc?d!?Ua_WkAV zFEa+az+Q_5kn8obW5-?WiyaT+RJD@dh^VBbA=|&Xp3s!2#!5oHk%>0jOhqrd$~~K* zjqGRE*eYYacCm%^sRS!_^w$ic)fo&|Yrgd=;WDhOdV0;`uBb^u%o4qU*5|dV;51|= zBUZ6kh_Q#e>ptct-0W2W7XgGGik#J%w)h_#jWGsHC(YZW%SjPnP(4_G2dhnO~_ z<@5%i9mSo8$JXgse3Lwz{XMMN6nj???_pHlyJFn2V5LX4=pM=HT51p=N|0g4%e&ya zgY}Qz7tr1_N{iwzl@e`%B5}f4!N({Q(jpla(rB`WpNstPb%qM1Q`w2gnQSSj6{3$8 z*@-;5-=wIEOO3mW(?(A@GvSXP_Q=Sp(^{-4+BS>!&Yh`H&9d2>y;@hW5b(ugZoQ;e zAG5v|jyP=H-?Z0w*z+Zd562qeTC&Sxi3nj_Hl{YsR_n&yo!<}{16*~*X>Yhy^wHfa z8L4oY*eYG@y0a7AHOmk&s}dBhV|KFCsEk+|-~!>Y`3|tv4Eaqi?u3umMQ3F*fuFHX zRnwzf^KXEL{-yHto0i^XvyJ*nN*%s98=zYhd5g$%^fsw2BDL7znVZzd4i|Q_e;4)A zSDiv@cj_k`1IP;Aw(LFL&Sc~``6v79N20a?`cP+J%HH*+ehv*RYGS1~{M+)bBo*9f zX@&t98Aj+|Z~pG*=ROQjTIefMZI^lXuw}i^V`rH?WziGK;FS-mBJ}3irJWIBV|? z16_(LuV9dpFXSoW{JsA-&@nJC^nf7?#kXlL1N)3FQsn z?fMilndpw-1-J-o5SPJ3i{NpdnBu*_M*bXEvEbR#9XykHH#4Q=UhfOpUS(txC}emZ znpd)^ei_{!kXCG~$~M$ca-uHVsnfZrV_17}4DJa<`QO_)VgK9#54+ z7GQ8T%wghxv5ri%9dGmuW>26at5MH&IDqTCsD0FjOW^sf zJM0rtO?DH(3j6W4)#ZIrGc_z(27PKu9*@@IJ>4)&Vc%5mQC1N^@>tdL^&Pz`V;y-m zxk>rHo{_seB~oQMH4jI&m5h6PUw=IL@lh{0EV^BPfc(WSX(XcgME_J*R@{tRI!D_B zA`_;m%`X#F*AZ@i-Np_>jCTyeLt+&1im46NN+K3U8L)MCfs-rAO|9hi;Mlvbd260&EGVLI%}fuFTk zfo?Tr z4n2d{%JClZ|2nC2si~{k)gk(po_)f#S7G3K>Co9j;PhlOIqI?IqA82pqPTN=zU2DG zZ_+HBIQazPK&yns_T3l8@i~2A)DNCa7Pf?dAHdUEoPxYRgUB%$&^%i!rg9L~Eq2CCFdRbIf~DwVEcI#uDdCYK{ZtU~shV@aJd^t5)4Y ziW`LMZ#nwnKtBf3^nbUI%o=yazd`3CZLAxL^^nsR`_2CA=@i2iU7R+FPUdYx;i9fZ z5{MU>1(9547{Iucq_4cdUYct3{t=00p!F4{xM_E_Zki-4rXBs_H27NFi{Hgf(#zXv z-dRzb71}6GrQcpiIZX@+DA>VsmVe z1a=j7Ar8eMuEV$_cbKOHhd`DP;o=k8Y#ahRifdqp&`#^a_z8ZVpdJoiU5Oz!>(Y8l zXzp+u59YlJjxS}6%I&A!htw?J)#1{t;){nN-M~Y+Pf8)KN*iYGPEb{8K#A5|WYr(8 zm4oI=(%I+DqN{*w>wY{V7p)&LYegXzhdeeppp8Gpy0W7tddO3Ro?=di>{yLJr|!u~ z)%dHEjE8peMAk%YknWXbdKI--Y;518EQQQ@V`x1t;FsJ&hbwUnOQY$ z%7Opxj_z$Rzb|sMN`AXjdN$y>?<#7|H6JNmvCm-M;UoRz>?)M_TK#9jrQ>ZMeandX z{@IQ?(~j=g9^p~du9YlQc!#gx{uPWnXO0@sJDPAga+P#XzOBubQH`>dm~kG&KCm~- zI2bdhT5cNyaJ{6vP@#bCbpIa=NTJC%PDz38gi}lSUK(WNO_%s*`R1)YlVmw+*|<*A zd5?IT{61gVR{d8;QzBkwzs-3$4I^ zG#c$(=|=0YL1VGdCR=NTZ}P9*7;h)I%Fxz5#}_-`+E%6Ro&J30Exz8J%)mcnGS)ln zhYV!)+YWS};Pd$*P&h=3aYrnr-=CemGX#F17<6Gca&l95si4j0dpvrG3dm?N=cp&{ z1u_OB|HO%!761rI?=i* z+n4=R#WOLB{s?az>X|8S3Ykyw)D_y=fB~rv+4=sL5~$>^RdVgFld5BAyk zs_))x*Mz3O6SDna7)7djc@|8a$ZaZr_1<)-O3hkif;)dHgLk)->7!REp#h~U@$eW| zemLrfSk6RUd^Rok#%vw^AWN;_^T6^0t?N6EYJ5kVJz(bw>C++)R*@<-=fz&Z&13a9 zlRXy>hX=zQ@HXBW7!Rg|wtGJkX3WxPasX3}5%#4Z(k*}9$*>IeSQl7KO*PrA&q|W`#gtQ^tD@+3M1m8B*~qoC>rwcgFC)B7iUUjRQQHk(cIm%- zQ!Qk1RfftP4d&P}kSiruIUTfv0RzB*FklQAKOKf9e4RO@W~B~tVjUW-4i~3F1ss`% zoKS~`Q?4jvubItx9+*e*hn*2ajYJ0mpeU!+k^kg=9*bmL1nCNI6GreRdoue}$^^8x zq#J(3K);~Z3SHYE=EH_6Cj^S>QK}X>nXrLAf$h?c7IWv!6f%MPG_uQGydgwO*FytO zmrMjO6TeCNBULEii8pg}hD2hq%`y;fcEP-rK7+xTO}v+r%o>@nK{N(f0RzE+hsj2`aSZnCjjqgln*-t=ufzR9ST6QL4mRiNb zV_=~(%o6`*(^dHSjQ?6n^3OnT@j%&SlDvf#jlT%r`Pb-;5At)?Ix8JP?n@4q&Efx0 zWN^KJR}V+sPr!(J*`#Ps{0U_bT-j-^mvH)JyLLSBxOeV#{Fw_Q*S3M$Pug1oMbY&q z%YAfaF_V`pGQ;eTkta(^xQyk9c8>SJa69;LxSPn_o4*Q&n_>Efn_q#43@){`S8abz z#AEKE-|zK;GyuyMJO-~rNwuZp!J&sH!Je#MAYXh!R2zJy;L7vbq_0U2>mdMrSBiP| zJOx7W$OTFH6~#&-(dr(m+_?9mBW+0Um0K8dgoePis0GkGAT>yZQXc^f%b1!C|0#6% z32>{$3vZgV6;8qG(=tMqpoO2SW~*cfqQP7q!j|o%)ECpg8Zx>G6jTI59aD_pChl@AzPH+GfOW=T)FgsMG z``e(*$*7qLpRDAY%if+v-3#Q z+Jv=LrBES8Ah%OpAff%%K~jqSv!W1zxBm;LC$wY=?fwzq@zsPDEL-KBZb6} zI_elsmgY=AlJX?e(1Z+lw&gMD93x8xRsqsfKmM|<#n-(M^{i-{svF~6IbnbuV89qK z1`L@FNdr1@pzK(04g z`ACeKSYvM(eN09H5Nu|1c#a!|hOXD_4BF0a%x(8cI@v=wR17p97m7gWF4*?O8?qU) zCRmbu)RsagWZ+Da!GKI$bQ?xBNtght_a+!%77Sp3e=s%}UYI0FEHLT=tYyCt*`Ged zsxaI4P450~~C9AfJnCFopm{0?gL%547S;kq4~`rnM$ z3!~>CC|R=4CGHtdCko{sYZ6Y#V7n^WQ%Hj({f6jmiSu@|=|Sep2OrQKzTR#eu-TBH%U*Mgqfbow>&UF?i4tk%+!=w))jFi%lnl~L@FQ|!9 zFB^6zi=l(Doy01+V@6%cK9QMska&$mCnj{=IYtBgfB|5@7%&q(!R^Vp($2_noJ2@E z7@F~u3~5Dq2O^-I>7lwh8aOsKIS58gWa3X-vq^cP7OD?KzCd93^7v;J1%JWn9ETcr z(Yuw6<^wqP)5&GfAsY>H;Nd9$pFTfp+coH8qXc~7A+ut*H?Z})TlF-5N&H&oig zMJk8qLY#-m?nvnFid?8-GVzs<)Sq5s-8_35NKx{3pdC3zd_)9h3H`-@suovR}#R+82N(k;Kui?MHtcne5|_{tatS z-$qk15?2HH?IR?M)|p!xxCN5Ww7hS!YE(FY*psWMBre1gcK(*-y4p zjy1+QVLlTXVK^`m##N~%UL})B*4b3*hm)N81;u)<{ffF~jM9^im?Au#AE8olNU4T{7Es=uU)=ixQY61&N8K8(^xN&t!c=bR^wON=-pW1tr`Q+`NE82@Do3#iq2hc{pXEMM1`p8X~!T z3mmf*wrVeGpw-OGTywgzL2`Vqt4-4)P#7`r`}mRc*2b!+ArNorm#oY&?YgYvl<+go z6cA=@Ko5A@Eq*+i6w=@VdM9~03T>LLl7my79nIC;?YcuN_^#~g9^!L!c=#CK-Zj;- z=*K5$yc)_j`EY;A1U=yamU-ank!e*z_FAf*-|8UunjQxpl|@l!5)(sezkGbPN-LLv2E*|Ujc96JYUHq9k8}F7d>%^(hOX|^s;QpK zrGR$#*>~j}|3yx+(uq$cx^!0s=>>Pcs#V+}`W(l7tHRKsc!xMYWMTS$`5#;1Eng^G zZ>y%k7ZfI7TR0VlORXg6%tFXy7-m9bleY8(V(en;%aEtcZ5u+$RsgqGwlcEo)sgAZ z^^RsxU`*=5pz^yfRwUqTyP(imszD22lfb z^sXpDAT@Y$Hsu!Y;dSWn%0eymmnG;^Kr!zlJc&Aiiv&3FI;FwN$Ul|7>k7D4}b&Ei3D5P0ibxtRsfT}%$lZg zIZD8*p}Nq~J&c3NkF6IiCFC{OGrem$ly>uOp5a4zr^f>i5|@@VEGD{RB@KbE{fWk& z6^M_I2_3B*wWer)&z7eusV+J9;$)#izmErMX*`z?3(O(yu_8w0doKKr0Xs z0{{R3Lo`4m000kFcp`h2BUi{%LJI9CRiAf}obhgJ#LSa?Bw#6ep213V@i^^0xHD=0JKl@K$1@I0< zfGa^PvP7zEOP8P`x_>(%HVa1Vd=MwguT&c{WENV8h{srEBrL>XHq64bwP$R3`I|@! zHXn9PmLRAlp?WK+;@J>a#amvLAM0H>il2EcLbX4+F(oXvCKPNXU zJm!Y%oeQNjl9Ln)kV?$5Rv8sd$K>OD)ai6C3+Y!vuCrG8d)X0iqKB`u%?|o_goWv@ zm`_rI_L*A?POc`G3f&ljtd&*iVK}2ol>8RDi-EDilpYP#m!%Ciq!0N`vJn}ALUCZQ zqAN5kWmU{{1>V4T_)5(VManU01gREW8FjPiC>;{sCwlxpnn2nE-54k1=KjdiH(}b( zy+zc14vLXNQ~vdC9i%5_)9I&&hT{^oB3ws=>Ut`ey3O|JHU4S(mq&`dfx-yMX^pUW7=b~b42CN#K# z*n4s3%mmYcd+@-q@X)w{bO!*Rsxs*oE^Hf1{oRKw3K$S}wruSz=>TJC1GkLO^d5Ik zZtBZf78?v@7dI5^vb$J@+kCNT@t6ltWhqFw4%W^g%WYwToO4YQrtWA_tC_v7TO&N_ z-&Ki3L+9ao0p@o-C6gku>hHGva>O)1heJ8>FP=WWyHyJA-@&113DJX0#>kcfiHP#f zVMt<8N`0cDuUEUZZp7^hZ@g=W##HA#IVwp@geglGd$m>t53|bo$me%2-0#ola?To$ z(g{~GH*^!sIy^pKi zQ?2tai>?KCQv?t_qY)1lW)s@*OFTD7qVHg4g8Z4S{flwY1n;bdP6N)(#RvLLMh232 zQEcyt<=W7_k=AAKGazi+Bwy6;3zvT+=W0ELOQqY|_R#HEA64Y)T+?LU++41#E9MLp zD=v5_62@GkVvAtoWT&Y_OKtCj!%?VS_#Zsle!-IldCHzLh)hZb*UYq9&eBy%TX*u* zk{g>iBFGW+5x+p{#30UITn+~;&F4i%|gV ztH&Ywo^dhZ1)OE6mW)hdD@~?ViR-B;3YihE%b;g{gRzf0!R1*PRjlTe zY;#>}$!2$zH2jy(;cX+ezKcGAc7+nF7U16Y3_ys|)>&UtvDhKM1DIJRmsBd=kM4j= zsuGzgbP|!j+)AQ~Fj!lK!MCPb8Z)r}7-!M4VUt{@ zHj%5jydH|j@x;3zbtg{rE(#Nk2aD;i{J3AIb7($;Ee;fyZlMh5Zdxl&HhvRmVU)#q zk{@qwDDZ0ho;uzy7bo@uf#WWEO~f=dtV=1T*K~8zC21S+Le5pj&Sq{?yN+Gd^xK!Z zvSuVUYY{s}DA#+tr~ zYlWNv29wss^X_4*#SV-`+!4M zAARF8a%-C-#%+c9VVd?Q$zaNwj!a&TV^b;JJXg>ZR%zf%F-S z*V9c6J2T#veJdf~Z2kx~r!}s#86oZCx{UeXi#JXA{m^l(;?1Z|PwR#LG9;lr}K>ZU|AjI5I6yZ709^NS3RM zXbWkOU33J$xZ6UJT_Yz$(1V=_1Rd69g`5#2kYZcEquVsBzDdAMe-CGVcozSk8wKx8 z<>VTI7GLV>Tw6ylp02&vBm2pAm{2$&KJAq-}sZ;3>??hkJ$^ z*ba@FcKJ60g}&N6VK)YvQ4sHZ|Mc`f|6^7!lvbvFxwr zQV}N|o*_!t2`Y`pqFt_%l~}l1=9F$6-%iH>zqPgv(S5E@<<2PSF=foojDI(04y4Gd zy$*_!sygD?YOm04pz?CuuNmC!gnCZ%7UEB!0xyDvAIRL2EblX?haBWtkfU9^s+Z5 z@VNV3@LR__33QLsdIg=7f{24^q@bz@?DKWsU`mGfm2j4&U_$hnFDpkiKJk*Bbm75<GPV3r-~!y7Qu| zX)-9qK~wvu1&hfc8g7F_@MoHP)~8@onr@1Npgq*yD6oP4QVD^ck}i%ek6S_!){pBs zG zf>}R)>lQ5xz*j$*@4OWmlIpIBQT)$OiK+UCn(Ox@Qp+y!{JrP?aHGh?SP|ihn(1A{ z+59Ee<_D225}o!RiTo^xX-3Rcz4QeIFD^zB6yImzIHdo+=kh9$ake11J!T0kH4g>! zfgvuFfrVV9B)I+c%mG?phSVK3AzQv&n@vjtfcZs9kGA+Jc#QZ@7m$3ZFT;C{;fj8Z z^VX3dh$c(#wr!>1+W(co<^*Er44Jo0B@K49N-nl(^+;1B=G&+@v>Q}8$6$StmALh) zF9RfB+b0aUsa;}oC{0nBM~pwqBhP-2MxOS88+pp7ur^%sILg@uXyhCll%QD83zufvgT@=F+ADf25`2S21AL=ZwGq@G168Uf7&+X{}XMjI&1T>Dp@Cg@u5AO^zrR4(c*nTF| zZk#%V;&~RW20BiQ6>*vCJga+4^cR?;XVNefG1B9Q0Fzf@O!c@zdW}0^c@z zq5p~$0HtM{L@INYk@bR1y5C3hen7YU^|sZG&X$%GT*KJSF(-Wy)MKOdPs9TS+)!Cm zP^%1%ZSUFvL4ess-mV9Ok&G`rl#Mxd=LVSjnHUq4X!HBhkGUz2T;S)MOqk4!ePt8E zR7PW0*(W&BL_?vgO$V!wcszrv++fc~iJDR}W^NQRn5;slDlwf3w;3m~J6?~MB|fLU7|KH2Jvje2_N;_UNFUBkqfT?T7vBpyN+{j^%27kX>!i@HLDSZu z(I1u>$;hyF?U*pse|RQ9Fij;{*?=+R^J&~<-$-n-(-sGGcHP*yohei_Uhayw$De?l z+EwNN-b?u^5M{#5H7V6Y8PYa&Ui;?(6q;@kweC6d_u5eiD-A7Lg*DJo>sMY0h*>l- zQoU#qe;U2M%yxpgGqNvKN(FqQTX_qG`jA1rQ*a*F#@NLY*TEAgyd)1SaQrrOH4E8g zuRsf1;36h@udsFV73iu_K>n0tL2A$8yw=4}4m75Ht6JxDp19vk zg3Njegfq@q-MIYfR|4yLQx9AmX7rV(HxE&>1`HW`>t9k6dDKtMIR*IgNiu44TH&b# zS0B&BY6D&njwolcUJWvDV11hvx(Y*zJC8EXN~krllS9Ay_MO2%-nA>DEwH^bBx@@C zVu5sEK&@K-M|mDXnTwk(V5FcDKF9{ZV7YPLu4L^EY}f5UfQAKNl~G!#xEZq2)YYUN zWh9LA-!s+(U+hgT;VIGWiB*w_KqycJsj)GKrkiq83sTN~z0KwK#)pB*jOJ@|tA(THxqOBQ^BHEnlSK&{HTBA`78EPdv4M?r zeX*X6=wH$2bAq;&dmB0u{rnhBXl<}~dnP+*Cn68s^k;e-!WXK`1BCCMC*h>4tIi!( zv?E+X;uaz)cLmmtv%Tx8gb&m{I!GdDTVdNZ7(+U=&UtTy`1=z7r2t&4;u9*kuQcV( zV&xZcLDA5vb;1a2NMj`0tgF^t$747s5I2t2JG(%2Iwz|9wCn+zIzTyFb!{d>77{T= zgL*u$FG_dJ#KDxf(ET<|=)--r&^{UwP^>Nz^hl%wEC$0k!k&l|?a;4Kn#YU7@UBLT zQ*Rx;`GYW09hj5Y6v)s!5$}lvT6fYCgu*Wrv?YR~AQz-Is7)yn)Q*exvx^ce>Ei3u zK3YV3I#IQr15%()H-K315{?`J9bdQ-3q6X5AEQo**GvIBWmJlk3A58S=h6Ews1tHiBM| z+oqLlK>`E-0YHF6%Rv*_0_?Jb25qmQ2iCAro`tcekEV+m*9R=S1NUvf;5&aBa%u56fJPt3-7DPT z4>@l|@CrWQGYGuECj&vBb>IY{N?@i5sYq0H&XoYnMQZ5&599K+DK!br;NjoCChw(P z$I|FM#Ya<^y#SU#&G5t#Jh>?#Ap#LkL#H!L5b=rNOPKGIkjKjX>FQ34|p3)C?IxQFu+Xhbg2AhC{|I7eE zM8SLce-@0h_#x4g{TnOT|1lovx|O}-M*BAoKw917GRq+$@1)y9?UC;Q@ptxL$8pwb zkUL~;S*+-q=j1zBeE>T{yT^>CW6+c*&y#WayVmEz3xQGknoW6m0QhI3(^8UGdp5*MF)i7=4}`4V0az^XpXUAI{0R0B1dIC^)&T&K zp|F|*01yCAlKF^vrJJOriBXf%B=|u_s_WCF(^*e(C!J1!!MG#ogaojFJ+&bl0)bON z?X`!UBy8pK4k5H{<;yrjN^L73i)98|Xi(&-IvGL;N6u7}L6J{OlE0g4f&dT!0Gb(q zD+2@H`|rK~d%C;d?RML)yWW!5&UUxy+Pt*3+v=8A8&q3R%mf65Xj^NJWPmNBk`Mui z1QIQgMo0vJm7qu{fCLTk35W=S{0NBf0}+(`0JKQ40V!5vB#==x!1VY!Szu{+;@_AA zOlYMMWRi|S7?M|^GGm30B_x|8mMJK;vSO76J4=MnCi7%kK&<9y=Z&=XDU%iOjDx?+ z_b51JMLR|s5v1!Y9fbKZCz%9*OC_)?=QETy8zeS@W8iPSze39w^}4UAdc%`gFMliU z5;=+ka&vhQwJ3Mv*4GnNiV=h0b5Vna0s0t42ZNUUkfjo$t}>zRXaL>Jg&nXFsp?Ir zj;nQ}M`~+b!a}KQ5#apvnz-vor?7##A-q=7J>}t6h3haU+y!dwN-C$y2bn3UAcl6D zGSVDWVWE?`Gee!1hymH~Wb@N=le2SacrHx|R^6*Ay!2aE=^9kBAKTF-5*J<|@n^|U z157i^c*9*b)#oz5hfN{oX?1}1YVC&h?4si_B+pVrqH2u1hHiwxPeerV!HT9Hk3*MB zpExT|{kH@R^jy!qgUPVD7!{qaYNxN4Ix{R9l5CjxNohuod9!%7`&N@F5vg`JKIn>x zN(`k?ey291{vYSBMA!niFjwLMFaobjVy?MpdB-j&P zoE0xTH$0J!%NvN&=xWQdG8n8d({g>~!2nH~xm2%Hz9}bB;>Re8craKM^m*m4;%ml! zDZz&)yBz=cpRZ5m8N4Cws}R^>ytH^6VWFOG1?rRWy@nv^ttm?r6=#%zXsf)-Q{tLG z`6kGz)Wxtfl#sbMDp?BUXn-RqNN|B%$7^RWJ8~;N+49ZAjdlW0h>SkptdO9K_6-t? z@&uXwyji^{zu^Uet|IpVrj^qF2y7T91eICy=i-w+LD>39U&Icy)-Sv>F>Dma^OE@J zcm2;h4p6}Nfp@&6>S<3@B2e1$krUOg3(C4d@`G$*?6`6Us;uG61)^&nYM+y-=LO47#a*#~_d48X0K9Fn(FHedN;eA) z<4FOV?fc^deL~l2*5M-o8)GL8T)7I)M9bOl1uusgplY07)5D*9CkT?ycD1lYXrU4C zgA8!6@9B96EJm7kk9w`!C5Y!qoH24G2d#S*-!fnsGD{Fqu6YJG1`Gz4B(~{J>gl4; zK25W??z}X8ed}8E<-ESL^ivz5&crAAFa;UihU!>4Jjd1e{JAEJRho`!wefzjN>)vY&aIo?bE$xy_Eb`q_TN*Dnb|$&yIbFX zacjcCekSmGUaYCA3!{tv-%f*|W;-O2lDa^xLQVV)cwjI3 zz+gQMC9UR4)mHRpoyUn*b%hM)me-TE?lMt{8skg8 zp33E`Rm#==mgzA!&(i|z_Q(z6&#S4~dN!}iqQGV-)U)PTrtaq3pu%unZ&Z$Coxf><6?fA$P?Lg{@4Rfg+ zXDcbKMDL$}vfYA%)?my6%4T>^*wzBZJTs>-*9Tc0k%jczJ(sgN=3Ye3Rqt z<6-J8pu@nh3$`2pjF&rpZMk(!U)G@Hj zm!(gedC~`(v|r(L$pVIQ-v_fr6j?R+X0a-ywo9$<+VOkAY_L8M(m{oVHZZK)vZ_Xc zIL26x^zkyf$(l*>%58@-MozpMtOurQ7O>r!xTe>)M1wk?eQKCl=wluLCms32&7*jT zpI%!RY_Nd3YU(Hr6;!MheYf_=<^jw8O4SLrEWV3Y8^o1FJ9{uSpuT9TOhKKXwQEW* zLamkKd<-1k5A%f-yPa<}Yh&`bYsg;g0&C6E_Q^N%nkTZ^b{a)?i`Yr>8ps_l6j7y) z?#wh^3%F?9C9iB00%-Dv*V|{JAb;Hd^z=V}W2MXBAdBo9pMlzN5%&sp|Hed4GMub#y=Mcqc=0ozTzqPfXM?bT3Hu)APmkarR zD=I1Xx;#mYR2m=-s?UpO(Uh%OqVqQuU$W2)P*Pbr|9xP;JG-%fMf$`qKr&5b)zf94 zYhwbDd*B7TwY&p?J~*CMuuO?nd>B#HDK6#Cyg$w6OwAu2u<~In7tLlqZIE#$=rf^2 z6H(0onP1a0-*Z%NVo7JIQZI<7^Ib|Pv}Il7j) zG1)SBb6eRoR2u-2#b%X>xC_!B3qE?u2eRr2x~5~dyFX*fu0Nd zU3zIFLIJtLEn^F4ao_YzDf1@sRdOq4c!s6Ml#+7nh2#nr1*LP9jQGa4RXL-o^iU$K z)Tib$8ry`nLFO`diUOcFkxrnBA)C*Li=T-!+Fg|v$=X~$=x|nSvH+d1e&{c$wS(@G z)2UZRQ`UPt1<7iae~pdjqaPN(gTke$T_mU=6;2Ng0d+kwTj>XhAiHsPRWg&M3bZ&Z+)sKYZ)eTX6#!hx43l*v_f=SEfy%PV!fJz<|4&K znL~*R*hN-*gTw@j5aUUPk;2B~{r(p^+nk$Mi<%-Ny)6B8Qg62xsiN7Xk{*8Xw&Z2GcbBj> z#pXM4K8v&=M_zgPwe~LsA5F0e?Ye#Vxp-{|@rM_aUApv8k8nN`U5YqPeYs0LaEqRW z(ztRGB;b5{?B8%J=%8Pptg1JutBO;VI$$TXYn`4!xgP;^j9Sq|D>WBf923lOzm{MyW|u3)YsvGptMOB|!4EIsBT zgGwo}&h-8LibgRa8=@S#%JTqzsyKsv&9nz#NZmi&R)3A)rTkq zm;nNS03bkI@?np&CB^m~pq34{hv(a}cyWGZ z2oIVhOG_`f9`)AW)-@m-GFVp($$qH`g%f?INB)S#+s4_}J#lC6Ju!P>-YN0m@Qa*v zvtNX2ayD!Fi*}K(?zX@HisRS5c#A1OK{a6nEN_ z3APKEq;Ld2jBoWcyC+cyP#Odf067TkFN^=O3*A_%Cy|*n7kLJs2l@8WrV<8UDZQ-N ze}C!#RLB#Z(r{Z4w3;$PW z^xD}MoIcpMoQ)o>e<81Lbo+ulhJG3f=|XRzPlF)=;=wz~%^vyw4|XZJ?B#_e+v4O4 zCbMguAZFn_Mi`mS#gH#NMBk4ZoH21PP* zV4QmRsmNV$TSoTVr^#E_ElYgXiGMSUX5@FPdY%{mN;?SC-4y&|dW3Uc=<4V_?F6seU2cIXt^AF{mdDrmOR125 zhzz)x@~n&M-Hv(r498>f$!_h>y#2K6o9CY8U>O8gjajR*aOApVyN^*}ggFqA^dlZB z>>?ukvLjA^)rNdl-XSyclq}{6Z6}xpy?hxLI#ICZvg;w!+R1MYg*fgMps62e?>Rm_ zMBxqeb=+gq4hI^y&{_TWrs;w^vNB-t+)$$k8GS1_u-9b!Ol$~Yu6{;lD1cZ<%(87_ zj}HB8=_ZbV`5-cyD3BUpN*O7BBhidu0dcc%qJ^sLoqab*ab~N!6 z`CnH+Ro%>iC~-Zcw4}Abn*MhTT5PH;7G+=Xi>L(mx~LuF4)^{g;HE=+AO2RP)uGx#KZ5Y*4Vn8B(+bo zFLVcbxhuJ8viKDH@6)>PmA`gWEbZKZZB=iTx8v=8IO&1K^3nT!=p8`MPe=I?vWQ