From 8063ccadf64745ec568ee6b1d21b675385da286f Mon Sep 17 00:00:00 2001 From: bwookzy Date: Thu, 23 Nov 2017 00:57:43 -0800 Subject: [PATCH] Initial commit --- .gitignore | 303 ++ GtaNativeParser.sln | 25 + GtaNativeParser/App.config | 6 + GtaNativeParser/DocumentParser.cs | 91 + GtaNativeParser/GtaNativeParser.csproj | 59 + GtaNativeParser/NativeWriter.cs | 135 + GtaNativeParser/Program.cs | 53 + GtaNativeParser/Properties/AssemblyInfo.cs | 36 + GtaNativeParser/Storage Vars.cs | 44 + GtaNativeParser/packages.config | 4 + .../lib/Net20/HtmlAgilityPack.dll | Bin 0 -> 138240 bytes .../lib/Net20/HtmlAgilityPack.xml | 2617 ++++++++++++++++ .../lib/Net40-client/HtmlAgilityPack.dll | Bin 0 -> 142848 bytes .../lib/Net40-client/HtmlAgilityPack.xml | 2644 +++++++++++++++++ .../lib/Net40/HtmlAgilityPack.XML | 2644 +++++++++++++++++ .../lib/Net40/HtmlAgilityPack.dll | Bin 0 -> 142848 bytes .../lib/Net45/HtmlAgilityPack.XML | 2644 +++++++++++++++++ .../lib/Net45/HtmlAgilityPack.dll | Bin 0 -> 143872 bytes .../lib/NetCore45/HtmlAgilityPack.XML | 1672 +++++++++++ .../lib/NetCore45/HtmlAgilityPack.dll | Bin 0 -> 89088 bytes .../lib/netstandard1.3/HtmlAgilityPack.dll | Bin 0 -> 139776 bytes .../lib/netstandard1.3/HtmlAgilityPack.xml | 2613 ++++++++++++++++ .../lib/netstandard1.6/HtmlAgilityPack.dll | Bin 0 -> 141312 bytes .../lib/netstandard1.6/HtmlAgilityPack.xml | 2613 ++++++++++++++++ .../lib/netstandard2.0/HtmlAgilityPack.dll | Bin 0 -> 140288 bytes .../lib/netstandard2.0/HtmlAgilityPack.xml | 2613 ++++++++++++++++ .../HtmlAgilityPack.XML | 1672 +++++++++++ .../HtmlAgilityPack.dll | Bin 0 -> 89088 bytes .../HtmlAgilityPack.XML | 1672 +++++++++++ .../HtmlAgilityPack.dll | Bin 0 -> 89088 bytes .../lib/uap10.0/HtmlAgilityPack.XML | 2613 ++++++++++++++++ .../lib/uap10.0/HtmlAgilityPack.dll | Bin 0 -> 140288 bytes .../lib/uap10.0/HtmlAgilityPack.pri | Bin 0 -> 688 bytes 33 files changed, 26773 insertions(+) create mode 100644 .gitignore create mode 100644 GtaNativeParser.sln create mode 100644 GtaNativeParser/App.config create mode 100644 GtaNativeParser/DocumentParser.cs create mode 100644 GtaNativeParser/GtaNativeParser.csproj create mode 100644 GtaNativeParser/NativeWriter.cs create mode 100644 GtaNativeParser/Program.cs create mode 100644 GtaNativeParser/Properties/AssemblyInfo.cs create mode 100644 GtaNativeParser/Storage Vars.cs create mode 100644 GtaNativeParser/packages.config create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/Net20/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/Net20/HtmlAgilityPack.xml create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/Net40-client/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/Net40-client/HtmlAgilityPack.xml create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/Net40/HtmlAgilityPack.XML create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/Net40/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/Net45/HtmlAgilityPack.XML create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/Net45/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/NetCore45/HtmlAgilityPack.XML create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/NetCore45/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/netstandard1.3/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/netstandard1.3/HtmlAgilityPack.xml create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/netstandard1.6/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/netstandard1.6/HtmlAgilityPack.xml create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/netstandard2.0/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/netstandard2.0/HtmlAgilityPack.xml create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.XML create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.XML create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/uap10.0/HtmlAgilityPack.XML create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/uap10.0/HtmlAgilityPack.dll create mode 100644 packages/HtmlAgilityPack.1.6.5/lib/uap10.0/HtmlAgilityPack.pri diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..20a6e74 --- /dev/null +++ b/.gitignore @@ -0,0 +1,303 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# TypeScript v1 declaration files +typings/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ diff --git a/GtaNativeParser.sln b/GtaNativeParser.sln new file mode 100644 index 0000000..65c9686 --- /dev/null +++ b/GtaNativeParser.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27004.2009 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GtaNativeParser", "GtaNativeParser\GtaNativeParser.csproj", "{5F8C938D-2D12-42BD-AB1D-A6BB9FD7A028}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5F8C938D-2D12-42BD-AB1D-A6BB9FD7A028}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5F8C938D-2D12-42BD-AB1D-A6BB9FD7A028}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5F8C938D-2D12-42BD-AB1D-A6BB9FD7A028}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5F8C938D-2D12-42BD-AB1D-A6BB9FD7A028}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {8762CC9B-1B99-4D5E-8A08-48A5DEC0FD57} + EndGlobalSection +EndGlobal diff --git a/GtaNativeParser/App.config b/GtaNativeParser/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/GtaNativeParser/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/GtaNativeParser/DocumentParser.cs b/GtaNativeParser/DocumentParser.cs new file mode 100644 index 0000000..f1199d0 --- /dev/null +++ b/GtaNativeParser/DocumentParser.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Security.Cryptography.X509Certificates; +using HtmlAgilityPack; + +namespace GtaNativeParser +{ + public static class DocumentParser + { + public static Native[] ExtremeParse(HtmlDocument doc) + { + IList nativeNodes = + doc.DocumentNode.Descendants().Where(item => item.HasClass("native")).ToList(); + Console.WriteLine($"{nativeNodes.Count} natives found!"); + + Console.WriteLine("Turning all of the html nodes into natives... might take a min"); + IList natives = new List(); + foreach (var item in nativeNodes) + { + // finding native nodes + string txt = GetNodeText(item); + + // finding the native items + string _namespace = item.GetAttributeValue("data-ns", "UNKNOWN"); + string name = item.GetAttributeValue("data-native", "UNKNOWN"); + if (name.StartsWith("0")) + name = "_" + name; // for native that don't have a name + ulong hash = ulong.Parse(new string(item.GetAttributeValue("id", "_0x0").Skip(3).ToArray()), + NumberStyles.HexNumber); + string _return = GetStringReturnType(txt); + NativeType type = GetNodeNativeType(item); + Parameter[] _params = GetStringParameters(txt); + + natives.Add(new Native(name, _namespace, hash, _return, _params, type)); + } + Console.WriteLine("Woah! That didn't take very long! Next step..."); + + return natives.ToArray(); + } + + private static string GetNodeText(HtmlNode item) + { + HtmlNode _in = item.Descendants().First(x => x.HasClass("c")); + + HtmlNode[] items = _in.ChildNodes.Where(x => !x.InnerText.StartsWith("//")).ToArray(); + string text = items.Aggregate(string.Empty, + (current, node) => current + node.InnerText.Replace("(", "(").Replace(")", ")")); + + return text.Split('\n').Skip(1).Aggregate(string.Empty, (current, ln) => current + ln); + } + + private static Parameter[] GetStringParameters(string input) + { + int open = input.IndexOf('(') + 1; + int close = input.IndexOf(')') - open; + + string[] txt = new string(input.Skip(open).Take(close).ToArray()).Replace(", ", ",").ReplaceCppTypes() + .Split(','); + + List param = txt.Select(item => item.Split(' ')).TakeWhile(item2 => item2.Length != 1) + .Select(item2 => new Parameter(item2[1], item2[0])).ToList(); + + return param.ToArray(); + } + + private static string GetStringReturnType(string input) + { + return input.Split(' ')[0].ReplaceCppTypes(); + } + + private static NativeType GetNodeNativeType(HtmlNode item) + { + if (item.GetAttributeValue("data-ns", "UNKNOWN") != "CFX") return NativeType.Client; + + var node = item.Descendants("p").First(x => x.InnerText.StartsWith("CitizenFX API set: ")); + var txt = node.InnerText.Replace("CitizenFX API set: ", ""); + return txt == "Server" ? NativeType.Server : txt == "Client" ? NativeType.Client : NativeType.Shared; + } + + private static string ReplaceCppTypes(this string input) + { + return input.Replace("string", "str").Replace("char*", "string").Replace("BOOL", "bool").Replace("*", "") + .Replace("Hash", "long").Replace("Any", "dynamic").Replace("class", "_class").Replace("event", "_event") + .Replace("default", "_default").Replace("object", "_object").Replace("private", "_private") + .Replace("out", "_out").Replace("base", "_base").Replace("ScrHandle", "int").Replace("Cam", "int") + .Replace("Object", "int").Replace("func", "dynamic"); + } + } +} diff --git a/GtaNativeParser/GtaNativeParser.csproj b/GtaNativeParser/GtaNativeParser.csproj new file mode 100644 index 0000000..9962daf --- /dev/null +++ b/GtaNativeParser/GtaNativeParser.csproj @@ -0,0 +1,59 @@ + + + + + Debug + AnyCPU + {5F8C938D-2D12-42BD-AB1D-A6BB9FD7A028} + Exe + GtaNativeParser + FiveM Native Compiler + v4.6.1 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\HtmlAgilityPack.1.6.5\lib\Net45\HtmlAgilityPack.dll + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GtaNativeParser/NativeWriter.cs b/GtaNativeParser/NativeWriter.cs new file mode 100644 index 0000000..d086446 --- /dev/null +++ b/GtaNativeParser/NativeWriter.cs @@ -0,0 +1,135 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace GtaNativeParser +{ + public class NativeWriter + { + private const string MASTER_NAMESPACE = "Natives"; + private const string NATIVE_PREFIX = "public static"; + private const int INDENT = 4; + + private readonly string path; + private readonly Native[] natives; + public NativeWriter(string path, Native[] natives) + { + this.path = path; + this.natives = natives; + } + + public void Run() + { + var namespaces = GetExistingNamespaces().ToArray(); + + List lines = new List(); + + Console.WriteLine("Writing initial lines"); + // starting lines + lines.AddRange(new[] + { + "/*", + "", + " File compiled by Native Compiler", + "", + " Native Compiler by BlockBa5her ;)", + "", + "*/", + "", + "using CitizenFX.Core;", + "using CitizenFX.Core.Native;", + "", + $"namespace {MASTER_NAMESPACE}", + "{", + }); + + Console.WriteLine("Writing all of the natives"); + // native lines + foreach (var item in namespaces) + { + Native[] n = natives.Where(x => x.Namespace == item).ToArray(); + // adding namespace start + lines.AddRange(new[] + { + $"public static class {item}", + "{" + }); + + // adding every native + lines.AddRange(n.Select(CalculateNativeLine)); + + // adding namespace end + lines.AddRange(new[] + { + "}" + }); + } + + Console.WriteLine("Ending the write"); + // ending lines + lines.AddRange(new[] + { + "}" + }); + + Console.WriteLine("Sending all of the lines to the file!"); + File.WriteAllLines(path, LineIndentation(lines.ToArray())); + } + + public static string CalculateNativeLine(Native native) + { + string paramTxt1 = ""; + string paramTxt2 = ""; + string typeref = native.Return == "void" ? "" : $"<{native.Return}>"; + if (!native.Parameters.Any()) + return + $"{NATIVE_PREFIX} {native.Return} {native.Name}({paramTxt1}) => Function.Call{typeref}((Hash){"0x" + native.Hash.ToString("X")}{paramTxt2});"; + + for (int i = 0; i < native.Parameters.Length; i++) + { + Parameter param = native.Parameters[i]; + paramTxt1 += i == 0 ? $"{param.Type} {param.Name}" : $", {param.Type} {param.Name}"; + + paramTxt2 += $", {param.Name}"; + } + return + $"{NATIVE_PREFIX} {native.Return} {native.Name}({paramTxt1}) => Function.Call{typeref}((Hash){"0x" + native.Hash.ToString("X")}{paramTxt2});"; + } + + public IEnumerable GetExistingNamespaces() + { + List namespaces = new List(); + foreach (var item in natives) + { + if (namespaces.Contains(item.Namespace)) + continue; + + namespaces.Add(item.Namespace); + } + + return namespaces.ToArray(); + } + + public static string[] LineIndentation(string[] input) + { + string[] output = new string[input.Length]; + + int level = 0; + for (int i = 0; i < input.Length; i++) + { + string line = input[i]; + + int instances = line.Count(x => x == '}'); + level -= instances; + + output[i] = new string(Enumerable.Repeat(' ', level * INDENT).ToArray()) + line; + + instances = line.Count(x => x == '{'); + level += instances; + } + + return output; + } + } +} diff --git a/GtaNativeParser/Program.cs b/GtaNativeParser/Program.cs new file mode 100644 index 0000000..f8b5c2e --- /dev/null +++ b/GtaNativeParser/Program.cs @@ -0,0 +1,53 @@ +using System; +using System.Linq; +using System.Threading; +using HtmlAgilityPack; + +namespace GtaNativeParser +{ + static class Program + { + internal const string REF_NATIVE_WEB = "https://runtime.fivem.net/doc/reference.html"; + internal const string CLIENT_SAVE_PATH = "ClientNatives.cs"; + internal const string SERVER_SAVE_PATH = "ServerNatives.cs"; + + private static HtmlDocument doc; + private static readonly HtmlWeb web = new HtmlWeb(); + + public static void Main(string[] args) + { + Console.WriteLine("Gimme a min to read the web site..."); + Console.WriteLine("NOTE: This may take up a lot of ram :)"); + Console.WriteLine(); + DateTime start = DateTime.Now; + doc = web.Load(REF_NATIVE_WEB); + Console.WriteLine($"Woofff... That took {(int)(DateTime.Now - start).TotalMilliseconds} milliseconds to download. Let's get into the juicy part"); + + if (doc.ParseErrors.Any()) + { + Console.WriteLine("Damb, looks like we ran into an error, plz restart..."); + return; + } + Console.WriteLine(); + Console.WriteLine("Time to start parsing the web stuff, plz wait for a sec"); + Native[] natives = DocumentParser.ExtremeParse(doc); + Console.WriteLine( + $"Found {natives.Length} natives, " + + $"of which {natives.Count(x => x.Type == NativeType.Client || x.Type == NativeType.Shared)} are usable"); + Console.WriteLine(); + + Console.WriteLine("Gonna delete some things, let's hope this clears some RAM"); + doc = null; + Console.WriteLine(); + + Console.WriteLine("With all of this parsed, we can start with the saving part!"); + Console.WriteLine("Processing the Client natives"); + new NativeWriter(CLIENT_SAVE_PATH, natives.Where(x => x.Type == NativeType.Client || x.Type == NativeType.Shared).ToArray()).Run(); + Console.WriteLine("Processing the Server natives"); + new NativeWriter(SERVER_SAVE_PATH, natives.Where(x => x.Type == NativeType.Server || x.Type == NativeType.Shared).ToArray()).Run(); + Console.WriteLine("And it looks like we're done! This entire screen will close in about 5"); + + Thread.Sleep(5000); + } + } +} diff --git a/GtaNativeParser/Properties/AssemblyInfo.cs b/GtaNativeParser/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ec0e606 --- /dev/null +++ b/GtaNativeParser/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("GtaNativeParser")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GtaNativeParser")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("5f8c938d-2d12-42bd-ab1d-a6bb9fd7a028")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/GtaNativeParser/Storage Vars.cs b/GtaNativeParser/Storage Vars.cs new file mode 100644 index 0000000..3cde3f3 --- /dev/null +++ b/GtaNativeParser/Storage Vars.cs @@ -0,0 +1,44 @@ +/* + * This is just some basic storage vars to keep the code clean! +*/ + +namespace GtaNativeParser +{ + public enum NativeType + { + Shared, + Server, + Client + } + public class Native + { + public string Namespace { get; } + public string Name { get; } + public Parameter[] Parameters { get; } + public ulong Hash { get; } + public string Return { get; } + public NativeType Type { get; } + + public Native(string name, string _namespace, ulong hash, string returnType, Parameter[] _params, NativeType type) + { + Name = name; + Namespace = _namespace; + Hash = hash; + Return = returnType; + Parameters = _params; + Type = type; + } + } + + public class Parameter + { + public string Type { get; } + public string Name { get; } + + public Parameter(string name, string type) + { + Name = name; + Type = type; + } + } +} diff --git a/GtaNativeParser/packages.config b/GtaNativeParser/packages.config new file mode 100644 index 0000000..741bccd --- /dev/null +++ b/GtaNativeParser/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/packages/HtmlAgilityPack.1.6.5/lib/Net20/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/Net20/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..d6b1151cfebdbc8753dbf1b116a66bd645b35262 GIT binary patch literal 138240 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 literal 0 HcmV?d00001 diff --git a/packages/HtmlAgilityPack.1.6.5/lib/Net20/HtmlAgilityPack.xml b/packages/HtmlAgilityPack.1.6.5/lib/Net20/HtmlAgilityPack.xml new file mode 100644 index 0000000..930e419 --- /dev/null +++ b/packages/HtmlAgilityPack.1.6.5/lib/Net20/HtmlAgilityPack.xml @@ -0,0 +1,2617 @@ + + + + HtmlAgilityPack + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. May not be null. + true to detect encoding, false otherwise. + + + + Detects the encoding of an HTML file. + + Path for the file containing the HTML document to detect. May not be null. + The detected encoding. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. May not be null. + The character encoding to use. May not be null. + + + + Creates a new XPathNavigator object for navigating this HTML document. + + An XPathNavigator object. The XPathNavigator is positioned on the root of the document. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Creates a new XPathNavigator object for navigating this HTML node. + + An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document. + + + + Creates an XPathNavigator using the root of this document. + + + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects the first XmlNode that matches the XPath expression. + + The XPath expression. May not be null. + The first that matches the XPath query or a null reference if no matching node was found. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents an HTML navigator on an HTML document seen as a data store. + + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Gets the base URI for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the current HTML document. + + + + + Gets the current HTML node. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node is an empty element. + + + + + Gets the name of the current HTML node without the namespace prefix. + + + + + Gets the qualified name of the current node. + + + + + Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the associated with this implementation. + + + + + Gets the type of the current node. + + + + + Gets the prefix associated with the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the text value of the current node. + + + + + Gets the xml:lang scope for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator. + + A new HtmlNavigator object positioned at the same node as the original HtmlNavigator. + + + + Gets the value of the HTML attribute with the specified LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node. + + + + Returns the value of the namespace node corresponding to the specified local name. + Always returns string.Empty for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns string.Empty for the HtmlNavigator implementation. + + + + Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator. + + The HtmlNavigator that you want to compare against. + true if the two navigators have the same position, otherwise, false. + + + + Moves to the same position as the specified HtmlNavigator. + + The HtmlNavigator positioned on the node that you want to move to. + true if successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves to the HTML attribute with matching LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change. + + + + Moves to the first sibling of the current node. + + true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the first HTML attribute. + + true if the navigator is successful moving to the first HTML attribute, otherwise, false. + + + + Moves to the first child of the current node. + + true if there is a first child node, otherwise false. + + + + Moves the XPathNavigator to the first namespace node of the current element. + Always returns false for the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the node that has an attribute of type ID whose value matches the specified string. + + A string representing the ID value of the node to which you want to move. This argument does not need to be atomized. + true if the move was successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves the XPathNavigator to the namespace node with the specified local name. + Always returns false for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the next sibling of the current node. + + true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged. + + + + Moves to the next HTML attribute. + + + + + + Moves the XPathNavigator to the next namespace node. + Always returns falsefor the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the parent of the current node. + + true if there is a parent node, otherwise false. + + + + Moves to the previous sibling of the current node. + + true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the root node to which the current node belongs. + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + A utility class to get HTML document from HTTP. + + + + + Represents the method that will handle the PostResponse event. + + + + + Represents the method that will handle the PreHandleDocument event. + + + + + Represents the method that will handle the PreRequest event. + + + + + Occurs after an HTTP request has been executed. + + + + + Occurs before an HTML document is handled. + + + + + Occurs before an HTTP request is executed. + + + + + Gets or Sets a value indicating if document encoding must be automatically detected. + + + + + Gets or sets the Encoding used to override the response stream from any web request + + + + + Gets or Sets a value indicating whether to get document only from the cache. + If this is set to true and document is not found in the cache, nothing will be loaded. + + + + + Gets or Sets the cache path. If null, no caching mechanism will be used. + + + + + Gets a value indicating if the last document was retrieved from the cache. + + + + + Gets the last request duration in milliseconds. + + + + + Gets the URI of the Internet resource that actually responded to the request. + + + + + Gets the last request status. + + + + + Gets or Sets the size of the buffer used for memory operations. + + + + + Gets or Sets a value indicating if cookies will be stored. + + + + Gets or sets a value indicating whether redirect should be captured instead of the current location. + True if capture redirect, false if not. + + + + Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest + + + + + Gets or Sets a value indicating whether the caching mechanisms should be used or not. + + + + + Gets the MIME content type for a given path extension. + + The input path extension. + The default content type to return if any error occurs. + The path extension's MIME content type. + + + + Gets the path extension for a given MIME content type. + + The input MIME content type. + The default path extension to return if any error occurs. + The MIME content type's path extension. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The requested type. + An newly created instance. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + + Gets the cache file path for a specified url. + + The url fo which to retrieve the cache path. May not be null. + The cache file path. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The XmlTextWriter to which you want to save to. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + An newly created instance. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + An newly created instance. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null. + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + + + + Wraps getting AppDomain permissions + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + An interface for getting permissions of the running application + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents. + + + + + Gets or sets the token representing code end. + + + + + Gets or sets the token representing code start. + + + + + Gets or sets the token representing code directive. + + + + + Gets or sets the token representing response write directive. + + + + + Creates a mixed code document instance. + + + + + Gets the code represented by the mixed code document seen as a template. + + + + + Gets the list of code fragments in the document. + + + + + Gets the list of all fragments in the document. + + + + + Gets the encoding of the stream used to read the document. + + + + + Gets the list of text fragments in the document. + + + + + Create a code fragment instances. + + The newly created code fragment instance. + + + + Create a text fragment instances. + + The newly created text fragment instance. + + + + Loads a mixed code document from a stream. + + The input stream. + + + + Loads a mixed code document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads the mixed code document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Loads a mixed document from a text + + The text to load. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + The character encoding to use. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + The character encoding to use. + + + + Saves the mixed document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the mixed document to the specified TextWriter. + + The TextWriter to which you want to save. + + + + Represents a fragment of code in a mixed code document. + + + + + Gets the fragment code text. + + + + + Represents a base class for fragments in a mixed code document. + + + + + Gets the fragement text. + + + + + Gets the type of fragment. + + + + + Gets the line number of the fragment. + + + + + Gets the line position (column) of the fragment. + + + + + Gets the fragment position in the document's stream. + + + + + Represents a list of mixed code fragments. + + + + + Gets the Document + + + + + Gets the number of fragments contained in the list. + + + + + Gets a fragment from the list using its index. + + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Appends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Prepends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. + + The fragment to remove. May not be null. + + + + Remove all fragments from the list. + + + + + Remove a fragment from the list of fragments, using its index in the list. + + The index of the fragment to remove. + + + + Represents a fragment enumerator. + + + + + Gets the current element in the collection. + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Represents the type of fragment in a mixed code document. + + + + + The fragment contains code. + + + + + The fragment contains text. + + + + + Represents a fragment of text in a mixed code document. + + + + + Gets the fragment text. + + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/Net40-client/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/Net40-client/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..ca83c790d9f3203e514fd17388ee63feeb1cac97 GIT binary patch literal 142848 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 z z59jwRh_7xx>xQz_eT&LlZ~NTh=XMlqdp2-a^5B&pEP4F3PhNEMwxjpmR&ebr_x@A$ zq5Z%4#zWzunzzlwORtN5aq5+^m+may^6~OTU6Ft6Y`HA3x%pRbuHU+~Db-o}R7Lut zwWjHf-(OMCdET{w>G!=E*>mOt6W{vRr*BHHd-e9jzwN*0)8}7&;J;ohd%kH^`7@LM zbpB(XNv}Tim$Op0tohmcea8)$yRLb;;?6^huYK|4C$D&FQP%^He)BJHKJnO=S38#e z*VElKCtck3-ADGH`%Hg%{<2?|X)kI=}e&h1){wzP&g&r=+Clo=+qvJTz-x z`PbcqwI2AVS5iNVz5T*Ru6*d}dGEjSk(+M4?#UlaS+w`;O!2MrkKcUv?ceRZ z<9o>q_W%C2z4v};!ppbied*xM1C1*l|F?e`Jowegv!Bhs;K=9t6GhFxxbXOvFMMcA zSMhb5w(Kf;IQGg{-;G{A=SEX_^VQ+q%Pybz`oU`=|Iq$M;HbaeU(j*RnN9!kfa{Fml3{Ln--io3-4;&eM z|AN_})9*R{jtA!!-F?gFH{E(n{+7L)zxD2u_g6mr$i7cs{q(VAH@@)Uo9=J<^6WR7 zfA^JZwrnrFyeoKpLG&vp)Wv>#QCqlg(wQc-=j3~@IAYiSmv21g=JOh+-!|dPmmd6l z@jZ|K^7hxBJAcND&lVjz_}C|wynN`7f8P6id-ny;9R1TH@5y|4_JMzYY4E0=!4)~so&IdcjZJ@k?A@)Y4~RXi(WkO_2Zwa-*Dqy*FSjmoiBX+ z;agU``tH7p(l_qD`&0Md@uP~%_ip&-Yi|8OsP2(FE-!fUr}NHyVdK4RPtTmct99@G zlT!}_r?;Q;g=2a?SbtB^tzW-%!uO}Y7}|8nYr*nD{2*}D%b3tO$bX0}aGz?-us++X z#F^OG9h*;xmH0dB+@QIYi$ur~xK;w1c*2UO5ZcDU^g0?2px5?a4Gy7z2WFW`Ab%-Z<8c+9&)SI|IcJqnzDfQi zagK^79qdsZ9(W;@&DiEP=3G+>9G3cJ*ywg2KFrc;&o(7-oP?jS;E@>~b|H2iEZm9| z&lPYhohLQ)9EHK@3UbuqKLaJ%pLHe+_~X=kK>}eQq0aWm(vVAm zZGS#aKk(Rr!B+hTfoC;v@O(t4aEKqEA%}TB4V&}hC6?W*K?EQtq@`oJSZ$oOvq&b6&Z?b-O7kN)vkqMlaaYnTeNPIz&uLo+pl zJ+XY`lblEc&-BdM;dr9DqME?Nw0too%USYX@p#MEpr4dwE{@R>b<48>)5rkyW%NNW g?>h3LjPU6HE`Mhns0bP^+`nQC?%!GW|K7X%->wCIA2c literal 0 HcmV?d00001 diff --git a/packages/HtmlAgilityPack.1.6.5/lib/Net40-client/HtmlAgilityPack.xml b/packages/HtmlAgilityPack.1.6.5/lib/Net40-client/HtmlAgilityPack.xml new file mode 100644 index 0000000..cacbaa0 --- /dev/null +++ b/packages/HtmlAgilityPack.1.6.5/lib/Net40-client/HtmlAgilityPack.xml @@ -0,0 +1,2644 @@ + + + + HtmlAgilityPack + + + +

+ A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. May not be null. + true to detect encoding, false otherwise. + + + + Detects the encoding of an HTML file. + + Path for the file containing the HTML document to detect. May not be null. + The detected encoding. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. May not be null. + The character encoding to use. May not be null. + + + + Creates a new XPathNavigator object for navigating this HTML document. + + An XPathNavigator object. The XPathNavigator is positioned on the root of the document. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Creates a new XPathNavigator object for navigating this HTML node. + + An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document. + + + + Creates an XPathNavigator using the root of this document. + + + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects the first XmlNode that matches the XPath expression. + + The XPath expression. May not be null. + The first that matches the XPath query or a null reference if no matching node was found. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents an HTML navigator on an HTML document seen as a data store. + + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Gets the base URI for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the current HTML document. + + + + + Gets the current HTML node. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node is an empty element. + + + + + Gets the name of the current HTML node without the namespace prefix. + + + + + Gets the qualified name of the current node. + + + + + Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the associated with this implementation. + + + + + Gets the type of the current node. + + + + + Gets the prefix associated with the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the text value of the current node. + + + + + Gets the xml:lang scope for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator. + + A new HtmlNavigator object positioned at the same node as the original HtmlNavigator. + + + + Gets the value of the HTML attribute with the specified LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node. + + + + Returns the value of the namespace node corresponding to the specified local name. + Always returns string.Empty for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns string.Empty for the HtmlNavigator implementation. + + + + Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator. + + The HtmlNavigator that you want to compare against. + true if the two navigators have the same position, otherwise, false. + + + + Moves to the same position as the specified HtmlNavigator. + + The HtmlNavigator positioned on the node that you want to move to. + true if successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves to the HTML attribute with matching LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change. + + + + Moves to the first sibling of the current node. + + true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the first HTML attribute. + + true if the navigator is successful moving to the first HTML attribute, otherwise, false. + + + + Moves to the first child of the current node. + + true if there is a first child node, otherwise false. + + + + Moves the XPathNavigator to the first namespace node of the current element. + Always returns false for the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the node that has an attribute of type ID whose value matches the specified string. + + A string representing the ID value of the node to which you want to move. This argument does not need to be atomized. + true if the move was successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves the XPathNavigator to the namespace node with the specified local name. + Always returns false for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the next sibling of the current node. + + true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged. + + + + Moves to the next HTML attribute. + + + + + + Moves the XPathNavigator to the next namespace node. + Always returns falsefor the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the parent of the current node. + + true if there is a parent node, otherwise false. + + + + Moves to the previous sibling of the current node. + + true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the root node to which the current node belongs. + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + A utility class to get HTML document from HTTP. + + + + + Represents the method that will handle the PostResponse event. + + + + + Represents the method that will handle the PreHandleDocument event. + + + + + Represents the method that will handle the PreRequest event. + + + + + Occurs after an HTTP request has been executed. + + + + + Occurs before an HTML document is handled. + + + + + Occurs before an HTTP request is executed. + + + + + Gets or Sets a value indicating if document encoding must be automatically detected. + + + + + Gets or sets the Encoding used to override the response stream from any web request + + + + + Gets or Sets a value indicating whether to get document only from the cache. + If this is set to true and document is not found in the cache, nothing will be loaded. + + + + + Gets or Sets the cache path. If null, no caching mechanism will be used. + + + + + Gets a value indicating if the last document was retrieved from the cache. + + + + + Gets the last request duration in milliseconds. + + + + + Gets the URI of the Internet resource that actually responded to the request. + + + + + Gets the last request status. + + + + + Gets or Sets the size of the buffer used for memory operations. + + + + + Gets or Sets a value indicating if cookies will be stored. + + + + Gets or sets a value indicating whether redirect should be captured instead of the current location. + True if capture redirect, false if not. + + + + Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest + + + + + Gets or Sets a value indicating whether the caching mechanisms should be used or not. + + + + + Gets the MIME content type for a given path extension. + + The input path extension. + The default content type to return if any error occurs. + The path extension's MIME content type. + + + + Gets the path extension for a given MIME content type. + + The input MIME content type. + The default path extension to return if any error occurs. + The MIME content type's path extension. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The requested type. + An newly created instance. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + + Gets the cache file path for a specified url. + + The url fo which to retrieve the cache path. May not be null. + The cache file path. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The XmlTextWriter to which you want to save to. + + + Gets or sets the web browser timeout. + + + + Gets or sets the web browser delay. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + A new HTML document. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + (Optional) Check if the browser script has all been run and completed. + A new HTML document. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + (Optional) Check if the browser script has all been run and completed. + A new HTML document. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + An newly created instance. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + An newly created instance. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null. + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + + + + Wraps getting AppDomain permissions + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + An interface for getting permissions of the running application + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents. + + + + + Gets or sets the token representing code end. + + + + + Gets or sets the token representing code start. + + + + + Gets or sets the token representing code directive. + + + + + Gets or sets the token representing response write directive. + + + + + Creates a mixed code document instance. + + + + + Gets the code represented by the mixed code document seen as a template. + + + + + Gets the list of code fragments in the document. + + + + + Gets the list of all fragments in the document. + + + + + Gets the encoding of the stream used to read the document. + + + + + Gets the list of text fragments in the document. + + + + + Create a code fragment instances. + + The newly created code fragment instance. + + + + Create a text fragment instances. + + The newly created text fragment instance. + + + + Loads a mixed code document from a stream. + + The input stream. + + + + Loads a mixed code document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads the mixed code document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Loads a mixed document from a text + + The text to load. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + The character encoding to use. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + The character encoding to use. + + + + Saves the mixed document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the mixed document to the specified TextWriter. + + The TextWriter to which you want to save. + + + + Represents a fragment of code in a mixed code document. + + + + + Gets the fragment code text. + + + + + Represents a base class for fragments in a mixed code document. + + + + + Gets the fragement text. + + + + + Gets the type of fragment. + + + + + Gets the line number of the fragment. + + + + + Gets the line position (column) of the fragment. + + + + + Gets the fragment position in the document's stream. + + + + + Represents a list of mixed code fragments. + + + + + Gets the Document + + + + + Gets the number of fragments contained in the list. + + + + + Gets a fragment from the list using its index. + + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Appends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Prepends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. + + The fragment to remove. May not be null. + + + + Remove all fragments from the list. + + + + + Remove a fragment from the list of fragments, using its index in the list. + + The index of the fragment to remove. + + + + Represents a fragment enumerator. + + + + + Gets the current element in the collection. + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Represents the type of fragment in a mixed code document. + + + + + The fragment contains code. + + + + + The fragment contains text. + + + + + Represents a fragment of text in a mixed code document. + + + + + Gets the fragment text. + + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/Net40/HtmlAgilityPack.XML b/packages/HtmlAgilityPack.1.6.5/lib/Net40/HtmlAgilityPack.XML new file mode 100644 index 0000000..cacbaa0 --- /dev/null +++ b/packages/HtmlAgilityPack.1.6.5/lib/Net40/HtmlAgilityPack.XML @@ -0,0 +1,2644 @@ + + + + HtmlAgilityPack + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. May not be null. + true to detect encoding, false otherwise. + + + + Detects the encoding of an HTML file. + + Path for the file containing the HTML document to detect. May not be null. + The detected encoding. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. May not be null. + The character encoding to use. May not be null. + + + + Creates a new XPathNavigator object for navigating this HTML document. + + An XPathNavigator object. The XPathNavigator is positioned on the root of the document. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Creates a new XPathNavigator object for navigating this HTML node. + + An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document. + + + + Creates an XPathNavigator using the root of this document. + + + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects the first XmlNode that matches the XPath expression. + + The XPath expression. May not be null. + The first that matches the XPath query or a null reference if no matching node was found. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents an HTML navigator on an HTML document seen as a data store. + + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Gets the base URI for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the current HTML document. + + + + + Gets the current HTML node. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node is an empty element. + + + + + Gets the name of the current HTML node without the namespace prefix. + + + + + Gets the qualified name of the current node. + + + + + Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the associated with this implementation. + + + + + Gets the type of the current node. + + + + + Gets the prefix associated with the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the text value of the current node. + + + + + Gets the xml:lang scope for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator. + + A new HtmlNavigator object positioned at the same node as the original HtmlNavigator. + + + + Gets the value of the HTML attribute with the specified LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node. + + + + Returns the value of the namespace node corresponding to the specified local name. + Always returns string.Empty for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns string.Empty for the HtmlNavigator implementation. + + + + Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator. + + The HtmlNavigator that you want to compare against. + true if the two navigators have the same position, otherwise, false. + + + + Moves to the same position as the specified HtmlNavigator. + + The HtmlNavigator positioned on the node that you want to move to. + true if successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves to the HTML attribute with matching LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change. + + + + Moves to the first sibling of the current node. + + true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the first HTML attribute. + + true if the navigator is successful moving to the first HTML attribute, otherwise, false. + + + + Moves to the first child of the current node. + + true if there is a first child node, otherwise false. + + + + Moves the XPathNavigator to the first namespace node of the current element. + Always returns false for the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the node that has an attribute of type ID whose value matches the specified string. + + A string representing the ID value of the node to which you want to move. This argument does not need to be atomized. + true if the move was successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves the XPathNavigator to the namespace node with the specified local name. + Always returns false for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the next sibling of the current node. + + true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged. + + + + Moves to the next HTML attribute. + + + + + + Moves the XPathNavigator to the next namespace node. + Always returns falsefor the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the parent of the current node. + + true if there is a parent node, otherwise false. + + + + Moves to the previous sibling of the current node. + + true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the root node to which the current node belongs. + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + A utility class to get HTML document from HTTP. + + + + + Represents the method that will handle the PostResponse event. + + + + + Represents the method that will handle the PreHandleDocument event. + + + + + Represents the method that will handle the PreRequest event. + + + + + Occurs after an HTTP request has been executed. + + + + + Occurs before an HTML document is handled. + + + + + Occurs before an HTTP request is executed. + + + + + Gets or Sets a value indicating if document encoding must be automatically detected. + + + + + Gets or sets the Encoding used to override the response stream from any web request + + + + + Gets or Sets a value indicating whether to get document only from the cache. + If this is set to true and document is not found in the cache, nothing will be loaded. + + + + + Gets or Sets the cache path. If null, no caching mechanism will be used. + + + + + Gets a value indicating if the last document was retrieved from the cache. + + + + + Gets the last request duration in milliseconds. + + + + + Gets the URI of the Internet resource that actually responded to the request. + + + + + Gets the last request status. + + + + + Gets or Sets the size of the buffer used for memory operations. + + + + + Gets or Sets a value indicating if cookies will be stored. + + + + Gets or sets a value indicating whether redirect should be captured instead of the current location. + True if capture redirect, false if not. + + + + Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest + + + + + Gets or Sets a value indicating whether the caching mechanisms should be used or not. + + + + + Gets the MIME content type for a given path extension. + + The input path extension. + The default content type to return if any error occurs. + The path extension's MIME content type. + + + + Gets the path extension for a given MIME content type. + + The input MIME content type. + The default path extension to return if any error occurs. + The MIME content type's path extension. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The requested type. + An newly created instance. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + + Gets the cache file path for a specified url. + + The url fo which to retrieve the cache path. May not be null. + The cache file path. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The XmlTextWriter to which you want to save to. + + + Gets or sets the web browser timeout. + + + + Gets or sets the web browser delay. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + A new HTML document. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + (Optional) Check if the browser script has all been run and completed. + A new HTML document. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + (Optional) Check if the browser script has all been run and completed. + A new HTML document. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + An newly created instance. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + An newly created instance. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null. + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + + + + Wraps getting AppDomain permissions + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + An interface for getting permissions of the running application + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents. + + + + + Gets or sets the token representing code end. + + + + + Gets or sets the token representing code start. + + + + + Gets or sets the token representing code directive. + + + + + Gets or sets the token representing response write directive. + + + + + Creates a mixed code document instance. + + + + + Gets the code represented by the mixed code document seen as a template. + + + + + Gets the list of code fragments in the document. + + + + + Gets the list of all fragments in the document. + + + + + Gets the encoding of the stream used to read the document. + + + + + Gets the list of text fragments in the document. + + + + + Create a code fragment instances. + + The newly created code fragment instance. + + + + Create a text fragment instances. + + The newly created text fragment instance. + + + + Loads a mixed code document from a stream. + + The input stream. + + + + Loads a mixed code document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads the mixed code document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Loads a mixed document from a text + + The text to load. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + The character encoding to use. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + The character encoding to use. + + + + Saves the mixed document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the mixed document to the specified TextWriter. + + The TextWriter to which you want to save. + + + + Represents a fragment of code in a mixed code document. + + + + + Gets the fragment code text. + + + + + Represents a base class for fragments in a mixed code document. + + + + + Gets the fragement text. + + + + + Gets the type of fragment. + + + + + Gets the line number of the fragment. + + + + + Gets the line position (column) of the fragment. + + + + + Gets the fragment position in the document's stream. + + + + + Represents a list of mixed code fragments. + + + + + Gets the Document + + + + + Gets the number of fragments contained in the list. + + + + + Gets a fragment from the list using its index. + + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Appends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Prepends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. + + The fragment to remove. May not be null. + + + + Remove all fragments from the list. + + + + + Remove a fragment from the list of fragments, using its index in the list. + + The index of the fragment to remove. + + + + Represents a fragment enumerator. + + + + + Gets the current element in the collection. + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Represents the type of fragment in a mixed code document. + + + + + The fragment contains code. + + + + + The fragment contains text. + + + + + Represents a fragment of text in a mixed code document. + + + + + Gets the fragment text. + + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/Net40/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/Net40/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..2a4ac17e723b4479d594377fd637332d272c66ad GIT binary patch literal 142848 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

vSMYp7 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

O{MG=8%E{OEpc@&8O-Bx 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 + + + HtmlAgilityPack + + + +

+ A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. May not be null. + true to detect encoding, false otherwise. + + + + Detects the encoding of an HTML file. + + Path for the file containing the HTML document to detect. May not be null. + The detected encoding. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. May not be null. + The character encoding to use. May not be null. + + + + Creates a new XPathNavigator object for navigating this HTML document. + + An XPathNavigator object. The XPathNavigator is positioned on the root of the document. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Creates a new XPathNavigator object for navigating this HTML node. + + An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document. + + + + Creates an XPathNavigator using the root of this document. + + + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects the first XmlNode that matches the XPath expression. + + The XPath expression. May not be null. + The first that matches the XPath query or a null reference if no matching node was found. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents an HTML navigator on an HTML document seen as a data store. + + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Gets the base URI for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the current HTML document. + + + + + Gets the current HTML node. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node is an empty element. + + + + + Gets the name of the current HTML node without the namespace prefix. + + + + + Gets the qualified name of the current node. + + + + + Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the associated with this implementation. + + + + + Gets the type of the current node. + + + + + Gets the prefix associated with the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the text value of the current node. + + + + + Gets the xml:lang scope for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator. + + A new HtmlNavigator object positioned at the same node as the original HtmlNavigator. + + + + Gets the value of the HTML attribute with the specified LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node. + + + + Returns the value of the namespace node corresponding to the specified local name. + Always returns string.Empty for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns string.Empty for the HtmlNavigator implementation. + + + + Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator. + + The HtmlNavigator that you want to compare against. + true if the two navigators have the same position, otherwise, false. + + + + Moves to the same position as the specified HtmlNavigator. + + The HtmlNavigator positioned on the node that you want to move to. + true if successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves to the HTML attribute with matching LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change. + + + + Moves to the first sibling of the current node. + + true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the first HTML attribute. + + true if the navigator is successful moving to the first HTML attribute, otherwise, false. + + + + Moves to the first child of the current node. + + true if there is a first child node, otherwise false. + + + + Moves the XPathNavigator to the first namespace node of the current element. + Always returns false for the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the node that has an attribute of type ID whose value matches the specified string. + + A string representing the ID value of the node to which you want to move. This argument does not need to be atomized. + true if the move was successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves the XPathNavigator to the namespace node with the specified local name. + Always returns false for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the next sibling of the current node. + + true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged. + + + + Moves to the next HTML attribute. + + + + + + Moves the XPathNavigator to the next namespace node. + Always returns falsefor the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the parent of the current node. + + true if there is a parent node, otherwise false. + + + + Moves to the previous sibling of the current node. + + true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the root node to which the current node belongs. + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + A utility class to get HTML document from HTTP. + + + + + Represents the method that will handle the PostResponse event. + + + + + Represents the method that will handle the PreHandleDocument event. + + + + + Represents the method that will handle the PreRequest event. + + + + + Occurs after an HTTP request has been executed. + + + + + Occurs before an HTML document is handled. + + + + + Occurs before an HTTP request is executed. + + + + + Gets or Sets a value indicating if document encoding must be automatically detected. + + + + + Gets or sets the Encoding used to override the response stream from any web request + + + + + Gets or Sets a value indicating whether to get document only from the cache. + If this is set to true and document is not found in the cache, nothing will be loaded. + + + + + Gets or Sets the cache path. If null, no caching mechanism will be used. + + + + + Gets a value indicating if the last document was retrieved from the cache. + + + + + Gets the last request duration in milliseconds. + + + + + Gets the URI of the Internet resource that actually responded to the request. + + + + + Gets the last request status. + + + + + Gets or Sets the size of the buffer used for memory operations. + + + + + Gets or Sets a value indicating if cookies will be stored. + + + + Gets or sets a value indicating whether redirect should be captured instead of the current location. + True if capture redirect, false if not. + + + + Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest + + + + + Gets or Sets a value indicating whether the caching mechanisms should be used or not. + + + + + Gets the MIME content type for a given path extension. + + The input path extension. + The default content type to return if any error occurs. + The path extension's MIME content type. + + + + Gets the path extension for a given MIME content type. + + The input MIME content type. + The default path extension to return if any error occurs. + The MIME content type's path extension. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The requested type. + An newly created instance. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + + Gets the cache file path for a specified url. + + The url fo which to retrieve the cache path. May not be null. + The cache file path. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The XmlTextWriter to which you want to save to. + + + Gets or sets the web browser timeout. + + + + Gets or sets the web browser delay. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + A new HTML document. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + (Optional) Check if the browser script has all been run and completed. + A new HTML document. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + (Optional) Check if the browser script has all been run and completed. + A new HTML document. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + An newly created instance. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + An newly created instance. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null. + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + + + + Wraps getting AppDomain permissions + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + An interface for getting permissions of the running application + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents. + + + + + Gets or sets the token representing code end. + + + + + Gets or sets the token representing code start. + + + + + Gets or sets the token representing code directive. + + + + + Gets or sets the token representing response write directive. + + + + + Creates a mixed code document instance. + + + + + Gets the code represented by the mixed code document seen as a template. + + + + + Gets the list of code fragments in the document. + + + + + Gets the list of all fragments in the document. + + + + + Gets the encoding of the stream used to read the document. + + + + + Gets the list of text fragments in the document. + + + + + Create a code fragment instances. + + The newly created code fragment instance. + + + + Create a text fragment instances. + + The newly created text fragment instance. + + + + Loads a mixed code document from a stream. + + The input stream. + + + + Loads a mixed code document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads the mixed code document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Loads a mixed document from a text + + The text to load. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + The character encoding to use. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + The character encoding to use. + + + + Saves the mixed document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the mixed document to the specified TextWriter. + + The TextWriter to which you want to save. + + + + Represents a fragment of code in a mixed code document. + + + + + Gets the fragment code text. + + + + + Represents a base class for fragments in a mixed code document. + + + + + Gets the fragement text. + + + + + Gets the type of fragment. + + + + + Gets the line number of the fragment. + + + + + Gets the line position (column) of the fragment. + + + + + Gets the fragment position in the document's stream. + + + + + Represents a list of mixed code fragments. + + + + + Gets the Document + + + + + Gets the number of fragments contained in the list. + + + + + Gets a fragment from the list using its index. + + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Appends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Prepends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. + + The fragment to remove. May not be null. + + + + Remove all fragments from the list. + + + + + Remove a fragment from the list of fragments, using its index in the list. + + The index of the fragment to remove. + + + + Represents a fragment enumerator. + + + + + Gets the current element in the collection. + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Represents the type of fragment in a mixed code document. + + + + + The fragment contains code. + + + + + The fragment contains text. + + + + + Represents a fragment of text in a mixed code document. + + + + + Gets the fragment text. + + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/Net45/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/Net45/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..9949a4ac7aacad13e6d05754afc3b1a5e9c48295 GIT binary patch literal 143872 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⁡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 + + + HtmlAgilityPack + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Used for downloading and parsing html from the internet + + + + + Allows for setting document defaults before loading + + + + + Begins the process of downloading an internet resource + + Url to the html document + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + + + + The exception that is thrown when a program contains invalid Microsoft intermediate language (MSIL) or metadata. Generally this indicates a bug in the compiler that generated the program. + + 2 + + + + Initializes a new instance of the class with default properties. + + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/NetCore45/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/NetCore45/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..30f580dac9c63e8e6bb33b7f8f72eb116a3b5407 GIT binary patch literal 89088 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 T{OYg}d+}1^|Ni~Y)4=}$dr5GV literal 0 HcmV?d00001 diff --git a/packages/HtmlAgilityPack.1.6.5/lib/netstandard1.3/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/netstandard1.3/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..2b3d415be4e35608b094b19ca10677ac43100d36 GIT binary patch literal 139776 zcmc${4VWBNl|Eim)zjV6^Fbyv>7IPfBqT%8-7_Sa5GNso0YbnC5fEY$F@#S8i>Y`A z@{8$oWD!|pA!0;ivw#>eBFiGOh>=AWvxr$l77-Bk@jsk;%9`_rd)BGoBkGKg_MCOb+O@%jJ!hWNqb^$8bKcsXMeqMW&qsr^&*^V% z%}o!pKJggGIljSj4tnOe*Q3&&b*A++H_UXL39jR$HM; QWXO2z$pFBgZ&oz4;gI zor?kD-yP#Uv}@>7r1D>VABu$VHx>E5p9jeI4jLlV7q>&H^ZPLmj1|lWgJ;YTvKUxgY?Mb#+i@ zhm@XCyrZZ#|4yY{@yEKkPNVbs{jruQXFV2W5$>A`%UhAvW5}x4^?u|dg3?9iIUgzD;&v}g zoAZzub;(XWlA;2i8Knh7JvR~#Fs?7j&4$#8vqD44s8_EIbjRc-@D`-rrZ<^~? z$gCWKjaxySVGA>+f`d^=l^o3simccUudi95YU_qe5I3S2&B%dQZgwl&2k8b_2?bHb zeN+=FDYKg5RXG5FNK4UIDQ7wC%0IW#3aqc&s9fJzw{if%oLgz*-t8=gv{)m^(j46g zW~G_MwWzTcN7s0^>vzGw{+HJzelmp#;BBRovzJo!FNPdLKLiK_S0&ei`N{ zHOjH;PX#OpV#RgfI-Y9n-bL8Dxil=;P7C&l1*MpDz`}xlns}FP^DvB(o}p_IfX`#r zAsDZZ$MHCiO>s$R_B$ZB!8}6FMA&jG%7w4nbzS>1IwA18mno++0VnDA=_tk zsmTJ2PhWXD2-{~&P%z56?fy)pDgpt`b*4EpPj=u4$Jycfv!EHCjZL+K{u&8(yW`Lw|-llv=>E7aOx5Dg#L!m3?@^G=pUND!y z{7^~-@1cm(J(g^ca4ikYY^FhfkSi_@3pfnIm57Ro2}mu21xz7rIfe$nUkYu3&8@bi z#38BRaIg`>v_O@STdOQOH=GZ|^=Vhj|A;Vu*Fk$E{>;)k&8 zi3z+^u)-oTKlp>geY+>!RxaOMLRUiXXT;l5%XDxwYEyO#7z~y-qwB6k$Lt^Hi$yo@ zFnQ=M~&I7~;`)GTDM|9iWOoB(o!6RLW#IMt| zE8PnEq7?hI?@-pFj48zTtG~9M{t>2EAAvtLrap#4|5zAQ$7ae|iFWYM9Y%|CRrF)% zo!-ksFj5$H5hdKA!%Df`XIF7fP()O4htnzQ!Q6b_NABtB6v37-3!I!XCgQ|T6(?-& z(&ELkM=Nn&q{=ONA2hJ4d5)myTqPAV;^3sH0nQ3>kHJ~?7?os?frTS(UXNyIOUKN# zGY0u#yl>z9K2#)Ez)WiJc{VdEv!d=ZW;aKN8)tneIy|zDuAFsDgwCv^^JX35VI~k} zGQWRnba;AyK055{uMzqOy3!%sI@a@XzT{-&%#}WvZ}w@T!d2)EFvNtc8-f!6cBJwh zjisJ+d#b(hGiO7uK2EnSttD@7EG+M6Y;SB&Z8>lDlWFw{s$q_tOb@eqCV0e{x8Hs{ zQ$`SrJ{+^Bxdne24Jvl>oHMcKpNlyDB(l*{AFr=fT?MHy{C?zGYF59i39c$NIO~EF zfvfl6NF7G;B#OsSd~Z$s0L2eRV)0D3JJ)}J+uhoqbGv)`8{O`v0d!CKqGF$8jB|c~ z`pxiUUQk>gQ+ob#YEv>(z=+l5uY-IcPG?tVbPfs(=WjlOn;D@eOpnT_APJ$}P3>HF zyv}HBEu)K!j6SS0x{!0fwXD%6>Pm0;WHjDi&1^6%Vs3IT?1^ci^rctTiG`|OGPTnz3sh!8jqwGeyo}9OuhU_Me=r2b)YpzgYs3 z3)^MH%J2sPb0}Lad7yUbw4Oj^is4*noRjO;bD_6ry??A5rNUg8=r=1!rK>TvB5j ze4N^t^j6UOr^;u#l|k-jWP?Xwv(_fLSad7w&S&MD^7=@wC|XNt=`>s2e6|9Qq_P#b z0$Uh6)ug@z-(`dEBNO#49LiwguZM^d&q9fPpBiZ!+psr}6KSH3g0Obz$S~?OOhOPj zr#VgMINkw>W!HJo`NS~|ZA2MkXb7*(#Scj_MvspeA;x}8&$q`pO;dD?ag4`^?O>ML z?&HVY=rJ`1A^FoWXgt~AC?4Wk3Vh@Tq9c$hAF zIQTk&wR%*X(btZdEF)z`Uj|1qzG}PS9CTpBcDKS|Gx#=A>1#-e74%T406jr2SDKs- z;DTIpM*FbYg%6JbP)=o9M)GpimFxStY2waeHad@coP*!1ZTy(-t0ee%3YR?wqSx1^ zPuElcN9B4EnN(uBdmhBd?#H37{BtYQSg*TK*K#{9)kXRdq$-cJjE=I->ieM<`dYwd z!-R;rXxd>|A)eah*K_M=~kls=n*8~xPn#1nLlCnM3_dvGXU+QiO5PZ3gMqN~UWAJC_d$TzBB@dc{ zwNUr{Z15LSYi&kplBfrF#~SlfBr2cbj@K2coPh>OP(yJBH6)&C9#(Y582h|L+P%h(+OqidB!nn zk400Z=NbHOx}y-LeRny|Lk?z+c3)P=4c;Iwo{x%@&%>=RgX?cb6Z{I>@qTy0UsNhP zPa`LFlGTm^Zl4@HDiAXjbS5b|fiOJNCpy~FeSO;MxJ$~zeP}zOJgy7 zr?>eV*-FeF<@$`X;1~1yegoR#AWXsMu*mXEScu@yiCAMXSF$wRsr}$N7@p-X zyz;^=#|dJe@z@59sA+HH@#Wg%+M88++pUn*og2vGvd{GVa@+IEL(g*z{&=lCNxNX+ zqdK5;9Lfyj5L^c8pzL8KP*RT5|6JeDD7^cS{?cf0DlWX@Idsq1+fd|{17yAA5`2NoHn=p0g?}&Frx%;1CMZ$XNT7|0R{#8_UHyLGEB^#Ir;|4{(N=Js-*|#g$ z4Mh=J(2<)TZEcx67>%mp`UxS_)s;L;TxG0+mVqg2-~99Xj7>g<90b=-^}dX>jX z)%htEHE*ylawlr5eTNzenE7`~PEwtE!C~iW@eu+`T)QqobzE92mEU}%Wq}G30@|BKa#?U4a;!QhO(0J1p z4lNb@AXK_JGrqqyGZ~Ww?dsBjk)xLTpRD_{#4CLAby&(UIhd7PIMP;l$ufSqVO8C# z!ip7#Kj+xZFRU;wb1*Hz9j2W6B4)_ug#iZk+(h01&duLGDt#9UVySZNE<=Kz+_Yr7 z7xrhfdPrPbyQDn>)Ue3aI9x7Q)U8cX4V&aLdqtHxO>5GZ%En;K!6X{03oE*oThqpH z&d?+2X=|y{5&!VVx8DwnJq=)f7EMT!p3j+X@732o!N<^EK9c9G1@~3Clb0k`R53t@ zl?(1*T|~zR&wNnIx&5(@{&QWqU9TrTI-@G)J4h^3A-OsX+G<&ZR}|>MLxxvv!Ey0i zyAlTgTTw-_6mOK}efC89y6XuPn~z<0$(5nL78V!bRSg}25-K!?ZoFZg6@?WN2rU`) z6@-G^0qZ+BqrO%XiW&9wns8V~eX}MUUs{%}r^=O%%NoqqY(0-sLm^ixzN5A!ThBPh z8UT z`^`sZ5GBH`eu=y)-JR+_2!omcdHw2#)a}F`u>P!q^swOGDZpWf=@7$WKQC=a@c+m3b3Zu=_?hv zGvWUX`Iqthtws7(T#4z_QtVUE@jWETPY|>!UG@sNFWqO}QR+L@tqh^i^0E41Y~K+^ zBCXPWX&+ABYIx10&qxY^Lbaya$ z-h!3%sE0|wl0C$GSogt4ra94|P zRKOY>7bnilIemzUg7iU00OD^1vNW0#d^{Q~+mSKe03P^MznN(rHKzbrTlxt^sNeLrj-# z54N7ZF?%RVG!m%47n%9%4B%gVj}~2n8471e-}{m?9MU>14y z^RLKAKgLZVUOoSFpyf(#C#;u+cnwpzUfRD_CzoeObCJGjRCFJwH3xX__77t=}sh-R{J^_0!elYKQeMI!yyn-YIA3-Pb#MQk$5& zwr|;KIyB1Lb$XF^EB(a_PP`0=z9wxw!84z1A?|b@W1Xgn^*m@-$pcULzE_V!`?;Xx zZ$BK2WgX^Sw=3@x^48JtLY&6MM|$vn#wX-u81++>a`DknsY6mYTEwIKcytVpUggnZ z9N`_B6ZCE=cRXh_hM>?D?B1$GdF5_qqDAiTCfSIr0$+3P*5cxjD9kD z4MwjbWH9EEagf0{ND(p^Lu4#47z-33gRz*5g$84xB4jX*huCuy8dE2UsHiY_%gFnZ z&7-KOFnDK@x83GZR8$x|+)7*5^JSYyQBh&=HjsC-&7-KOFnE`d_Z6E*QBh&=wve~O z=228s7`*Gr`>M^OsHiY_JIK4m=228s7`)rb`yj?brqN2j!Jwe{T+dPVj3WN7Nc@Nk;ii!$@ z_X>I6vw0L16$bAu@*cE#6crT)FP#DJ`!p0arq6%__Al?CtTHjkpB!r+Y|?`fMyQBh&=CXn}x&7-KOFnB(BBQ}qs zqQc@OF^*qRpeIs4#eU zk@s7hM^RB>@OF{+lFg&2s4#eskoP;AM^RB>@SY^^Wt&G)QDN|2An*4!kD{W&;Jr@X zD>jd!qQc@cPO7 zgUzF;s4#d7$a~%9QB+hIyyM9GADc%}QDN|wk@tqpqo}Abc&o|#qs^nJs4#eI$$Qi0 zQB+hIyiMf&$>vd1R2aM~$a~A?QB+hIyz9vOUzHjQBh&=rjz#tn@3Sm zVerc2U1#$sDk==#AbI~_^C&7R4Bk=XZL@h46%__=DS7{B^C&7R4BlzvU2pR!Dk==# zndIGI^C&7R4Bi^@ZnSw66%__=EqPzGc@z~D25&QYH`zRjiVA~wDS2PAc@z~D2JcGp zzHIX-Dk==#b>!V_^C&7R4Bk!TeZ}TcR8$zeJILE%^C&7R4Bk%izH0L*Dk==#{p8(Z z^C&7R4Bl??zGm|%Dk==#l6crT)Z#8-M**uDh z3WIkpdH-hfC@Lxp-g@%xw|Nv56$Wn;dEd2p6crT)?^5!1**uDh3WK+mynnZO6crT) z??&<-uz3^}6$WnydARXz`h%jP!r@SY;?M>db5qQc<4Ox|NQkD{W&;Jr!S6E=^cqQc z@Qx#|YpT^=ii!$@w~V}Yn@3SmVerl*Z<5WUsHiY_7mzp2=228s7`zSS9cuF^Dk==# z<>Xy$^C&7R4Bl4qK5O$RDk==#_2g}}c@z~D25$#>pR;)s6%_{W4)U(Cc@z~D2Jas7 zzG?F)Dk==#gXBGG^C&7R4Bn&U{mAA~R8$zer^tKE=228s7`*4n`?1ZVsHiY_uaNh+ z&7-KOFnDj0hxIjIyc@z~D2Jc4l zdTbs=MTNoJLEb?&kD{W&;N4E1Z}TWBDh%FTDk==#o8+ywc@z~D z25&EUXV^T7iVB05YXk3Wn@3SmVerO~caF`YsHiY_dGao?c@z~D25$;^pR{=t6%_`r zm%K}D9z{ik!JA3mWj2qZqQcvKHjkpB!r)y&Ue4xGR8$ze>&R=i zc@z~D25$#>2irV~iVA~w2YE%CM^RB>@a`e+p&3?tDJm)q-Y)W1_gXxPiVB1GD0yeu zJc^16gZDIf=h!@oiVB1G5_#v^Jc^16gZBn`CpTF2qo}Abcu)M^RB>@Ya*pYV#;6Dh%Fc^4e@3MMZ_d zyNtX8Y#v2Lg~8iGUWd)2sHiY_+sNy*c@z~D25$#>T{e%RqQc@a`jT zg3Y6-s4#dBkvGZaQB+hIyeG(;Z1X58Dh%Fpm_f#&7-KOFnDvwyUpfNR8$DByXoTN`9@x} z#3kPyO*y~ExjO;xBD%5?hx|&T&vlD>d8Xmbc>fM-w{_>_s3qSzcpdnea#NUc zj@_mJy)2f4YEO0d4rB_=g9>Omgo95&*E`6CYb@end<2FRhYe+*$_5vM*4Lg^3t8E} zl{CA-$mWAfAaox%aA7w1B#yYCR6*X&4lacl6p3LS2(^d_KLx2grh80Brai4$9qAH& z4^Fu~!{0sUI9SeV^3D58 z&V^E&!bP=C+lxiD3Ik(Dr%8(yVKsU0({XNbPWqEGu?-@B({V1HBC*h{mZ6oyCDe7J zTL|zV7q5f|JFzP_r{!I7e+PuLEC^C=O$T>E^1q5rsaG#dFn(aNUW-F-WhstA!T$;< zvKU7itDzPAn<467&rrd7u^xA0KXHFCIS9KuZbqUHKXUrS%tESsdbWF7{{h+V-u_&+ zdqICAe)}}=KK}+}ogM21SJD+tWzXxIqJ5r~r7=gj@*r)urg%WW$6vRFXS$R|6ol19)1X6>K~2ipN+{c#N=0E@*6SPZMXApi^&sW^0b&dJ0=gs+u`^IRq^M`60*5|zE+@@WMU({k!%(azQf$pZN zXK~k9Jp()Mm=s8P{9l0om?Jt&T$=B0W(fEgFz~Z}`6(Dyx7f^Ju&}Z2W(f;}=T?}# zEKF9$uy_}8=*y35?8gs`YKlfT_&jPfu5loXMX*xd_<;ue7D!fDUhDci;keS%@H8A$ zPeN{PgmUiC-cX zs3ch{c@!LoRH5<(opTvK2W1IZf0%2K@KD;O6V*gB+s&cj;KSI0d44l%bjClP z8b5G~Q4bXKBNp_1Y}C!DiT+*HA!&6R1gV=|K=Te;yvq{tYfaq@vC~qNH&yJU%WK6# zcQk~aGKDSW*;H#{uGFH(GB2R{!ZGn>dk6}Dvr=-pj@E74651ZiTriaNRstHopbgIk zoGr_tle0_?0IY}rInZ;D(@|&sxs@}a?K{z}tmK{xoEwpJ8ZcLWP$!Y3`x(t_bvM5c z5m06F5?734dYPySr1Ql<=~bz~58p`S$^2pN*$K!202)mIIRL-}`#UF4f1VTE@tg?7 zGax3P6V$ks)!6ED0>!YMQmz~TI6DI50KhpBAO`@}5O_m}PkomM}0T{(Bd zlXeU;Mus~Po_fj75dRkHA!T>Ciq53(|SKQj`&`wAAMg73OL z6Tz?YOcZUhMCT;f-hOlpIbxH0zwh{NW{4c7n3Mn(#2^<%~ z9J?0`Om=m#Jb_Rk=F!c#4v@n``pN9ldaT>PuGIf23|3r-MX%E?hBUVd8H+$eZqxG9 zkg*8%2w~Fl8va#8o1*0xHSHzBk8w-(+U$>@3RIOG@2bNxHO_JRd$DX(34 zQN(MPg8u@KWD(%OT4`AHo`h)aUgYCBCp9?Efwgf%pWwkdu&{i$&yH8t`PF!H1}ko2 z9f}F1nR?}5_reT%CI2YWj>ZP-e#DRp|njikt+W1kWRRM;h1n`WNkh#Z}Law6r&tGZ4pt^|Xx34L+xY z!_JKBw7*>EhfeuV(Q$Xf^rIVE82sX}-y&ahr1Z&GfK3l$#kl4bX9tIY=jqGd!}L$2 z!>hUR`f5(B+3X5AqZ=DW6RcTZVmMVkM$afbeKqzTPp-zoL48~}sJl)2LR&{=XtZCM zMq}U4wP{_a&zTW^w}C6zP2Hy3$@8sOpGg0$Po!6QB4K9xUu-a!AOAfM$ir#E^Yksv z`xAMD=W7@X#PW2-!UFnqJzB$A%A_5y&%Gm1$2P{eIjF;2^k=x9t2cTr zSIb<+TCOe5j9K-zovKUi)TQR7RE`6)P-ZIhA-bqqhp`il?Q=04hNmvhJ^r#Ci2i9i z?a4Y1VUKjuU%b2YI0w6sng0)L)ktG+s(HkT)}t;tZS$N)*q|ZG8?)iRBJXYQm^bHh z>rroX3X*rdqfE(<&)=k@z0`o~74g{}IlZDQgj6sU-6p@6(7YKvNhaxqn_zu22>kGlRB?3DHi+)2ia(yps-7DG>iL)I&uNy*LlKMYAVF`P^@wyibGt-}Jks+&?)*mWJ zW8ILH!x)_kyQcj2qD`}!)k-?E4}B5V;b0KSnzcqWh0`f7g+(?oY(&>=vFTKJ&E`83 z!)rFi4DRuAJ)ZXAe?<0JJt6NmNCueK<8JdOvDIs(TLJN2^}8Jhg1b8d8&-7TsX>wl?9v0HcW5ghj7xt^(aH#j27x=2d!R+-@vjx z`6x+~k5MnJc7miI4rpCEkiAjRy#GW^Jhcl%jq*7~T9z15xa>AkhibXG@NIDB;RX{f zI9WZpiFNyc4UmntV*6u=I@-K<^}vuM6WkIe zOW&teZiInxQ%jN^&WhqgGCzbO!o+j4vT|vXU$`Fr#j_xc&AIL)4qHP>KmVByWZrVh zKIWI`cZj4zm!-hyukXm~3d6Lk2 zVkrOT^!bOvS|VmsT;-@{{xVv;DJmHA9I-8plAjeeCbHT<>;$kVHK{^ing{&k>LSK&W&vWPN11fZ`_c)A2%L>&-ZS0hVx9X7ho#u3BJUVLlgaF zq330T?MRH9R86&rDfjQcJ|nq$WxU|aEI*p3f6SS9r5-a}r=g*1d_xXZm+KDnXZ%)) z(f8@jv)=bLo0kyyN(u5D1M@g(r!ZOPxfY8E^NwgZ?ZCMu(+;^eeF+x5!}L8}<=s&n zH}aTwgRpEO(=b0iYeWC5?+HqWm`mdWAdH{M`np~{LfkHb<+<9OLyj>Ezl-zIGF?{8i3`S4VOmQ^$$t9J3F;{@e#0pz~Oc zTJtvg_?m%n8y)U7Z`0^J(@u-);7S%g6$0WY#TdY%1pOheNBCLDEsWA^f4#b&{doDPQ*BJ~2yr@M%b#<7h)9%<&}%ZQRs zjrE4G?qtx&6fZqC?f|b+cfSiPv2Ie=uu0!+j1Q6H893T13Le7&gUE(MZ zJ!&gp5+cK=cxEyjB994p-wI!4WrA>ah@AHORn`gNS6Ouue&zxhqT}g`zQ#IUp#zS- z#;V8lna<4B_5K;>t%FMyerLef&n$ZNYa4}u{HSLZDgAZW|3D@2)Z(YB6u)`f-stJf8xt-00>n4KMcR}lNOX zMxC`?raB+mr0v2Rn7H{@dk(uC?V0@!?eR`8H*dzk6;?57Tu0bAU0hZ^*c(>x*XC`2 zaNO*7x=+yMRo?Q)&Gw=@O<0eEx`GdI5!Gf6u9ayyQJaovoqN$r2Uz!qA z=(-Jl(ol=-KcdOehZ(zjZV0}P?BvmFtNt?M41Sn#8{dtKyw`-+xPR)YaKkGu!% z!YPe)5QiC28Qe%22W2V}J-;2IE@^bMHYQrP^g+wC<>Pd%Q}U_VD1=iwgr|f$PbRmc zTHk23K8%nrSuKoW^mym2uj?4$!>v{NJ~d7$uEp9Y-!DB>;$%G9!-oc#9M4GyQ*aRX zAwQ?yk;!h0Zju*TM|#+qXER&QoBf+`Qu=^7Da{v~YUfIeGjzPJ$HbWpj7?`Q?aR+p zqDZ{DhiMsKM;yTy*5r)*{YZQIq8>D(rT%ONpW}`0@nxLC6uuJ3_q=@E-$=W9T}Zrh zB9d(7o`uGFP2tM*!Fy0{r@Y{T4y>M1t`yL-c4dNZpeh$)O7FJdt%c)gn1is97u9lo z&+5Uk?*N^+0`tlD#^u~+8SEbi*)}}m>qQq5JtT}5g&Rre(DkRN>qSa=SfY3MU!bc7 z$h`L6(OL+_hj0rJR~+dX;|6-=RY*0P-IRU~rk@xO0gzK^7}pfJjc|dq9X+DHFDQ@v z$28z`P#8~HLOS>+h%%DsQx$?zzC?n%!JNIjliv%j$>A5XDSMI?znCpjD!>RK zFWYJ5PD-c;&#|T0&tvTAjBvXNfiMwsBb8J)pna4L2WVb>WvjxAK^j&glZ>uJ-3 z+Lc+D!@W9l-8Z*5_%<|rDDMI4!oNd(y=M1OTx^tnC38$b@T#EB;NPSG-XFXY`Hp2A zgLce6JJ_4{&y+J%1LOjxHpXZLNKu z@jkPY>SQOSV^O%}=s^ zwP$%V9llw^uVb>hdR=*3tcx%CW$iGa^oeSGS-Tcxv-xFhp68ykD!JZa80Jk!)^cfa+Zw9`KqdEy3; zlqdz@Mb(d?OauqVrZaUh?^q7Ut@~@`xKW-J=BYFGD$G*yb-l_u9&>|ZHc#4EyziZw z;!0*-fV(G{M2Q`Cy$gOSK>zTUB|rp62_AemB{cHevr&pi-c^dWRPd2{ns?Q1+)Rtg zP_DkOEshiW$<3_*m+11@c3Pe9;AtoFTss0j#2lktC)65wYlcrD()qnEZ(;HZU!FDS zh>+wKNk6|z%8^@mQX*+w|H-b}jqo!X z=87gbi1p%CfY~rPq3X?xQ?(sk^;kVejvD*OK?W4D{6m&?-&K-#^yK{LJQ5dUtoEGU zX!qgtqpm%#_`?Snlc6~Q{~Pfi(@RJHphV(i%9WTlH^`k8@$8hMu4q1n<2^XxPl(|Y zirPZs`nxotD@N!F6Bc4PUd$e;+mMyL@&NQ#Qj_8D!POhjw3=u{F!4Je1?;f?fYAslz?+lF!rAHT}$Me&WH~+#&`Vo@Tk!D&Q zW7P0kY?RtaDSF*Jvq?K#S}PaNH$S>gZ-trRQf^=6aM;j~r$-lrZ>@+G!*3BEg?6=T zyTPPJutl>6OlHEsHQSpWo$=C9@v423ay}u}tJ#mYDdX)_LnvK0%(%#|hrX+hs}bbw z>||DG8kR7+f`}8(d2dvgaK$l+3*a8{eYf-CE^2F$dx!Ii*@MsR7^;w5J!VYG97Tt-roxiupsclFX&N2R%o$@8o z&^XE{`CAZ4#<>04*)TZ%HeZVj%4yjZ zhY{$xi;0M=Zh}SBt=RB>PEKRH6R^jLJ!SJ+3c&K%7->%=w$jF~A$FsUJxT028{0!H z+hyf938Lz?vBkue+Sn#ymnC4=+t}R+Ji%hTT?stFV!TJld(tjr53%%ks~vM7s)aVT zf!HNB_6o5#ZEV5>U@_ZIC)SURVSB-1yrtwVw|Q%cZLqOxiQQylcN4qc#vUW~bOIL3 zPk6bBR{iEeR0|WZWj1yJdFvCf+Y_)|3D}5@?S-haldQV<5Y=28TSaV50(NZz7PGUY z-Ic(5*~TVKMj6wwG5j{TFYG9rcRqO++Ss)T*mh#K*}TVzjo6qw1y~Lnqb@Uv#nR3v zHe~YzTV`Wx5_pQ(CY!f2fhSljzx&C1*iQQg&#J8bMZrj5mwU@_ajOkNColUQo1Rlg!c6|?CaVhe4a zU>7D}J8bMBrhPmC+iPQ3d~K9X1&i5Ku-PCRHobsp*C$}xZ0tVrb|+wO+F0&D@M5;= zBsK*bquk?(t+cUAh{e)gNi5cmYl+=tr@fn4tc?4K?Y4P>J!NCBlJ}O4^-Ld)6^YHp z#%Rac#Mau_b;M$Ebu+P8oo^#{x1IJWV$a(ce))oa0~@1U!O98PaW=M^Y0poRg7X=GxdQVzIf!8e;2g-i^d=v9Sk;J(7UM%6N^u zm_POqi^ZB??m%_*WOOaTt+?m7%ZQhB* zR@&HFV(SyI%WdpN@@}!Q`xCH-h&^ue-X!K0tvdHYRI_btIkD9V*j5|cNnR56fX#b> zyqH}Cd)emgB`;gD>Q{!S25szIV(V<|CStKN1dEk%3wd|iX&)i>WC9i|S9ovQyy@l9 zb?HyQ<`Y|ljS(+`ou7bhO~CF?z+Owhdity~mO)gjZR}!VSJ>EX#A4S>cPC)G60k>! zJ%x?Ywmk{FbU%1wurYW;#Fp6D*~DVLTuW?&&AT!IyN=k+HczkzZS3g;o?tQF3*^0O zr|mohSPwQvJ5DBcnvHEDcA1SmKal`Z9kkJ*u=5<3D}wh?AiqEZX0_7qI%ZG@Fo@JNZ6R=66>+CA!17s zu(dX}mAq{U*iIXJioEA-EIS8S9vh=B3yB?Sj+~CiN)F>*ok)93(4D@fW^`Z??#)q zi)mwa5p1{3dy2g0ZR{;#skv4=CP0kyrW5P8c}s~cx3SBKZMCuch{fu+o7iJE?=51f z_gHl~9->;7fNij`o5{O90eis4o*?g88%qrWYr)3w<$Pj`Z0yVgY#p(UHcznFc`4XU z3A~*N*kcLUYc@7!-so}#i`)vz{Z|Wz+NG?$L94M1}t_S z308!{sIy?Pb5O8F3A|M{wuxn2mVn)ufW^v?w6QYoWqz?b3l>ZJAbF44W$YmqNthl_6Lx?W6>rPi!_ehW*wMi`7LXV4D)K%ZOc#jgjA-#O|@N7m3CE`zo>6HQk%U z+{3N>j)$n0+1R=S>|$cE`-GPh+iItMiP-Bl*0yjoHi6i5Y>c+8BzCrqT}$jH8+({o zY@B(F*wZ#|53%$SRvATzYOal4Kx~7J-A?Q-8+(-4QwbOz51Q>LLR51Su+wbpGV-pr zv4@F0k$|O+w91$ZG0qb##v3AUiJkTeV%ON%!^EDnG3O{?Icy9cO(RyevD1j1n}A(o zV>`*)Wn)hhd%?!`63ZTKmD>wZ&9t!-iN#`EuvIqiQu4MWVE5bDYvk>*v9XIrV^fIv z*cf(MM{J{w-9aoij}UC9%^M-_MH`!R46y0g7-a~y$i_C1cZrSNnSk9(>_MCN6tU+M zu%5+MxhFzYD-*CQZEQDrkJ;Eu#A3YHiS4y{{l|_jL$Fxd!33UQM?qoOO0cA~>ulbR zg#7Lxc8|?_iCFCXc%4}6zUUrevA!vN9I!Fi81*X>i`8!qu?05oTw?2N>^5R|+t?Gt zV$ZCfO~76z_J*By!h3c}W0B{f{JG2m`u_uD+dp0%;m`@w6&#<1yJVnYeoY8$(hye&3%JF%S!*uysVd;(9f z81Gf`V$aV7d(+NOun8wx?GS9p#?FKo&rh&e+O_1x?(Yh=$YA%5<4yd zyTZnHkavfTJxA;C z0(QBL?PS_me!GZ0Zu9VqON`Ul810x(EcP5$u-J3hMdU5D(+alU#yVb@XCH9n!?Io7`pjGZ%h;i&V zVyD&V+^W49BFJ^#IrSj+~yi9KegeUaE}HrBRcG&X_QbZm?`SdzdyB>`JaY^|MEuxoAX z9`a&is9?Kn-gD%|u$PIwVe@)c0xM!;)cJT~%WP~tv5Rf&8e%uv*h9n~PrzQXvFwLN z^8}0WI?0=YjZwc<#Mao@EyV6jz#g=*5%ONNG50iJE!Y@k_{3)0*eYUcZ0xcG-qpme zw|Ro?O2D49u{W63`LI=&Nf1@9jV(>UmM36m61%`oyPeo=HufB`*tPlz3ePi=`DTmUclxTESwx#R)vY zV!RU*c!I_1B3LZ#%7nCn#nK8EOM7-gTESvz1xrdB^T*nR`~-`o-H^Z&EXKPefhSn3 zeu5>Xjn(f;=64M?Mx5>-c1HsCsEs{G-pe+Im4h*EVPoVsL@ajCQm`d9Zxwm5dyy9q zTW|AjBz8*zcE63iNM7uI@oU81w0VNX=99hWfR}{Lgu-Z>@Xk-buCTFNnO|&Er;w z6$G&V`*43{xW6jgZ{Z%_F5*5vvso=Ux3)O3R~01^e}*JhPYwWF7XfkrU~2@(0ahnr z`TShU)l}ql%>_iwuV5Kb&4n-@>lmpg0Q+0`yQ9Sr8{0zUGeqz^osO9q=M?OZ#P6@X z;UD1VI9Q41Vg77sgb9zqQQz1Qc_~85ZEm_T)!EtUUyp2hi|Tb~LX!UxBs&(#bX}M~ ze}DRylHvF7zVH-NRK5wqvtol)rXtkYD&h_|_d%aP<4w1UATM;(!^p{XfuJo}`J(pe|B2X=;coQ zpcrfQV08~v|O1W=fDEP&j~HOQA=7ULcZSYk;HL@wI|f17cI z_A+3u4einBYKnogL~+KhDDbDDl-# zU_36<{{;3}xu<*Y>HLBX)(!Tb#I8BRC7^SCnT-Dw_Pxai4{*2;a}K+w_3jzH8_~O8 z=-so}<%fTXE$x_b-iPvzW_kSO^>cvxGXAfyD`g-*j{~mS@N4X`dqMAhqjxXr-EZ~o zCG4Vnxu%mszKeKH`q!b2`SWvLSJ&|GKx%e}U&gK_GyHq(TChG-dIHmXLb;ew0ytClc z=y)ze>J3B+Lthy64oZoRq=9MVm&wP zV#9U6a|QflmZMpDiDviZ)iP8%EeqHh-E||DX=?Ppg>3OLzs9tmVpg;%`U_U42P@t< z9j(vYiQm=g5v<$-^I+BHT#&}bt$d!POw#-IR8z1W=WAa}4?1P0+lX{ddt+0OVTvp^ z9hs41dtGT?dwPX5HdCI~SndexVOAn4eGYQjJ0X^8?*zBFLTnpqYq=?$iN4S9S2&J zgvK9O7zRNpbV;(Q!X(H5mUh&Q91LZ00EN`KgN1ft)6vr2GVd<9CCv9j?Jf8UvC*(` zAo<(SW<8(r{}G41VFcoH#oHk!*TJoDh$(-l4c#_6?{w*;HhwL#z3KGwghpM?03bLe6siHt3;(|X>_1{S%X|RXPw+p7WBzfSjQ3){7*!h1!`d@2EZhjQ`WrwB3P9A@HC*!e zM#$PLB z@aa^(zWfDPYae zu_=EV4!J%NJ7d}aAK{vgU2jJH#$?Jzl0lyVo!^U1QkpFCIEab$V#@PBE-QuBBPf&h zKTePM;Bbt=gp2F^{{6SKEAg>JnL%T=^bL5gcvMYJ`F9dHIRsLj{=uw=fDsGRT@9>_ zSg`VNk-R$j%(xEYiR7~0P_#7;m+WNckJh4xk%TH#b#n3)Pj~JpWmI02Ba+4IxT>B= zRG5=lt?x`34T@Tid^8J2#9_U~a(=k7HYv{0_OXszMVFWw>v+{gvQJeP%f7LCwCu4! z!ZC8-mtlnJQF1)4dL;Jg3MI^PFpPo`yhGUoX^;c|X410Pn(VGYlSgpV9>I#-*^ z@%%T|VpG?ihjMOaIqG^Ienk$)J2>1ShuevMRStLY@D?8Wy~q=v>irc8t!^U{9)H<5 zz8=SjTYjft3)+Z2r(G|#k;n9a%HX$1-cnkg4Q|26+1gaO10W|r<$ip~Wnc(HfD~L| znHjyVHwGnK)U>0M`G2TFj$a!u71B)?q6c(?pCLc3LlToby z0}!y*r%&0Ob_b8`3`Yof6E!7FHiTVadk(7R{`tcOqcwcx7-%TTE*je>8JpUUIyI5rox zM8MGiVShE*nLJy?|m!a$ol{3>C0_(|@DXCd@9F4Gag+aeMf z{t~8m153`_06SnQ9PZr8KVaLP8_44<{~`gmg29w(?)dErq7b>mIl}9(pENiQGHb^i z{3f8-NmgNuRsRv#;NOCS#5B1sP`>_CWobC$QA@YNv~*Rva2V#N&froek;=Ihp4@U@ z0bjyk9&)?@9Tyn&JPRufW^gdtr)9YUpSKs8qE%AG3M&=19Em7ZZo_6p^`EH-PZp`V z>;Dwh8@!*X!`iUd8C@F~XjE-#%&<0;_5Fb1$XZ5K+)9m)c8;plsM13_i%ZP3q385D zZZsmQf6anNoVWMww{=O8E>|Fg+|s2AJSQv<#n-)vjbwKIm5d36gxNTI#98T$__YDh;fX zqb(y#>k>Q*53_bt9 zP!7LunI2vQr*1?y`+JrgRSuuoGb%S|6wEL1>Ac^Qm^W7m){RO_qda4k;99%6N^mbH zC=#@2HltIfHP7gSPXBct++H)`-L&WMJd|DimK@IK;Z7cU{+r~^b%&Y83;rl6JuD$r zAr(tVk>&-5Aw^$W@~B}8*qAWx=3tMp54K7V9}avYa()AO;jZ*TNvanY#IkWmK;#Xp zA?)RRkaYoHK>Fj^XG^gGW_{=@S#*GzUe4nrExJY9eVG0n0q*(?BJ{DQ`!;+*V>&!B zkEd(4#yk9mt^jk(Tx-*o@+Zcon)2JEJh_-^+Hzjk?8c_THY`oHos%F;N>L))j4Mz~ zM8o27>49l#PPc!uw4Wb!W6eSpu04(gqtt1k0gc0HQkWa3SDEyd^Nv`GYm?%t&EG}_ zeYxR1Fww<47N7`6_0}0KFHbU@p5f%qlQg3jJuv<%8T&oa%R&rXX2kb;Ym@$pc@?#Nf@` zbe=kGa42$`{kc4Q2Bs}e&~t`J)b>De&iiX^>E1hl#oX9dX*E75p4V;3l{)gndnFci zbE|AK>U=+T(mFA8ihV-eevd;L+V2S*YWukkdPJ^I2m6r#`~4KV=JYWha2Nk)XXc`!fpA(=<0b;{Ry!`l{7I64@$E`Egw##HKog@ScH1MlA!OqVl?J# z7)?Zpq4%I}C)Vn(ZN~Q1Z6=i#oAF!g_;k25QNFk?cEVS+OgsGyi93BGm}YZFBR3Nuz|UlP|PJcgo(sh zWNEqYU);_rMX?4G8rBdI_2W6k7&=Mp!Q8Yx*p9kAq!h6Szco*Luqjn;a6H0e)>UlN zY1`&m;Gu1v!(n6_%*{jFkO15K3cJuY2Z?PYVW#>#@KPU|&x7hOu|e~xljaLa>vXJ; zrRBaKp!pP~`AlduUqrT@v2e1qomuI&v!3;~OA*rceAsqYwaSgOcaq)SUjq-@`x_ia z?X9959SbC&y)R-Hw)Y5WuO!S=e+QglzK{OHyZ70HFkf1} z3Q>KXX}b4FB0gWGEIGHjO*+G_FvF3PB3{VKW5DS9p*9s_Uvlcy719+XVLk_6ZAWle z?|g0qi)9`}!={TzP6C38@(;HY<-Zse^4gk}n2cZ5mS&Gbu6SV}YMIoSN~yUhF=Wvc zM%;-Q#oehjKk2w*jMU>!{33DJiz>43p)0H0;P_P@(`gcS{a_g5*Z%+y?iK6=ta8PFGu4QQXl~h$+dbvnmy;NCl0! zqaDE^tmAGL4ZHui)5S3vLrZcUSBtxPU8s~gi4t+gnj3K^Vib4FB<`44#~ov&9(R(d z#2vaSi95Qo$_?V~Pduj6B<=>mFyd}6@G$Q1WTqB(6LAjVTta_G0^;t^{dnnMAm{M> zJDhfi?sK&}Zb#IYxz5*-?vz?Ow9rGQEtzt2rqKU4=)gV;Jx)z2)vYu@DIeXg^2p8l zIDtYRTKl!HXxF;0Bvd;?s~}eS$VjN ziM6{Hu{F{CYx?VJU#t78o&o(OB}V>YafZJ{tj({Ni@%s!`-`@%`%7{ae;tj&*{9P? zRc^#bOMn{Z6CV0TKEgxp1Rs$Q^U?d+s^s(OduXFRpO_BK!jo~+M+ZW`9{=H^>#>6? zqypJ09<$R&l+dqUZ0Za*jUfweB8_JmW&12^1EME%Jj*24t}s`9mPvU!VRV+UJ#ZT{ z({4L~4W!#@=h?mY*8Nt`fqs)JM1Es=hTlZ2oo6e=Z%nQIMtj%&Cb^2=jz{VA8%vS@*y7IC-{(rSf99@O-%OTjcB*_A=9CWo!Eta;z~F!bdHp2 zPTmTj(K%GmIh1YZ;FSTxIb+E$2tDcoB~P6&ateY0#~RSfR8HH?GuQF$N_0*^o%%4cY%^2>qpi^%-Z}v_&SZ5@)pzG(KFLP;{0!qT#`=`@3Y5BG( z`_n)EvF>{osoO!{OHPsRSt-N!BG&rT(`xqAzNeq+zL#9Z_p4AeeNU5Dxe=Lf1c^yQ01p>vr6!x}7fGZXD<9 zV_xU|82NsN*6&H|g7PRjE~0e{b;H41fb!O#}cHrSsfPl;xX>43YY* zX1dV!XqxX)v<@DwX-9}yZ-ftD#-e*Et_Kdbql z`J&xEcA@{*!~d`}{V%mL{a*r&{->f8xSJ?P{&y<}L*l!a;oKI_9YNls$%q2VMilf? zT@Y;)1yY{oMNzu2CGY zrbZlySietqy2JsK>o}nQ>Tw|1N*wUpe~bf~y2=fXi#(>;Bqlx%h7l8ez{8lpOCJd_ zLBc!6#3yJB*Wb+DeqzGx6PPb-FcZ7ceS*}=jEPyGF(#;BpFlZ^i2#%DFdFa(O`<_) zhz80=H1tzlkW8XzkdibniUu|a(I9#0f}%cwZPaC((Xfdv-$$Py*-Iv)Vxe9#V?k;f z#RBVT#Da+RK4G=Q0+Z`lpx^4TAlXVRR8TL*0!=KReH8zH5~$&SJWY)JkH>@w{wLub z{r_n;AFmQ~w;%tTeFF1EyYa*^^1sn1NUco&&jXGAr-FR~<;eeT$iUKK5^P(tVvk(Q6mo6^q6WCH+12YOPWBd2nCrAO3&8Rr2m(4hk zx<+xpni_E+V!cl|L*jtRbsW%t^*E4hB@XzZPsRaFUF8PHgFL3$Bqpu`!-$E)fQNm; z;W!*UPaxqPW8!l(hU;(TZa*<$_6f`vHdu(==srPeWyZu2pfM(>V4pxaiV34n7!ukZ zO+z$LHlkqx)dkT;(I6#hUK9;%5TZfy(gj6*0^6v|HlyKcwtOFbf@Ck5jEaSN$&3Z5 zX%q{rrx6Px*87ArB^H=m#{&IUj|ItAV&OBW7h{1Yu5u&({{m3`-Ye#`yib9-;E_<` zdBt(qh0pjlV7#7)IsQ)km!BEnGgn7L-PhDq2#&`jywuX95&7Xjll%g~tt9J}5{XA$K+vuN&gT5o({EVEu^T?_CdzngJbsUS|Fkm`edS*Aubt_b0 zHouAcz2i!#k~=O;hn!AkmU1m{EHkKZtKVJUjoJ^P0**Y5@4!R;#n8>Wfs+tT!&PoB z=)fi)e1O?Bk8So(;lcmM+nc~gSzZ0(=RUJ!CYi}XSOY>JAtVs8B8Vao2tp_jR)u04 zhGYUGNhZupfVdGvaj9AtUaHkvRNU&0TdiBHiqcZ8tqax-lv=H{b-`Wm|2^m4=a~tj zZ{NP}@1K0;%>ABo?!D)pyWeM-^j_)3ix7Z`{Tvh1&zQ+MXcO_c5cWT#UdKd?)L4+4 zZk^8Ghx&}}VPbmmiAYIj9$$*JCT_|1%RO+pX|JCRW4wLKGjja68QiaL22VBaBt-2S zUCcHGdj*S^a3IhtQ2av#U|fI4xWF0M6xqfFtYR-4cb*iL1-Sw1bpAfn2W$Tn{{@Pd za*}EC@KCNVO+UvJ)ZaNid5|f`hdb>furtROc%v|uehTh3!KqLBskxcfkVCru#3?zM z#U~@RH+uJE`-*=AE{`cSW8f@&x4>zc_&yci*a13!%o`2`oE`Ihg_MOI=2-1;SMiTI zkrSOu{%ApNtR>N++_;VWG=Zlva&C~}yF*7_fUO>LvDM=*4Ya!4S96H(&@su-lm#=V zD1uS=3*fV6Oj$))bwzdMc;~o7sjh@+ z-rzg)(rIPi7b-F-&};WFFQsKL|3ljA^3of59G)t1?-$N`p}85K6nUv-DARAi=|xv7 zrUdGxV>3C{&}_D|JB#TMq?t(%X73)>m!3_(xL+Qfp10YRN0A{+PZnAa8l{ngh<-^o z3}Y|cna|P}KnK$e`S%UzMK?+A2amcluP@aNy||y3ewf2~oj2qK{MOSw>Gus7OizO5 z(G`f*m+l&Nalg2v)|YM$Ufi!QHG_KTd|2Y87yI9tH;jh*ZYUW>w^cK>if$+=q8}G- zMk($NaLNf{`Wk#Sk{ZS4gjo9~(l4W->30k+qxXg|{oP2WZ~B>L4ZdS=6>ad{H=v3> zE4^=kmo9>5s_2^R`v#1~HG}tuk0sZ@y}gG~*?=2LyyS(i#?q6-z8aauIi50->4&h; zOMegEi8o~r4YJNf&}mR>^SRz@`mwZ0F@1Uj$GxbE!&9XOe+w^psTI;=>EwJ4zb@Xp zMfk@JVNPeSJMli(Q>tDnnn(jjyoA~uhxRa%PR!WsI+m&{Sm!Hg0~blG-9l%89!tUg zn_VNRPc_qX2XA&2(F7mU)?)TdX&U?Cx8j+fkEj|^MyG)eqvrG*N{*#XrR@2t{2NNj z=<;&bJXdrM^{N^%g?eW^3eE~}PN0X1*oR*YWIB2jdvclB;2Uu#cM}@mV#*_cLf<_} z?d?Ba!rYVB9JROq@p!5xU1Yarv&@ZA0+$=;(yYDx=Rs$f$a)Q8S*}5U^6l+kfsS1x zGS_I9^}~}U9Pgpt9B(@P0y6a8YL?9c;{3YP_x67Zcl_Kevh$J3c-+f!hotiEKt^qp zk3_O*#L&I{AEb6VUU8cD2RY3SJUhg)AY|j|R7Q|}lg6?xii&KxpDo*D(4Sqbc`kLR zYmxty{Jj{fuB3ZKbDWg@O1fY9a18Qw)!zP#)Rpvr$Sy18cvsScg3cPXw|^7eLc7%l zhQ31e%4sfclr#2 z4L21Whwy;nTF|?PbfC?CQ^K)+AUYQz7Z+`>>`-1BUp*|tOJ@`^z1YiiXC>3O^Oznx zi0SKTOgsA=O7~K>NXNhfUb<#D^Isakv{u3wW^(ujp}k=VW~U6!<<=|?Us^CMqnh6G zbYSW5P$tteE114p3?1Xihg`GZ$*ZfGPWLeVufel2Dk-nG1@CnP=7L6Y7o#krGL~g5 z==#{tHR2y0Myc;9h=6v9mkzqw599M#8khQ-D4tB#yE;O>{~mE&G%d3gv{vGFN!)tG zRn&>H*lpuF(R@+p<^ad~eQ(ZDx0Bo9$+1+9dLK*o3!MdT_oeN_S7!_*jysgjEjkrx zE|ZkG_J`6ew+D1o##u<`SL}1+lS!jn;fEEYn64~ky1lX$aijiCpt?QWG>9!MAIx<< z8hI&t1{^zu8qX%g>L)bbkHdu$J}Hw^ctG_3g!)pnw~FbX`f&R8{uh8& z_mk+s?hFrWa{G7D z?}~3l*jsuh!jDOqTf1E%?wj0V?*Y{kD7Th8<>^hz(CoW(Zh3}70S zRx!i)!8XeBz z`NZ_Qq}O63^wI`UMd9z&{C??wpN^t+7zw=;7n*8Yn))0T-XipHJO9&INqcNR=v)p@ z|KF1)Q&aT)>3p{)dpNaT(i8=_)IQKj7Pp@x*%kpmO$9`gz4To=J@ftV_5a_d=@mP@ zv}H)2fS2YL4F-J$ckU#+nwe$Fc2|_n?K3 z^YNIV#|rMVbFo6eF4XsA-fZYEHt6}hc|c8qwosqpC*tPl%?5qb_vCn}Gw43#7o^DsozrVO&^Cj9+6yak z>Nek?`fx$-sF}TAhir^Nr4^s=B$^iTI&t|7F~puDuV14HSUBG%kQd1*HWhS4$y{XI}X=NWWG z(R7%F-zpW&UWivjuNm}mZg*e=WslIZmvggm8ne=%GqIa2p`RGEJLAJZ30>!CVkb^_ z3ff2mhA?`@pm!@@4~(QhF{ina-mQF`M$s~jP-9;ON@7m+o_DsGN_<58|Wv3 zcKEXLwo^G>XV6i3*+91%Gzzi`dO^pN9#=ufmPi?VA62kyil8mN$pZ#?D{z*>vMs*( z1FT>L%`=)$=55A1e^wea0===4+6{UOy`z%W8N@xclDZ7?7pDa)3BUP?zfHdDhipeG zml*VZ38#65LCq3xtDr4Z9yrBQNw+yDJ6J`}@F5~?p$`8ko-y=-pvx&-ogF-yrr=`$qgk);b6MJusfO7&N_fVDLEF=Ae9_#|^@rvB3%Sra=q*rNQIr z9}cPnN-yR7HqrZi#sw!5KdPwFq~IhXoB%WWdcgGHWbA!3y4hV6tf6xa+ULGZO`)qC zv_nm$UpeRzHH{v0(6eef?R3y?HIrU*(CpwGYAV+`ygMKpCkD3}bVlxFYA*fJL64|; zLc)(R8rkyTBAOv+BRqIj;6$2h&>CMPcq0AKLG8hlu;<`- z8)w`<_NrT2h7NRF` zQp_XRH5ji$^sYhs2C?jzqqS_S?}A{6@Y8al*;sH{u#vVIbZPIO2g4K?t7Y4Uduatt zFzBTb*9KQmw?UsG&6QNa+iuRUcP-Gb4e||Ov`kKaH&AXCYyM@5)?DgUK!K?meORt2 zLJbDBLv{*v8sw``w2IC)=+E9-oFlKS)$tAq+HKIoUYvtc{xmK7o1ldT`6_M-wot;L zN#5IoZ4{oaHGhEo+UX*L-YmZ-xSDP@==t&ogK_fB(3*YvZVhzM!a7Eq=+ADPYtb?X zbqCkdR)gN}Gdbg8Ta&L{jb1^%}9ngeeH&!>wFT9W%Wpv^rr zixRB4K}NUpsY1{e8q@m}&-pZAjif?jdw&qTfbMY6DW0Fu0}jd#UPw3SLV49OTZtj1qiljCNp_S+6dqvm8|8+Dw-jbZyCc^)uS)pc>Z|beEuw^d90} zMb8V;tDviCpCDcKtLfLLat7Pb(8b!`_~P~~>Io(AEH3XdV<1zl)R zw6Y}gdiq?@Cf`?{O@VDRXgzD{HQzQW6tvODYrbtX+Q@j#cLN=5WLpL)pvgwYE5IA+ zR)cs2cq2Vz&{KUk1#Y4zOuQG-S8k$RMs{(qBJ*Z?!N{%(9u4%mk@3p$7J66E4nNPg zw@_`Dwv*S9x6mv>8-2q@p9ZwZ$UcVWe?>nsGRwaesM*MV0b6dRHY2+mw%kfo(eN&>G)ynYYuAHxT}|(2FB)u7kyyRP4M8eRD8acjfV%Hqb`GZt^Y^5+8|zk{*gX6XfdwL{gKvPpyT}ksr-@N zb+gXVY4U|ywtDcE%$Mml2W`h4elHlb9I{tv;U!vg z`QYWjSLxtPe2bpkqBUC!AIaQDy{}}X_dxH^ zGX_2CtEG1+`{yj%L>0x^K!Y6A9sC>ZF{mDw(BGr|4m#+0kCt7fJnx-NE;1 z>(yE|rT8t^Kj=0GJ(c+{I-4))Aiv>-yD~qb%?2$ko~}Nkz%?w}KtHd3A@gH8S&*I$ z56~%sHqm0tjR)v#gE|WSl6ipMHE16C3a&u>QgXm-u{H21&D02cygiwpQI~^?f}hi$ z1nE8A7xbn}a< z^l|1vy1<~W!Czz^qALaMRqKYTEK;``#Ctqaj~LCFz4v62+GS8_#r{mCnyw}My`x^v z{W#O5&NGPjcy1*R#bG?Vu_8UoqwcznHF;OJHISx?uGi?silU%TRT%VY<(^ExT4_)( zXr`+_8T4{)udEF9nnBak_Gbpv729+wJWgb)n;kS0=rM!NhAc}x=b)KD?-+D#K}}}1 z`cx3_ym8L22Hn7EGU}I=tTCx+ ztNN?^9kg2wRDXBS?BEcUcN3?w!*`x*JFa()6ST=U2J=zAnq*Lse-qFQqsg;E*yYYwEe73@bD_#t&l=Q{wq6ZW?;5mbP-RwuntYq2 zLZ=L_%qmo$8&sWhOxAF<@OCY`tD+W9y*_NvOF4|*F{nS*C7YeQ3}F zRq70bcy&>w&Jo0|^{YUYxtBX-hL{Z?nqR^$Gr(LVROtT}3$gU-yVR|_4q zDQm83chE&y^HuG;cDyZF3ssYYuFqPm(%;jvX9jG~I#~@8bSb^w?>AXLR!a=}aM)v6 z4eCM%J(IOe?K7w?@1?Aey72Fu$_6f9R#;{KOQXp{KFM08!Ui2e8QRo3gU%_RuA=G! zgZ`_}bk(k|HmE-D`mEJzzdP-jT zk^M{cnS&n9zFq}BvTfOweSzGISeOGmAD}HI(Hnwx zIGVUqLp>+xa>_1o=iH?Z7&JEHH(A?N_Q#xx-lyK9x-`OQvz_iyr3XajyQ(-n=N>i2 zpo;`eFo;j~?oqV{-7d0O8c}pq7UKQTpq-<71FbZO&&cjkYaFyg-K)-V&?D-8wb?<> zs$Z*Z4%)3AQujM3n;ug;9n>A{RqoPlBnrGzh2tKcdI%r|=&uXNDmIhx?Rf0Cs z)=>j;UQ}}o;Jg>Z_LRwQSdrk3M6L=1&byw%St~MIP*B@S2ml$+G-Z79} zBWSPUmE#-gMlHjdZ(`0H>bC}+IjlD4P4%2Xy&!v2?KkM<+=)4RRQ^|zAMtK!uNrL- zuPXPd;{@sR`M1;zgTAbsne&$ViAG}e+v>k`JelM6sb3hxbKE|4qoe7izp6VOlnwN% zpv!4&?)_NVzNcmMj}dco-c|j-X3I8GZti;Zo?0x3&m6JSP%{s*>~i0-@`jxE)p9`_ zXvW~TT<@zUL0c#*=+60viV4y^^U z%SS4Hi1XX)zrF0Lz(B`uBXyRM)s!y;y3ok@3eHFBRfD*WK2mQBVp|l@ zK_lb*a9`IqI!(^+V|BAe{$*vG0w1fpjEwX9SUq55oZrW)+sJq~@iFdQ-~mpziH}u= zAf4aGxQ3%;oZkVwXkR1F?|`~rBgyZ8deq1`zXR$iBjfxIs6QGR=XXF2!8K+(zXNK7 zAf4X<+(DJh?-NyP5a;)ax=$m??-TWik#T;Xs3(n#^ZP{YGBVEZ6P3lca+&gdqWTHa z`F)})jf~6psTyMt=l7|4L?g-XQ}vXQaekkwT}HDKOP{Ih1!-G8Q{6_!wtTJz;q;rWW?Md230(NMZTVbXVi4Q%xw>7Dw&inm zpGIQK=jvf2V_QB~PZ}B9@;TnLuXA8qK34+;X=`P7iyo8aqeHLLFq|Pe5v*e(zWuX z^5F_Uyd?GTrOMVwa{p5GGcwNoOOD<3k&uApMf2E!?GS2-gwcE%z_pj6l%qMn>{7RJz(z$=7W*Hgh{N*T^{c zgDO8u+sU~fR1>n3xgS)E1?}~JQ??zlWg1ED2h|EAfs>LEeemP2Z{k+Ch`s0zMS)bz%0RB`X5E#Igq2C*&Qs0KmWmT%Mwjl`C3 zRGX2pE#IhhM#i>$qnuH177P6ibq-`N$uI6cQkJJdDl zXXUt!Y=^os{lXltgMONRbxwMZco~lDn)K5GK?hx#etiz#_su!%P#iC(N4#E+?3(mD zb9y`I%Jc_w@SZ;>-p-snYoD>Y8}CLQXq|VI_Su+V7tj_#yiWdO&LHbHL7T85`%BJI z)?-@J&z?BSdRovsG9Mjf{oNoww>b*=DO#J$w0bzxUsp0+;7-zhBhip(o^UqzWquv5 z_1m#@+*JB{f0kb0XL@bGrk2U2sfsyFZO+ws%+d66;b(}B=4j1S9i0NFY^U%|j-89n z(dO&iwX~^MQs;LWVnYgtOJs>vM=DopDI${BOtE=pUUs%c_0^o3_E@T>_Q{#(hPEHH zZ#PQZ4MUi((>c|{Va;c1(eI=#bXfa58OB|;he&B`>D9GfwJme?IG^ z(wUiJ38?LXzo70c(pH@&;rT&s%{LF?w`%PK#ocpgCtkv1Nk~oW>$2;xw~+bFvFPm) zc39W@cTtOO$YM=h;~$Atx~_MjT()g&tsUmP6ctK)V`|ZteR^`V)b^*=(SAsVZGRrl zvHkfIX~RryAL@G4x$7`fiw+iW?#Zx=3QL$X7ap@Iw{S(eooAzG@hD_-zMHR0&8^h+ zovl>2w^v=9T55m%cfz{vbZbnu;hya_mCw_VqEiPl)%@AwC8ic_l~$pt_L6QDTL))j zm9TCA$I>)4&BMbM&6oDf{3C^BDx_DW?;IYsZM#OKOf4EA)@n`7*C}iN+*!$eSzDDF z);&e{Vh&r<+R@AWNqyZ@?vyt0a0Qo6hv)Z8`bXzAXee_uO_tX(oTg$^C9ffIHa z=~VIXMkz&sv>8qBkzSzve1{&{q>br*q)Vrz-#^Bt>gaxVSrOZ#?bOoLu;yq@omZ-k z)|`!5!=mY8;UnHT3G_gTr2 zYs6*xySBVq#{c;;XQig2OPw0`78z~WhqfpCNFUK&)uVkf?7|)CNlliz=vd_Lrim$@ zIh^nL-dG;m^gU^6Dc=d7%$IX?NsjIwaS!MB%r_~uOPb`kd!(P*emHEGT6sty)Kq zbzhEReN8hkZ&v-3>tRYjwSEH9%v|UE>>9Q{Re@*8~j(U7J z0kfDz?@1p_hF$cH^kUXj^b_g(sj=paW|O5;UlGA8)Ti!iukww zym;mSPm|+69iI@M(>Nc`N1Tr*7>e*2iBBFrAc zc!l5%=R5ns8xG!Z@P>m|1YQw%Mc@^IR|MV&@J4_)0=yC6jR3D0ykhW*!7B!@7`zhj zO28`tuLQgj@J50+61Pv|Mu9g9Jbucc6ueUKO2I1yZ!~zL!5ajr%p;r!GId~P|Re;A&dsl#00Un;S#3zJLUwp#& zY{1*l^Y97b(-)sGJ{zbSylU|H6%f_nRf9K{{*&-` zlX9)ee1lF#-2K!fDV$8Ra}OcR*O8j&g1j`QvA+X_ONs}#{s}hp?=|VTq z*H$z1udeP;16-4EKLT3j@O5e^!s}HDQaBrQdfJ81VOoOHU8c^KxSY;@8mg}MZl@A8 z64(AJrR?mVY`jI{#;Qut3-a!lSdR$ZA@o_HyVX#YKVUPRP2-0jP#2<%erq%8WiTk$ z=GkI%9n!=z0qQ)w!(xfhgp@ZSemGsqd$rheHErxSL0wHZ46es-g0NQyxIWHLSUauy z%=4{;@xY9JSAcV2^$nn1MZdB(kiYLepslz&i2d`RRpWZVy#q9wwZqybDc@%3Kiy;0 zHsm-)ZGcr+@2kAD1J(w`?S#W$A*@>qdvd3BKkhZzXX z=M{8qz@1~gT^t_d+9v$-aqrrC#k9tCzT&&Hnbx>2MUHrjhtPXr&wjdBEIHe;#|sYo z{9f@n=Xe`({37oL>q?2W)4B}zam-V3T&>$_EkwIrq88!#oF!`MptoF0R0i%pS)yi+ zVtQaCo~)I6d06V@NvW45s$ajiTu++X;kL(?=el=V`>O`H=Slnd!qR2uCzN(t$Bewl zy;_}A@|62pwXA#>DA(*R@#hk>uD4vfq~-6D`r0M!f0xwhE@|^GNI!i+a@-{~xJ&xQ zF6kG$q(|(Mz7RrcxY{kfV6~KYwc>ljBEnxyAE#}m)r#*O+i6WH8R2{Gt2*lWQ2lQ3W?ap@0`25Oby^kE=Y}zD>&0{^Z2J&4 ztnuullH6LHi#}d?1;P_Y)+5YumBn#!&WgCo;<(D=~Sg1W_ZSK3(c ze*^wbI&ix zUf0CF>%8x|=8o)w4&UK4-kLdLi}yp667+<*N z`5yPySrvu9_bT_K-p?bWfQkWnXmP*_)Lb>0S_$DCk7*#6iPmpqrQ9O6lDo(9d zQhVIh=pN){{cXMyYitp>f#cjm{QK#skrn=h>Z1Hw|H&$h=Q09nj^`wV*P`wYh_p$h zEh23Z{`0PW?o0d$#c@v;>DeMZTciQ?!BM~Q2h@g<6I4L)4C|v>T9xj@FGjcH82uIc z1mS$u4qB)>K#SF>prvYkdL~U)XCu5@vHokKvqyCHsXu_@wwUj;IBvk=xY-u-dt02s zA4U3tNWYM9wu|+9yI8-!i}eS&SU=yz`h~7Pffl=71}$~H23p}-4?4!R7xWm{JD?L> z?}JWueE>Q`Qkx~Ig(Msixl@T?Y|LEYF*y{35wGr{R`Bq@ZLtXik|L& zy<*N(7gLw}dhiQ`ZWMaG&?khxE!5=^9idZ&HVWM+^m?IB2z^_q%PaaqrwVNp`nJ%n zw5#YBxhj`+whp|C_T_ei_U^q0w6-@5x{6NgJ^84sXgg>lz1w>k=(Ijt!MUYRH|VQ< z_J9Wa(%`G;guatO*Z0jYxQgz;;`%Cjvu{3VUcbqpi~21Cy{KOo=u`c=OI_;Ae%-i< zx;=f5(8+iuil=|~q(3u9X#QjlPZqjNXqV8fLc4|T5t?5knnITe?Gn0GXt&TkLi4AH zrqE?VyM%5P+AVaC(EO>QDRi08E}>h6b_?AjG{06fg)S4?C3LIMZlQaGE}O=hT|&1C z?H0O6D4oF4e4$%~b_?Ajl%|VR=wzYGgmw$vBa~){j?l?MmkI3>x<@G0iH^|8LYE2c z61r6=%@iG>lZ7r5+9hN^?ajbh6N8Lc4@+71}Ly@;ugD zCbUcFR-xTO_Xwr=tkWfQtI%$tdxX*gmUb^>%6neCt)3}PCyvEiur9(|xE{vyeN)sd zwMt#7?oe;50;|L-w*%O3+r*~57u65m}``4tZSa@MAuT+DXzHd zRM+LM8(nw19&kPB`km`V*SoHNxiZ~D+%@jm?gj2<_geR6_l@rD?uXoea=+>R(EYVL z!;|Id?aA{D@f_`0=-J@8#vb=AEwFZ7e0dVmVB zcb|YAehnn`)C<4kmrIKwZKnPh0|!tGcBHFm5cU~^@iwuccuusC)?vSXD)#56V?TZ- z_TOFDiJpc1_1PF@H(~#L9`?%@V1Ile_QMxr|9c7csFz`XyP2x-w8nV40$zSG@68;- zI|APZ?Hzm<^yh<^o*vi_+E-}N=noLy;`;>j#o(8q4~kBEF6->=#k5K^KaueD{h0H! zJihjLcR8o_n<@`Zntzt(2VGgp(xG`w%Y}Yg!Qm4JWI_639_x?l!}h!*IcnR2#kr8) zG=w$(Rl+)(MCX*iAn<>bI~?>-VHxP+f@;v|9?tOr;nYbwgS~A3n}y6@RKWCJ3E%5Z z+S5_V;cq;w`E75!(wF(a2_A#E+B4dI?Vo{umfj~i+CR1*j)(rw@}`3J^hO;x7rHpd zW5mP9NebG+wt;NnvQbPAWw4H}kv7qPGQA%B-vk$dCaPGf>*AH(93JOe3Vy2n#e%rH4`&r)E2y1Jb$}d3p z_R&8D9bdK?v}rW^|NsB+SEIR%{|EV&Ut!9kM+$|pg2#&tTr;pRI;3Iz$ON_U4iP^n zzbl2$p)wHe1-XS01Gm6nRKc%U;aB-`A?*ulVHD{D+8^I|XBsH~;`#v4f%wPOH#!RR zD8lbZU=$h(okCCxV@m;O5x#Nt5dR7z%m{?1V3bi7;P-9aLYmK zFw)@qKB$G2T{Y+|IvR8~PSGs<2JCpydaVB}noGxn&Z9}7^D+8a80n{iUV~I|_Reo+ z#5)S7BfK4{D!K>M!p{E(p!Xp?i|$8C7CnG8Ec!Jq0DTanr-io=o&@?3EkUe@K`s35 z;8KJi1-0;gR=ll>eoGCYPvE2vr~RN7Jw=TO?*O&vX`J@qJ!7C2PT5u<{5w#Kevfwx zDD1!^2>$`2vqjJ1jXoAVhhH~Tc+NA5@beh0@t!eIi~dY;gkJ!)=tYd)7QIAkL5HeN z&|&H{&;oS^XrWpUI$Ujlei10Vsy2d7SLcAvQ0Icysq;Z+s-J-VKwShnOZ^mdwz?E_ zj=CJQUi}y7Ts-d%-{Ren@GYKiw`hU-1!zS567&>xE$AwBJ!p%%0kl=!1lop2#Vl%9 zx59?ipcci{?VxdWCpZaE3vZ>o8+47j2b{H_xOS}WL%0(Z_fDt>5IzmmqSMub2%iCJ z(V6NY(DmvO&@S~D=mzyT=vnFs=xhYF=xn*;_Z(0Q??-wX{BuDqI#2CH_OQm z_$Q#KW%UQphtzYR53A=vA5nh>eN?>&`igoPntuVcu$OuT;nzVe+_C;D=$q+F~6A+GY&_U1JReU1t@5c3Hzg&$32< zUSO4gUTBR1-E55p-C~u4-fUHZ-eOfNFMiu;2v#RQ#0bFWVg;bfF#-hXMC&-v#a02v zj%QswP8@QL0>#_Md9-ksgSy?7pk8-1sLwqVG~Hc*(InG73N#yfiG)K@(Xcp5PXcp64Xcp6n z&@86K&@84OLbI4ohGsGS7@8%t9GWH61kDmU1)3$)0?iU?gJub}L$icp&>Tr?pgEG( zL31RX4$YBxD_SLJ7c@uGSt2IsFBi z<@6df%jpfISx$SPS%D{ZMuENq%?jEN%?g}BR)T&2%?dn+ejMllXjana(5$2{p;?Jb zh`m>rt2@{Zw3$UgcE zBl1bAL0zlxqdC^e)}O7vSaq(iT^{#t_j~R#&rdxkd2jOOrB$ZI(;iFPk@knQ7t;2m zd3|GjlYGbd=lI+Go&GERTm3irPd}Pxr_;yt?Bwp^-HsP?yx#Tf#9M%6+k<&r|8@KS ziRhpmzPb^AXOF}6q8KiIq<;*Oic^*+J%Z_VR975{bnFFu0aX52->dbSqpJ)Ez3 zsd=0?+~(Pu-TswF;9ZM55_Eb=y*qHP!r`{;$2DZlOP1q(C%q)^TBjUI-b)UT)8M~u z|D#SGaxq=3R{=a$i0f;^@hQS*1U|+1l;DFmf1#HJ(0>Bx8F;50KIItq zD)6bqrwX5He8ym1bu>O>@fnBDF<4cN$H;gr&#wXx=yr)SQmPi zS{J2VZ!Py)Q01Y;kKqwTOwZ5*0dnp(mb)Lp`o&>;=4taJw&Wt4OV#K z(TGPA+M-Q%Fk-XJ_rwm?nA6eH5?bC8URFtU)7m;(!!d)VM%$VrD>`D~riG#Ss+zT- zNWw@KBtng=pwE1cHZ|JP5^hXHqHRDm@y@nJmdp+(Rz{nqbVOR3!ZAsGbw{WrlIWZo zZEX+53{U5nh>FInNIU_}2@}UPG^~w<+Bw+T&~QSeE!5J|2~^Y87>+|ZE?%jqqD6CS zr&d={O;gjt=+yZfOm(3+ql%`+8X;(Cl&?i~Z3&=-QT;t(dN?t)B@~Z`b(&+50z0OP zeh}_FG1Sr#o*Rn9mQ_)0L`oQnbpkjRaxiHj&|wx<(}Za);npzfQ&%L0nsL=r#*80x zLRDqO)Uij8t*jn1_2_X`$J8EubY<@;Hl-RdYZCbBg5@2FaQvi5V&$Ar zYgh_&SemTK7W0?!8^^UhmD-Fd#!y28YA+FKtck@!opo)I#KO+@@Pf#x;o~bSs>bxR zwi@`z=^UNv<~e9$x^$J`JE$69Ry5RfLM+;PQh2$v3$}m!*wn}-;xV)$oM>3I@PuQI zARJEyfU;V6p6+bhE~j_HQYoR8fa>5C=sH$jq-(-)=*v5fc`==60I#L zJ;j%!0g_29*k)5C4ySfr5-cNHzbI3P}=`QZ>k`gbf2N` zKwyXzwXTWc;Ny$MQ#)cYw8+_^w$KXn?v*j557C5)Ee#D3G>J&4#bM5lt_h>BG!ZfY zT_6-;)2f$uf?3}lZets%p(Bo;+L#(@Tp32Q;}Q|721CQNw#H}^L^c-*)W^_iIlZYX zLv1hv?lA#2aaJgvK%GaLBapz+bD{~(1z=hm#v{h_!>c2NIEtOMK}rmbrXw{x?dA8tlDw7@QO5}go< z#f?x`LJFfTyjCkNjIIi!Y)xUfh30m|S8{1m!`#Si?2IQzWXfR2staS0R{pLRBWpSm zQE_N}8#B3{7e+bM5Q%dyj5J12y-g%Kb1|;BB~saS@o)1|RHv;=reLe4@{FrVds(V_ zLAWuB{AMH)?Rtu#R+(w29i#Z#XpC)?YM{FKNh>3X@B;4Rqar09f5OBj~uoKYd%5YWANVuoQWTEfDB z>)V`A+=S5o6FRuKwMEp}5(#kr^=mOg3Bp9&G(U_|!wJHW;oyX*26b_rkr^7CgwWM^ z0(8>D=!9iP3PZOLk+Vlr;G*^>n8t%a3R7IGhcJmF&B=^u!e~qtO5qlAC29w@wm6`n z(Pqi`6sCr7TT>hJ8lqfg9mF^)=4#X~EnJ7OY)GVHldl%GAxje_7G5JEu06P~J=zuz z&ko1q7=1B5wkKB33a<$#hXq^2<>WyQD;}GrQ|Q6M93}~|_M*5w{7SP+fhi+1mP6qt zxF4gujMUOpd6L$sq1g$d71gz^!3aZB!Yd+eCd?UeCt1joA#sawfHWHi)h(VI;$_R4 z$O=)Nj=3XV+ZM0E>?uo5nN#BPk#;;0>rAq-pyU;zL`qqcQXRTbdsHT2YG^|~vLL0| zp;h6NVtRE-^E*(o*07A&GeT`mFp+zP6p{@U$4G$7ftgvt4N;7Btyl#$3DhIsfcLrZh3ZT&EJ~F|J}7t!`)t*-N*c3eG}~8rrd}OhPthRdQ@CX>5ja3G-kWmlJL!u*WXkisLcn-!ro})lbvqZka0 zWyRT;{zJSdHqn~G0(fAWg9;a*Q?QXeSUQpBbwuF>PJ&}4QNwCSAd{^V;e=Rd1&@fr zm>pRcZsO729w&Q9*+lHj61FzxLMPmi;5-|+T}nuIqp(>rq5ER{)ifg$u>Y*maJQKs5aVx!Axq3^dzRkP8p=WG*2qgxTj}9 zi5-r96O%PPj7s_d0B5|w1iXH*g>bZ>7=L*6K@Fn-y=)4 zZ<5;e%i~dA^Cme`+9X^UilOq+zFNarIIT(w(88Lq4~U{kB$*g%l7QYL>#770lnR`p3>yOcXZOQwFSYe`0HFsqZ0V>0*q*^xG! zFVK`ukcHC7WjN3w9=&uZ!OLA8lunRr*qWK@3eCZ=?BuOEoLw#UBA9G2(I$ClRvI`X z?+olQ!ZFQ6$~}!tYX*;W1Wbc)R&y~kq$5Pc+S(phBds0rv;%k@Bxn! zdb*4Ne)oR8EalW|f^>!z;_$iHF_!h{923j*PEZ_+O+2>jQ#zWPc@J=^o*}-)#Nc(9 zT0?7Soi2dHS}qC1If0~0B?F8Qt@X_q;G4qh@ZA({hK7Bn$P<`-u1JTU?4;;9IwwTd z&B5}Mj{sL-I|YA5B#3=g<4WdDYi&<-azMs^eI&zujd=WxB@zg6y`zq2VV7_FQ=cwi zt?Dq)56bLA0*T=Oy%w8~CgHGjOTtPA3)vpbdhD!X*jYJDZo%JTa&+x-M^9&B#*V{e zb@AyxjI=wd9GmyVJr6cyrauC^A@pt4hG<($=V8$?W2YRG@N&w@kc)0F1so<@Vb-HP zd3rhE@XYeS!AKZWx&zSvDYPrwJ>S|3p$p^buzrZ;N(oEwUH23 zIB_f;;$B76z(~xF#4!Uku9PzrI-vz8DRvyR-7;D5>6XlU8VSjENf5WPB!Y{R zprMfu!$gbcKt9eut98<-;TakOurTb1dicY+2{HnYC#3`iqs8saSSOSVKP%j}0u0@B zr>)~5Iw1!K3*-cXce%4e>x`Ccm$0Je7<#<3L8J{kT^mGUiw&^Gh$Uo)BE_AJmZb}B zFQOL3@QVueN{#_rWj3q~V|wq(!47<)%TJL}q9!>|>Wc+aak#%6!zN+-qXTpJcqFhZ5v$7RB&m7U1)D2R_^i(MvE1$%JQuh+{(N zH!PE^F_nk|c}^j0>=4C13@?*(1j%_JmcH$se25@1rScYZ=-3Y6t4qciyhefXB8r2% zFghiQrD~{+riO5chAUFM_>|g5t2msqDjaT~9>eBd&OmYE*yBW&amt}AL#Jk)2wXla zARKHTsIqobv^5lIqnS|<*5iFSo5M{2^;s(erRK2MwD{T%tjt*pT|y3M9ELsMg`3S) zGHG8t7bmX+@HvVz!lkge=8wde2AHB}Mgg9UQ@D-Jg*iQ*VhPK;Zw!do048Es&9cEb zx5Ekx`!iYb>mp;@>@c|D@h;q9$gbK!>;v6+9F|$XICw!g;e_G7m|PHZICX7@b0mXy z+aT_-ypK;ZbR%^zI|(N_&i0dVs_tAM!V*Pabeh<3E4uxnx~ zKCW$40(g_V4y!fMFO5-bA~Nk?(40L`%Y2x4M&+ARp(IW@c}|MwN2AzF@@X{l?1N*RL#I*)OJY9>Kj+4!%cBBG0%>)v_#@^Subwun!}7TZm@i$#+S_^ zn7pt{<%2YIPrld{m;NZTxa@6ppWutM8j1yGn%A7eFJU1=xkjd?hi#S3YDHSC>~yu3 zz7pLg`QxfJa?@cx@YW&D7iWXIcgDr46o`v4j%ZPWj}0Oy37CA+5!bgONWo^~Xr0f5 z2UD3KX}bU|zDNKq*xU)=LOH6=32k%BN4rl92Ylepd$@&Oe$mr#=qA+ioE7Xh0mOQLv>)ixK2uj)7{ z8=WI9W6N-7Nh@k%4e~K^p4n2k+CiyDB5^X;I^%M_h?!zcLqlR^B#xOfbwAGwV>TD3 z?BUq#P;8Zxg>w>8##@>=?xk`r&guG0#av2rMv=3G7}hP1F!YtgzDnU=Lnhk#j)D%oYU4};lOiEoM#1l=8{n%MP$6m69J}%6&*OY z!6kld9Cb`1P8od7e6s+z2H>s_UZZl=ufTzp0qh9bxTn?>f*?<_sT4)eiY%CZ0j zgQmTSwUwBc8a9ifRF*vr%j~9GwDI|265}2{0mt}j!0!VkgIX2 zCx1?h78lx=p3FFl5w9nQ>om#1rDJ^^3kLJ0^%R(ZViNL#-C5C!HPhDN8gSe!OYIXS zS&!DVtPOQ?!DMruAUU~3pXPJun$~u{qbM;w!A%sqG{U_IILD#-<)`2{jgK7oOONnU zpu_I*(ep*m`+kInQ-J7NKF^zP?gpYJ-2cZ_nbPD4CnRW!HYcS8m)Y|wW<#`jRJn7h zw7$8SAva-X9cg&U)udrWwQjUAff&vzO;%+TZEvvevmxmzY@Cd5^)b^dvDwEhL`kUg zjN|f%xsVFW7$BkvEpS3;rz|q7GQM^gi{P$Qu^WR;tY!r&!k*X+;(5&klM7s|@Z{b& zGg30-Yko~O){`qXUi$FZEahxe7dLy4c3czH(~K>`h+_wnTNIlksmckK&Edk=#bp+^ zSr|ldk&Z95+HIJ=wd(01)e*j1*^y|))ZX#!lzT|gE1k&pm6~SLn{>m~H__+@Yr@=( zctyfX1RhGTR^qG3#)UQ#SJ(hm4Zqn4y;R3&XvTik2GiQsL}Jl4N$Okv;G>qF8x`j? z!#2a72kd^qTLPIA%2FnY9>V0@A&EH&aGlBBM-B&F=P(ZIn3HfvOW(fJWNzHCN0kr` zcaGRu%`KRzo%Vay`X)2G0I9wH-%ZGwizk--4^uOfrM0O z?EjMJgTEPxWbQ}`tQE*|Tan)2o z`Y?sJml!Y2{g^WLICo_BMBG=C9H%jS2V2H;tv*ezTI#Ug!1Jtt!Vj{r|MnPUk2xa!_N-hR4aae2CX=)HXa=sGU{+~sl9|PHEFBIdkUo|he5uC>B$%@L zlO%Z9lTl0p>{40iG&wMN`NFK_rycRy2CgtV*Ex6wGi_YPL(byx!O=-y&d>$vQ{p6M zV{DIz0*^L57|seu#5gsV?}h|t*cMtN1)LLIYoBuSHH-zFIGb6=7P4t_aLB-^b%$eT zq!}T7e?G3_;znD(n5*x2i}OVpgV*q7>r{qZ1W0AbrGQihDoIC{<+PZKhSMBbC&AiK zC(ebi2f|?`Hce~+i5;{M4?~Cwe{*-hX;YlTs|>#mxABFV>TzLH)MU9Wh+UXO`f`{E zq?q;1HEo<=J2I}H6B@U$?w%8AmVcyjU-geT*(6rUdv`P-n=${PL%-sBKQm>}4hLE18M;T5^TB0NED+eTT9u(B2ZVQPc5{Ego3xFN(sA4HrVnmc zT!wu7!ae7J_Tym=dAQ6>R|-XHo(`^mPn2l}r?wm+)|b+{LI^c+uAuOmt6j9XEsB<( zJ99zlx=8M&w3fET@ak*Ak zN~w}Dsq3O85OzSw-JeZkwJ4}|SUz51z@a)wzCASL!|5?-v+KFxbULxQLGTb{r>2Xd z8$qfeTqJgJhZKw|r;3ws28Eb*;q#Gq6nZ#Bz(bN;NbYQ0Jqc3PM~=Zwm0cA=T(&A1 zBaV(?cV$Y`0|5C$C_@w}a)U;L^l;bbVNwr2lo62>xC+V7&X;bV!EsCn4K_*{boEeL zr|3{{IjmTNRJh{F&z@}Ll+!wN$3$A}y-vuY&}c$6Q3f{?Z6T%Up@7ojs5)q+ar)@! z=pZ4agf!E*0dUuEhi%*lT45XK)PZ!XoDkk@oWU{7keEWShVV4tbn1JgQ=d!+dMUB|^>(TlIwL44 zdyCVGqkKF?V2B7V>XGuI9w{$MrtDv2rxje%Lx-)c$E!}}peEyZeUt4uo|KX`66z6$ zYsan;?zK)i(SPh3;kIPgNC=kO>Efxtlp5hSo6Lp#X|io{A2GT3!*;qsuGeIYNRJrY zmhBk0>qobZG@e4(Q`}b_OM}rK=|p>^6HTTAy_8sJ^(NII_lPz4NK1rPYMpfSNV}s) z+8xQXF$vkJVWkVc-7DE%9tXGwciKAsW?&w`2`#(@y_zR9@=t*`Ws1z04$O-Ya5HMf zuH#|EVIkawZS7d_*vneIrvYt%P1{^W3r#^a^ns$&S^YysREt;2- zVeolg=hz&RM+P2!^}Grl_>p_0^n@&~BVM8y+x+ao82)+5WrtW>^VqLCq?c#V!+evJ zw_vql$F@VbNbkh9Lo00_W*P1|Yz5C(dQRh6EIIRYn3wy!PN585UGRDY?E#x0t_!qZ zaCN`uw%i6Dr^K@)ma3S8x!01+o!l09Om2ZpFWWgU?G0`hc0BF7Huy!-$9h8+>hjIY zU$&WRom(D%bB$6O>+GID>ogAW zH?KNTM_8w|@Hg5Mw{)4Y(QcCA7Vym42|i1P<0z@kXFKdLuMO=mk4h$t*@$~3*D?FJ zwg=L6#p4wBXU;LXUgJC+B(ton1wBRBT$5`Z+D#E&P(m(7c)JPOi{5HbP62$#qY}3W zX{EUZu!m<(_NKiuE&RxQLsz95LdEZ?D{Sd*gP? zK3s)woF;+toXKs6S0_9IwxI+(Q&Wy@CyzP0r|R@{>nF_E+~#2mdJmVH=NKMQB!9(Y zHK$50yh6qm#K({K6!P54GZ_1cy_4Le@$Q9NllCp|jJOrsdm%0Kc;T&E>-*-Dd2KJNfhFI0*+y$4|hKkv_P{mwf@ZRqes!@!}kQ8B_(n z*(*Ia?JT9VVTg_6o8Sa&(C1=yn8PTGj~!Alq`KDI9BB$3!oDlVKijz!KBz@H3-MWs zSMI>8{cQP<@bbQiqAC2ee1wskYZC0hOGAJt%^bm0@($;JR1&-}3dd{W7xs;Ejld@# zsUMH>G{DO|Ua~(?tGSGM<-j#%*Jvsa$8s`~a{uD-avfS3ui$xoJO}A;@5*QYO=Zu1 z_dyibH6MQHnMv0*&$xPDYub6iBIs~$G2ww=laxC`Ot-P<`o5xyKEKbI|DIzoVW8>i2lu%$srB$ zOW@Uy)Q7#v{fhN;9{_hqDdKZZ+$WOb#3JmQ>Nr-$L`cngOI8%D2YzrOW;;$x+WWjz zl#k<2T}Hd#@F>Wq8f^8qtz~O?zrm|r?nyBmp;EtAgt$fNz7>VMiSzYqdyh4t5X#6l z+NUuz;BZSOp|?!p6fu%Y3TfPGkP^Pzq$F&uE+MpzvvWEPeeevto{Du&L!abuNWxVT zUL)aZ37>}5%NZE`=Abu`pI^G(1b@;|>(Hv#N{P7DmZQD!E7DljOe(|H!wT9{hP0_t zug-a9;Cix0)pDeu+gJked3MnwVJrF$$KzEVjsLE=oF}iyxjnOQx#e^G(TK$@-A)7c z{s(FBnz`Lc1O4tlNP}C@3X{fil#~Y8Giy0o0Jn24rAXj2-c7E6<&>M$O3tq==T#UD zv3Iah_?_FGUf;7!X4y2>L@J}d%WwL$jMrf)bG!IEf*hz1`}F^7@7v?6s;>Ocxi`tZ zNysJl0*aF0wTOTixI6`cN_e9{<)J8z)sS5BAnybM)Q*XdmUevB$7oxvt)_uK~A9 z&>Lqyy-($_c>96;X#gzgMu{;LGg7E+NCa_h5T=~#YtaUON{SyMxDu2%;A*fpQmVajt!SO-*DL)$vFJieiKaOz_^T)Q)#5BbxdREGXOKz={UV*I zwOvx#O5PTGC5kks$4vZLs(3OsX$|Vm8RnXDc-UCws^3Vtq{dYoTIu`wN~88ikE0yA zoz`KzWseTRs01x@UBS76SuXO9b@{Pg2~{soR&yEhY$QstW-r!hesm-(rHoRy#-WOf zmp#BubG*{l5N{r-=ssu8TSH~H++YNG=r+UG3pYHF1!F{KFlvAp@Q5J%saq6|?Wr6Q!2w=bW{ygklN#YIWuNUL zBlK6>g^CKNw4lf9KlfInl=GcBtt%}wl$CBDRNsVt8N=6}WDOap1-VA97Fk}+b@cEc z>JWmhYulT+QvfRq?dzGJI-fW{yt9%NsgQaV_(Uasg%RUXdu&bf>(SUL)d@|a0mlGa zdWTwZ=|@h*7O~pQb;LHZH9fWNq)2?)CPP6GzEJ?&d{=G`=}*-NxV2v8n||#M@2hq z(iSv?(pgpvzV@XSHMuox`C@1wID0pu7kXFZ0eyPg*Q?{W+?p;XIwsmnl@(e>@K7*! zv{@fxb#)o_n$CTuVC8(rV6+5f>dN<4FD*k#bTYI*DFb zo#iiuUWpP&kqk;!uutkr7UP|i#qQG8w_YNK&`ZNy%TC^UJx5BKzz9|%Z-Kg<-lzI+ zYQ^zcdyn71wqOCJtqt@Wkg7xvi0%Y>5cCk~`;)WuzHH0@$|&~}up$lA)-D|R#wYb& znL@vkr=GEEgVm3!MB7@2y<5=V_2|!EE?k@_MXZN-Dm)m_z1Xy)^Gjo~ zy3*72{2F{J`!tchHL?a{3;1LW>-x@dBOMN$)R6h?Yxm6=2=4eX4wUJ2az99AgllfD z*S)jb$vf7YM;X+7(uXPdIvEnIdGw07KGjjxk=CPKin!z8x=`C8^%ysy&eK|qz*vY_ z>Ml3e@a$dVPpnrVaT?;o*tj{pqjndW~Lt8VK6yn|k^l-*XlhkFtu7ov3PA~<1890{}#k}H*64c=dC;HI- zc0;jJDEjABTvhm53ql)Thy0)oX8hF-^v2kxtV0ANOCE?^=TR>k8J4Ra+%K^qLK3icvFV-j`##`er+T z^3|1IsEGlTH9oZ$-rtw*4SFJ0J$4}Hylo4#uZK@M`Su~);!FtQgOodvu-zxRT9<8` zxj}DA_dJvj+?!B7IJ=}>V z=adV6JR4xm2wJV{%7wg8Tc`UL93^*J&?9t&M6m;Pm>V0S$A{QuM#N9~<&7O`tB|9( zH^#{$*R+9hb|`Qr5o_)^F={TWBN^>_T99JK#JxK?d}axE-BhB)n+v2py&$%)>q0$b z&AN;MV21Rtmzr-N;KL5joNsRIz`Hk3SuiD(qFP8XS`Uoh8hA5@8BN!ner?V1u&)?!ZekpM3&-3qn^o8c?CjA=C58VUN@*Y{9Noz-o(x$c!U)01j$wh9gBv=2(F{= zMXZ#3{Y;i~g+Y&8d0dZKeG-0iH^}<3C$8SON5wc0y>pG{QWMbs;E%uYjFDo)sJ*|( z!X71-6zG4mPo6MPSko>%iVT~Rq*=c}!ZVC~J9NnW8jn#(4r%{M{MXtn-dD$ zO;JriAA#pL{W)gNH%{ic<39MRSgA}44P?ZO&+^4l*G{QN-_wuNe0ow$@l;c$Cre$# z(XW+}czXb($Rg`-onZ~@K7M>Z1|?kA85qS=-i+!+;vD)M*S#I1W9?o}Ij~N%=v~wH zgl^udsg3*$AAquE%6Rh0)Q1KT8a8n*2kI5wf2sur+_NzCK?$LzSMQtEKKqk*Dx4mm zQG8d#Mn281Eq4IA_ht01?2tHZs{O3TOyw%rPZv`s3WP`_Jl4NKTdAL0Pg#-Le1DGe zvk8B#g?>Gf-eyd$WcEJi*b?bU`ve+gtc5j?Q5Rs{-@rJ}z=!K=;=?;;*-Afr3@+}O zAnt?dekNCgw869+stG77UahRyi8jl?j-zZq9iBJgtTJiEsD@sOFUM6P38OZhmYkju z*E`xDJ+0uig&Bc2)}VFQQzrzY%o0`=yy<(+61%0*Sm7c1yU?vpr6GZT%2G4 zZ8Qa}0x4pk$P4=48b1a_x>|t0auhAla?!s~uF4u3BZPEy^GWHAkj{+AkaA7%M^XWL z*z5uel<$57dFq8UEyJSwT0;X*k7&H*zq_2-HXsG-(=Y=6Ga=qOrvW!wJVroBWqlji zv;v9q)eQziwqR_oe+;pEpItQ^d@);{6gYZ@-@NVKiaBjT{x*ZVoTa+@Xu>`dbcAno z!Haz_!>J|lyZGjThCiD zE=gJ_KX?+upC3l2Y1Eq*3^E)z8yy&-JFQrzu2rmP|JA+`8XBxe^h5I%!%ARp74sYm zeG}H@Ow#oYV|%Nekp!RpAtbyuco>ZPbLSg7N$`cd9*t@OTAq!vm*zmpSoq$fHLh<8 z>szgSpHFCflr{K{ikB-KW#(#vr(A@dB1KMGFvGX(`&c7!Ezu5&(-xJW6>31r5N(l> z49c$Vhcg8|?W+NeOc+0c=U+)x)}k*;kGFgDE^|dsPsXfA2@MID5Ij3+!zg>+cC;^W zB_oDJ38UA|8V*G#xHE^P-ZqG>;-X$9&or1Fp(fOazZ|$yCKYJ|*c0PTYFAlvk~4Q@ z7H34$n>;hS0g!#^)b4YbR=i7Ej$+Pdz>CCi72$97$yc7p;jRSV7By#c{PFBA5k2eb zOqSJvyz5|2dl)UHXJ(wYbp=P#&^n6IWpLW532o`5FwOv5(-TjBsVAm>l+n>O(OZ>% zX)}W5#@*v4cW8064Y3U}hs+pccUf9p581Siqr_1{Ny~LzTF}t1oj6E+_|T(*<(^-l zP@SNC)Hp&NxXx%J*C~a`rboV!>&pX22vb5#CVYIr~!soW49?rWiVLWdA~u1#r zrrx!pUptC*1L@!AiR?`3QVPu*6kOfVvy?Y?e7#Rfgd0gzih~NH`sSqSVZ~K+w@3lz zr)M?95z>z{ddaJy3`H_WU?8Ly0#=)H^ON1Xr@E zpIf2BATJrxrUcUnNN5$uGtixyE9ISL3OACV<++ z4m_jCn1pizCeT)}UG=_Ur+R2v#gXzwTg5$M&KjoG640u1w}^hbiGGYV<$>JNHk1xL zf$C2=-4kX6nR-zBm-oDVV+=ga1nu8P|Af*0WltioHMK>IQBop|#ViGO!VB;%Fvdj+=vl=ow5lzNh4JMe&jrdi9Aw5gY3ZNxYYp*QCXSK& zQCtt}o*^Zj>nlIYqUEHs(NL^wmHNT62XEZML_g? z?J1ku4*BE14xmq@{u?<*yYKoJraolHm)^#Pk&{h`(+V%CuR9^W8I`_FK zb<~>NiR|)r;Xy!3z+-b#k61E|c@U@-6^5hZDI<6jz7(M(QCAp$LVJ*SUmrbal+U$b zIv%g(;JOM@A^7XNKEZ1P!W%DN+wE(VTuW&COkr*YN{zP3`N;PJY{*<@j#8Q}1z8>S zm)VNaN=``oYFa(t=kQGUA#2x+GXV5=#N+OD0%vg&xs z94IYR5t<{VzNYt$RLYg+avb`$ym!4o4bA;tbJmEoQYf`;OaoJ24zVshLRuQ_f$dQi zv}LpckB6SK!^J@T;KJF%xc2VtM7swDyySNQy=Ucgy!?(TV?O%Mlj0?xcLojCBOgA1 z@0?}}gdjy2!DemN!AQD!dd$^G5xolW1qC*E=Z$-M@QNKsM1eEjV_~W8;8CC9eKFrT zY2Ghu0u(JS;$hOJoJ-9(@5EIV-$u&(;()P5U8UezS6W))*SGxlbl9SfpK{8xL9Ufn znc%8LsaH>3eukfa6x>qRxedWd-rLJq3u^72rzA9A`WQw zhJ@K5wuRn;LNzl5o@7R;+Jpz3Db1h*bzIkX5(MjJj=#rA25&9Jvl%rxcg#s(|9M9# zHBffO*>98E``2PjsrDza&|WPu;dK9q-$8&J1kPK^4Rxt{=d7Wci7Ci1XwYs==8mlI zj)!^MQuhkDf6kql$#Sa9)W^4UzeIh0fmi!Cn9x_qj3=o7&{KvqpS0qa(9n{v9wa}S z!Fk4is6z=~k7p|*8ffMm+ik+wx}c;7zMxFj zGqN4HK_XAg{7%DInZeZ4X3i<)WM%EqeFhVE6apcmW(qUPca73}UDW8R4L$4m7ESN) z8inC`e#jZ@3&*27SN`u2^xcxdf<7rE9@eFu9Q5_edzV?IS(CFn#TF(z63G40;CV!7 z<%!B%GkF>~^W4ak))4FKTZ1bi_k;Jr(xPytRp=#=(UvZGBM-cugv%4>bg6KZZ?ghU z>bB9B_O)l6K{|Fypn0=qgUqAe_825YD1}UIKz)D8(|^`I9MX)i znCZU!B+c9!!Eqe&-UI8j4vo|2T-9}S&$`N2;t08R+5?B3lu8UsHTJ`l`jkwmeP9Z@ z*r@^iEc5|Nb+-MMv!`%Vr z3}JoX*iG6b588=b(j94q<(%-BJ+9%nYwDG~c2c+(8E3xTdo5DyQaQ-L#(GTJ?nENWBYQ>X<5!K_vZ6!x#GYTHzj5h zu;M!>x(YS#ySiGa4fa)G?5f$AMH*l4{slp<6U^Bieix2EQo%U1{)z*sScR`yy0y9D z=eHcqZ#B?TGDgeZtTUG5iQmrd`STL=*11X|wk^^EYwHJ%M#Q_?1`sL z^rtFZoX(b3tC639OJqL2@4Etam2qQ6i8%L6+L~|<+TuHK+&Q40)3s(2IkX`BEem%) z;&eRYOPbjufTNAyVGtXGFShEwhBfFMKx@Rh6x1R`;W^Hq=adJ38rL;GC1(A1D$<-0x{J;jX=abzWx(pV zm7g-L#>Y#^XtGHIdnD3GYbKuA&)AO7U0RC%|;m?U9@Tf$JZ9e0sNoK5@!X*ob9 zp@|d*GZNjnI-?ceH0BK8H8Vd61Xm!J^~Om#saFEnB_< z52!An1Uh>+1E0Tj*=0Y!X3kHeMVlM@mwm^|O4@cboWx8)A|B^sEN4*Sd^=Hy+Xc8q zlh&ZbVtW8Utwb7Np#c_(YEZ;FiFK$QLdIfb0AzrL=OTShX%nezmd0?sKpIC?mY|PR z4qNCvKRXi6jYe}KS-H_{ViN@(;b>MQl%1Vxg#ghU?_8Ii48@`>jb&S*SS*$mksj@6 zEI$&CDgwaC3ZXFDvSYiUKfsFS zBtv#|fEB^57>~Iac)a5kltkn%<8{ghSW<~pi2y608;XS^b~MKd1GAXZB}a*VW@Z78 z(%eW+EEEkFXGcRhF^s!7yEu$`07ieYc;_t~UyLPoqT{MaB$Vj5F;OZlMH49!zf>}B zNt6O+01-w-fFfTLq1)W6wzpmz$WOCI4;ISK|E#j-3r z6h?dTj?KA|tSD~iKWc@eF;L-Fhyut!!bBsHaH23#C>3G=Kt2I1J5d^oSXm^r2tjEM zvO2S4g5!;#d3`8KAqLl@iAY|el(mAFR1n<&IAi2*$s)*EFh3I~ zaFkM3R1_uo@D$67gp7=tB!(MFhGWIyXjC~KKZ%2#$V)O7$%>(-p;t5l;lmseN+c7h z!I4NJ6`yXJOcWZxL?p{(nyhRPuaG!KF-9aq-~&m{<`O9x_6vCsulV#>q9}^eETm#u z4yl5Sk^CJm#QI?j_;xMB~6c$o!yjg=HpqDozRvZJ%FeyOHc=rY{zl9_O3PmyWGzQa|i^Rl4$L_=w z;pA?hY$ZB&3N?1?#7pIZ=$yh7M!n~OokSde!5~9IK0-7@U|f7UNj!zg#FPkl2%(#v zLxodJtp=G=IXeW!1T+reUnnOGashMB;BXkUj(2<(gHZAou{gUsJ_Gl_1`6tvvAiTy zh5ji3a3_)c+{T@pkOVXr9%GU0JP3B8GdIy$P@J8I>5Uoi>v-q0=nsknSKOQ)j+_vQ z#nAKNL}xtF2}O5YG|^cMWtb?1l0begwM6F&Ko|r=YBwgC9U|2_Uy+=SkEt*_KGug1 z!j^>|ka0+cas*S5IL14U1@n@!ZM$%&m7NFT9-!IbuwkVv)(*umv!jWQ z_Y#%yI>@~kzar6}Z>yMB;s#^N8%%3uK8=o|8N(!m#CkFYQj2vJJ5WRk1d1IW$>BUK zcBtg72c^il37c#WrPZhp4Yh{ap`msTY;R(4RHohKa=lirH^}v7x&8=BRE>{3-Y(al z$@NaT{!*@6<@!MXNDhHjK@`VgkXv*ei(gtGzck8BQ`-kqWt3Cd_v#y)<Y86fzP@AUJHI)5%pVVB4ck^S?}xuQ+a5XW^LJ{# zd-tq;v##9o`Ab{Zb{xC;CoNMSy1M_mYpukVerHd)`}(_go$|!19|8>^X!AnsviO`8 z#bvXJzH^65$2Y%*x8+ zC7+jmxIpXW`CmbUcf?gYkbN0H!-_C?wiPr-@ThFo%$b*zjSdUgBjhFZ-OP zVgRhh|4PEVjYJu0)v=IszMo(VDd9AZ3liSh3-ArB_kJiRkM}ECkKTiGF9bDWKuv8V z6QZKff9DLqcTQ!h7_BVIRZ+x~Nx@fj#1pQ0E^SIKT(sQcY*@TpI&!&mk8>l?Te;b} zV38~}5~U)*$t)NcxzNLn4`gP1AmF1#EYTH43b}9t>7Iiz@}R!DQ_d`SMf8G;!6j$G zqV77DF|5oRK&VV$r|5Y|bBQFqD%fJ`T;$Fa2uNFrB6d~;(*jaqC{|(tlMCRo z!v}@daPHSJx0L=1RLOOE+oHF-^mY$!boc06;wI>$$-HEa9iIbFKvn_jlqBI+q>6R4 z#q1g?kWL&NQWQmDutUI(#6UZIh=r6gSO&meK%%2?{^gF@rQ+x$z+ww%zz5|rB@_am z?8IQXPK=^*d^!n&VGc&OC}DD z66Nf7BGZ_mf`cP6d_Z?9ENl$;%S^C{#6$`#d`xx$Cmpcx0<%Gej$h*%@7RyQ!Ry;8 zh;yVc>~ErqO>qS$mEbX~vA_bj{~y4e>X*#!O0x>G4-q4*5O@`TEQBY}5;r`?`X#gY ztkq+DV6HwAH6-uJvanL8N7iu!{|Y2wT%&wwJV+hs%&VxUc z^=e)&;-!f~41Y@mpiIP}EM7+*^O7hd|0*HA5RXa`kN1#{CMsj3W0!jsgN;jU=wBFu zpJZI7p@=Vt$jPKG8mwM9JoaLYF44JIym$D}ON)R4{FKG{$uP6w#VjoXFx*{`Fm8aE zc7Rc`7!wRV(IODd%J4{N)5;iwgjj?@`FGa5yL z#>`2;nxW!gUM8~kbkyPGLK~@=T%*}2!%RV8$9{r9wMiS$U@SQ#C5PEUHH+(*Dr42k zXjT-Y;&UO;DPp2BYFqRVEI69*Usi;US=mzFw4||N?uLqVQ(H}A!;0#b#`ablaP%lF zYqD(}H)hG)70cVo8!GXG?WdlbZfOPFjP>KjOh5~(lLxEo$ z>loXLuUfS#iQibSO;@zFCKonTAhO*LKjF13U6(FzO=CmVwoc(M$+y&0RktOdx+~eE zLUMd++{9!FZ>MSHabqTrnKT9`2=Z(zTOKUwi@yV(EUl{HkIN^|#?Q!G)X}8QV^4!+eQnPwpTY7e5T^$g{2uDvZHJPpa;dzehtCbgCIAMaK-di(E@FVr8 z*HDpeZEI|4CHT11_`eYz?Sty$j-vh2hRWsXx;5I(#4lG3Z%*~P##x;1XX-%$K*C3=# zw%63vB`d1S8>-T%kt|0^+q#x?a=i+dWmVYLH@Y?M4EFzCALDH6)T0@;Gvq0j^*7d- zYFSfkYr;|W;brA`$oH44h+_g{Y-^N%k8|tN_34H-9nyG6TFSOY`-9IJ_y zTCuEj_FVt^E7Pk-PhZqnUOBI&u^tblts5IENS~=V9de#+EnmTT(zdZFoouacTvu0_ zY-nstu1+V{wWcelC2QJ}D6VN}!-Py%Cf78!$U{p*c^x4*mlmv8yeLBxLhX*St&^y} zPEUUGYtXhe0O#YkPEDR$Ubl|fa>q}N<=R%(!nQOvv5&K@fxXoct8nVIv9B!ecjzno z{(9foXTsOrIk0%@^B?B!el_~-BX|7j&`r;;{PFwQ*De_HjhpX%@GmWYD!%FUsuhpj zes@R1maE&_N|uE`xcB+=+ked7{fxDF&?9fY|6sxKFJ6*Y^n>(*MK`^%e_7?2Y0J_t z?w$4Eb3eTOhF5nKY+rHB{?t9o4!l0A^6+JikELFG?j0iW+R|H}ueGD>$2r@mjC%Lv5(Kaxp3b1_q=`W1CRdbTUp zuC^9Va*?lKI@yJHM&cX~oMl}&yRl_XUESjH8oc4&TG7~&PLHXq!>J4X^Tlv9BV@QK z6=^@UJoe$kOLK2I?&LPZZyUe)jo8n29N0MY@GEa`-oNJ`MlX6W z_pyub`@2ZVj^AHb{P?w%g%1^flH6Lmpn2z?-YVU7`M37Ie*7Qad$WG&_Pw9}=8Bgu zJNM?g0Z-hywsO;v)t~?Sv+3`Bt;`;{zb>buVn+YJd{z*>>X~H2v~LvFEPAi>qE}j) ztA4usz3}w;d$Z2^{EC7-Yq#fZ`OBT#C)M42|EyP^edLXqM;`sowg2SPt+$qTEPd^nW6EE8eEX*loH*?1ZRg%{n%>|9sNn{QJIhapTzdqU!VRE-rs^M#-87uPr^WKBxH&`_bf{n@=fx<)iOjabNQZ z+aJu?^4{Y=p0Ibv`#*g)vSH#8tN+z^=H4{;=GZ%r6x3c)GNV5F4|SE-*<}^K`*i8r zwX4hPiuR?_S1hqsfAYbNId$LMVh?%p)99rupYH$JKkwg~KKt-PiGSO%>+dh#yz{>g z7QeZAVae-*{&exnSEd*3{jc-N?_c~cOShliW<7exyQxR^mTozC=4&_Zn^FJt?w|eF zr?0+Td$?xyfA4RYIB#>+JumIJ==Ii;tT~5@!xJuCl=qL%UR?0z^ycid|FJYQqOdT3 z*SC}Xo*lludgZn&8k4zu*X;c9d*%NUJMz{yZhm(EsIT1o($)v=eC;>K&e(Q-XTbww zrjhzKasp_#|IB?d;ACe-hD9qgFW}PO`ZSBzx`ADo?8c<{6^Mg#~f%)|GBX`^wc@ zFM9uuS6}_R>v#X;>8JKhS@y}nuYFwg$nL6@kN*74ob6|vHTnJpua7R+w`fS-KmGa4 z@Z^g&WtINwql*rnbFk{pkFIVQw{cg^yeqerKY#pXYaYFQPvh{(?^Z9nvAy4K!}IeW z*?COpD`QX2K4;gohkrdX|FQeOzv_X}S+(2Be(}X?PmO!=rR{%z+x}CF?|tj*Tc4`@ z;mMy={QHmYs9l$LeSPSzoZKIsF*){!E2<(b16Equm!A3fjRQCBc=z7X_kDB9kO%wy z@ajF^FWB|Up@%*?aPf%;-^ky)=jCtDdUx-~|GDkW>W0f+KjDRAc6EOJ4m`kI=1SO4eBU#u;k`(oWO8{W;k{lh&4udTQ& zYspjF!c)snuKLA)9COi2i|5xYe51YLt7q2kzW2bYSNE^UKREM`)ApUV{N6|J`t@y( zymiTo_s>84#r9OuCyzb$y{8_2E_MC3f!iGXx6vvO^_zn%3vu{>hZOkdBu0X95F+z* zh<5FV@8h?aTi z3Ck(qgV0D@_rU22eCdY~kUQ$b!1kh?AqD7~3&bmxT22dpB5XQkjc okIV40uXUhY5)z%sJ+}^z0sTMvlL}efD%b!|`G5cX&!fQq0bT5|zyJUM literal 0 HcmV?d00001 diff --git a/packages/HtmlAgilityPack.1.6.5/lib/netstandard1.3/HtmlAgilityPack.xml b/packages/HtmlAgilityPack.1.6.5/lib/netstandard1.3/HtmlAgilityPack.xml new file mode 100644 index 0000000..5e58400 --- /dev/null +++ b/packages/HtmlAgilityPack.1.6.5/lib/netstandard1.3/HtmlAgilityPack.xml @@ -0,0 +1,2613 @@ + + + + HtmlAgilityPack + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. May not be null. + true to detect encoding, false otherwise. + + + + Detects the encoding of an HTML file. + + Path for the file containing the HTML document to detect. May not be null. + The detected encoding. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. May not be null. + The character encoding to use. May not be null. + + + + Creates a new XPathNavigator object for navigating this HTML document. + + An XPathNavigator object. The XPathNavigator is positioned on the root of the document. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Creates a new XPathNavigator object for navigating this HTML node. + + An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document. + + + + Creates an XPathNavigator using the root of this document. + + + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects the first XmlNode that matches the XPath expression. + + The XPath expression. May not be null. + The first that matches the XPath query or a null reference if no matching node was found. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents an HTML navigator on an HTML document seen as a data store. + + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Gets the base URI for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the current HTML document. + + + + + Gets the current HTML node. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node is an empty element. + + + + + Gets the name of the current HTML node without the namespace prefix. + + + + + Gets the qualified name of the current node. + + + + + Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the associated with this implementation. + + + + + Gets the type of the current node. + + + + + Gets the prefix associated with the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the text value of the current node. + + + + + Gets the xml:lang scope for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator. + + A new HtmlNavigator object positioned at the same node as the original HtmlNavigator. + + + + Gets the value of the HTML attribute with the specified LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node. + + + + Returns the value of the namespace node corresponding to the specified local name. + Always returns string.Empty for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns string.Empty for the HtmlNavigator implementation. + + + + Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator. + + The HtmlNavigator that you want to compare against. + true if the two navigators have the same position, otherwise, false. + + + + Moves to the same position as the specified HtmlNavigator. + + The HtmlNavigator positioned on the node that you want to move to. + true if successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves to the HTML attribute with matching LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change. + + + + Moves to the first sibling of the current node. + + true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the first HTML attribute. + + true if the navigator is successful moving to the first HTML attribute, otherwise, false. + + + + Moves to the first child of the current node. + + true if there is a first child node, otherwise false. + + + + Moves the XPathNavigator to the first namespace node of the current element. + Always returns false for the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the node that has an attribute of type ID whose value matches the specified string. + + A string representing the ID value of the node to which you want to move. This argument does not need to be atomized. + true if the move was successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves the XPathNavigator to the namespace node with the specified local name. + Always returns false for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the next sibling of the current node. + + true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged. + + + + Moves to the next HTML attribute. + + + + + + Moves the XPathNavigator to the next namespace node. + Always returns falsefor the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the parent of the current node. + + true if there is a parent node, otherwise false. + + + + Moves to the previous sibling of the current node. + + true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the root node to which the current node belongs. + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + A utility class to get HTML document from HTTP. + + + + + Represents the method that will handle the PostResponse event. + + + + + Represents the method that will handle the PreHandleDocument event. + + + + + Represents the method that will handle the PostResponse event. + + + + + Occurs after an HTTP request has been executed. + + + + + Occurs before an HTML document is handled. + + + + + Occurs before an HTTP request is executed. + + + + + Gets or Sets a value indicating if document encoding must be automatically detected. + + + + + Gets or sets the Encoding used to override the response stream from any web request + + + + + Gets or Sets a value indicating whether to get document only from the cache. + If this is set to true and document is not found in the cache, nothing will be loaded. + + + + + Gets or Sets the cache path. If null, no caching mechanism will be used. + + + + + Gets a value indicating if the last document was retrieved from the cache. + + + + + Gets the last request duration in milliseconds. + + + + + Gets the URI of the Internet resource that actually responded to the request. + + + + + Gets the last request status. + + + + + Gets or Sets the size of the buffer used for memory operations. + + + + + Gets or Sets a value indicating if cookies will be stored. + + + + Gets or sets a value indicating whether redirect should be captured instead of the current location. + True if capture redirect, false if not. + + + + Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest + + + + + Gets or Sets a value indicating whether the caching mechanisms should be used or not. + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + + Gets the cache file path for a specified url. + + The url fo which to retrieve the cache path. May not be null. + The cache file path. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The XmlTextWriter to which you want to save to. + + + + Begins the process of downloading an internet resource + + Url to the html document + + + + Begins the process of downloading an internet resource + + Url to the html document + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + An interface for getting permissions of the running application + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents. + + + + + Gets or sets the token representing code end. + + + + + Gets or sets the token representing code start. + + + + + Gets or sets the token representing code directive. + + + + + Gets or sets the token representing response write directive. + + + + + Creates a mixed code document instance. + + + + + Gets the code represented by the mixed code document seen as a template. + + + + + Gets the list of code fragments in the document. + + + + + Gets the list of all fragments in the document. + + + + + Gets the encoding of the stream used to read the document. + + + + + Gets the list of text fragments in the document. + + + + + Create a code fragment instances. + + The newly created code fragment instance. + + + + Create a text fragment instances. + + The newly created text fragment instance. + + + + Loads a mixed code document from a stream. + + The input stream. + + + + Loads a mixed code document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads the mixed code document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Loads a mixed document from a text + + The text to load. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + The character encoding to use. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + The character encoding to use. + + + + Saves the mixed document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the mixed document to the specified TextWriter. + + The TextWriter to which you want to save. + + + + Represents a fragment of code in a mixed code document. + + + + + Gets the fragment code text. + + + + + Represents a base class for fragments in a mixed code document. + + + + + Gets the fragement text. + + + + + Gets the type of fragment. + + + + + Gets the line number of the fragment. + + + + + Gets the line position (column) of the fragment. + + + + + Gets the fragment position in the document's stream. + + + + + Represents a list of mixed code fragments. + + + + + Gets the Document + + + + + Gets the number of fragments contained in the list. + + + + + Gets a fragment from the list using its index. + + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Appends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Prepends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. + + The fragment to remove. May not be null. + + + + Remove all fragments from the list. + + + + + Remove a fragment from the list of fragments, using its index in the list. + + The index of the fragment to remove. + + + + Represents a fragment enumerator. + + + + + Gets the current element in the collection. + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Represents the type of fragment in a mixed code document. + + + + + The fragment contains code. + + + + + The fragment contains text. + + + + + Represents a fragment of text in a mixed code document. + + + + + Gets the fragment text. + + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/netstandard1.6/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/netstandard1.6/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..17e403655019859f6a4d3689b5d08a26cea7771a GIT binary patch literal 141312 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 HOM(9bPkPbY literal 0 HcmV?d00001 diff --git a/packages/HtmlAgilityPack.1.6.5/lib/netstandard1.6/HtmlAgilityPack.xml b/packages/HtmlAgilityPack.1.6.5/lib/netstandard1.6/HtmlAgilityPack.xml new file mode 100644 index 0000000..5e58400 --- /dev/null +++ b/packages/HtmlAgilityPack.1.6.5/lib/netstandard1.6/HtmlAgilityPack.xml @@ -0,0 +1,2613 @@ + + + + HtmlAgilityPack + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. May not be null. + true to detect encoding, false otherwise. + + + + Detects the encoding of an HTML file. + + Path for the file containing the HTML document to detect. May not be null. + The detected encoding. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. May not be null. + The character encoding to use. May not be null. + + + + Creates a new XPathNavigator object for navigating this HTML document. + + An XPathNavigator object. The XPathNavigator is positioned on the root of the document. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Creates a new XPathNavigator object for navigating this HTML node. + + An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document. + + + + Creates an XPathNavigator using the root of this document. + + + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects the first XmlNode that matches the XPath expression. + + The XPath expression. May not be null. + The first that matches the XPath query or a null reference if no matching node was found. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents an HTML navigator on an HTML document seen as a data store. + + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Gets the base URI for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the current HTML document. + + + + + Gets the current HTML node. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node is an empty element. + + + + + Gets the name of the current HTML node without the namespace prefix. + + + + + Gets the qualified name of the current node. + + + + + Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the associated with this implementation. + + + + + Gets the type of the current node. + + + + + Gets the prefix associated with the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the text value of the current node. + + + + + Gets the xml:lang scope for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator. + + A new HtmlNavigator object positioned at the same node as the original HtmlNavigator. + + + + Gets the value of the HTML attribute with the specified LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node. + + + + Returns the value of the namespace node corresponding to the specified local name. + Always returns string.Empty for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns string.Empty for the HtmlNavigator implementation. + + + + Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator. + + The HtmlNavigator that you want to compare against. + true if the two navigators have the same position, otherwise, false. + + + + Moves to the same position as the specified HtmlNavigator. + + The HtmlNavigator positioned on the node that you want to move to. + true if successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves to the HTML attribute with matching LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change. + + + + Moves to the first sibling of the current node. + + true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the first HTML attribute. + + true if the navigator is successful moving to the first HTML attribute, otherwise, false. + + + + Moves to the first child of the current node. + + true if there is a first child node, otherwise false. + + + + Moves the XPathNavigator to the first namespace node of the current element. + Always returns false for the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the node that has an attribute of type ID whose value matches the specified string. + + A string representing the ID value of the node to which you want to move. This argument does not need to be atomized. + true if the move was successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves the XPathNavigator to the namespace node with the specified local name. + Always returns false for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the next sibling of the current node. + + true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged. + + + + Moves to the next HTML attribute. + + + + + + Moves the XPathNavigator to the next namespace node. + Always returns falsefor the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the parent of the current node. + + true if there is a parent node, otherwise false. + + + + Moves to the previous sibling of the current node. + + true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the root node to which the current node belongs. + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + A utility class to get HTML document from HTTP. + + + + + Represents the method that will handle the PostResponse event. + + + + + Represents the method that will handle the PreHandleDocument event. + + + + + Represents the method that will handle the PostResponse event. + + + + + Occurs after an HTTP request has been executed. + + + + + Occurs before an HTML document is handled. + + + + + Occurs before an HTTP request is executed. + + + + + Gets or Sets a value indicating if document encoding must be automatically detected. + + + + + Gets or sets the Encoding used to override the response stream from any web request + + + + + Gets or Sets a value indicating whether to get document only from the cache. + If this is set to true and document is not found in the cache, nothing will be loaded. + + + + + Gets or Sets the cache path. If null, no caching mechanism will be used. + + + + + Gets a value indicating if the last document was retrieved from the cache. + + + + + Gets the last request duration in milliseconds. + + + + + Gets the URI of the Internet resource that actually responded to the request. + + + + + Gets the last request status. + + + + + Gets or Sets the size of the buffer used for memory operations. + + + + + Gets or Sets a value indicating if cookies will be stored. + + + + Gets or sets a value indicating whether redirect should be captured instead of the current location. + True if capture redirect, false if not. + + + + Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest + + + + + Gets or Sets a value indicating whether the caching mechanisms should be used or not. + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + + Gets the cache file path for a specified url. + + The url fo which to retrieve the cache path. May not be null. + The cache file path. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The XmlTextWriter to which you want to save to. + + + + Begins the process of downloading an internet resource + + Url to the html document + + + + Begins the process of downloading an internet resource + + Url to the html document + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + An interface for getting permissions of the running application + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents. + + + + + Gets or sets the token representing code end. + + + + + Gets or sets the token representing code start. + + + + + Gets or sets the token representing code directive. + + + + + Gets or sets the token representing response write directive. + + + + + Creates a mixed code document instance. + + + + + Gets the code represented by the mixed code document seen as a template. + + + + + Gets the list of code fragments in the document. + + + + + Gets the list of all fragments in the document. + + + + + Gets the encoding of the stream used to read the document. + + + + + Gets the list of text fragments in the document. + + + + + Create a code fragment instances. + + The newly created code fragment instance. + + + + Create a text fragment instances. + + The newly created text fragment instance. + + + + Loads a mixed code document from a stream. + + The input stream. + + + + Loads a mixed code document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads the mixed code document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Loads a mixed document from a text + + The text to load. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + The character encoding to use. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + The character encoding to use. + + + + Saves the mixed document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the mixed document to the specified TextWriter. + + The TextWriter to which you want to save. + + + + Represents a fragment of code in a mixed code document. + + + + + Gets the fragment code text. + + + + + Represents a base class for fragments in a mixed code document. + + + + + Gets the fragement text. + + + + + Gets the type of fragment. + + + + + Gets the line number of the fragment. + + + + + Gets the line position (column) of the fragment. + + + + + Gets the fragment position in the document's stream. + + + + + Represents a list of mixed code fragments. + + + + + Gets the Document + + + + + Gets the number of fragments contained in the list. + + + + + Gets a fragment from the list using its index. + + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Appends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Prepends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. + + The fragment to remove. May not be null. + + + + Remove all fragments from the list. + + + + + Remove a fragment from the list of fragments, using its index in the list. + + The index of the fragment to remove. + + + + Represents a fragment enumerator. + + + + + Gets the current element in the collection. + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Represents the type of fragment in a mixed code document. + + + + + The fragment contains code. + + + + + The fragment contains text. + + + + + Represents a fragment of text in a mixed code document. + + + + + Gets the fragment text. + + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/netstandard2.0/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/netstandard2.0/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..846b459220cb8bed9c3c431c049c19699a317a47 GIT binary patch literal 140288 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 OACkEL_ve2d1^x#~q`9*I literal 0 HcmV?d00001 diff --git a/packages/HtmlAgilityPack.1.6.5/lib/netstandard2.0/HtmlAgilityPack.xml b/packages/HtmlAgilityPack.1.6.5/lib/netstandard2.0/HtmlAgilityPack.xml new file mode 100644 index 0000000..5e58400 --- /dev/null +++ b/packages/HtmlAgilityPack.1.6.5/lib/netstandard2.0/HtmlAgilityPack.xml @@ -0,0 +1,2613 @@ + + + + HtmlAgilityPack + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. May not be null. + true to detect encoding, false otherwise. + + + + Detects the encoding of an HTML file. + + Path for the file containing the HTML document to detect. May not be null. + The detected encoding. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. May not be null. + The character encoding to use. May not be null. + + + + Creates a new XPathNavigator object for navigating this HTML document. + + An XPathNavigator object. The XPathNavigator is positioned on the root of the document. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Creates a new XPathNavigator object for navigating this HTML node. + + An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document. + + + + Creates an XPathNavigator using the root of this document. + + + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects the first XmlNode that matches the XPath expression. + + The XPath expression. May not be null. + The first that matches the XPath query or a null reference if no matching node was found. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents an HTML navigator on an HTML document seen as a data store. + + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Gets the base URI for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the current HTML document. + + + + + Gets the current HTML node. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node is an empty element. + + + + + Gets the name of the current HTML node without the namespace prefix. + + + + + Gets the qualified name of the current node. + + + + + Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the associated with this implementation. + + + + + Gets the type of the current node. + + + + + Gets the prefix associated with the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the text value of the current node. + + + + + Gets the xml:lang scope for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator. + + A new HtmlNavigator object positioned at the same node as the original HtmlNavigator. + + + + Gets the value of the HTML attribute with the specified LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node. + + + + Returns the value of the namespace node corresponding to the specified local name. + Always returns string.Empty for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns string.Empty for the HtmlNavigator implementation. + + + + Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator. + + The HtmlNavigator that you want to compare against. + true if the two navigators have the same position, otherwise, false. + + + + Moves to the same position as the specified HtmlNavigator. + + The HtmlNavigator positioned on the node that you want to move to. + true if successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves to the HTML attribute with matching LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change. + + + + Moves to the first sibling of the current node. + + true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the first HTML attribute. + + true if the navigator is successful moving to the first HTML attribute, otherwise, false. + + + + Moves to the first child of the current node. + + true if there is a first child node, otherwise false. + + + + Moves the XPathNavigator to the first namespace node of the current element. + Always returns false for the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the node that has an attribute of type ID whose value matches the specified string. + + A string representing the ID value of the node to which you want to move. This argument does not need to be atomized. + true if the move was successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves the XPathNavigator to the namespace node with the specified local name. + Always returns false for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the next sibling of the current node. + + true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged. + + + + Moves to the next HTML attribute. + + + + + + Moves the XPathNavigator to the next namespace node. + Always returns falsefor the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the parent of the current node. + + true if there is a parent node, otherwise false. + + + + Moves to the previous sibling of the current node. + + true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the root node to which the current node belongs. + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + A utility class to get HTML document from HTTP. + + + + + Represents the method that will handle the PostResponse event. + + + + + Represents the method that will handle the PreHandleDocument event. + + + + + Represents the method that will handle the PostResponse event. + + + + + Occurs after an HTTP request has been executed. + + + + + Occurs before an HTML document is handled. + + + + + Occurs before an HTTP request is executed. + + + + + Gets or Sets a value indicating if document encoding must be automatically detected. + + + + + Gets or sets the Encoding used to override the response stream from any web request + + + + + Gets or Sets a value indicating whether to get document only from the cache. + If this is set to true and document is not found in the cache, nothing will be loaded. + + + + + Gets or Sets the cache path. If null, no caching mechanism will be used. + + + + + Gets a value indicating if the last document was retrieved from the cache. + + + + + Gets the last request duration in milliseconds. + + + + + Gets the URI of the Internet resource that actually responded to the request. + + + + + Gets the last request status. + + + + + Gets or Sets the size of the buffer used for memory operations. + + + + + Gets or Sets a value indicating if cookies will be stored. + + + + Gets or sets a value indicating whether redirect should be captured instead of the current location. + True if capture redirect, false if not. + + + + Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest + + + + + Gets or Sets a value indicating whether the caching mechanisms should be used or not. + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + + Gets the cache file path for a specified url. + + The url fo which to retrieve the cache path. May not be null. + The cache file path. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The XmlTextWriter to which you want to save to. + + + + Begins the process of downloading an internet resource + + Url to the html document + + + + Begins the process of downloading an internet resource + + Url to the html document + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + An interface for getting permissions of the running application + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents. + + + + + Gets or sets the token representing code end. + + + + + Gets or sets the token representing code start. + + + + + Gets or sets the token representing code directive. + + + + + Gets or sets the token representing response write directive. + + + + + Creates a mixed code document instance. + + + + + Gets the code represented by the mixed code document seen as a template. + + + + + Gets the list of code fragments in the document. + + + + + Gets the list of all fragments in the document. + + + + + Gets the encoding of the stream used to read the document. + + + + + Gets the list of text fragments in the document. + + + + + Create a code fragment instances. + + The newly created code fragment instance. + + + + Create a text fragment instances. + + The newly created text fragment instance. + + + + Loads a mixed code document from a stream. + + The input stream. + + + + Loads a mixed code document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads the mixed code document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Loads a mixed document from a text + + The text to load. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + The character encoding to use. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + The character encoding to use. + + + + Saves the mixed document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the mixed document to the specified TextWriter. + + The TextWriter to which you want to save. + + + + Represents a fragment of code in a mixed code document. + + + + + Gets the fragment code text. + + + + + Represents a base class for fragments in a mixed code document. + + + + + Gets the fragement text. + + + + + Gets the type of fragment. + + + + + Gets the line number of the fragment. + + + + + Gets the line position (column) of the fragment. + + + + + Gets the fragment position in the document's stream. + + + + + Represents a list of mixed code fragments. + + + + + Gets the Document + + + + + Gets the number of fragments contained in the list. + + + + + Gets a fragment from the list using its index. + + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Appends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Prepends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. + + The fragment to remove. May not be null. + + + + Remove all fragments from the list. + + + + + Remove a fragment from the list of fragments, using its index in the list. + + The index of the fragment to remove. + + + + Represents a fragment enumerator. + + + + + Gets the current element in the collection. + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Represents the type of fragment in a mixed code document. + + + + + The fragment contains code. + + + + + The fragment contains text. + + + + + Represents a fragment of text in a mixed code document. + + + + + Gets the fragment text. + + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.XML b/packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.XML new file mode 100644 index 0000000..01ee267 --- /dev/null +++ b/packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.XML @@ -0,0 +1,1672 @@ + + + + HtmlAgilityPack + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Used for downloading and parsing html from the internet + + + + + Allows for setting document defaults before loading + + + + + Begins the process of downloading an internet resource + + Url to the html document + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + + + + The exception that is thrown when a program contains invalid Microsoft intermediate language (MSIL) or metadata. Generally this indicates a bug in the compiler that generated the program. + + 2 + + + + Initializes a new instance of the class with default properties. + + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..30f580dac9c63e8e6bb33b7f8f72eb116a3b5407 GIT binary patch literal 89088 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 T{OYg}d+}1^|Ni~Y)4=}$dr5GV literal 0 HcmV?d00001 diff --git a/packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.XML b/packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.XML new file mode 100644 index 0000000..01ee267 --- /dev/null +++ b/packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.XML @@ -0,0 +1,1672 @@ + + + + HtmlAgilityPack + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Used for downloading and parsing html from the internet + + + + + Allows for setting document defaults before loading + + + + + Begins the process of downloading an internet resource + + Url to the html document + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + + + + The exception that is thrown when a program contains invalid Microsoft intermediate language (MSIL) or metadata. Generally this indicates a bug in the compiler that generated the program. + + 2 + + + + Initializes a new instance of the class with default properties. + + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. The exception that is the cause of the current exception. If the parameter is not a null reference (Nothing in Visual Basic), the current exception is raised in a catch block that handles the inner exception. + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..30f580dac9c63e8e6bb33b7f8f72eb116a3b5407 GIT binary patch literal 89088 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 T{OYg}d+}1^|Ni~Y)4=}$dr5GV literal 0 HcmV?d00001 diff --git a/packages/HtmlAgilityPack.1.6.5/lib/uap10.0/HtmlAgilityPack.XML b/packages/HtmlAgilityPack.1.6.5/lib/uap10.0/HtmlAgilityPack.XML new file mode 100644 index 0000000..5e58400 --- /dev/null +++ b/packages/HtmlAgilityPack.1.6.5/lib/uap10.0/HtmlAgilityPack.XML @@ -0,0 +1,2613 @@ + + + + HtmlAgilityPack + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + True to disable, false to enable the behavaior tag p. + + + + Defines the max level we would go deep into the html document + + + + True to stay backward compatible with previous version of HAP. This option does not guarantee 100% compatibility. + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + True to disable, false to enable the server side code. + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + Gets the parsed text. + The parsed text. + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. May not be null. + true to detect encoding, false otherwise. + + + + Detects the encoding of an HTML file. + + Path for the file containing the HTML document to detect. May not be null. + The detected encoding. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. May not be null. + The character encoding to use. May not be null. + + + + Creates a new XPathNavigator object for navigating this HTML document. + + An XPathNavigator object. The XPathNavigator is positioned on the root of the document. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + Follows Additional specification found at https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + See also: https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML node. + + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + Gets the CSS Class from the node. + + The CSS Class from the node + + + + Check if the node class has the parameter class. + The class. + True if node class has the parameter class, false if not. + + + + Creates a new XPathNavigator object for navigating this HTML node. + + An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document. + + + + Creates an XPathNavigator using the root of this document. + + + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects the first XmlNode that matches the XPath expression. + + The XPath expression. May not be null. + The first that matches the XPath query or a null reference if no matching node was found. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents an HTML navigator on an HTML document seen as a data store. + + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Gets the base URI for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the current HTML document. + + + + + Gets the current HTML node. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node is an empty element. + + + + + Gets the name of the current HTML node without the namespace prefix. + + + + + Gets the qualified name of the current node. + + + + + Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the associated with this implementation. + + + + + Gets the type of the current node. + + + + + Gets the prefix associated with the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the text value of the current node. + + + + + Gets the xml:lang scope for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator. + + A new HtmlNavigator object positioned at the same node as the original HtmlNavigator. + + + + Gets the value of the HTML attribute with the specified LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node. + + + + Returns the value of the namespace node corresponding to the specified local name. + Always returns string.Empty for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns string.Empty for the HtmlNavigator implementation. + + + + Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator. + + The HtmlNavigator that you want to compare against. + true if the two navigators have the same position, otherwise, false. + + + + Moves to the same position as the specified HtmlNavigator. + + The HtmlNavigator positioned on the node that you want to move to. + true if successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves to the HTML attribute with matching LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change. + + + + Moves to the first sibling of the current node. + + true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the first HTML attribute. + + true if the navigator is successful moving to the first HTML attribute, otherwise, false. + + + + Moves to the first child of the current node. + + true if there is a first child node, otherwise false. + + + + Moves the XPathNavigator to the first namespace node of the current element. + Always returns false for the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the node that has an attribute of type ID whose value matches the specified string. + + A string representing the ID value of the node to which you want to move. This argument does not need to be atomized. + true if the move was successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves the XPathNavigator to the namespace node with the specified local name. + Always returns false for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the next sibling of the current node. + + true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged. + + + + Moves to the next HTML attribute. + + + + + + Moves the XPathNavigator to the next namespace node. + Always returns falsefor the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the parent of the current node. + + true if there is a parent node, otherwise false. + + + + Moves to the previous sibling of the current node. + + true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the root node to which the current node belongs. + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + A utility class to get HTML document from HTTP. + + + + + Represents the method that will handle the PostResponse event. + + + + + Represents the method that will handle the PreHandleDocument event. + + + + + Represents the method that will handle the PostResponse event. + + + + + Occurs after an HTTP request has been executed. + + + + + Occurs before an HTML document is handled. + + + + + Occurs before an HTTP request is executed. + + + + + Gets or Sets a value indicating if document encoding must be automatically detected. + + + + + Gets or sets the Encoding used to override the response stream from any web request + + + + + Gets or Sets a value indicating whether to get document only from the cache. + If this is set to true and document is not found in the cache, nothing will be loaded. + + + + + Gets or Sets the cache path. If null, no caching mechanism will be used. + + + + + Gets a value indicating if the last document was retrieved from the cache. + + + + + Gets the last request duration in milliseconds. + + + + + Gets the URI of the Internet resource that actually responded to the request. + + + + + Gets the last request status. + + + + + Gets or Sets the size of the buffer used for memory operations. + + + + + Gets or Sets a value indicating if cookies will be stored. + + + + Gets or sets a value indicating whether redirect should be captured instead of the current location. + True if capture redirect, false if not. + + + + Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest + + + + + Gets or Sets a value indicating whether the caching mechanisms should be used or not. + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + + Gets the cache file path for a specified url. + + The url fo which to retrieve the cache path. May not be null. + The cache file path. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested Uri, such as new Uri("http://Myserver/Mypath/Myfile.asp"). + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The XmlTextWriter to which you want to save to. + + + + Begins the process of downloading an internet resource + + Url to the html document + + + + Begins the process of downloading an internet resource + + Url to the html document + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + Domain to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + Username to use for credentials in the web request + Password to use for credentials in the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The credentials to use for authenticating the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + + + + Begins the process of downloading an internet resource + + Url to the html document + The encoding to use while downloading the document + The credentials to use for authenticating the web request + A cancellation token that can be used by other objects or threads to receive notice of cancellation. + + + + An interface for getting permissions of the running application + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents. + + + + + Gets or sets the token representing code end. + + + + + Gets or sets the token representing code start. + + + + + Gets or sets the token representing code directive. + + + + + Gets or sets the token representing response write directive. + + + + + Creates a mixed code document instance. + + + + + Gets the code represented by the mixed code document seen as a template. + + + + + Gets the list of code fragments in the document. + + + + + Gets the list of all fragments in the document. + + + + + Gets the encoding of the stream used to read the document. + + + + + Gets the list of text fragments in the document. + + + + + Create a code fragment instances. + + The newly created code fragment instance. + + + + Create a text fragment instances. + + The newly created text fragment instance. + + + + Loads a mixed code document from a stream. + + The input stream. + + + + Loads a mixed code document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads the mixed code document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Loads a mixed document from a text + + The text to load. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + The character encoding to use. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + The character encoding to use. + + + + Saves the mixed document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the mixed document to the specified TextWriter. + + The TextWriter to which you want to save. + + + + Represents a fragment of code in a mixed code document. + + + + + Gets the fragment code text. + + + + + Represents a base class for fragments in a mixed code document. + + + + + Gets the fragement text. + + + + + Gets the type of fragment. + + + + + Gets the line number of the fragment. + + + + + Gets the line position (column) of the fragment. + + + + + Gets the fragment position in the document's stream. + + + + + Represents a list of mixed code fragments. + + + + + Gets the Document + + + + + Gets the number of fragments contained in the list. + + + + + Gets a fragment from the list using its index. + + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Appends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Prepends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. + + The fragment to remove. May not be null. + + + + Remove all fragments from the list. + + + + + Remove a fragment from the list of fragments, using its index in the list. + + The index of the fragment to remove. + + + + Represents a fragment enumerator. + + + + + Gets the current element in the collection. + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Represents the type of fragment in a mixed code document. + + + + + The fragment contains code. + + + + + The fragment contains text. + + + + + Represents a fragment of text in a mixed code document. + + + + + Gets the fragment text. + + + + diff --git a/packages/HtmlAgilityPack.1.6.5/lib/uap10.0/HtmlAgilityPack.dll b/packages/HtmlAgilityPack.1.6.5/lib/uap10.0/HtmlAgilityPack.dll new file mode 100644 index 0000000000000000000000000000000000000000..b4c038933e7c1fb5b30520fda148e4640a6a5ae0 GIT binary patch literal 140288 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 literal 0 HcmV?d00001 diff --git a/packages/HtmlAgilityPack.1.6.5/lib/uap10.0/HtmlAgilityPack.pri b/packages/HtmlAgilityPack.1.6.5/lib/uap10.0/HtmlAgilityPack.pri new file mode 100644 index 0000000000000000000000000000000000000000..57aa09b90b49674d47ddb466d52908d5577bb2cb GIT binary patch literal 688 zcmaJ%rt_*A}R(AyI*p00tBT`jGQR0#a9HNAwZ26Ra0w2ORMEMC8mT-?_ zlMIk++2`b*`>-9G%0y+AuYmv`A)o-9WG>M60@xV|NOe*~d2x8%)AehQ!mKU@Qe7wd zIO^24UeD?z(VgBRT63Atb{-|u*ks07cV^Ool#TpQcZ_aWYS0d{-imt#C%C;Z?4Gs)n+ k0LzJIqzgxh>`P=kk#|Y-^W5