@joebigelow / wix / commits / a63024bb

Integration tests for wixproj Sdk-style builds

Rob Mensching committed Dec 19, 2021 at 12:13 UTC a63024bb9c9bf431ab20b5653ae605503147aeec
148 files changed +85145 -1
src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj
+11
@@ -13,6 +13,17 @@
13 </ItemGroup>
14 <ItemGroup>
15 <ProjectReference Include="..\..\..\TestBA\TestBA_x64.csproj" />
16 + <!-- An alternative to the above line is to explicitly reference projects with
17 + the required target framework. Since we want all target frameworks built,
18 + the above line is shorter.
19 + <ProjectReference Include="..\..\..\TestBA\TestBA_x64.csproj">
20 + <SetTargetFramework>TargetFramework=net35</SetTargetFramework>
21 + </ProjectReference>
22 + <ProjectReference Include="..\..\..\TestBA\TestBA_x64.csproj">
23 + <SetTargetFramework>TargetFramework=net5.0-windows</SetTargetFramework>
24 + </ProjectReference>
25 + -->
26 +
27 <ProjectReference Include="..\..\..\TestExe\TestExe_x64.csproj" />
28 <ProjectReference Include="..\..\..\WixToolset.WixBA\WixToolset.WixBA_x64.csproj" />
29 </ItemGroup>
src/test/test.cmd
+3 -1
@@ -10,7 +10,9 @@
10 @if not "%RuntimeTestsEnabled%"=="true" echo Build integration tests %_C%
11 @if "%RuntimeTestsEnabled%"=="true" set _T=test&echo Run integration tests %_C%
12
13 -@call burn\test_burn.cmd %_C% %_T%
13 +@call burn\test_burn.cmd %_C% %_T% || exit /b
14 +
15 +dotnet test wix -c %_C% --nologo -v m || exit /b
16
17 @popd
18 @endlocal
src/test/wix/Directory.Build.props new
+11
@@ -0,0 +1,11 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 +<Project>
4 + <PropertyGroup>
5 + <SegmentName>IntegrationWix</SegmentName>
6 + <SignOutput>false</SignOutput>
7 + </PropertyGroup>
8 +
9 + <Import Project="..\..\Directory.Build.props" />
10 + <Import Project="Directory$(MSBuildProjectExtension).props" Condition=" Exists('Directory$(MSBuildProjectExtension).props') " />
11 +</Project>
src/test/wix/Directory.Build.targets new
+6
@@ -0,0 +1,6 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 +<Project>
4 + <Import Project="..\..\Directory.Build.targets" />
5 + <Import Project="Directory$(MSBuildProjectExtension).targets" Condition=" Exists('Directory$(MSBuildProjectExtension).targets') " />
6 +</Project>
src/test/wix/TestData/CsprojClassLibraryMultiTarget/Class1.cs new
+6
@@ -0,0 +1,6 @@
1 +namespace CsprojClassLibraryMultiTarget
2 +{
3 + public class Class1
4 + {
5 + }
6 +}
\ No newline at end of file
src/test/wix/TestData/CsprojClassLibraryMultiTarget/CsprojClassLibraryMultiTarget.csproj new
+11
@@ -0,0 +1,11 @@
1 +<Project Sdk="Microsoft.NET.Sdk">
2 +
3 + <PropertyGroup>
4 + <TargetFrameworks>net48;net5.0</TargetFrameworks>
5 + </PropertyGroup>
6 +
7 + <ItemGroup>
8 + <ProjectReference Include="..\CsprojClassLibraryNetCore\CsprojClassLibraryNetCore.csproj" />
9 + </ItemGroup>
10 +
11 +</Project>
src/test/wix/TestData/CsprojClassLibraryNetCore/Class1.cs new
+8
@@ -0,0 +1,8 @@
1 +using System;
2 +
3 +namespace CsprojClassLibraryNetCore
4 +{
5 + public class Class1
6 + {
7 + }
8 +}
src/test/wix/TestData/CsprojClassLibraryNetCore/CsprojClassLibraryNetCore.csproj new
+7
@@ -0,0 +1,7 @@
1 +<Project Sdk="Microsoft.NET.Sdk">
2 +
3 + <PropertyGroup>
4 + <TargetFramework>netstandard2.0</TargetFramework>
5 + </PropertyGroup>
6 +
7 +</Project>
src/test/wix/TestData/CsprojClassLibraryNetFx/Class1.cs new
+12
@@ -0,0 +1,12 @@
1 +using System;
2 +using System.Collections.Generic;
3 +using System.Linq;
4 +using System.Text;
5 +using System.Threading.Tasks;
6 +
7 +namespace CsprojClassLibraryNetFx
8 +{
9 + public class Class1
10 + {
11 + }
12 +}
src/test/wix/TestData/CsprojClassLibraryNetFx/CsprojClassLibraryNetFx.csproj new
+54
@@ -0,0 +1,54 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4 + <PropertyGroup>
5 + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6 + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7 + <ProjectGuid>984d615d-adb1-49b4-ae0b-4496ed963881</ProjectGuid>
8 + <OutputType>Library</OutputType>
9 + <AppDesignerFolder>Properties</AppDesignerFolder>
10 + <RootNamespace>CsprojClassLibraryNetFx</RootNamespace>
11 + <AssemblyName>CsprojClassLibraryNetFx</AssemblyName>
12 + <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
13 + <FileAlignment>512</FileAlignment>
14 + <Deterministic>true</Deterministic>
15 + </PropertyGroup>
16 + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
17 + <DebugSymbols>true</DebugSymbols>
18 + <DebugType>full</DebugType>
19 + <Optimize>false</Optimize>
20 + <OutputPath>bin\Debug\</OutputPath>
21 + <DefineConstants>DEBUG;TRACE</DefineConstants>
22 + <ErrorReport>prompt</ErrorReport>
23 + <WarningLevel>4</WarningLevel>
24 + </PropertyGroup>
25 + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
26 + <DebugType>pdbonly</DebugType>
27 + <Optimize>true</Optimize>
28 + <OutputPath>bin\Release\</OutputPath>
29 + <DefineConstants>TRACE</DefineConstants>
30 + <ErrorReport>prompt</ErrorReport>
31 + <WarningLevel>4</WarningLevel>
32 + </PropertyGroup>
33 + <ItemGroup>
34 + <Reference Include="System"/>
35 +
36 + <Reference Include="System.Core"/>
37 + <Reference Include="System.Xml.Linq"/>
38 + <Reference Include="System.Data.DataSetExtensions"/>
39 +
40 +
41 + <Reference Include="Microsoft.CSharp"/>
42 +
43 + <Reference Include="System.Data"/>
44 +
45 + <Reference Include="System.Net.Http"/>
46 +
47 + <Reference Include="System.Xml"/>
48 + </ItemGroup>
49 + <ItemGroup>
50 + <Compile Include="Class1.cs" />
51 + <Compile Include="Properties\AssemblyInfo.cs" />
52 + </ItemGroup>
53 + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
54 + </Project>
src/test/wix/TestData/CsprojClassLibraryNetFx/Properties/AssemblyInfo.cs new
+36
@@ -0,0 +1,36 @@
1 +using System.Reflection;
2 +using System.Runtime.CompilerServices;
3 +using System.Runtime.InteropServices;
4 +
5 +// General Information about an assembly is controlled through the following
6 +// set of attributes. Change these attribute values to modify the information
7 +// associated with an assembly.
8 +[assembly: AssemblyTitle("CsprojClassLibraryNetFx")]
9 +[assembly: AssemblyDescription("")]
10 +[assembly: AssemblyConfiguration("")]
11 +[assembly: AssemblyCompany("")]
12 +[assembly: AssemblyProduct("CsprojClassLibraryNetFx")]
13 +[assembly: AssemblyCopyright("Copyright © 2021")]
14 +[assembly: AssemblyTrademark("")]
15 +[assembly: AssemblyCulture("")]
16 +
17 +// Setting ComVisible to false makes the types in this assembly not visible
18 +// to COM components. If you need to access a type in this assembly from
19 +// COM, set the ComVisible attribute to true on that type.
20 +[assembly: ComVisible(false)]
21 +
22 +// The following GUID is for the ID of the typelib if this project is exposed to COM
23 +[assembly: Guid("984d615d-adb1-49b4-ae0b-4496ed963881")]
24 +
25 +// Version information for an assembly consists of the following four values:
26 +//
27 +// Major Version
28 +// Minor Version
29 +// Build Number
30 +// Revision
31 +//
32 +// You can specify all the values or you can default the Build and Revision Numbers
33 +// by using the '*' as shown below:
34 +// [assembly: AssemblyVersion("1.0.*")]
35 +[assembly: AssemblyVersion("1.0.0.0")]
36 +[assembly: AssemblyFileVersion("1.0.0.0")]
src/test/wix/TestData/CsprojConsoleNetCore/CsprojConsoleNetCore.csproj new
+13
@@ -0,0 +1,13 @@
1 +<Project Sdk="Microsoft.NET.Sdk">
2 +
3 + <PropertyGroup>
4 + <OutputType>Exe</OutputType>
5 + <TargetFramework>netcoreapp3.1</TargetFramework>
6 + <RuntimeIdentifiers>win-x86</RuntimeIdentifiers>
7 + </PropertyGroup>
8 +
9 + <ItemGroup>
10 + <ProjectReference Include="..\CsprojClassLibraryNetCore\CsprojClassLibraryNetCore.csproj" />
11 + </ItemGroup>
12 +
13 +</Project>
src/test/wix/TestData/CsprojConsoleNetCore/CsprojConsoleNetCore.sln new
+25
@@ -0,0 +1,25 @@
1 +
2 +Microsoft Visual Studio Solution File, Format Version 12.00
3 +# Visual Studio Version 16
4 +VisualStudioVersion = 16.0.31911.196
5 +MinimumVisualStudioVersion = 10.0.40219.1
6 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsprojConsoleNetCore", "CsprojConsoleNetCore.csproj", "{A87A6E98-EE6A-4688-8716-E2378AC7BB75}"
7 +EndProject
8 +Global
9 + GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 + Debug|Any CPU = Debug|Any CPU
11 + Release|Any CPU = Release|Any CPU
12 + EndGlobalSection
13 + GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 + {A87A6E98-EE6A-4688-8716-E2378AC7BB75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 + {A87A6E98-EE6A-4688-8716-E2378AC7BB75}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 + {A87A6E98-EE6A-4688-8716-E2378AC7BB75}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 + {A87A6E98-EE6A-4688-8716-E2378AC7BB75}.Release|Any CPU.Build.0 = Release|Any CPU
18 + EndGlobalSection
19 + GlobalSection(SolutionProperties) = preSolution
20 + HideSolutionNode = FALSE
21 + EndGlobalSection
22 + GlobalSection(ExtensibilityGlobals) = postSolution
23 + SolutionGuid = {9D5D5A46-18B1-4B8B-BC4B-DBD4EFC8215D}
24 + EndGlobalSection
25 +EndGlobal
src/test/wix/TestData/CsprojConsoleNetCore/Program.cs new
+12
@@ -0,0 +1,12 @@
1 +using System;
2 +
3 +namespace CsprojConsoleNetCore
4 +{
5 + class Program
6 + {
7 + static void Main(string[] args)
8 + {
9 + Console.WriteLine("Hello World!");
10 + }
11 + }
12 +}
src/test/wix/TestData/CsprojConsoleNetCore/out.xml new
+16133
@@ -0,0 +1,16133 @@
1 +<!--
2 +============================================================================================================================================
3 +D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore\CsprojConsoleNetCore.csproj
4 +============================================================================================================================================
5 +-->
6 +<Project DefaultTargets="Build">
7 + <!--
8 +============================================================================================================================================
9 + <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk">
10 + This import was added implicitly because the Project element's Sdk attribute specified "Microsoft.NET.Sdk".
11 +
12 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props
13 +============================================================================================================================================
14 +-->
15 + <!--
16 +***********************************************************************************************
17 +Sdk.props
18 +
19 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
20 + created a backup copy. Incorrect changes to this file will make it
21 + impossible to load or build your projects from the command-line or the IDE.
22 +
23 +Copyright (c) .NET Foundation. All rights reserved.
24 +***********************************************************************************************
25 +-->
26 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
27 + <!--
28 + Indicate to other targets that Microsoft.NET.Sdk is being used.
29 +
30 + This must be set here (as early as possible, before Microsoft.Common.props)
31 + so that everything that follows can depend on it.
32 +
33 + In particular, Directory.Build.props and nuget package props need to be able
34 + to use this flag and they are imported by Microsoft.Common.props.
35 + -->
36 + <UsingMicrosoftNETSdk>true</UsingMicrosoftNETSdk>
37 + <!--
38 + Indicate whether the set of SDK defaults that makes SDK style project concise are being used.
39 + For example: globbing, importing msbuild common targets.
40 +
41 + Similar to the property above, it must be set here.
42 + -->
43 + <UsingNETSdkDefaults>true</UsingNETSdkDefaults>
44 + </PropertyGroup>
45 + <PropertyGroup Condition="'$(MSBuildProjectFullPath)' == '$(ProjectToOverrideProjectExtensionsPath)'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
46 + <MSBuildProjectExtensionsPath>$(ProjectExtensionsPathForSpecifiedProject)</MSBuildProjectExtensionsPath>
47 + </PropertyGroup>
48 + <!--<Import Project="$(AlternateCommonProps)" Condition="'$(AlternateCommonProps)' != ''" />-->
49 + <!--
50 +============================================================================================================================================
51 + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="'$(AlternateCommonProps)' == ''">
52 +
53 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.props
54 +============================================================================================================================================
55 +-->
56 + <!--
57 +***********************************************************************************************
58 +Microsoft.Common.props
59 +
60 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
61 + created a backup copy. Incorrect changes to this file will make it
62 + impossible to load or build your projects from the command-line or the IDE.
63 +
64 +Copyright (C) Microsoft Corporation. All rights reserved.
65 +***********************************************************************************************
66 +-->
67 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
68 + <ImportByWildcardBeforeMicrosoftCommonProps Condition="'$(ImportByWildcardBeforeMicrosoftCommonProps)' == ''">true</ImportByWildcardBeforeMicrosoftCommonProps>
69 + <ImportByWildcardAfterMicrosoftCommonProps Condition="'$(ImportByWildcardAfterMicrosoftCommonProps)' == ''">true</ImportByWildcardAfterMicrosoftCommonProps>
70 + <ImportUserLocationsByWildcardBeforeMicrosoftCommonProps Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCommonProps)' == ''">true</ImportUserLocationsByWildcardBeforeMicrosoftCommonProps>
71 + <ImportUserLocationsByWildcardAfterMicrosoftCommonProps Condition="'$(ImportUserLocationsByWildcardAfterMicrosoftCommonProps)' == ''">true</ImportUserLocationsByWildcardAfterMicrosoftCommonProps>
72 + <ImportDirectoryBuildProps Condition="'$(ImportDirectoryBuildProps)' == ''">true</ImportDirectoryBuildProps>
73 + </PropertyGroup>
74 + <!--
75 + Determine the path to the directory build props file if the user did not disable $(ImportDirectoryBuildProps) and
76 + they did not already specify an absolute path to use via $(DirectoryBuildPropsPath)
77 + -->
78 + <PropertyGroup Condition="'$(ImportDirectoryBuildProps)' == 'true' and '$(DirectoryBuildPropsPath)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
79 + <_DirectoryBuildPropsFile Condition="'$(_DirectoryBuildPropsFile)' == ''">Directory.Build.props</_DirectoryBuildPropsFile>
80 + <_DirectoryBuildPropsBasePath Condition="'$(_DirectoryBuildPropsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), '$(_DirectoryBuildPropsFile)'))</_DirectoryBuildPropsBasePath>
81 + <DirectoryBuildPropsPath Condition="'$(_DirectoryBuildPropsBasePath)' != '' and '$(_DirectoryBuildPropsFile)' != ''">$([System.IO.Path]::Combine('$(_DirectoryBuildPropsBasePath)', '$(_DirectoryBuildPropsFile)'))</DirectoryBuildPropsPath>
82 + </PropertyGroup>
83 + <!--
84 +============================================================================================================================================
85 + <Import Project="$(DirectoryBuildPropsPath)" Condition="'$(ImportDirectoryBuildProps)' == 'true' and exists('$(DirectoryBuildPropsPath)')">
86 +
87 +D:\src\wix4\src\test\wix\TestProjects\Directory.Build.props
88 +============================================================================================================================================
89 +-->
90 + <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
91 + <!--
92 + This file prevents the import of WiX standard Directory.Build.props
93 + from the root src directory
94 + -->
95 + <!--
96 +============================================================================================================================================
97 + </Import>
98 +
99 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.props
100 +============================================================================================================================================
101 +-->
102 + <!--
103 + Prepare to import project extensions which usually come from packages. Package management systems will create a file at:
104 + $(MSBuildProjectExtensionsPath)\$(MSBuildProjectFile).<SomethingUnique>.props
105 +
106 + Each package management system should use a unique moniker to avoid collisions. It is a wild-card import so the package
107 + management system can write out multiple files but the order of the import is alphabetic because MSBuild sorts the list.
108 + -->
109 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
110 + <!--
111 + The declaration of $(BaseIntermediateOutputPath) had to be moved up from Microsoft.Common.CurrentVersion.targets
112 + in order for the $(MSBuildProjectExtensionsPath) to use it as a default.
113 + -->
114 + <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">obj\</BaseIntermediateOutputPath>
115 + <BaseIntermediateOutputPath Condition="!HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
116 + <_InitialBaseIntermediateOutputPath>$(BaseIntermediateOutputPath)</_InitialBaseIntermediateOutputPath>
117 + <MSBuildProjectExtensionsPath Condition="'$(MSBuildProjectExtensionsPath)' == '' ">$(BaseIntermediateOutputPath)</MSBuildProjectExtensionsPath>
118 + <!--
119 + Import paths that are relative default to be relative to the importing file. However, since MSBuildExtensionsPath
120 + defaults to BaseIntermediateOutputPath we expect it to be relative to the project directory. So if the path is relative
121 + it needs to be made absolute based on the project directory.
122 + -->
123 + <MSBuildProjectExtensionsPath Condition="'$([System.IO.Path]::IsPathRooted($(MSBuildProjectExtensionsPath)))' == 'false'">$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(MSBuildProjectExtensionsPath)'))</MSBuildProjectExtensionsPath>
124 + <MSBuildProjectExtensionsPath Condition="!HasTrailingSlash('$(MSBuildProjectExtensionsPath)')">$(MSBuildProjectExtensionsPath)\</MSBuildProjectExtensionsPath>
125 + <ImportProjectExtensionProps Condition="'$(ImportProjectExtensionProps)' == ''">true</ImportProjectExtensionProps>
126 + <_InitialMSBuildProjectExtensionsPath Condition=" '$(ImportProjectExtensionProps)' == 'true' ">$(MSBuildProjectExtensionsPath)</_InitialMSBuildProjectExtensionsPath>
127 + </PropertyGroup>
128 + <!--<Import Project="$(MSBuildProjectExtensionsPath)$(MSBuildProjectFile).*.props" Condition="'$(ImportProjectExtensionProps)' == 'true' and exists('$(MSBuildProjectExtensionsPath)')" />-->
129 + <!--
130 + Import wildcard "ImportBefore" props files if we're actually in a 12.0+ project (rather than a project being
131 + treated as 4.0)
132 + -->
133 + <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' != ''">-->
134 + <!--
135 + Wildcard imports come from $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props.d folder.
136 + This is very similar to the same extension point used in Microsoft.Common.targets, which is located in
137 + the $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ directory. Unfortunately, there
138 + is already a file named "Microsoft.Common.props" in this directory so we have to have a slightly different
139 + directory name to hold extensions.
140 + -->
141 + <!--<Import Project="$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCommonProps)' == 'true' and exists('$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore')" />-->
142 + <!--
143 +============================================================================================================================================
144 + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonProps)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore')">
145 +
146 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Imports\Microsoft.Common.props\ImportBefore\Microsoft.NuGet.ImportBefore.props
147 +============================================================================================================================================
148 +-->
149 + <!--
150 +***********************************************************************************************
151 +Microsoft.NuGet.ImportBefore.props
152 +
153 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
154 + created a backup copy. Incorrect changes to this file will make it
155 + impossible to load or build your projects from the command-line or the IDE.
156 +
157 +Copyright (c) .NET Foundation. All rights reserved.
158 +***********************************************************************************************
159 +-->
160 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
161 + <NuGetProps Condition="'$(NuGetProps)'==''">$(MSBuildExtensionsPath)\Microsoft\NuGet\$(VisualStudioVersion)\Microsoft.NuGet.props</NuGetProps>
162 + </PropertyGroup>
163 + <!--
164 +============================================================================================================================================
165 + <Import Project="$(NuGetProps)" Condition="Exists('$(NuGetProps)') and '$(SkipImportNuGetProps)' != 'true'">
166 +
167 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\NuGet\16.0\Microsoft.NuGet.props
168 +============================================================================================================================================
169 +-->
170 + <!--
171 +***********************************************************************************************
172 +Microsoft.NuGet.props
173 +
174 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
175 + created a backup copy. Incorrect changes to this file will make it
176 + impossible to load or build your projects from the command-line or the IDE.
177 +
178 +Copyright (c) .NET Foundation. All rights reserved.
179 +***********************************************************************************************
180 +-->
181 + <!--<Import Project="$(MSBuildProjectDirectory)\$(MSBuildProjectName).nuget.props" Condition="Exists('$(MSBuildProjectDirectory)\$(MSBuildProjectName).nuget.props') AND '$(IncludeNuGetImports)' != 'false'" />-->
182 + <!--
183 +============================================================================================================================================
184 + </Import>
185 +
186 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Imports\Microsoft.Common.props\ImportBefore\Microsoft.NuGet.ImportBefore.props
187 +============================================================================================================================================
188 +-->
189 + <!--
190 +============================================================================================================================================
191 + </Import>
192 +
193 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.props
194 +============================================================================================================================================
195 +-->
196 + <!--</ImportGroup>-->
197 + <!--
198 + In VS 2010 SP1 and VS 2012, both supported for asset compatibility, the MSBuild installed
199 + as part of them did not enforce using the local ToolsVersion (4.0) in all cases, but instead
200 + just used whatever ToolsVersion was in the project file if it existed on the machine, and
201 + only forced 4.0 if that ToolsVersion did not exist.
202 +
203 + Moving forward, we do want to enforce a single acting ToolsVersion per version of Visual Studio,
204 + but in order to approximate this behavior on VS 2010 SP1 and VS 2012 as well, we've redirected
205 + the targets: If we're building using 4.X MSBuild (which doesn't define the new reserved
206 + property, MSBuildAssemblyVersion), we'll point right back at the 4.0 targets, which still exist
207 + as part of the .NET Framework. Only if we're using the new MSBuild will we point to the current
208 + targets.
209 + -->
210 + <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == '' and ('$(VisualStudioVersion)' != '' and '$(VisualStudioVersion)' &gt;= '12.0')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
211 + <!--
212 + Reset VisualStudioVersion if it's 12.0+: Should be 10.0 if VS 2010 is installed or 11.0 otherwise,
213 + but since we don't have a good way of telling whether VS 2010 is installed, make it 11.0 if
214 + VS 2012 is installed or 10.0 otherwise. The reset should be safe because if it was already
215 + set to something (e.g. 11.0 in a VS 2012 command prompt) then MSBuild's internal
216 + VisualStudioVersion-defaulting code should never come into the picture, so the only way it could
217 + be 12.0+ when building a TV 12.0 project (because we're in this file) using MSBuild 4.5 (because
218 + MSBuildAssemblyVersion hasn't been set) is if it's a TV 12.0 project on an empty command prompt.
219 + -->
220 + <VisualStudioVersion Condition="Exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props')">11.0</VisualStudioVersion>
221 + <VisualStudioVersion Condition="!Exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props')">10.0</VisualStudioVersion>
222 + </PropertyGroup>
223 + <!-- If building using 4.X MSBuild, we want to act like this project is TV 4.0, so override
224 + the custom extensibility target locations with the hard-coded 4.0 equivalent. -->
225 + <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
226 + <CustomBeforeMicrosoftCommonProps Condition="'$(CustomBeforeMicrosoftCommonProps)'==''">$(MSBuildExtensionsPath)\v4.0\Custom.Before.$(MSBuildThisFile)</CustomBeforeMicrosoftCommonProps>
227 + <CustomAfterMicrosoftCommonProps Condition="'$(CustomAfterMicrosoftCommonProps)'==''">$(MSBuildExtensionsPath)\v4.0\Custom.After.$(MSBuildThisFile)</CustomAfterMicrosoftCommonProps>
228 + </PropertyGroup>
229 + <!-- If building using 4.X MSBuild, we want to act like this project is TV 4.0, so import
230 + Microsoft.Common.props from the 4.0 location, and make sure everything else in here is
231 + set up such that if it's defaulted to something there, it won't be overridden here. -->
232 + <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props" Condition="'$(MSBuildAssemblyVersion)' == '' and Exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props')" />-->
233 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
234 + <CustomBeforeMicrosoftCommonProps Condition="'$(CustomBeforeMicrosoftCommonProps)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.Before.$(MSBuildThisFile)</CustomBeforeMicrosoftCommonProps>
235 + <CustomAfterMicrosoftCommonProps Condition="'$(CustomAfterMicrosoftCommonProps)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.After.$(MSBuildThisFile)</CustomAfterMicrosoftCommonProps>
236 + </PropertyGroup>
237 + <!--
238 + Only import the extension targets if we're actually in a 12.0 project here (rather than one we're attempting
239 + to treat as 4.0) OR if the Dev11 Microsoft.Common.props don't exist. If it's a 12.0 project we're redirecting
240 + to 4.0 and the Dev11 Microsoft.Common.props do exist, the extension targets will have been imported already
241 + so there's no need to import them twice.
242 + -->
243 + <!--<Import Project="$(CustomBeforeMicrosoftCommonProps)" Condition="'$(CustomBeforeMicrosoftCommonProps)' != '' and Exists('$(CustomBeforeMicrosoftCommonProps)') and ('$(MSBuildAssemblyVersion)' != '' or !Exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props'))" />-->
244 + <!-- This is used to determine whether Microsoft.Common.targets needs to import
245 + Microsoft.Common.props itself, or whether it has been imported previously,
246 + e.g. by the project itself. -->
247 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
248 + <MicrosoftCommonPropsHasBeenImported>true</MicrosoftCommonPropsHasBeenImported>
249 + </PropertyGroup>
250 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
251 + <Configuration Condition=" '$(Configuration)' == '' and '$(DefaultProjectConfiguration)' != '' ">$(DefaultProjectConfiguration)</Configuration>
252 + <Platform Condition=" '$(Platform)' == '' and '$(DefaultProjectPlatform)' != '' ">$(DefaultProjectPlatform)</Platform>
253 + </PropertyGroup>
254 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
255 + <WMSJSProject Condition="'$(WMSJSProject)' == ''">WJProject</WMSJSProject>
256 + <WMSJSProjectDirectory Condition="'$(WMSJSProjectDirectory)' == ''">JavaScript</WMSJSProjectDirectory>
257 + </PropertyGroup>
258 + <!--<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.VisualStudioVersion.v*.Common.props" Condition="'$(VisualStudioVersion)' == ''" />-->
259 + <!--
260 + Only import the extension targets if we're actually in a 12.0 project here (rather than one we're attempting
261 + to treat as 4.0) OR if the Dev11 Microsoft.Common.props don't exist. If it's a 12.0 project we're redirecting
262 + to 4.0 and the Dev11 Microsoft.Common.props do exist, the extension targets will have been imported already
263 + so there's no need to import them twice.
264 + -->
265 + <!--<Import Project="$(CustomAfterMicrosoftCommonProps)" Condition="'$(CustomAfterMicrosoftCommonProps)' != '' and Exists('$(CustomAfterMicrosoftCommonProps)') and ('$(MSBuildAssemblyVersion)' != '' or !Exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.props'))" />-->
266 + <!--
267 + Import wildcard "ImportAfter" props files if we're actually in a 12.0+ project (rather than a project being
268 + treated as 4.0)
269 + -->
270 + <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' != ''">-->
271 + <!--<Import Project="$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportAfter\*" Condition="'$(ImportUserLocationsByWildcardAfterMicrosoftCommonProps)' == 'true' and exists('$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportAfter')" />-->
272 + <!--<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportAfter\*" Condition="'$(ImportByWildcardAfterMicrosoftCommonProps)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportAfter')" />-->
273 + <!--</ImportGroup>-->
274 + <!--
275 + Import NuGet.props file.
276 + -->
277 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
278 + <MSBuildUseVisualStudioDirectoryLayout Condition="'$(MSBuildUseVisualStudioDirectoryLayout)'==''">$([MSBuild]::IsRunningFromVisualStudio())</MSBuildUseVisualStudioDirectoryLayout>
279 + <NuGetPropsFile Condition="'$(NuGetPropsFile)'=='' and '$(MSBuildUseVisualStudioDirectoryLayout)'=='true'">$(MSBuildToolsPath32)\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.props</NuGetPropsFile>
280 + <NuGetPropsFile Condition="'$(NuGetPropsFile)'==''">$(MSBuildToolsPath)\NuGet.props</NuGetPropsFile>
281 + </PropertyGroup>
282 + <!--
283 +============================================================================================================================================
284 + <Import Project="$(NuGetPropsFile)" Condition="Exists('$(NuGetPropsFile)')">
285 +
286 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.props
287 +============================================================================================================================================
288 +-->
289 + <!--
290 +***********************************************************************************************
291 +NuGet.props
292 +
293 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
294 + created a backup copy. Incorrect changes to this file will make it
295 + impossible to load or build your projects from the command-line or the IDE.
296 +
297 +Copyright (c) .NET Foundation. All rights reserved.
298 +***********************************************************************************************
299 +-->
300 + <!--
301 + Import 'Directory.Packages.props' which will contain centralized packages for all the projects and solutions under
302 + the directory in which the file is present. This is similar to 'Directory.Build.props/targets' logic which is present
303 + in the common props/targets which serve a similar purpose.
304 + -->
305 + <PropertyGroup>
306 + <ImportDirectoryPackagesProps Condition="'$(ImportDirectoryPackagesProps)' == ''">true</ImportDirectoryPackagesProps>
307 + </PropertyGroup>
308 + <!--
309 + Determine the path to the 'Directory.Packages.props' file, if the user did not disable $(ImportDirectoryPackagesProps) and
310 + they did not already specify an absolute path to use via $(DirectoryPackagesPropsPath)
311 + -->
312 + <PropertyGroup Condition="'$(ImportDirectoryPackagesProps)' == 'true' and '$(DirectoryPackagesPropsPath)' == ''">
313 + <_DirectoryPackagesPropsFile Condition="'$(_DirectoryPackagesPropsFile)' == ''">Directory.Packages.props</_DirectoryPackagesPropsFile>
314 + <_DirectoryPackagesPropsBasePath Condition="'$(_DirectoryPackagesPropsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove('$(MSBuildProjectDirectory)', '$(_DirectoryPackagesPropsFile)'))</_DirectoryPackagesPropsBasePath>
315 + <DirectoryPackagesPropsPath Condition="'$(_DirectoryPackagesPropsBasePath)' != '' and '$(_DirectoryPackagesPropsFile)' != ''">$([MSBuild]::NormalizePath('$(_DirectoryPackagesPropsBasePath)', '$(_DirectoryPackagesPropsFile)'))</DirectoryPackagesPropsPath>
316 + </PropertyGroup>
317 + <!--
318 +============================================================================================================================================
319 + <Import Project="$(DirectoryPackagesPropsPath)" Condition="'$(ImportDirectoryPackagesProps)' == 'true' and '$(DirectoryPackagesPropsPath)' != '' and Exists('$(DirectoryPackagesPropsPath)')">
320 +
321 +D:\src\wix4\src\test\wix\TestProjects\Directory.Packages.props
322 +============================================================================================================================================
323 +-->
324 + <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
325 + <!--
326 + This file prevents the import of WiX standard Directory.Packages.props
327 + from the root src directory
328 + -->
329 + <!--
330 +============================================================================================================================================
331 + </Import>
332 +
333 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.props
334 +============================================================================================================================================
335 +-->
336 + <PropertyGroup Condition="'$(ImportDirectoryPackagesProps)' == 'true' and '$(DirectoryPackagesPropsPath)' != '' and Exists('$(DirectoryPackagesPropsPath)')">
337 + <CentralPackageVersionsFileImported>true</CentralPackageVersionsFileImported>
338 + </PropertyGroup>
339 + <!--
340 +============================================================================================================================================
341 + </Import>
342 +
343 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.props
344 +============================================================================================================================================
345 +-->
346 + <PropertyGroup Condition=" '$(MSBuildLogVerboseTaskParameters)' != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
347 + <DisableLogTaskParameter_ConvertToAbsolutePath_Path>true</DisableLogTaskParameter_ConvertToAbsolutePath_Path>
348 + <DisableLogTaskParameter_FindUnderPath_OutOfPath>true</DisableLogTaskParameter_FindUnderPath_OutOfPath>
349 + <DisableLogTaskParameter_RemoveDuplicates_Inputs>true</DisableLogTaskParameter_RemoveDuplicates_Inputs>
350 + <DisableLogTaskParameterItemMetadata_ConvertToAbsolutePath_AbsolutePaths>true</DisableLogTaskParameterItemMetadata_ConvertToAbsolutePath_AbsolutePaths>
351 + <DisableLogTaskParameterItemMetadata_Copy_CopiedFiles>true</DisableLogTaskParameterItemMetadata_Copy_CopiedFiles>
352 + <DisableLogTaskParameterItemMetadata_Copy_DestinationFiles>true</DisableLogTaskParameterItemMetadata_Copy_DestinationFiles>
353 + <DisableLogTaskParameterItemMetadata_Copy_SourceFiles>true</DisableLogTaskParameterItemMetadata_Copy_SourceFiles>
354 + <DisableLogTaskParameterItemMetadata_FindUnderPath_Files>true</DisableLogTaskParameterItemMetadata_FindUnderPath_Files>
355 + <DisableLogTaskParameterItemMetadata_FindUnderPath_InPath>true</DisableLogTaskParameterItemMetadata_FindUnderPath_InPath>
356 + <DisableLogTaskParameterItemMetadata_GenerateResource_FilesWritten>true</DisableLogTaskParameterItemMetadata_GenerateResource_FilesWritten>
357 + <DisableLogTaskParameterItemMetadata_Hash_ItemsToHash>true</DisableLogTaskParameterItemMetadata_Hash_ItemsToHash>
358 + <DisableLogTaskParameterItemMetadata_RemoveDuplicates_Filtered>true</DisableLogTaskParameterItemMetadata_RemoveDuplicates_Filtered>
359 + <DisableLogTaskParameterItemMetadata_WriteLinesToFile_Lines>true</DisableLogTaskParameterItemMetadata_WriteLinesToFile_Lines>
360 + </PropertyGroup>
361 + <!--
362 +============================================================================================================================================
363 + </Import>
364 +
365 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props
366 +============================================================================================================================================
367 +-->
368 + <!--
369 +============================================================================================================================================
370 + <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.props">
371 +
372 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
373 +============================================================================================================================================
374 +-->
375 + <!--
376 +***********************************************************************************************
377 +Microsoft.NET.Sdk.props
378 +
379 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
380 + created a backup copy. Incorrect changes to this file will make it
381 + impossible to load or build your projects from the command-line or the IDE.
382 +
383 +Copyright (c) .NET Foundation. All rights reserved.
384 +***********************************************************************************************
385 +-->
386 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
387 + <!-- This property disables the conflict resolution logic from the Microsoft.Packaging.Tools package, which is superceded by the logic here in the SDK -->
388 + <DisableHandlePackageFileConflicts>true</DisableHandlePackageFileConflicts>
389 + </PropertyGroup>
390 + <!-- Default configuration and platform to Debug|AnyCPU-->
391 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
392 + <Configurations Condition=" '$(Configurations)' == '' ">Debug;Release</Configurations>
393 + <Platforms Condition=" '$(Platforms)' == '' ">AnyCPU</Platforms>
394 + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
395 + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
396 + </PropertyGroup>
397 + <!-- User-facing configuration-agnostic defaults -->
398 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
399 + <OutputType Condition=" '$(OutputType)' == '' ">Library</OutputType>
400 + <FileAlignment Condition=" '$(FileAlignment)' == '' ">512</FileAlignment>
401 + <ErrorReport Condition=" '$(ErrorReport)' == '' ">prompt</ErrorReport>
402 + <AssemblyName Condition=" '$(AssemblyName)' == '' ">$(MSBuildProjectName)</AssemblyName>
403 + <RootNamespace Condition=" '$(RootNamespace)' == '' ">$(MSBuildProjectName.Replace(" ", "_"))</RootNamespace>
404 + <Deterministic Condition=" '$(Deterministic)' == '' ">true</Deterministic>
405 + </PropertyGroup>
406 + <!-- User-facing configuration-specific defaults -->
407 + <PropertyGroup Condition=" '$(Configuration)' == 'Debug' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
408 + <DebugSymbols Condition=" '$(DebugSymbols)' == '' ">true</DebugSymbols>
409 + <Optimize Condition=" '$(Optimize)' == '' ">false</Optimize>
410 + </PropertyGroup>
411 + <PropertyGroup Condition=" '$(Configuration)' == 'Release' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
412 + <Optimize Condition=" '$(Optimize)' == '' ">true</Optimize>
413 + </PropertyGroup>
414 + <!-- User-facing platform-specific defaults -->
415 + <!--
416 + NOTE:
417 +
418 + * We cannot compare against $(Platform) directly as that will give VS cause to instantiate extra
419 + configurations, for each combination, which leads to performance problems and clutter in the sln
420 + in the common AnyCPU-only case.
421 +
422 + * We cannot just set $(PlatformTarget) to $(Platform) here because $(Platform) can be set to anything
423 + at the solution level, but there are a fixed set valid $(PlatformTarget) values that can be passed
424 + to the compiler. It is up to the user to explicitly set PlatformTarget to non-AnyCPU (if desired)
425 + outside the 1:1 defaults below.
426 + -->
427 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
428 + <_PlatformWithoutConfigurationInference>$(Platform)</_PlatformWithoutConfigurationInference>
429 + </PropertyGroup>
430 + <PropertyGroup Condition=" '$(_PlatformWithoutConfigurationInference)' == 'x64' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
431 + <PlatformTarget Condition=" '$(PlatformTarget)' == '' ">x64</PlatformTarget>
432 + </PropertyGroup>
433 + <PropertyGroup Condition=" '$(_PlatformWithoutConfigurationInference)' == 'x86' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
434 + <PlatformTarget Condition=" '$(PlatformTarget)' == '' ">x86</PlatformTarget>
435 + </PropertyGroup>
436 + <PropertyGroup Condition=" '$(_PlatformWithoutConfigurationInference)' == 'ARM' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
437 + <PlatformTarget Condition=" '$(PlatformTarget)' == '' ">ARM</PlatformTarget>
438 + </PropertyGroup>
439 + <!-- Default settings for all projects built with this Sdk package -->
440 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
441 + <DebugType Condition=" '$(DebugType)' == '' ">portable</DebugType>
442 + <!-- This will turn off the base UWP-specific 'ResolveNuGetPackages' target -->
443 + <ResolveNuGetPackages>false</ResolveNuGetPackages>
444 + <!-- Skip import of Microsoft.NuGet.props and Microsoft.NuGet.targets -->
445 + <SkipImportNuGetProps>true</SkipImportNuGetProps>
446 + <SkipImportNuGetBuildTargets>true</SkipImportNuGetBuildTargets>
447 + <!-- NuGet should always restore .NET SDK projects with "PackageReference" style restore. Setting this property will
448 + cause the right thing to happen even if there aren't any PackageReference items in the project, such as when
449 + a project targets .NET Framework and doesn't have any direct package dependencies. -->
450 + <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
451 + <!-- Exclude GAC, registry, output directory from search paths. -->
452 + <AssemblySearchPaths Condition=" '$(AssemblySearchPaths)' == '' ">{CandidateAssemblyFiles};{HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}</AssemblySearchPaths>
453 + <DesignTimeAssemblySearchPaths Condition=" '$(DesignTimeAssemblySearchPaths)' == '' ">$(AssemblySearchPaths)</DesignTimeAssemblySearchPaths>
454 + <AllowUnsafeBlocks Condition="'$(AllowUnsafeBlocks)'==''">false</AllowUnsafeBlocks>
455 + <TreatWarningsAsErrors Condition="'$(TreatWarningsAsErrors)'==''">false</TreatWarningsAsErrors>
456 + <Prefer32Bit Condition="'$(Prefer32Bit)'==''">false</Prefer32Bit>
457 + <SignAssembly Condition="'$(SignAssembly)'==''">false</SignAssembly>
458 + <DelaySign Condition="'$(DelaySign)'==''">false</DelaySign>
459 + <GeneratePackageOnBuild Condition="'$(GeneratePackageOnBuild)'==''">false</GeneratePackageOnBuild>
460 + <PackageRequireLicenseAcceptance Condition="'$(PackageRequireLicenseAcceptance)'==''">false</PackageRequireLicenseAcceptance>
461 + <DebugSymbols Condition="'$(DebugSymbols)'==''">false</DebugSymbols>
462 + <CheckForOverflowUnderflow Condition="'$(CheckForOverflowUnderflow)'==''">false</CheckForOverflowUnderflow>
463 + <AutomaticallyUseReferenceAssemblyPackages Condition="'$(AutomaticallyUseReferenceAssemblyPackages)'==''">true</AutomaticallyUseReferenceAssemblyPackages>
464 + <MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion>1.0.2</MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion>
465 + <CopyConflictingTransitiveContent>false</CopyConflictingTransitiveContent>
466 + <MSBuildCopyContentTransitively Condition="'$(MSBuildCopyContentTransitively)' == ''">true</MSBuildCopyContentTransitively>
467 + <ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts Condition="'$(ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts)' == ''">true</ResolveAssemblyReferenceOutputUnresolvedAssemblyConflicts>
468 + <!-- Uncomment this once https://github.com/Microsoft/visualfsharp/issues/3207 gets fixed -->
469 + <!-- <WarningsAsErrors>$(WarningsAsErrors);NU1605</WarningsAsErrors> -->
470 + </PropertyGroup>
471 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
472 + <!-- Path to project that the .NET CLI will build in order to generate deps.json files for .NET CLI tools -->
473 + <ToolDepsJsonGeneratorProject>$(MSBuildThisFileDirectory)GenerateDeps\GenerateDeps.proj</ToolDepsJsonGeneratorProject>
474 + </PropertyGroup>
475 + <!-- Default item includes (globs and implicit references) -->
476 + <!--
477 +============================================================================================================================================
478 + <Import Project="Microsoft.NET.Sdk.DefaultItems.props">
479 +
480 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.props
481 +============================================================================================================================================
482 +-->
483 + <!--
484 +***********************************************************************************************
485 +Microsoft.NET.Sdk.DefaultItems.props
486 +
487 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
488 + created a backup copy. Incorrect changes to this file will make it
489 + impossible to load or build your projects from the command-line or the IDE.
490 +
491 +Copyright (c) .NET Foundation. All rights reserved.
492 +***********************************************************************************************
493 +-->
494 + <PropertyGroup Condition="'$(NETCoreSdkBundledVersionsProps)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
495 + <NETCoreSdkBundledVersionsProps>$(MSBuildThisFileDirectory)..\..\..\Microsoft.NETCoreSdk.BundledVersions.props</NETCoreSdkBundledVersionsProps>
496 + </PropertyGroup>
497 + <!--
498 +============================================================================================================================================
499 + <Import Project="$(NETCoreSdkBundledVersionsProps)" Condition="Exists('$(NETCoreSdkBundledVersionsProps)')">
500 +
501 +C:\Program Files\dotnet\sdk\6.0.100\Microsoft.NETCoreSdk.BundledVersions.props
502 +============================================================================================================================================
503 +-->
504 + <!--
505 +***********************************************************************************************
506 +Microsoft.NETCoreSdk.BundledVersions.props
507 +
508 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
509 + created a backup copy. Incorrect changes to this file will make it
510 + impossible to load or build your projects from the command-line or the IDE.
511 +
512 +Copyright (c) .NET Foundation. All rights reserved.
513 +***********************************************************************************************
514 +-->
515 + <PropertyGroup>
516 + <NetCoreRoot Condition="'$(NetCoreRoot)' == ''">$([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)..\..\'))</NetCoreRoot>
517 + <NetCoreTargetingPackRoot Condition="'$(NetCoreTargetingPackRoot)' == ''">$([MSBuild]::EnsureTrailingSlash('$(NetCoreRoot)'))packs</NetCoreTargetingPackRoot>
518 + <NETCoreAppMaximumVersion>6.0</NETCoreAppMaximumVersion>
519 + <BundledNETCoreAppTargetFrameworkVersion>6.0</BundledNETCoreAppTargetFrameworkVersion>
520 + <BundledNETCoreAppPackageVersion>6.0.0</BundledNETCoreAppPackageVersion>
521 + <BundledNETStandardTargetFrameworkVersion>2.1</BundledNETStandardTargetFrameworkVersion>
522 + <BundledNETStandardPackageVersion>2.1.0</BundledNETStandardPackageVersion>
523 + <BundledNETCorePlatformsPackageVersion>6.0.0</BundledNETCorePlatformsPackageVersion>
524 + <BundledRuntimeIdentifierGraphFile>$(MSBuildThisFileDirectory)RuntimeIdentifierGraph.json</BundledRuntimeIdentifierGraphFile>
525 + <NETCoreSdkVersion>6.0.100</NETCoreSdkVersion>
526 + <NETCoreSdkRuntimeIdentifier>win-x64</NETCoreSdkRuntimeIdentifier>
527 + <NETCoreSdkPortableRuntimeIdentifier>win-x64</NETCoreSdkPortableRuntimeIdentifier>
528 + <_NETCoreSdkIsPreview>false</_NETCoreSdkIsPreview>
529 + </PropertyGroup>
530 + <ItemGroup>
531 + <ImplicitPackageReferenceVersion Include="Microsoft.NETCore.App" TargetFrameworkVersion="1.0" DefaultVersion="1.0.5" LatestVersion="1.0.16" />
532 + <ImplicitPackageReferenceVersion Include="Microsoft.NETCore.App" TargetFrameworkVersion="1.1" DefaultVersion="1.1.2" LatestVersion="1.1.13" />
533 + <ImplicitPackageReferenceVersion Include="Microsoft.NETCore.App" TargetFrameworkVersion="2.0" DefaultVersion="2.0.0" LatestVersion="2.0.9" />
534 + <ImplicitPackageReferenceVersion Include="Microsoft.NETCore.App" TargetFrameworkVersion="2.1" DefaultVersion="2.1.0" LatestVersion="2.1.30" />
535 + <ImplicitPackageReferenceVersion Include="Microsoft.NETCore.App" TargetFrameworkVersion="2.2" DefaultVersion="2.2.0" LatestVersion="2.2.8" />
536 + <ImplicitPackageReferenceVersion Include="Microsoft.AspNetCore.App" TargetFrameworkVersion="2.1" DefaultVersion="2.1.1" LatestVersion="2.1.30" />
537 + <ImplicitPackageReferenceVersion Include="Microsoft.AspNetCore.All" TargetFrameworkVersion="2.1" DefaultVersion="2.1.1" LatestVersion="2.1.30" />
538 + <ImplicitPackageReferenceVersion Include="Microsoft.AspNetCore.App" TargetFrameworkVersion="2.2" DefaultVersion="2.2.0" LatestVersion="2.2.8" />
539 + <ImplicitPackageReferenceVersion Include="Microsoft.AspNetCore.All" TargetFrameworkVersion="2.2" DefaultVersion="2.2.0" LatestVersion="2.2.8" />
540 + <!-- .NET 6.0 -->
541 + <KnownFrameworkReference Include="Microsoft.NETCore.App" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.NETCore.App" DefaultRuntimeFrameworkVersion="6.0.0" LatestRuntimeFrameworkVersion="6.0.0" TargetingPackName="Microsoft.NETCore.App.Ref" TargetingPackVersion="6.0.0" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;maccatalyst-x64;maccatalyst-arm64;linux-s390x" />
542 + <KnownAppHostPack Include="Microsoft.NETCore.App" TargetFramework="net6.0" AppHostPackNamePattern="Microsoft.NETCore.App.Host.**RID**" AppHostPackVersion="6.0.0" AppHostRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;linux-s390x" />
543 + <KnownCrossgen2Pack Include="Microsoft.NETCore.App.Crossgen2" TargetFramework="net6.0" Crossgen2PackNamePattern="Microsoft.NETCore.App.Crossgen2.**RID**" Crossgen2PackVersion="6.0.0" Crossgen2RuntimeIdentifiers="linux-musl-x64;linux-x64;win-x64;linux-arm;linux-arm64;linux-musl-arm;linux-musl-arm64;osx-arm64;osx-x64;win-arm;win-arm64;win-x86" />
544 + <KnownRuntimePack Include="Microsoft.NETCore.App" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.NETCore.App" LatestRuntimeFrameworkVersion="6.0.0" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.Mono.**RID**" RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;maccatalyst-x64;maccatalyst-arm64;linux-s390x;browser-wasm;ios-arm64;ios-arm;iossimulator-arm64;iossimulator-x64;iossimulator-x86;tvos-arm64;tvossimulator-arm64;tvossimulator-x64;android-arm64;android-arm;android-x64;android-x86" RuntimePackLabels="Mono" />
545 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="6.0.0" LatestRuntimeFrameworkVersion="6.0.0" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="6.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm64" IsWindowsOnly="true" />
546 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="6.0.0" LatestRuntimeFrameworkVersion="6.0.0" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="6.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm64" IsWindowsOnly="true" Profile="WPF" />
547 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="6.0.0" LatestRuntimeFrameworkVersion="6.0.0" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="6.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm64" IsWindowsOnly="true" Profile="WindowsForms" />
548 + <KnownFrameworkReference Include="Microsoft.AspNetCore.App" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.AspNetCore.App" DefaultRuntimeFrameworkVersion="6.0.0" LatestRuntimeFrameworkVersion="6.0.0" TargetingPackName="Microsoft.AspNetCore.App.Ref" TargetingPackVersion="6.0.0" RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm;osx-x64;linux-musl-x64;linux-musl-arm64;linux-x64;linux-arm;linux-arm64;linux-musl-arm;win-arm64;osx-arm64;linux-s390x" />
549 + <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net6.0-windows10.0.17763.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.17763.21" LatestRuntimeFrameworkVersion="10.0.17763.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.17763.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
550 + <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net6.0-windows10.0.18362.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.18362.21" LatestRuntimeFrameworkVersion="10.0.18362.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.18362.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
551 + <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net6.0-windows10.0.19041.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.19041.21" LatestRuntimeFrameworkVersion="10.0.19041.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.19041.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
552 + <!-- .NET 5.0 -->
553 + <KnownFrameworkReference Include="Microsoft.NETCore.App" TargetFramework="net5.0" RuntimeFrameworkName="Microsoft.NETCore.App" DefaultRuntimeFrameworkVersion="5.0.0" LatestRuntimeFrameworkVersion="5.0.12" TargetingPackName="Microsoft.NETCore.App.Ref" TargetingPackVersion="5.0.0" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm;browser-wasm" IsTrimmable="true" />
554 + <KnownAppHostPack Include="Microsoft.NETCore.App" TargetFramework="net5.0" AppHostPackNamePattern="Microsoft.NETCore.App.Host.**RID**" AppHostPackVersion="5.0.12" AppHostRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86;linux-musl-arm" />
555 + <KnownCrossgen2Pack Include="Microsoft.NETCore.App.Crossgen2" TargetFramework="net5.0" Crossgen2PackNamePattern="Microsoft.NETCore.App.Crossgen2.**RID**" Crossgen2PackVersion="5.0.12" Crossgen2RuntimeIdentifiers="linux-musl-x64;linux-x64;win-x64" />
556 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App" TargetFramework="net5.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="5.0.0" LatestRuntimeFrameworkVersion="5.0.12" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="5.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" />
557 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" TargetFramework="net5.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="5.0.0" LatestRuntimeFrameworkVersion="5.0.12" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="5.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WPF" />
558 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" TargetFramework="net5.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="5.0.0" LatestRuntimeFrameworkVersion="5.0.12" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="5.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WindowsForms" />
559 + <KnownFrameworkReference Include="Microsoft.AspNetCore.App" TargetFramework="net5.0" RuntimeFrameworkName="Microsoft.AspNetCore.App" DefaultRuntimeFrameworkVersion="5.0.0" LatestRuntimeFrameworkVersion="5.0.12" TargetingPackName="Microsoft.AspNetCore.App.Ref" TargetingPackVersion="5.0.0" RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm;osx-x64;linux-musl-x64;linux-musl-arm64;linux-x64;linux-arm;linux-arm64;linux-musl-arm;win-arm64" />
560 + <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net5.0-windows10.0.17763.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.17763.21" LatestRuntimeFrameworkVersion="10.0.17763.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.17763.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
561 + <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net5.0-windows10.0.18362.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.18362.21" LatestRuntimeFrameworkVersion="10.0.18362.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.18362.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
562 + <KnownFrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" TargetFramework="net5.0-windows10.0.19041.0" RuntimeFrameworkName="Microsoft.Windows.SDK.NET.Ref" DefaultRuntimeFrameworkVersion="10.0.19041.21" LatestRuntimeFrameworkVersion="10.0.19041.21" TargetingPackName="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.19041.21" RuntimePackAlwaysCopyLocal="true" RuntimePackNamePatterns="Microsoft.Windows.SDK.NET.Ref" RuntimePackRuntimeIdentifiers="any" IsWindowsOnly="true" />
563 + <!-- .NET Core 3.1 -->
564 + <KnownFrameworkReference Include="Microsoft.NETCore.App" TargetFramework="netcoreapp3.1" RuntimeFrameworkName="Microsoft.NETCore.App" DefaultRuntimeFrameworkVersion="3.1.0" LatestRuntimeFrameworkVersion="3.1.21" TargetingPackName="Microsoft.NETCore.App.Ref" TargetingPackVersion="3.1.0" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86" IsTrimmable="true" />
565 + <KnownAppHostPack Include="Microsoft.NETCore.App" TargetFramework="netcoreapp3.1" AppHostPackNamePattern="Microsoft.NETCore.App.Host.**RID**" AppHostPackVersion="3.1.21" AppHostRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86" />
566 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App" TargetFramework="netcoreapp3.1" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.1.0" LatestRuntimeFrameworkVersion="3.1.21" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.1.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" />
567 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" TargetFramework="netcoreapp3.1" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.1.0" LatestRuntimeFrameworkVersion="3.1.21" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.1.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WPF" />
568 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" TargetFramework="netcoreapp3.1" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.1.0" LatestRuntimeFrameworkVersion="3.1.21" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.1.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WindowsForms" />
569 + <KnownFrameworkReference Include="Microsoft.AspNetCore.App" TargetFramework="netcoreapp3.1" RuntimeFrameworkName="Microsoft.AspNetCore.App" DefaultRuntimeFrameworkVersion="3.1.0" LatestRuntimeFrameworkVersion="3.1.21" TargetingPackName="Microsoft.AspNetCore.App.Ref" TargetingPackVersion="3.1.10" RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm;osx-x64;linux-musl-x64;linux-musl-arm64;linux-x64;linux-arm;linux-arm64" />
570 + <!-- .NET Core 3.0 -->
571 + <KnownFrameworkReference Include="Microsoft.NETCore.App" TargetFramework="netcoreapp3.0" RuntimeFrameworkName="Microsoft.NETCore.App" DefaultRuntimeFrameworkVersion="3.0.0" LatestRuntimeFrameworkVersion="3.0.3" TargetingPackName="Microsoft.NETCore.App.Ref" TargetingPackVersion="3.0.0" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86" IsTrimmable="true" />
572 + <KnownAppHostPack Include="Microsoft.NETCore.App" TargetFramework="netcoreapp3.0" AppHostPackNamePattern="Microsoft.NETCore.App.Host.**RID**" AppHostPackVersion="3.0.3" AppHostRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm;win-arm64;win-x64;win-x86" />
573 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App" TargetFramework="netcoreapp3.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.0.0" LatestRuntimeFrameworkVersion="3.0.3" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" />
574 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" TargetFramework="netcoreapp3.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.0.0" LatestRuntimeFrameworkVersion="3.0.3" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WPF" />
575 + <KnownFrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" TargetFramework="netcoreapp3.0" RuntimeFrameworkName="Microsoft.WindowsDesktop.App" DefaultRuntimeFrameworkVersion="3.0.0" LatestRuntimeFrameworkVersion="3.0.3" TargetingPackName="Microsoft.WindowsDesktop.App.Ref" TargetingPackVersion="3.0.0" RuntimePackNamePatterns="Microsoft.WindowsDesktop.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86" IsWindowsOnly="true" Profile="WindowsForms" />
576 + <KnownFrameworkReference Include="Microsoft.AspNetCore.App" TargetFramework="netcoreapp3.0" RuntimeFrameworkName="Microsoft.AspNetCore.App" DefaultRuntimeFrameworkVersion="3.0.0" LatestRuntimeFrameworkVersion="3.0.3" TargetingPackName="Microsoft.AspNetCore.App.Ref" TargetingPackVersion="3.0.1" RuntimePackNamePatterns="Microsoft.AspNetCore.App.Runtime.**RID**" RuntimePackRuntimeIdentifiers="win-x64;win-x86;win-arm;osx-x64;linux-musl-x64;linux-musl-arm64;linux-x64;linux-arm;linux-arm64" />
577 + <KnownFrameworkReference Include="NETStandard.Library" TargetFramework="netstandard2.1" TargetingPackName="NETStandard.Library.Ref" TargetingPackVersion="2.1.0" />
578 + <!-- Supported Windows versions -->
579 + <WindowsSdkSupportedTargetPlatformVersion Include="10.0.22000.0" WindowsSdkPackageVersion="10.0.22000.21" MinimumNETVersion="5.0" />
580 + <WindowsSdkSupportedTargetPlatformVersion Include="10.0.20348.0" WindowsSdkPackageVersion="10.0.20348.21" MinimumNETVersion="5.0" />
581 + <WindowsSdkSupportedTargetPlatformVersion Include="10.0.19041.0" WindowsSdkPackageVersion="10.0.19041.21" MinimumNETVersion="5.0" />
582 + <WindowsSdkSupportedTargetPlatformVersion Include="10.0.18362.0" WindowsSdkPackageVersion="10.0.18362.21" MinimumNETVersion="5.0" />
583 + <WindowsSdkSupportedTargetPlatformVersion Include="10.0.17763.0" WindowsSdkPackageVersion="10.0.17763.21" MinimumNETVersion="5.0" />
584 + <WindowsSdkSupportedTargetPlatformVersion Include="8.0" />
585 + <WindowsSdkSupportedTargetPlatformVersion Include="7.0" />
586 + </ItemGroup>
587 + <!--
588 +============================================================================================================================================
589 + </Import>
590 +
591 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.props
592 +============================================================================================================================================
593 +-->
594 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
595 + <!-- Set RuntimeIdentifier graph for NuGet (this needs to be after NETCoreSdkBundledVersionsProps is imported, as that's where
596 + BundledRuntimeIdentifierGraphFile is set. -->
597 + <RuntimeIdentifierGraphPath Condition="'$(RuntimeIdentifierGraphPath)' == ''">$(BundledRuntimeIdentifierGraphFile)</RuntimeIdentifierGraphPath>
598 + </PropertyGroup>
599 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
600 + <!-- Disable web SDK implicit package versions for ASP.NET packages, since the .NET SDK now handles that -->
601 + <EnableWebSdkImplicitPackageVersions>false</EnableWebSdkImplicitPackageVersions>
602 + </PropertyGroup>
603 + <ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
604 + <Compile Include="**/*$(DefaultLanguageSourceExtension)" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" Condition=" '$(EnableDefaultCompileItems)' == 'true' " />
605 + <EmbeddedResource Include="**/*.resx" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" Condition=" '$(EnableDefaultEmbeddedResourceItems)' == 'true' " />
606 + </ItemGroup>
607 + <ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' And '$(EnableDefaultNoneItems)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
608 + <None Include="**/*" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
609 + <None Remove="**/*$(DefaultLanguageSourceExtension)" />
610 + <None Remove="**/*.resx" />
611 + </ItemGroup>
612 + <!-- Automatically reference NETStandard.Library or Microsoft.NETCore.App package if targeting the corresponding target framework.
613 + We can refer here in the .props file to properties set in the .targets files because items and their conditions are
614 + evaluated in the second pass of evaluation, after all properties have been evaluated. -->
615 + <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
616 + <PackageReference Include="NETStandard.Library" Version="$(NETStandardImplicitPackageVersion)" IsImplicitlyDefined="true" />
617 + <!-- If targeting .NET Standard 2.0 or higher, then don't include a dependency on NETStandard.Library in the package produced by pack -->
618 + <PackageReference Update="NETStandard.Library" Condition=" ('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &gt;= '2.0') " PrivateAssets="All" Publish="true" />
619 + </ItemGroup>
620 + <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(_TargetFrameworkVersionWithoutV)' &gt;= '2.1'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
621 + <FrameworkReference Include="NETStandard.Library" IsImplicitlyDefined="true" Pack="false" PrivateAssets="All" />
622 + </ItemGroup>
623 + <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
624 + <!-- Use implicit PackageReference for Microsoft.NETCore.App on versions prior to 3.0. For 3.0 or higher, use
625 + an implicit FrameworkReference -->
626 + <PackageReference Include="Microsoft.NETCore.App" IsImplicitlyDefined="true" Condition="('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &lt; '3.0')" />
627 + <!-- For targeting .NET Core 2.0 or higher, don't include a dependency on Microsoft.NETCore.App in the package produced by pack.
628 + Packing an DotnetCliTool should include the Microsoft.NETCore.App package dependency. -->
629 + <PackageReference Update="Microsoft.NETCore.App" Condition="('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &gt;= '2.0') And ('$(PackageType)' != 'DotnetCliTool')" PrivateAssets="All" Publish="true" />
630 + <FrameworkReference Include="Microsoft.NETCore.App" IsImplicitlyDefined="true" Pack="false" PrivateAssets="All" Condition="('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0')" />
631 + <!-- Allow opt-in to Mono runtime pack for .NET 6.0 or higher -->
632 + <FrameworkReference Update="Microsoft.NETCore.App" RuntimePackLabels="Mono" Condition="'$(UseMonoRuntime)' == 'true' And ('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &gt;= '6.0')" />
633 + </ItemGroup>
634 + <!--
635 +============================================================================================================================================
636 + </Import>
637 +
638 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
639 +============================================================================================================================================
640 +-->
641 + <!-- Put workload resolution behind a feature flag. It can be enabled either by setting the MSBuildEnableWorkloadResolver environment variable to true, or by
642 + putting an EnableWorkloadResolver.sentinel file beside the MSBuild SDK resolver DLL -->
643 + <PropertyGroup Condition="'$(MSBuildEnableWorkloadResolver)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
644 + <__DisableWorkloadResolverSentinelPath Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildBinPath)\DisableWorkloadResolver.sentinel</__DisableWorkloadResolverSentinelPath>
645 + <__DisableWorkloadResolverSentinelPath Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildBinPath)\SdkResolvers\Microsoft.DotNet.MSBuildSdkResolver\DisableWorkloadResolver.sentinel</__DisableWorkloadResolverSentinelPath>
646 + <MSBuildEnableWorkloadResolver Condition="!Exists('$(__DisableWorkloadResolverSentinelPath)')">true</MSBuildEnableWorkloadResolver>
647 + </PropertyGroup>
648 + <!-- Import workload props -->
649 + <!--
650 +============================================================================================================================================
651 + <Import Project="Microsoft.NET.Sdk.ImportWorkloads.props" Condition="'$(MSBuildEnableWorkloadResolver)' == 'true'">
652 +
653 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.ImportWorkloads.props
654 +============================================================================================================================================
655 +-->
656 + <!--
657 +***********************************************************************************************
658 +Microsoft.NET.Sdk.ImportWorkloads.props
659 +
660 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
661 + created a backup copy. Incorrect changes to this file will make it
662 + impossible to load or build your projects from the command-line or the IDE.
663 +
664 +Copyright (c) .NET Foundation. All rights reserved.
665 +***********************************************************************************************
666 +-->
667 + <!-- Import workload props -->
668 + <!--<Import Project="AutoImport.props" Sdk="Microsoft.NET.SDK.WorkloadAutoImportPropsLocator" />-->
669 + <!--
670 +============================================================================================================================================
671 + </Import>
672 +
673 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
674 +============================================================================================================================================
675 +-->
676 + <!-- List of supported .NET Core and .NET Standard TFMs -->
677 + <!--
678 +============================================================================================================================================
679 + <Import Project="Microsoft.NET.SupportedTargetFrameworks.props">
680 +
681 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.SupportedTargetFrameworks.props
682 +============================================================================================================================================
683 +-->
684 + <!--
685 +***********************************************************************************************
686 +Microsoft.NET.SupportedTargetFrameworks.targets
687 +
688 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
689 + created a backup copy. Incorrect changes to this file will make it
690 + impossible to load or build your projects from the command-line or the IDE.
691 +
692 +Copyright (c) .NET Foundation. All rights reserved.
693 +***********************************************************************************************
694 +-->
695 + <!-- This file contains a list of the TFMs that are supported by this SDK for .NET Core, .NET Standard, and .NET Framework.
696 + This is used by VS to show the list of frameworks to which projects can be retargeted. -->
697 + <!-- .NET Core App -->
698 + <ItemGroup>
699 + <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.0" DisplayName=".NET Core 1.0" Alias="netcoreapp1.0" />
700 + <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.1" DisplayName=".NET Core 1.1" Alias="netcoreapp1.1" />
701 + <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.0" DisplayName=".NET Core 2.0" Alias="netcoreapp2.0" />
702 + <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.1" DisplayName=".NET Core 2.1" Alias="netcoreapp2.1" />
703 + <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.2" DisplayName=".NET Core 2.2" Alias="netcoreapp2.2" />
704 + <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v3.0" DisplayName=".NET Core 3.0" Alias="netcoreapp3.0" />
705 + <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v3.1" DisplayName=".NET Core 3.1" Alias="netcoreapp3.1" />
706 + <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v5.0" DisplayName=".NET 5.0" Alias="net5.0" />
707 + <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v6.0" DisplayName=".NET 6.0" Alias="net6.0" Condition="$([MSBuild]::VersionGreaterThanOrEquals($(MSBuildVersion), '17.0'))" />
708 + </ItemGroup>
709 + <!-- .NET Standard -->
710 + <ItemGroup>
711 + <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.0" DisplayName=".NET Standard 1.0" Alias="netstandard1.0" />
712 + <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.1" DisplayName=".NET Standard 1.1" Alias="netstandard1.1" />
713 + <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.2" DisplayName=".NET Standard 1.2" Alias="netstandard1.2" />
714 + <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.3" DisplayName=".NET Standard 1.3" Alias="netstandard1.3" />
715 + <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.4" DisplayName=".NET Standard 1.4" Alias="netstandard1.4" />
716 + <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.5" DisplayName=".NET Standard 1.5" Alias="netstandard1.5" />
717 + <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.6" DisplayName=".NET Standard 1.6" Alias="netstandard1.6" />
718 + <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v2.0" DisplayName=".NET Standard 2.0" Alias="netstandard2.0" />
719 + <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v2.1" DisplayName=".NET Standard 2.1" Alias="netstandard2.1" />
720 + </ItemGroup>
721 + <!-- .NET Framework -->
722 + <ItemGroup>
723 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v2.0" DisplayName=".NET Framework 2.0" Alias="net20" />
724 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v3.0" DisplayName=".NET Framework 3.0" Alias="net30" />
725 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v3.5" DisplayName=".NET Framework 3.5" Alias="net35" />
726 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.0" DisplayName=".NET Framework 4.0" Alias="net40" />
727 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.5" DisplayName=".NET Framework 4.5" Alias="net45" />
728 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.5.1" DisplayName=".NET Framework 4.5.1" Alias="net451" />
729 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.5.2" DisplayName=".NET Framework 4.5.2" Alias="net452" />
730 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.6" DisplayName=".NET Framework 4.6" Alias="net46" />
731 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.6.1" DisplayName=".NET Framework 4.6.1" Alias="net461" />
732 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.6.2" DisplayName=".NET Framework 4.6.2" Alias="net462" />
733 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.7" DisplayName=".NET Framework 4.7" Alias="net47" />
734 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.7.1" DisplayName=".NET Framework 4.7.1" Alias="net471" />
735 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.7.2" DisplayName=".NET Framework 4.7.2" Alias="net472" />
736 + <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.8" DisplayName=".NET Framework 4.8" Alias="net48" />
737 + </ItemGroup>
738 + <!-- All supported target frameworks -->
739 + <ItemGroup>
740 + <SupportedTargetFramework Include="@(SupportedNETCoreAppTargetFramework);@(SupportedNETStandardTargetFramework);@(SupportedNETFrameworkTargetFramework)" />
741 + </ItemGroup>
742 + <!--
743 +============================================================================================================================================
744 + </Import>
745 +
746 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
747 +============================================================================================================================================
748 +-->
749 + <!-- List of supported target platforms -->
750 + <!--
751 +============================================================================================================================================
752 + <Import Project="Microsoft.NET.SupportedPlatforms.props">
753 +
754 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.SupportedPlatforms.props
755 +============================================================================================================================================
756 +-->
757 + <!--
758 +***********************************************************************************************
759 +Microsoft.NET.SupportedPlatforms.props
760 +
761 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
762 + created a backup copy. Incorrect changes to this file will make it
763 + impossible to load or build your projects from the command-line or the IDE.
764 +
765 +Copyright (c) .NET Foundation. All rights reserved.
766 +***********************************************************************************************
767 +-->
768 + <ItemGroup>
769 + <!-- Platforms supported by this SDK for analyzer warnings. Spec: https://github.com/dotnet/designs/blob/main/accepted/2020/platform-exclusion/platform-exclusion.md -->
770 + <SupportedPlatform Include="Linux" />
771 + <SupportedPlatform Include="macOS" />
772 + <SupportedPlatform Include="Windows" />
773 + </ItemGroup>
774 + <!--
775 +============================================================================================================================================
776 + </Import>
777 +
778 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
779 +============================================================================================================================================
780 +-->
781 + <!-- List of supported .NET windows target platform versions -->
782 + <!--
783 +============================================================================================================================================
784 + <Import Project="Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props">
785 +
786 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props
787 +============================================================================================================================================
788 +-->
789 + <!--
790 +***********************************************************************************************
791 +Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props
792 +
793 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
794 + created a backup copy. Incorrect changes to this file will make it
795 + impossible to load or build your projects from the command-line or the IDE.
796 +
797 +Copyright (c) .NET Foundation. All rights reserved.
798 +***********************************************************************************************
799 +-->
800 + <!-- This file contains a list of the windows target platform versions that are supported by this SDK for .NET. Supported versions are processed in _NormalizeTargetPlatformVersion -->
801 + <!-- These will be added to the BundledVersions.props that's generated in dotnet/installer. So only add them here if we don't have that change yet -->
802 + <ItemGroup Condition="'@(WindowsSdkSupportedTargetPlatformVersion)' == ''">
803 + <WindowsSdkSupportedTargetPlatformVersion Include="10.0.19041.0" WindowsSdkPackageVersion="10.0.19041.16" MinimumNETVersion="5.0" />
804 + <WindowsSdkSupportedTargetPlatformVersion Include="10.0.18362.0" WindowsSdkPackageVersion="10.0.18362.16" MinimumNETVersion="5.0" />
805 + <WindowsSdkSupportedTargetPlatformVersion Include="10.0.17763.0" WindowsSdkPackageVersion="10.0.17763.16" MinimumNETVersion="5.0" />
806 + <WindowsSdkSupportedTargetPlatformVersion Include="8.0" />
807 + <WindowsSdkSupportedTargetPlatformVersion Include="7.0" />
808 + </ItemGroup>
809 + <ItemGroup>
810 + <SdkSupportedTargetPlatformVersion Condition="'$(TargetPlatformIdentifier)' == 'Windows'" Include="@(WindowsSdkSupportedTargetPlatformVersion)" />
811 + </ItemGroup>
812 + <!--
813 +============================================================================================================================================
814 + </Import>
815 +
816 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
817 +============================================================================================================================================
818 +-->
819 + <!--
820 +============================================================================================================================================
821 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.CSharp.props" Condition="'$(MSBuildProjectExtension)' == '.csproj'">
822 +
823 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.CSharp.props
824 +============================================================================================================================================
825 +-->
826 + <!--
827 +***********************************************************************************************
828 +Microsoft.NET.Sdk.CSharp.props
829 +
830 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
831 + created a backup copy. Incorrect changes to this file will make it
832 + impossible to load or build your projects from the command-line or the IDE.
833 +
834 +Copyright (c) .NET Foundation. All rights reserved.
835 +***********************************************************************************************
836 +-->
837 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
838 + <WarningLevel Condition=" '$(WarningLevel)' == '' ">4</WarningLevel>
839 + <NoWarn Condition=" '$(NoWarn)' == '' ">1701;1702</NoWarn>
840 + <!-- Remove the line below once https://github.com/Microsoft/visualfsharp/issues/3207 gets fixed -->
841 + <WarningsAsErrors>$(WarningsAsErrors);NU1605</WarningsAsErrors>
842 + </PropertyGroup>
843 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
844 + <DefineConstants Condition=" '$(DefineConstants)' != '' ">$(DefineConstants);</DefineConstants>
845 + <DefineConstants>$(DefineConstants)TRACE</DefineConstants>
846 + </PropertyGroup>
847 + <!-- Implicit imports -->
848 + <ItemGroup Condition="'$(ImplicitUsings)' == 'true' Or '$(ImplicitUsings)' == 'enable'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
849 + <Using Include="System" />
850 + <Using Include="System.Collections.Generic" />
851 + <Using Include="System.IO" />
852 + <Using Include="System.Linq" />
853 + <Using Include="System.Net.Http" />
854 + <Using Include="System.Threading" />
855 + <Using Include="System.Threading.Tasks" />
856 + </ItemGroup>
857 + <!--
858 +============================================================================================================================================
859 + </Import>
860 +
861 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
862 +============================================================================================================================================
863 +-->
864 + <!--<Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.VisualBasic.props" Condition="'$(MSBuildProjectExtension)' == '.vbproj'" />-->
865 + <!--<Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.FSharp.props" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />-->
866 + <!--
867 +============================================================================================================================================
868 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.ILLink.props">
869 +
870 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ILLink.props
871 +============================================================================================================================================
872 +-->
873 + <!--
874 +***********************************************************************************************
875 +Microsoft.NET.ILLink.props
876 +
877 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
878 + created a backup copy. Incorrect changes to this file will make it
879 + impossible to load or build your projects from the command-line or the IDE.
880 +
881 +Copyright (c) .NET Foundation. All rights reserved.
882 +***********************************************************************************************
883 +-->
884 + <!--
885 +============================================================================================================================================
886 + <Import Project="Sdk.props" Sdk="Microsoft.NET.ILLink.Tasks">
887 +
888 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.ILLink.Tasks\Sdk\Sdk.props
889 +============================================================================================================================================
890 +-->
891 + <!--
892 +***********************************************************************************************
893 +Sdk.props
894 +
895 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
896 + created a backup copy. Incorrect changes to this file will make it
897 + impossible to load or build your projects from the command-line or the IDE.
898 +
899 +Copyright (c) .NET Foundation. All rights reserved.
900 +***********************************************************************************************
901 +-->
902 + <!-- Only import the build props if the ILLink.Tasks package isn't referenced via NuGet. -->
903 + <!--
904 +============================================================================================================================================
905 + <Import Project="$(MSBuildThisFileDirectory)..\build\Microsoft.NET.ILLink.Tasks.props" Condition="'$(UsingILLinkTasksSdk)' != 'true'">
906 +
907 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.ILLink.Tasks\build\Microsoft.NET.ILLink.Tasks.props
908 +============================================================================================================================================
909 +-->
910 + <!--
911 +***********************************************************************************************
912 +Microsoft.NET.ILLink.Tasks.props
913 +
914 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
915 + created a backup copy. Incorrect changes to this file will make it
916 + impossible to load or build your projects from the command-line or the IDE.
917 +
918 +Copyright (c) .NET Foundation. All rights reserved.
919 +***********************************************************************************************
920 +-->
921 + <PropertyGroup>
922 + <UsingILLinkTasksSdk>true</UsingILLinkTasksSdk>
923 + <ILLinkTasksAssembly Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net6.0\ILLink.Tasks.dll</ILLinkTasksAssembly>
924 + <ILLinkTasksAssembly Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\net472\ILLink.Tasks.dll</ILLinkTasksAssembly>
925 + </PropertyGroup>
926 + <!--
927 +============================================================================================================================================
928 + </Import>
929 +
930 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.ILLink.Tasks\Sdk\Sdk.props
931 +============================================================================================================================================
932 +-->
933 + <!--
934 +============================================================================================================================================
935 + </Import>
936 +
937 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ILLink.props
938 +============================================================================================================================================
939 +-->
940 + <!--
941 +============================================================================================================================================
942 + </Import>
943 +
944 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
945 +============================================================================================================================================
946 +-->
947 + <!--
948 +============================================================================================================================================
949 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Compatibility.props">
950 +
951 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Compatibility.props
952 +============================================================================================================================================
953 +-->
954 + <!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. -->
955 + <PropertyGroup>
956 + <DotNetCompatibilityAssembly Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\net472\Microsoft.DotNet.Compatibility.dll</DotNetCompatibilityAssembly>
957 + <DotNetCompatibilityAssembly Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net6.0\Microsoft.DotNet.Compatibility.dll</DotNetCompatibilityAssembly>
958 + </PropertyGroup>
959 + <!--
960 +============================================================================================================================================
961 + </Import>
962 +
963 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
964 +============================================================================================================================================
965 +-->
966 + <!--
967 +============================================================================================================================================
968 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackTool.props">
969 +
970 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.PackTool.props
971 +============================================================================================================================================
972 +-->
973 + <!--
974 +***********************************************************************************************
975 +Microsoft.NET.PackTool.props
976 +
977 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
978 + created a backup copy. Incorrect changes to this file will make it
979 + impossible to load or build your projects from the command-line or the IDE.
980 +
981 +Copyright (c) .NET Foundation. All rights reserved.
982 +***********************************************************************************************
983 +-->
984 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
985 + <TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);PackTool</TargetsForTfmSpecificContentInPackage>
986 + </PropertyGroup>
987 + <!--
988 +============================================================================================================================================
989 + </Import>
990 +
991 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
992 +============================================================================================================================================
993 +-->
994 + <!--
995 +============================================================================================================================================
996 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackProjectTool.props">
997 +
998 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.PackProjectTool.props
999 +============================================================================================================================================
1000 +-->
1001 + <!--
1002 +***********************************************************************************************
1003 +Microsoft.NET.PackProjectTool.props
1004 +
1005 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1006 + created a backup copy. Incorrect changes to this file will make it
1007 + impossible to load or build your projects from the command-line or the IDE.
1008 +
1009 +Copyright (c) .NET Foundation. All rights reserved.
1010 +***********************************************************************************************
1011 +-->
1012 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1013 + <TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);_PackProjectToolValidation</TargetsForTfmSpecificContentInPackage>
1014 + </PropertyGroup>
1015 + <!--
1016 +============================================================================================================================================
1017 + </Import>
1018 +
1019 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
1020 +============================================================================================================================================
1021 +-->
1022 + <!--
1023 +============================================================================================================================================
1024 + <Import Project="$(MSBuildThisFileDirectory)../../Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.props" Condition="Exists('$(MSBuildThisFileDirectory)../../Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.props')">
1025 +
1026 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.props
1027 +============================================================================================================================================
1028 +-->
1029 + <ItemGroup Condition=" '$(_EnableWindowsDesktopGlobbing)' == 'true' ">
1030 + <ApplicationDefinition Include="App.xaml" Condition="'$(EnableDefaultApplicationDefinition)' != 'false' And Exists('$(MSBuildProjectDirectory)/App.xaml') And '$(MSBuildProjectExtension)' == '.csproj'">
1031 + <Generator>MSBuild:Compile</Generator>
1032 + <XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
1033 + </ApplicationDefinition>
1034 + <ApplicationDefinition Include="Application.xaml" Condition="'$(EnableDefaultApplicationDefinition)' != 'false' And Exists('$(MSBuildProjectDirectory)/Application.xaml') And '$(MSBuildProjectExtension)' == '.vbproj'">
1035 + <Generator>MSBuild:Compile</Generator>
1036 + <XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
1037 + </ApplicationDefinition>
1038 + <Page Include="**/*.xaml" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);@(ApplicationDefinition)" Condition="'$(EnableDefaultPageItems)' != 'false'">
1039 + <Generator>MSBuild:Compile</Generator>
1040 + <XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
1041 + </Page>
1042 + <!--
1043 + See https://github.com/dotnet/wpf/issues/685
1044 + Visual Studio would prefer that we remove **/*.xaml instead of
1045 + being more precise.
1046 +
1047 + <None Remove="@(Page)"
1048 + Condition="'$(EnableDefaultPageItems)' != 'false'" />
1049 + <None Remove="@(ApplicationDefinition)"
1050 + Condition="'$(EnableDefaultApplicationDefinition)' != 'false'" />
1051 + -->
1052 + <None Remove="**/*.xaml" Condition="'$(EnableDefaultApplicationDefinition)' != 'false' And '$(EnableDefaultPageItems)' != 'false'" />
1053 + </ItemGroup>
1054 + <ItemGroup Condition=" '$(_EnableWindowsDesktopNetCoreFrameworkReferences)' == 'true' ">
1055 + <FrameworkReference Include="Microsoft.WindowsDesktop.App" IsImplicitlyDefined="true" Condition="('$(UseWPF)' == 'true') And ('$(UseWindowsForms)' == 'true')" />
1056 + <FrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" IsImplicitlyDefined="true" Condition="('$(UseWPF)' == 'true') And ('$(UseWindowsForms)' != 'true')" />
1057 + <FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" IsImplicitlyDefined="true" Condition="('$(UseWPF)' != 'true') And ('$(UseWindowsForms)' == 'true')" />
1058 + </ItemGroup>
1059 + <!--
1060 + Traditionally, Visual Studio has supplied these references for .NET Framework based
1061 + WPF Projects:
1062 +
1063 + .NET 3.x: PresentationCore, PresentationFramework, WindowsBase
1064 + .NET 4.x: PresentationCore, PresentationFramework, WindowsBase, System.Xaml
1065 +
1066 +
1067 + Microsoft.NET.WindowsDesktop.SDK will supply the following references to .NET Framework based
1068 + WPF Projects:
1069 +
1070 + .NET 3.x: PresentationCore, PresentationFramework, WindowsBase
1071 +
1072 + .NET 4.0: PresentationCore, PresentationFramework, WindowsBase, System.Xaml,
1073 + UIAutomationClient, UIAutomationClientSideProviders, UIAutomationProvider, UIAutomationTypes
1074 +
1075 + .NET 4.5+: PresentationCore, PresentationFramework, WindowsBase, System.Xaml,
1076 + UIAutomationClient, UIAutomationClientSideProviders, UIAutomationProvider, UIAutomationTypes
1077 + System.Windows.Controls.Ribbon
1078 + -->
1079 + <ItemGroup Condition=" '$(_EnableWindowsDesktopNETFrameworkImplicitReference)' == 'true' ">
1080 + <!--
1081 + The following 3 _WpfCommonNetFxReference items normally require Condition="'$(_TargetFrameworkVersionValue)' >= '3.0'", since
1082 + they are supported on .NET Framework 3.0 and above.
1083 +
1084 + This condition is implicitly satisfied by '$(_TargetFrameworkVersionValue)' >= '$(_WindowsDesktopSdkTargetFrameworkVersionFloor)'
1085 + in the outer ItemGroup
1086 + -->
1087 + <_WpfCommonNetFxReference Include="WindowsBase" />
1088 + <_WpfCommonNetFxReference Include="PresentationCore" />
1089 + <_WpfCommonNetFxReference Include="PresentationFramework" />
1090 + <_WpfCommonNetFxReference Include="System.Xaml" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.0'">
1091 + <RequiredTargetFramework>4.0</RequiredTargetFramework>
1092 + </_WpfCommonNetFxReference>
1093 + <_WpfCommonNetFxReference Include="UIAutomationClient" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.0'" />
1094 + <_WpfCommonNetFxReference Include="UIAutomationClientSideProviders" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.0'" />
1095 + <_WpfCommonNetFxReference Include="UIAutomationProvider" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.0'" />
1096 + <_WpfCommonNetFxReference Include="UIAutomationTypes" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.0'" />
1097 + <_WpfCommonNetFxReference Include="System.Windows.Controls.Ribbon" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' &gt;= '4.5'" />
1098 + </ItemGroup>
1099 + <ItemGroup Condition=" '$(_EnableWindowsDesktopNETFrameworkImplicitReference)' == 'true' ">
1100 + <_SDKImplicitReference Include="@(_WpfCommonNetFxReference)" Condition="'$(UseWPF)' == 'true'" />
1101 + <_SDKImplicitReference Include="System.Windows.Forms" Condition="('$(UseWindowsForms)' == 'true') " />
1102 + <_SDKImplicitReference Include="WindowsFormsIntegration" Condition=" ('$(UseWindowsForms)' == 'true') And ('$(UseWPF)' == 'true') " />
1103 + </ItemGroup>
1104 + <!--
1105 + Supported (and unsupported) TargetFrameworks
1106 +
1107 + Visual Studio Project System determines the list of valid TargetFrameworks to show
1108 + in the Project properties by querying SupportedTargetFramework values.
1109 +
1110 + The Project System does not refer to this list at this time for .NET Framework TFM's.
1111 + -->
1112 + <!--
1113 + When WindowsDesktop SDK is used without setting UseWPF or UseWindowsForms, it shows a (suppressible) warning and functions much
1114 + like Microsoft.NET.Sdk
1115 +
1116 + Likewise, when WindowsDesktop SDK is used with a netcore TFM that is less than 3.0, it will simply act as if it were an
1117 + Microsoft.NET.Sdk project (and show a suppressible build-time warning).
1118 +
1119 + Detect these situations and skip updates to @(SupportedTargetFramework) etc.
1120 + -->
1121 + <ItemGroup Condition=" '$(_RemoveUnsupportedTargetFrameworksForWindowsDesktop)' == 'true' ">
1122 + <!--
1123 + Windows Forms and WPF are supported only on .NET Core 3.0+
1124 + -->
1125 + <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.0" />
1126 + <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.1" />
1127 + <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.0" />
1128 + <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.1" />
1129 + <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.2" />
1130 + <!--
1131 + Windows Forms and WPF are not supported an any .NET Standard targets
1132 + -->
1133 + <_UnsupportedNETStandardTargetFramework Include="@(SupportedNETStandardTargetFramework)" />
1134 + <!--
1135 + Windows Forms was supported since .NET Framework 1.0, and is currently supported on
1136 + .NET Framework 2.0+.
1137 +
1138 + WPF is supported on .NET Framework and WPF are supported on .NET Framework 3.0+
1139 +
1140 + In practice, the WindowsDesktop SDK is only supported on .NET Framework 3.0+ - this is controlled
1141 + by $(_WindowsDesktopSdkTargetFrameworkVersionFloor), defined as 3.0, which applies to both .NETFramework
1142 + and .NETCore.
1143 +
1144 + Here, we will encode .NET Framework 3.0 as the lowest supported version for both Windows Forms and WPF.
1145 +
1146 + The SDK does not define versions < 2.0 in @(SupportedNETFrameworkTargetFramework) list, so none of those
1147 + need to be excluded here - removing 2.0 would suffice.
1148 + -->
1149 + <_UnsupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v2.0" />
1150 + <SupportedNETCoreAppTargetFramework Remove="@(_UnsupportedNETCoreAppTargetFramework)" />
1151 + <SupportedNETStandardTargetFramework Remove="@(_UnsupportedNETStandardTargetFramework)" />
1152 + <SupportedNETFrameworkTargetFramework Remove="@(_UnsupportedNETFrameworkTargetFramework)" />
1153 + <SupportedTargetFramework Remove="@(_UnsupportedNETCoreAppTargetFramework);@(_UnsupportedNETStandardTargetFramework);@(_UnsupportedNETFrameworkTargetFramework)" />
1154 + </ItemGroup>
1155 + <!--
1156 + Import Windows Forms props.
1157 + These come via the Windows Forms transport package, that can be found under
1158 + https://github.com/dotnet/winforms/tree/main/pkg/Microsoft.Private.Winforms/sdk
1159 + -->
1160 + <!--
1161 +============================================================================================================================================
1162 + <Import Project="Microsoft.NET.Sdk.WindowsDesktop.WindowsForms.props">
1163 +
1164 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.WindowsForms.props
1165 +============================================================================================================================================
1166 +-->
1167 + <!--
1168 + This props file comes from dotnet/winforms. It gets ingested by dotnet/wpf and processed by
1169 + packaging/Microsoft.NET.Sdk.WindowsDesktop project.
1170 +
1171 + It is referenced via Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.props.
1172 + -->
1173 + <!--
1174 + ============================================================
1175 + GenerateImplicitNamespaceImports
1176 + Generates implicit namespace imports source to intermediate directory for Windows Forms projects
1177 + ============================================================
1178 + -->
1179 + <ItemGroup Condition="'$(UseWindowsForms)' == 'true' and ('$(ImplicitUsings)' == 'true' or '$(ImplicitUsings)' == 'enable')">
1180 + <!--
1181 + SDK defines the following global usings:
1182 + * System
1183 + * System.Collections.Generic
1184 + * System.Linq
1185 + * System.Threading.Tasks
1186 + -->
1187 + <Using Include="System.Drawing" />
1188 + <Using Include="System.Windows.Forms" />
1189 + </ItemGroup>
1190 + <!-- Windows Forms source generator and analyzers -->
1191 + <!--
1192 +============================================================================================================================================
1193 + <Import Project="System.Windows.Forms.Analyzers.props">
1194 +
1195 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\System.Windows.Forms.Analyzers.props
1196 +============================================================================================================================================
1197 +-->
1198 + <!--
1199 + This props file comes from dotnet/winforms. It gets ingested by dotnet/wpf and processed by
1200 + packaging/Microsoft.NET.Sdk.WindowsDesktop project.
1201 +
1202 + It is referenced via Microsoft.NET.Sdk.WindowsDesktop.WindowsForms.props.
1203 + -->
1204 + <!-- Import for Windows Forms applications or when developing/testing locally -->
1205 + <ItemGroup Condition="('$(UseWindowsForms)' == 'true') or ('$(ResolveWinFormsAnalyzersFromSdkRefPack)' == 'false')">
1206 + <!-- Known Application properties -->
1207 + <CompilerVisibleProperty Include="ApplicationManifest" />
1208 + <CompilerVisibleProperty Include="StartupObject" />
1209 + <!--
1210 + Custom Application properties
1211 + See for more details: https://github.com/dotnet/designs/blob/main/accepted/2021/winforms/streamline-application-bootstrap.md#msbuild-properties
1212 + -->
1213 + <CompilerVisibleProperty Include="ApplicationDefaultFont" />
1214 + <CompilerVisibleProperty Include="ApplicationHighDpiMode" />
1215 + <CompilerVisibleProperty Include="ApplicationUseCompatibleTextRendering" />
1216 + <CompilerVisibleProperty Include="ApplicationVisualStyles" />
1217 + <!-- If there is an app.manifest - let the generator explore it -->
1218 + <AdditionalFiles Include="$(ApplicationManifest)" Condition="'$(ApplicationManifest)' != ''" />
1219 + </ItemGroup>
1220 + <!--
1221 +============================================================================================================================================
1222 + </Import>
1223 +
1224 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.WindowsForms.props
1225 +============================================================================================================================================
1226 +-->
1227 + <!--
1228 +============================================================================================================================================
1229 + </Import>
1230 +
1231 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.props
1232 +============================================================================================================================================
1233 +-->
1234 + <!--
1235 +============================================================================================================================================
1236 + <Import Project="Microsoft.NET.Sdk.WindowsDesktop.WPF.props">
1237 +
1238 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.WPF.props
1239 +============================================================================================================================================
1240 +-->
1241 + <!--
1242 + Generates implicit global namespace imports file <projectname>.ImplicitGlobalNamespaceImports.cs.
1243 + -->
1244 + <ItemGroup Condition="'$(UseWPF)' == 'true' and ('$(ImplicitUsings)' == 'true' or '$(ImplicitUsings)' == 'enable')">
1245 + <Using Remove="System.IO" />
1246 + <Using Remove="System.Net.Http" />
1247 + </ItemGroup>
1248 + <!--
1249 +============================================================================================================================================
1250 + </Import>
1251 +
1252 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\Microsoft.NET.Sdk.WindowsDesktop.props
1253 +============================================================================================================================================
1254 +-->
1255 + <!--
1256 +============================================================================================================================================
1257 + </Import>
1258 +
1259 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
1260 +============================================================================================================================================
1261 +-->
1262 + <!--
1263 +============================================================================================================================================
1264 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Windows.props">
1265 +
1266 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Windows.props
1267 +============================================================================================================================================
1268 +-->
1269 + <!--
1270 +***********************************************************************************************
1271 +Microsoft.NET.Windows.props
1272 +
1273 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1274 + created a backup copy. Incorrect changes to this file will make it
1275 + impossible to load or build your projects from the command-line or the IDE.
1276 +
1277 +Copyright (c) .NET Foundation. All rights reserved.
1278 +***********************************************************************************************
1279 +-->
1280 + <ItemGroup Condition=" '$(IncludeWindowsSDKRefFrameworkReferences)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1281 + <FrameworkReference Include="Microsoft.Windows.SDK.NET.Ref" IsImplicitlyDefined="true" Pack="false" PrivateAssets="All" />
1282 + </ItemGroup>
1283 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1284 + <MicrosoftNETWindowsWorkloadInstalled>true</MicrosoftNETWindowsWorkloadInstalled>
1285 + <!--https://github.com/dotnet/sdk/issues/12403-->
1286 + <_TargetFrameworkVersionValue>0.0</_TargetFrameworkVersionValue>
1287 + <_WindowsDesktopSdkTargetFrameworkVersionFloor>3.0</_WindowsDesktopSdkTargetFrameworkVersionFloor>
1288 + </PropertyGroup>
1289 + <!--
1290 +============================================================================================================================================
1291 + </Import>
1292 +
1293 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.props
1294 +============================================================================================================================================
1295 +-->
1296 + <!--
1297 +============================================================================================================================================
1298 + </Import>
1299 +
1300 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.props
1301 +============================================================================================================================================
1302 +-->
1303 + <!--
1304 +============================================================================================================================================
1305 + </Import>
1306 +
1307 +D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore\CsprojConsoleNetCore.csproj
1308 +============================================================================================================================================
1309 +-->
1310 + <PropertyGroup>
1311 + <OutputType>Exe</OutputType>
1312 + <TargetFramework>netcoreapp3.1</TargetFramework>
1313 + </PropertyGroup>
1314 + <ItemGroup>
1315 + <ProjectReference Include="..\CsprojClassLibraryNetCore\CsprojClassLibraryNetCore.csproj" />
1316 + </ItemGroup>
1317 + <!--
1318 +============================================================================================================================================
1319 + <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk">
1320 + This import was added implicitly because the Project element's Sdk attribute specified "Microsoft.NET.Sdk".
1321 +
1322 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets
1323 +============================================================================================================================================
1324 +-->
1325 + <!--
1326 +***********************************************************************************************
1327 +Sdk.targets
1328 +
1329 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1330 + created a backup copy. Incorrect changes to this file will make it
1331 + impossible to load or build your projects from the command-line or the IDE.
1332 +
1333 +Copyright (c) .NET Foundation. All rights reserved.
1334 +***********************************************************************************************
1335 +-->
1336 + <!-- Using the same property as Microsoft.CSharp.targets and presumably Microsoft.VisualBasic.targets here -->
1337 + <PropertyGroup Condition="'$(TargetFrameworks)' != '' and '$(TargetFramework)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1338 + <IsCrossTargetingBuild>true</IsCrossTargetingBuild>
1339 + </PropertyGroup>
1340 + <!--<Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.BeforeCommonCrossTargeting.targets" Condition="'$(IsCrossTargetingBuild)' == 'true'" />-->
1341 + <!--
1342 +============================================================================================================================================
1343 + <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.BeforeCommon.targets" Condition="'$(IsCrossTargetingBuild)' != 'true'">
1344 +
1345 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1346 +============================================================================================================================================
1347 +-->
1348 + <!--
1349 +***********************************************************************************************
1350 +Microsoft.NET.Sdk.BeforeCommon.targets
1351 +
1352 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1353 + created a backup copy. Incorrect changes to this file will make it
1354 + impossible to load or build your projects from the command-line or the IDE.
1355 +
1356 +Copyright (c) .NET Foundation. All rights reserved.
1357 +***********************************************************************************************
1358 +-->
1359 + <!-- For projects that aren't using Microsoft.NET.Sdk, these props files won't have been imported yet.
1360 + So import them here. -->
1361 + <!--<ImportGroup Condition="'$(UsingNETSdkDefaults)' != 'true'">-->
1362 + <!--<Import Project="Microsoft.NET.Sdk.DefaultItems.props" />-->
1363 + <!--<Import Project="Microsoft.NET.SupportedTargetFrameworks.props" />-->
1364 + <!--<Import Project="Microsoft.NET.SupportedPlatforms.props" />-->
1365 + <!--<Import Project="Microsoft.NET.WindowsSdkSupportedTargetPlatforms.props" />-->
1366 + <!--</ImportGroup>-->
1367 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1368 + <_IsExecutable Condition="'$(OutputType)' == 'Exe' or '$(OutputType)'=='WinExe'">true</_IsExecutable>
1369 + </PropertyGroup>
1370 + <PropertyGroup Condition="'$(HasRuntimeOutput)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1371 + <HasRuntimeOutput>$(_IsExecutable)</HasRuntimeOutput>
1372 + <_UsingDefaultForHasRuntimeOutput>true</_UsingDefaultForHasRuntimeOutput>
1373 + </PropertyGroup>
1374 + <!--
1375 +============================================================================================================================================
1376 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DefaultAssemblyInfo.targets" Condition="'$(UsingNETSdkDefaults)' == 'true'">
1377 +
1378 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.DefaultAssemblyInfo.targets
1379 +============================================================================================================================================
1380 +-->
1381 + <!--
1382 +***********************************************************************************************
1383 +Microsoft.NET.DefaultAssemblyInfo.targets
1384 +
1385 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1386 + created a backup copy. Incorrect changes to this file will make it
1387 + impossible to load or build your projects from the command-line or the IDE.
1388 +
1389 +Copyright (c) .NET Foundation. All rights reserved.
1390 +***********************************************************************************************
1391 +-->
1392 + <PropertyGroup Condition=" '$(Version)' == '' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1393 + <VersionPrefix Condition=" '$(VersionPrefix)' == '' ">1.0.0</VersionPrefix>
1394 + <Version Condition=" '$(VersionSuffix)' != '' ">$(VersionPrefix)-$(VersionSuffix)</Version>
1395 + <Version Condition=" '$(Version)' == '' ">$(VersionPrefix)</Version>
1396 + </PropertyGroup>
1397 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1398 + <Authors Condition=" '$(Authors)'=='' ">$(AssemblyName)</Authors>
1399 + <Company Condition=" '$(Company)'=='' ">$(Authors)</Company>
1400 + <AssemblyTitle Condition=" '$(AssemblyTitle)' == '' ">$(AssemblyName)</AssemblyTitle>
1401 + <Product Condition=" '$(Product)' == ''">$(AssemblyName)</Product>
1402 + </PropertyGroup>
1403 + <!--
1404 +============================================================================================================================================
1405 + </Import>
1406 +
1407 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1408 +============================================================================================================================================
1409 +-->
1410 + <!-- Set default intermediate and output paths -->
1411 + <!--
1412 +============================================================================================================================================
1413 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DefaultOutputPaths.targets" Condition="'$(UsingNETSdkDefaults)' == 'true'">
1414 +
1415 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.DefaultOutputPaths.targets
1416 +============================================================================================================================================
1417 +-->
1418 + <!--
1419 +***********************************************************************************************
1420 +Microsoft.NET.DefaultOutputPaths.targets
1421 +
1422 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1423 + created a backup copy. Incorrect changes to this file will make it
1424 + impossible to load or build your projects from the command-line or the IDE.
1425 +
1426 +Copyright (c) .NET Foundation. All rights reserved.
1427 +***********************************************************************************************
1428 +-->
1429 + <!--
1430 + Apply the same default output paths as Microsoft.Common.targets now since we're running before them,
1431 + but need to adjust them and/or make decisions in terms of them.
1432 +
1433 + Also note that common targets only set a default OutputPath if neither configuration nor
1434 + platform were set by the user. This was used to validate that a valid configuration is passed,
1435 + assuming the convention maintained by VS that every Configuration|Platform combination had
1436 + an explicit OutputPath. Since we now want to support leaner project files with less
1437 + duplication and more automatic defaults, we always set a default OutputPath and can no
1438 + longer depend on that convention for validation. Getting validation re-enabled with a
1439 + different mechanism is tracked by https://github.com/dotnet/sdk/issues/350
1440 + -->
1441 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1442 + <Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
1443 + <Platform Condition="'$(Platform)'==''">AnyCPU</Platform>
1444 + <PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>
1445 + <BaseOutputPath Condition="'$(BaseOutputPath)' == ''">bin\</BaseOutputPath>
1446 + <BaseOutputPath Condition="!HasTrailingSlash('$(BaseOutputPath)')">$(BaseOutputPath)\</BaseOutputPath>
1447 + <OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' == 'AnyCPU'">$(BaseOutputPath)$(Configuration)\</OutputPath>
1448 + <OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' != 'AnyCPU'">$(BaseOutputPath)$(PlatformName)\$(Configuration)\</OutputPath>
1449 + <OutputPath Condition="!HasTrailingSlash('$(OutputPath)')">$(OutputPath)\</OutputPath>
1450 + <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
1451 + <BaseIntermediateOutputPath Condition="!HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
1452 + <IntermediateOutputPath Condition=" $(IntermediateOutputPath) == '' and '$(PlatformName)' == 'AnyCPU' ">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
1453 + <IntermediateOutputPath Condition=" $(IntermediateOutputPath) == '' and '$(PlatformName)' != 'AnyCPU' ">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
1454 + <IntermediateOutputPath Condition="!HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
1455 + </PropertyGroup>
1456 + <!-- Set the package output path (for nuget pack target) now, before the TargetFramework is appended -->
1457 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1458 + <PackageOutputPath Condition="'$(PackageOutputPath)' == ''">$(OutputPath)</PackageOutputPath>
1459 + </PropertyGroup>
1460 + <!--
1461 +============================================================================================================================================
1462 + </Import>
1463 +
1464 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1465 +============================================================================================================================================
1466 +-->
1467 + <!-- Before any additional SDK targets are imported, import the publish profile.
1468 + This allows the publish profile to set properties like RuntimeIdentifier and them be
1469 + respected by the SDK. -->
1470 + <!--
1471 +============================================================================================================================================
1472 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.ImportPublishProfile.targets" Condition="'$(PublishProfileImported)' != 'true'">
1473 +
1474 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.ImportPublishProfile.targets
1475 +============================================================================================================================================
1476 +-->
1477 + <!--
1478 +***********************************************************************************************
1479 +Microsoft.NET.Sdk.ImportPublishProfile.targets
1480 +
1481 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1482 + created a backup copy. Incorrect changes to this file will make it
1483 + impossible to load or build your projects from the command-line or the IDE.
1484 +
1485 +Copyright (c) .NET Foundation. All rights reserved.
1486 +***********************************************************************************************
1487 +-->
1488 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1489 + <!-- Default to having imported the publish profile so the Web SDK doesn't also attempt to do so. -->
1490 + <PublishProfileImported>true</PublishProfileImported>
1491 + <_PublishProfileDesignerFolder Condition="'$(AppDesignerFolder)' != ''">$(AppDesignerFolder)</_PublishProfileDesignerFolder>
1492 + <_PublishProfileDesignerFolder Condition="'$(_PublishProfileDesignerFolder)' == ''">Properties</_PublishProfileDesignerFolder>
1493 + <_PublishProfileRootFolder Condition="'$(_PublishProfileRootFolder)' == ''">$(MSBuildProjectDirectory)\$(_PublishProfileDesignerFolder)\PublishProfiles\</_PublishProfileRootFolder>
1494 + <PublishProfileName Condition="'$(PublishProfileName)' == '' and '$(PublishProfile)' != ''">$([System.IO.Path]::GetFileNameWithoutExtension($(PublishProfile)))</PublishProfileName>
1495 + <PublishProfileFullPath Condition="'$(PublishProfileFullPath)' == '' and '$(PublishProfileName)' != ''">$(_PublishProfileRootFolder)$(PublishProfileName).pubxml</PublishProfileFullPath>
1496 + <WebPublishProfileFile Condition="'$(WebPublishProfileFile)' == '' and Exists('$(PublishProfileFullPath)')">$(PublishProfileFullPath)</WebPublishProfileFile>
1497 + <!-- If the publish profile doesn't exist, mark as not imported.
1498 + This allows the Web SDK to import some default profiles that come with the Web SDK.
1499 + Publishing in Visual Studio sets `WebPublishProfileFile` as a global property.
1500 + Therefore, check that `ProjectToOverrideProjectExtensionsPath` is equal to `MSBuildProjectFullPath`
1501 + to limit the import to the project being published. -->
1502 + <PublishProfileImported Condition="('$(ProjectToOverrideProjectExtensionsPath)' != '' and&#xD;&#xA; '$(ProjectToOverrideProjectExtensionsPath)' != '$(MSBuildProjectFullPath)') or&#xD;&#xA; '$(WebPublishProfileFile)' == '' or&#xD;&#xA; !Exists('$(WebPublishProfileFile)')">false</PublishProfileImported>
1503 + </PropertyGroup>
1504 + <!--<Import Project="$(WebPublishProfileFile)" Condition="'$(PublishProfileImported)' == 'true'" />-->
1505 + <!--<Import Project="$(WebPublishProfileFile).user" Condition="'$(PublishProfileImported)' == 'true' and Exists('$(WebPublishProfileFile).user')" />-->
1506 + <!--
1507 +============================================================================================================================================
1508 + </Import>
1509 +
1510 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1511 +============================================================================================================================================
1512 +-->
1513 + <!--
1514 + Expand TargetFramework to TargetFrameworkIdentifier and TargetFrameworkVersion,
1515 + and adjust intermediate and output paths to include it.
1516 + -->
1517 + <!--
1518 +============================================================================================================================================
1519 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.TargetFrameworkInference.targets">
1520 +
1521 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets
1522 +============================================================================================================================================
1523 +-->
1524 + <!--
1525 +***********************************************************************************************
1526 +Microsoft.NET.TargetFrameworkInference.targets
1527 +
1528 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1529 + created a backup copy. Incorrect changes to this file will make it
1530 + impossible to load or build your projects from the command-line or the IDE.
1531 +
1532 +Copyright (c) .NET Foundation. All rights reserved.
1533 +***********************************************************************************************
1534 +-->
1535 + <!--
1536 + Note that this file is only included when $(TargetFramework) is set and so we do not need to check that here.
1537 +
1538 + Common targets require that $(TargetFrameworkIdentifier) and $(TargetFrameworkVersion) are set by static evaluation
1539 + before they are imported. In common cases (currently netstandard, netcoreapp, or net), we infer them from the short
1540 + names given via TargetFramework to allow for terseness and lack of duplication in project files.
1541 +
1542 + For other cases, the user must supply them manually.
1543 +
1544 + For cases where inference is supported, the user need only specify the targets in TargetFrameworks, e.g:
1545 + <PropertyGroup>
1546 + <TargetFrameworks>net45;netstandard1.0</TargetFrameworks>
1547 + </PropertyGroup>
1548 +
1549 + For cases where inference is not supported, identifier, version and profile can be specified explicitly as follows:
1550 + <PropertyGroup>
1551 + <TargetFrameworks>portable-net451+win81;xyz1.0</TargetFrameworks>
1552 + <PropertyGroup>
1553 + <PropertyGroup Condition="'$(TargetFramework)' == 'portable-net451+win81'">
1554 + <TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
1555 + <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
1556 + <TargetFrameworkProfile>Profile44</TargetFrameworkProfile>
1557 + </PropertyGroup>
1558 + <PropertyGroup Condition="'$(TargetFramework)' == 'xyz1.0'">
1559 + <TargetFrameworkIdentifier>Xyz</TargetFrameworkVersion>
1560 + <PropertyGroup>
1561 +
1562 + Note in the xyz1.0 case, which is meant to demonstrate a framework we don't yet recognize, we can still
1563 + infer the version of 1.0. The user can also override it as always we honor a TargetFrameworkIdentifier
1564 + or TargetFrameworkVersion that is already set.
1565 + -->
1566 + <!-- Hook for importing custom target framework parsing -->
1567 + <!--<Import Project="$(BeforeTargetFrameworkInferenceTargets)" Condition="$(BeforeTargetFrameworkInferenceTargets) != ''" />-->
1568 + <!--
1569 + Parse TargetFramework properties.
1570 + -->
1571 + <PropertyGroup Condition="'$(TargetFramework)' != '' and ('$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkVersion)' == '')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1572 + <TargetFrameworkIdentifier>$([MSBuild]::GetTargetFrameworkIdentifier('$(TargetFramework)'))</TargetFrameworkIdentifier>
1573 + <TargetFrameworkVersion>v$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)', 2))</TargetFrameworkVersion>
1574 + </PropertyGroup>
1575 + <!--
1576 + Parse TargetPlatform properties.
1577 + -->
1578 + <PropertyGroup Condition="'$(TargetFramework)' != '' and ('$(TargetPlatformIdentifier)' == '' or '$(TargetPlatformVersion)' == '')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1579 + <TargetPlatformIdentifier Condition="'$(TargetPlatformIdentifier)' == ''">$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)'))</TargetPlatformIdentifier>
1580 + <TargetPlatformVersion Condition="'$(TargetPlatformIdentifier)' == 'Windows'">$([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 4))</TargetPlatformVersion>
1581 + <TargetPlatformVersion Condition="'$(TargetPlatformVersion)' == '' or ('$(TargetPlatformIdentifier)' == 'Windows' and !$([MSBuild]::VersionGreaterThanOrEquals($(TargetPlatformVersion), 10.0)))">$([MSBuild]::GetTargetPlatformVersion('$(TargetFramework)', 2))</TargetPlatformVersion>
1582 + <TargetPlatformVersion Condition="$([MSBuild]::VersionEquals($(TargetPlatformVersion), 0.0))" />
1583 + <!-- Normalize casing of windows to Windows -->
1584 + <TargetPlatformIdentifier Condition="'$(TargetPlatformIdentifier)' == 'Windows'">Windows</TargetPlatformIdentifier>
1585 + </PropertyGroup>
1586 + <!--
1587 + Trigger an error if we're unable to infer the framework identifier and version.
1588 +
1589 + We have to evaluate this here and not in the target because by the time the target runs,
1590 + Microsoft.Common.targets will have defaulted to .NETFramework,Version=v4.0
1591 + -->
1592 + <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == 'Unsupported' or '$(TargetFrameworkVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1593 + <_UnsupportedTargetFrameworkError>true</_UnsupportedTargetFrameworkError>
1594 + </PropertyGroup>
1595 + <!--
1596 + NOTE: We must not validate the TFM before restore target runs as it prevents adding additional TFM
1597 + support from being provided by a nuget package such as MSBuild.Sdk.Extras.
1598 +
1599 + We run before RunResolvePackageDependencies and GetReferenceAssemblyPaths so that design-time builds
1600 + which do not currently invoke _CheckForInvalidConfigurationAndPlatform, will not trigger spurious
1601 + errors that are only consequences of the root cause identified here.
1602 + -->
1603 + <Target Name="_CheckForUnsupportedTargetFramework" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;RunResolvePackageDependencies;GetFrameworkPaths;GetReferenceAssemblyPaths;Restore" Condition="'$(_UnsupportedTargetFrameworkError)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1604 + <NETSdkError Condition="!$(TargetFramework.Contains(';'))" ResourceName="CannotInferTargetFrameworkIdentifierAndVersion" FormatArguments="$([MSBuild]::Escape('$(TargetFramework)'))" />
1605 + <NETSdkError Condition="$(TargetFramework.Contains(';'))" ResourceName="TargetFrameworkWithSemicolon" FormatArguments="$([MSBuild]::Escape('$(TargetFramework)'))" />
1606 + </Target>
1607 + <!-- Skip this target for design time builds when there are missing workload packs.
1608 + This will prevent design time builds from failing and therefore allow
1609 + Visual Studio to collect the workloads from the GetSuggestedWorkloads target -->
1610 + <Target Name="_CheckForUnsupportedTargetPlatformIdentifier" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;RunResolvePackageDependencies;GetFrameworkPaths;GetReferenceAssemblyPaths;CollectPackageReferences" Condition="'$(TargetPlatformIdentifier)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) And ('$(DesignTimeBuild)' != 'true' Or '@(MissingWorkloadPack)' == '')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1611 + <PropertyGroup>
1612 + <TargetPlatformSupported Condition="'$(TargetPlatformIdentifier)' == 'Windows'">true</TargetPlatformSupported>
1613 + </PropertyGroup>
1614 + <NETSdkError Condition="'$(TargetPlatformSupported)' != 'true'" ResourceName="UnsupportedTargetPlatformIdentifier" FormatArguments="$(TargetPlatformIdentifier)" />
1615 + </Target>
1616 + <UsingTask TaskName="AllowEmptyTelemetry" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
1617 + <Target Name="_CollectTargetFrameworkForTelemetry" AfterTargets="_CheckForUnsupportedTargetFramework" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1618 + <AllowEmptyTelemetry EventName="targetframeworkeval" EventData="TargetFrameworkVersion=$([MSBuild]::Escape('$(TargetFrameworkMoniker)'));RuntimeIdentifier=$(RuntimeIdentifier);SelfContained=$(SelfContained);UseApphost=$(UseApphost);OutputType=$(OutputType)" />
1619 + </Target>
1620 + <!--
1621 + Don't leave TargetFrameworkVersion empty if it still hasn't been determined. We will trigger the error above,
1622 + but we need this to be a valid version so that our error message does not get pre-empted by failure to interpret
1623 + version comparison expressions, which is currently unrecoverable in VS.
1624 +
1625 + Also don't leave TargetFrameworkIdentifier unset as it will be defaulted to .NETFramework by common targets, which
1626 + can cause restore (which we cannot block, see above) to silently succeed for empty TargetFramework.
1627 + -->
1628 + <PropertyGroup Condition="'$(TargetFrameworkVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1629 + <TargetFrameworkVersion>v0.0</TargetFrameworkVersion>
1630 + </PropertyGroup>
1631 + <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1632 + <TargetFrameworkIdentifier>_</TargetFrameworkIdentifier>
1633 + </PropertyGroup>
1634 + <!--
1635 + Trigger an error if targeting a higher version of .NET Core or .NET Standard than is supported by the current SDK.
1636 + -->
1637 + <Target Name="_CheckForUnsupportedNETCoreVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(NETCoreAppMaximumVersion)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1638 + <NETSdkError Condition="'$(_TargetFrameworkVersionWithoutV)' &gt; '$(NETCoreAppMaximumVersion)'" ResourceName="UnsupportedTargetFrameworkVersion" FormatArguments=".NET;$(_TargetFrameworkVersionWithoutV);$(NETCoreAppMaximumVersion)" />
1639 + </Target>
1640 + <!--
1641 + Trigger an error if C++ project targeting a lower version of .NET Core than 3.1.
1642 + -->
1643 + <Target Name="_CheckForUnsupportedCppNETCoreVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1644 + <NETSdkError Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.1' and ('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true')" ResourceName="CppRequiresTFMVersion31" />
1645 + </Target>
1646 + <!--C++/CLI has its own logic of determine TargetPlatformIdentifier and TargetPlatformVersion-->
1647 + <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) and ('$(Language)' != 'C++' or '$(_EnablePackageReferencesInVCProjects)' == 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1648 + <_EnableDefaultWindowsPlatform>false</_EnableDefaultWindowsPlatform>
1649 + <UseOSWinMdReferences>false</UseOSWinMdReferences>
1650 + </PropertyGroup>
1651 + <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(NETStandardMaximumVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1652 + <NETStandardMaximumVersion>2.1</NETStandardMaximumVersion>
1653 + </PropertyGroup>
1654 + <Target Name="_CheckForUnsupportedNETStandardVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences" Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(NETStandardMaximumVersion)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1655 + <NETSdkError Condition="'$(_TargetFrameworkVersionWithoutV)' &gt; '$(NETStandardMaximumVersion)'" ResourceName="UnsupportedTargetFrameworkVersion" FormatArguments=".NET Standard;$(_TargetFrameworkVersionWithoutV);$(NETStandardMaximumVersion)" />
1656 + </Target>
1657 + <Target Name="_CheckForUnsupportedTargetFrameworkAndFeatureCombination" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1658 + <NETSdkError Condition="'$(UsingNETSdkDefaults)' != 'true'" ResourceName="NETFrameworkWithoutUsingNETSdkDefaults" />
1659 + </Target>
1660 + <Target Name="_CheckForSupportedOSPlatformVersionHigherThanTargetPlatformVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(TargetPlatformVersion)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1661 + <NETSdkError Condition="'$(SupportedOSPlatformVersion)' != '' and $(TargetPlatformVersion) != '' and $([MSBuild]::VersionGreaterThan($(SupportedOSPlatformVersion), $(TargetPlatformVersion)))" ResourceName="CannotHaveSupportedOSPlatformVersionHigherThanTargetPlatformVersion" FormatArguments="$(SupportedOSPlatformVersion);$(TargetPlatformVersion)" />
1662 + </Target>
1663 + <!--C++/CLI targets rely on the patch version of the Windows SDK version as TargetPlatformVersion. Skip the normalization.-->
1664 + <Target Name="_NormalizeTargetPlatformVersion" BeforeTargets="ProcessFrameworkReferences" Condition="'$(TargetPlatformVersion)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) and ('$(Language)' != 'C++' or '$(_EnablePackageReferencesInVCProjects)' == 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1665 + <ItemGroup>
1666 + <_ValidTargetPlatformVersion Include="@(SdkSupportedTargetPlatformVersion)" Condition="'@(SdkSupportedTargetPlatformVersion)' != '' and $([MSBuild]::VersionEquals(%(Identity), $(TargetPlatformVersion)))" />
1667 + </ItemGroup>
1668 + <PropertyGroup>
1669 + <TargetPlatformVersion Condition="'@(_ValidTargetPlatformVersion)' != '' and '@(_ValidTargetPlatformVersion-&gt;Count())' == '1' and '@(_ValidTargetPlatformVersion)' != '$(TargetPlatformVersion)'">@(_ValidTargetPlatformVersion)</TargetPlatformVersion>
1670 + </PropertyGroup>
1671 + </Target>
1672 + <Target Name="_CheckForInvalidTargetPlatformVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" DependsOnTargets="_NormalizeTargetPlatformVersion" Condition="'$(TargetPlatformVersion)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) and ('$(Language)' != 'C++' or '$(_EnablePackageReferencesInVCProjects)' == 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1673 + <PropertyGroup>
1674 + <TargetPlatformVersionSupported Condition="'$(TargetPlatformVersionSupported)' == '' and '@(_ValidTargetPlatformVersion)' != ''">true</TargetPlatformVersionSupported>
1675 + <_ValidTargetPlatformVersions Condition="'@(SdkSupportedTargetPlatformVersion)' != ''">@(SdkSupportedTargetPlatformVersion, '%0a')</_ValidTargetPlatformVersions>
1676 + <_ValidTargetPlatformVersions Condition="'@(SdkSupportedTargetPlatformVersion)' == ''">None</_ValidTargetPlatformVersions>
1677 + </PropertyGroup>
1678 + <NetSdkError Condition="'$(TargetPlatformVersionSupported)' != 'true'" ResourceName="InvalidTargetPlatformVersion" FormatArguments="$(TargetPlatformVersion);$(TargetPlatformIdentifier);$(_ValidTargetPlatformVersions)" />
1679 + </Target>
1680 + <!-- Exclude files from OutputPath and IntermediateOutputPath from default item globs. Use the value
1681 + of these properties before the TargetFramework is appended, so that if these values are specified
1682 + in the project file, the specified value will be used for the exclude. -->
1683 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1684 + <DefaultItemExcludes>$(DefaultItemExcludes);$(OutputPath)/**</DefaultItemExcludes>
1685 + <DefaultItemExcludes>$(DefaultItemExcludes);$(IntermediateOutputPath)/**</DefaultItemExcludes>
1686 + </PropertyGroup>
1687 + <!-- Projects which don't use Microsoft.NET.Sdk will typically define the OutputPath directly (usually in a
1688 + Configuration-specific PropertyGroup), so in that case we won't append to it by default. -->
1689 + <PropertyGroup Condition="'$(UsingNETSdkDefaults)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1690 + <AppendTargetFrameworkToOutputPath Condition="'$(AppendTargetFrameworkToOutputPath)' == ''">true</AppendTargetFrameworkToOutputPath>
1691 + </PropertyGroup>
1692 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1693 + <ProduceReferenceAssembly Condition="'$(ProduceReferenceAssembly)' == '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) and ('$(ProduceOnlyReferenceAssembly)' != 'true')">true</ProduceReferenceAssembly>
1694 + </PropertyGroup>
1695 + <!--
1696 + Append $(TargetFramework) directory to output and intermediate paths to prevent bin clashes between
1697 + targets.
1698 + -->
1699 + <PropertyGroup Condition="'$(AppendTargetFrameworkToOutputPath)' == 'true' and '$(TargetFramework)' != '' and '$(_UnsupportedTargetFrameworkError)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1700 + <IntermediateOutputPath>$(IntermediateOutputPath)$(TargetFramework.ToLowerInvariant())\</IntermediateOutputPath>
1701 + <OutputPath>$(OutputPath)$(TargetFramework.ToLowerInvariant())\</OutputPath>
1702 + </PropertyGroup>
1703 + <!--
1704 +============================================================================================================================================
1705 + </Import>
1706 +
1707 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1708 +============================================================================================================================================
1709 +-->
1710 + <!-- Related issue: https://github.com/dotnet/sdk/issues/12324-->
1711 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1712 + <!-- Import winfx targets when we're targeting .NETFramework and not importing the newer WindowsDesktop targets via `UseWPF`. -->
1713 + <ImportFrameworkWinFXTargets Condition="'$(ImportFrameworkWinFXTargets)' == '' and '$(UseWPF)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETFramework'">true</ImportFrameworkWinFXTargets>
1714 + <!-- Otherwise, don't import. -->
1715 + <ImportFrameworkWinFXTargets Condition="'$(ImportFrameworkWinFXTargets)' == ''">false</ImportFrameworkWinFXTargets>
1716 + </PropertyGroup>
1717 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1718 + <_TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</_TargetFrameworkVersionWithoutV>
1719 + </PropertyGroup>
1720 + <!--
1721 + Import targets from RazorSDK if referenced
1722 + Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
1723 + Sdks\Microsoft.NET.Sdk.Razor\targets\Microsoft.NET.Sdk.Razor.BeforeCommon.targets
1724 + -->
1725 + <!--<Import Project="$(MSBuildThisFileDirectory)..\..\Microsoft.NET.Sdk.Razor\targets\Microsoft.NET.Sdk.Razor.BeforeCommon.targets" Condition="'$(UsingMicrosoftNETSdkRazor)' == 'true'" />-->
1726 + <!-- Import workload targets -->
1727 + <!--
1728 +============================================================================================================================================
1729 + <Import Project="Microsoft.NET.Sdk.ImportWorkloads.targets" Condition="'$(MSBuildEnableWorkloadResolver)' == 'true'">
1730 +
1731 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.ImportWorkloads.targets
1732 +============================================================================================================================================
1733 +-->
1734 + <!--
1735 +***********************************************************************************************
1736 +Microsoft.NET.Sdk.ImportWorkloads.targets
1737 +
1738 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
1739 + created a backup copy. Incorrect changes to this file will make it
1740 + impossible to load or build your projects from the command-line or the IDE.
1741 +
1742 +Copyright (c) .NET Foundation. All rights reserved.
1743 +***********************************************************************************************
1744 +-->
1745 + <!-- Workload support -->
1746 + <!-- Import workload manifests -->
1747 + <!--
1748 +============================================================================================================================================
1749 + <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1750 +
1751 +C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.android\WorkloadManifest.targets
1752 +============================================================================================================================================
1753 +-->
1754 + <!--<Import Project="Sdk.targets" Sdk="Microsoft.Android.Sdk" Condition=" '$(TargetPlatformIdentifier)' == 'android' " />-->
1755 + <!--<Import Project="Sdk.targets" Sdk="Microsoft.Android.Sdk.BundleTool" Condition=" '$(TargetPlatformIdentifier)' == 'android' " />-->
1756 + <ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0')) ">
1757 + <SdkSupportedTargetPlatformIdentifier Include="android" DisplayName="Android" />
1758 + </ItemGroup>
1759 + <!--
1760 +============================================================================================================================================
1761 + </Import>
1762 +============================================================================================================================================
1763 +-->
1764 + <!--
1765 +============================================================================================================================================
1766 + <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1767 +
1768 +C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.ios\WorkloadManifest.targets
1769 +============================================================================================================================================
1770 +-->
1771 + <!--<Import Project="Sdk.props" Sdk="Microsoft.iOS.Sdk" Condition="'$(TargetPlatformIdentifier)' == 'iOS'" />-->
1772 + <!--<Import Project="Sdk.props" Sdk="Microsoft.iOS.Windows.Sdk" Condition=" '$(TargetPlatformIdentifier)' == 'iOS' and $([MSBuild]::IsOSPlatform('windows'))" />-->
1773 + <ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0')) ">
1774 + <SdkSupportedTargetPlatformIdentifier Include="ios" DisplayName="iOS" />
1775 + </ItemGroup>
1776 + <!--
1777 +============================================================================================================================================
1778 + </Import>
1779 +============================================================================================================================================
1780 +-->
1781 + <!--
1782 +============================================================================================================================================
1783 + <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1784 +
1785 +C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.maccatalyst\WorkloadManifest.targets
1786 +============================================================================================================================================
1787 +-->
1788 + <!--<Import Project="Sdk.props" Sdk="Microsoft.MacCatalyst.Sdk" Condition="'$(TargetPlatformIdentifier)' == 'MacCatalyst'" />-->
1789 + <ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0')) ">
1790 + <SdkSupportedTargetPlatformIdentifier Include="maccatalyst" DisplayName="Mac Catalyst" />
1791 + </ItemGroup>
1792 + <!--
1793 +============================================================================================================================================
1794 + </Import>
1795 +============================================================================================================================================
1796 +-->
1797 + <!--
1798 +============================================================================================================================================
1799 + <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1800 +
1801 +C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.macos\WorkloadManifest.targets
1802 +============================================================================================================================================
1803 +-->
1804 + <!--<Import Project="Sdk.props" Sdk="Microsoft.macOS.Sdk" Condition="'$(TargetPlatformIdentifier)' == 'macOS'" />-->
1805 + <ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0')) ">
1806 + <SdkSupportedTargetPlatformIdentifier Include="macos" DisplayName="macOS" />
1807 + </ItemGroup>
1808 + <!--
1809 +============================================================================================================================================
1810 + </Import>
1811 +============================================================================================================================================
1812 +-->
1813 + <!--
1814 +============================================================================================================================================
1815 + <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1816 +
1817 +C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.maui\WorkloadManifest.targets
1818 +============================================================================================================================================
1819 +-->
1820 + <ItemGroup Condition=" '$(UseMaui)' == 'true' or '$(UseMauiCore)' == 'true' ">
1821 + <ProjectCapability Include="UseMauiCore" />
1822 + <ProjectCapability Condition=" '$(UseMaui)' == 'true' " Include="UseMaui" />
1823 + </ItemGroup>
1824 + <!--<Import Project="Sdk.targets" Sdk="Microsoft.Maui.Sdk" Condition=" '$(UseMaui)' == 'true' or '$(UseMauiCore)' == 'true' or '$(UseMauiEssentials)' == 'true' or '$(UseMauiAssets)' == 'true' " />-->
1825 + <!--
1826 +============================================================================================================================================
1827 + </Import>
1828 +============================================================================================================================================
1829 +-->
1830 + <!--
1831 +============================================================================================================================================
1832 + <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1833 +
1834 +C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.sdk.tvos\WorkloadManifest.targets
1835 +============================================================================================================================================
1836 +-->
1837 + <!--<Import Project="Sdk.props" Sdk="Microsoft.tvOS.Sdk" Condition="'$(TargetPlatformIdentifier)' == 'tvOS'" />-->
1838 + <ItemGroup Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '6.0')) ">
1839 + <SdkSupportedTargetPlatformIdentifier Include="tvos" DisplayName="tvOS" />
1840 + </ItemGroup>
1841 + <!--
1842 +============================================================================================================================================
1843 + </Import>
1844 +============================================================================================================================================
1845 +-->
1846 + <!--
1847 +============================================================================================================================================
1848 + <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1849 +
1850 +C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.workload.emscripten\WorkloadManifest.targets
1851 +============================================================================================================================================
1852 +-->
1853 + <PropertyGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm'">
1854 + <BrowserWorkloadDisabled Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and !$([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '6.0'))">true</BrowserWorkloadDisabled>
1855 + </PropertyGroup>
1856 + <PropertyGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm' and '$(BrowserWorkloadDisabled)' == 'true'">
1857 + <_NativeBuildNeeded Condition="'$(RunAOTCompilation)' == 'true'">true</_NativeBuildNeeded>
1858 + <WorkloadDisabledWithReason Condition="'$(_NativeBuildNeeded)' == 'true'">WebAssembly workloads (required for AOT) are only supported for projects targeting net6.0+</WorkloadDisabledWithReason>
1859 + </PropertyGroup>
1860 + <PropertyGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm' and '$(BrowserWorkloadDisabled)' != 'true'">
1861 + <UsingBrowserRuntimeWorkload Condition="'$(RunAOTCompilation)' == 'true' or '$(UsingMicrosoftNETSdkBlazorWebAssembly)' != 'true'">true</UsingBrowserRuntimeWorkload>
1862 + <UsingBrowserRuntimeWorkload Condition="'$(UsingBrowserRuntimeWorkload)' == ''">$(WasmNativeWorkload)</UsingBrowserRuntimeWorkload>
1863 + </PropertyGroup>
1864 + <PropertyGroup Condition="'$(BrowserWorkloadDisabled)' == 'true'">
1865 + <UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
1866 + <WasmNativeWorkload>false</WasmNativeWorkload>
1867 + </PropertyGroup>
1868 + <!--<ImportGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm' and '$(UsingBrowserRuntimeWorkload)' == 'true'">-->
1869 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.Emscripten.Python" Condition="!$([MSBuild]::IsOsPlatform('Linux'))" />-->
1870 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.Emscripten.Node" />-->
1871 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.Emscripten.Sdk" />-->
1872 + <!--</ImportGroup>-->
1873 + <!--
1874 +============================================================================================================================================
1875 + </Import>
1876 +============================================================================================================================================
1877 +-->
1878 + <!--
1879 +============================================================================================================================================
1880 + <Import Project="WorkloadManifest.targets" Sdk="Microsoft.NET.SDK.WorkloadManifestTargetsLocator">
1881 +
1882 +C:\Program Files\dotnet\sdk-manifests\6.0.100\microsoft.net.workload.mono.toolchain\WorkloadManifest.targets
1883 +============================================================================================================================================
1884 +-->
1885 + <PropertyGroup>
1886 + <RuntimePackInWorkloadVersion>6.0.0</RuntimePackInWorkloadVersion>
1887 + <BrowserWorkloadDisabled Condition="'$(BrowserWorkloadDisabled)' == '' and&#xA; '$(RuntimeIdentifier)' == 'browser-wasm' and&#xA; '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and&#xA; !$([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '6.0'))">true</BrowserWorkloadDisabled>
1888 + </PropertyGroup>
1889 + <PropertyGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm' AND '$(UsingBrowserRuntimeWorkload)' == ''">
1890 + <!-- $(WasmBuildNative)==true is needed to enable workloads, when using native references, without AOT -->
1891 + <UsingBrowserRuntimeWorkload Condition="'$(RunAOTCompilation)' == 'true' or '$(WasmBuildNative)' == 'true' or '$(UsingMicrosoftNETSdkBlazorWebAssembly)' != 'true'">true</UsingBrowserRuntimeWorkload>
1892 + <UsingBrowserRuntimeWorkload Condition="'$(UsingBrowserRuntimeWorkload)' == ''">$(WasmNativeWorkload)</UsingBrowserRuntimeWorkload>
1893 + </PropertyGroup>
1894 + <PropertyGroup Condition="'$(BrowserWorkloadDisabled)' == 'true'">
1895 + <UsingBrowserRuntimeWorkload>false</UsingBrowserRuntimeWorkload>
1896 + <WasmNativeWorkload>false</WasmNativeWorkload>
1897 + </PropertyGroup>
1898 + <PropertyGroup Condition="'$(UsingMicrosoftNETSdkBlazorWebAssembly)' == 'true' and '$(UsingBrowserRuntimeWorkload)' == 'true'">
1899 + <WasmGenerateAppBundle>false</WasmGenerateAppBundle>
1900 + <UsingBlazorAOTWorkloadManifest>true</UsingBlazorAOTWorkloadManifest>
1901 + </PropertyGroup>
1902 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoAOTCompiler.Task" Condition="'$(RunAOTCompilation)' == 'true' and '$(BrowserWorkloadDisabled)' != 'true'" />-->
1903 + <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'android'">-->
1904 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1905 + <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1906 + <!--</ImportGroup>-->
1907 + <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'android' and '$(RunAOTCompilation)' == 'true'">-->
1908 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.android-x86" />-->
1909 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.android-x64" />-->
1910 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.android-arm" />-->
1911 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.android-arm64" />-->
1912 + <!--</ImportGroup>-->
1913 + <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'macOS'">-->
1914 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1915 + <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1916 + <!--</ImportGroup>-->
1917 + <!--
1918 + <ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'macOS' and $([MSBuild]::IsOSPlatform('osx'))">
1919 + <Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.osx-arm64" />
1920 + <Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.osx-x64" />
1921 + </ImportGroup>
1922 + -->
1923 + <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'ios'">-->
1924 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1925 + <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1926 + <!--</ImportGroup>-->
1927 + <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'ios' and $([MSBuild]::IsOSPlatform('osx'))">-->
1928 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.ios-arm" />-->
1929 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.ios-arm64" />-->
1930 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.iossimulator-arm64" />-->
1931 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.iossimulator-x64" />-->
1932 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.iossimulator-x86" />-->
1933 + <!--</ImportGroup>-->
1934 + <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'maccatalyst'">-->
1935 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1936 + <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1937 + <!--</ImportGroup>-->
1938 + <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'maccatalyst' and $([MSBuild]::IsOSPlatform('osx'))">-->
1939 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.maccatalyst-arm64" />-->
1940 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.maccatalyst-x64" />-->
1941 + <!--</ImportGroup>-->
1942 + <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'tvos'">-->
1943 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1944 + <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1945 + <!--</ImportGroup>-->
1946 + <!--<ImportGroup Condition="'$(TargetPlatformIdentifier)' == 'tvos' and $([MSBuild]::IsOSPlatform('osx'))">-->
1947 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.tvos-arm64" />-->
1948 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.tvossimulator-arm64" />-->
1949 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.tvossimulator-x64" />-->
1950 + <!--</ImportGroup>-->
1951 + <!--<ImportGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm' and '$(UsingBrowserRuntimeWorkload)' == 'true'">-->
1952 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1953 + <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.WebAssembly.Sdk" />-->
1954 + <!--<Import Project="Sdk.props" Sdk="Microsoft.NETCore.App.Runtime.AOT.Cross.browser-wasm" />-->
1955 + <!--<Import Project="Sdk.targets" Sdk="Microsoft.NET.Runtime.MonoTargets.Sdk" />-->
1956 + <!--</ImportGroup>-->
1957 + <PropertyGroup Condition="'$(TargetPlatformIdentifier)' == 'android' or '$(TargetPlatformIdentifier)' == 'macOS' or '$(TargetPlatformIdentifier)' == 'ios' or '$(TargetPlatformIdentifier)' == 'maccatalyst' or '$(TargetPlatformIdentifier)' == 'tvos' or ('$(RuntimeIdentifier)' == 'browser-wasm' and '$(UsingBrowserRuntimeWorkload)' == 'true')">
1958 + <_MonoWorkloadTargetsMobile>true</_MonoWorkloadTargetsMobile>
1959 + <_MonoWorkloadRuntimePackPackageVersion>$(RuntimePackInWorkloadVersion)</_MonoWorkloadRuntimePackPackageVersion>
1960 + </PropertyGroup>
1961 + <ItemGroup Condition="'$(_MonoWorkloadTargetsMobile)' == 'true'">
1962 + <MonoRuntimePackRids Include="&#xA; linux-x64;&#xA; win-x64;&#xA; osx-x64;&#xA; osx-arm64;&#xA; maccatalyst-x64;&#xA; maccatalyst-arm64;&#xA; browser-wasm;&#xA; ios-arm64;&#xA; ios-arm;&#xA; iossimulator-arm64;&#xA; iossimulator-x64;&#xA; iossimulator-x86;&#xA; tvos-arm64;&#xA; tvossimulator-arm64;&#xA; tvossimulator-x64;&#xA; android-arm64;&#xA; android-arm;&#xA; android-x64;&#xA; android-x86;&#xA; " />
1963 + <KnownRuntimePack Remove="Microsoft.NETCore.App" />
1964 + <KnownRuntimePack Include="Microsoft.NETCore.App" TargetFramework="net6.0" RuntimeFrameworkName="Microsoft.NETCore.App" LatestRuntimeFrameworkVersion="$(_MonoWorkloadRuntimePackPackageVersion)" RuntimePackNamePatterns="Microsoft.NETCore.App.Runtime.Mono.**RID**" RuntimePackRuntimeIdentifiers="@(MonoRuntimePackRids, '%3B')" RuntimePackLabels="Mono" />
1965 + </ItemGroup>
1966 + <!-- we can't condition sdk imports on the item @(NativeFileReference). Instead, explicitly check before the build
1967 + and emit a warning -->
1968 + <Target Name="_CheckBrowserWorkloadNeededButNotAvailable" Condition="'$(RuntimeIdentifier)' == 'browser-wasm' and '$(BrowserWorkloadDisabled)' != 'true' and '$(WasmNativeWorkload)' != 'true'" BeforeTargets="Build">
1969 + <Warning Condition="@(NativeFileReference-&gt;Count()) &gt; 0" Text="%40(NativeFileReference) is not empty, but the native references won't be linked in, because neither %24(WasmBuildNative), nor %24(RunAOTCompilation) are 'true'. NativeFileReference=@(NativeFileReference)" />
1970 + </Target>
1971 + <Target Name="_ErrorDisabledWorkload" Condition="'$(BrowserWorkloadDisabled)' == 'true'" BeforeTargets="Build">
1972 + <Error Condition="'$(RunAOTCompilation)' == 'true'" Text="WebAssembly workloads, required for AOT, are only supported for projects targeting net6.0+ . Set %24(RunAOTCompilation)=false to disable it." />
1973 + <Error Condition="@(NativeFileReference-&gt;Count()) &gt; 0" Text="WebAssembly workloads, required for linking native files (from %40(NativeFileReference)), are only supported for projects targeting net6.0+ ." />
1974 + </Target>
1975 + <!--
1976 +============================================================================================================================================
1977 + </Import>
1978 +
1979 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.ImportWorkloads.targets
1980 +============================================================================================================================================
1981 +-->
1982 + <UsingTask TaskName="ShowMissingWorkloads" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
1983 + <Target Name="GetSuggestedWorkloads" Returns="@(SuggestedWorkload)" Condition="@(MissingWorkloadPack) != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1984 + <ShowMissingWorkloads MissingWorkloadPacks="@(MissingWorkloadPack)" NetCoreRoot="$(NetCoreRoot)" NETCoreSdkVersion="$(NETCoreSdkVersion)" GenerateErrorsForMissingWorkloads="false">
1985 + <Output TaskParameter="SuggestedWorkloads" ItemName="SuggestedWorkload" />
1986 + </ShowMissingWorkloads>
1987 + </Target>
1988 + <!-- Skip this target for design time builds when there are missing workload packs.
1989 + This will prevent design time builds from failing and therefore allow
1990 + Visual Studio to collect the workloads from the GetSuggestedWorkloads target -->
1991 + <Target Name="_CheckForMissingWorkload" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;_CheckForUnsupportedTargetPlatformIdentifier" Condition="'@(MissingWorkloadPack)' != '' And '$(DesignTimeBuild)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1992 + <ShowMissingWorkloads MissingWorkloadPacks="@(MissingWorkloadPack)" NetCoreRoot="$(NetCoreRoot)" NETCoreSdkVersion="$(NETCoreSdkVersion)" GenerateErrorsForMissingWorkloads="true" />
1993 + </Target>
1994 + <!-- This target is not part of the build. Only used by dotnet workload restore command. Global property "SkipResolvePackageAssets"
1995 + need to be set to "true" to avoid requiring restore (which would likely fail if the required workloads aren't already installed).-->
1996 + <Target Name="_GetRequiredWorkloads" DependsOnTargets="GetSuggestedWorkloads;PrepareProjectReferences" Returns="@(_ResolvedSuggestedWorkload)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1997 + <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="_GetRequiredWorkloads" BuildInParallel="$(BuildInParallel)" Condition="'%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != ''" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences);TargetFramework;TargetFrameworks">
1998 + <Output TaskParameter="TargetOutputs" ItemName="SuggestedWorkloadFromReference" />
1999 + </MSBuild>
2000 + <ItemGroup>
2001 + <_ResolvedSuggestedWorkload Include="@(SuggestedWorkload)" />
2002 + <_ResolvedSuggestedWorkload Include="@(SuggestedWorkloadFromReference)" />
2003 + </ItemGroup>
2004 + </Target>
2005 + <!--
2006 +============================================================================================================================================
2007 + </Import>
2008 +
2009 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
2010 +============================================================================================================================================
2011 +-->
2012 + <!--
2013 + Use RuntimeIdentifier to determine PlatformTarget.
2014 + Also, enforce that RuntimeIdentifier is always specified for .NETFramework executables.
2015 + -->
2016 + <!--
2017 +============================================================================================================================================
2018 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.RuntimeIdentifierInference.targets">
2019 +
2020 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets
2021 +============================================================================================================================================
2022 +-->
2023 + <!--
2024 +***********************************************************************************************
2025 +Microsoft.NET.RuntimeIdentifierInference.targets
2026 +
2027 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2028 + created a backup copy. Incorrect changes to this file will make it
2029 + impossible to load or build your projects from the command-line or the IDE.
2030 +
2031 +Copyright (c) .NET Foundation. All rights reserved.
2032 +***********************************************************************************************
2033 +-->
2034 + <!--
2035 + .NET Framework cannot load native package dependencies dynamically
2036 + based on the current architecture. We must have a RID to resolve
2037 + and copy native dependencies to the output directory.
2038 +
2039 + When building a .NET Framework exe on Windows and not given a RID,
2040 + we'll pick either win7-x64 or win7-x86 (based on PlatformTarget)
2041 + if we're not given an explicit RID. However, if after resolving
2042 + NuGet assets we find no copy-local native dependencies, we will
2043 + emit the binary as AnyCPU.
2044 +
2045 + Note that we must set the RID here early (to be seen during NuGet
2046 + restore) in order for the project.assets.json to include the
2047 + native dependencies that will let us make the final call on
2048 + AnyCPU or platform-specific.
2049 +
2050 + This allows these common cases to work without requiring mention
2051 + of RuntimeIdentifier in the user project PlatformTarget:
2052 +
2053 + 1. Building an AnyCPU .NET Framework application on any host OS
2054 + with no native NuGet dependencies.
2055 +
2056 + 2. Building an x86 or x64 .NET Framework application on and for
2057 + Windows with native NuGet dependencies that do not require
2058 + greater than win7.
2059 +
2060 + However, any other combination of host operating system, CPU
2061 + architecture, and minimum Windows version will require some
2062 + manual intervention in the project file to set up the right
2063 + RID. (**)
2064 +
2065 + (*) Building NET4x from non-Windows is still not fully supported:
2066 + https://github.com/dotnet/sdk/issues/335) The point above is
2067 + that this code would not have to change to make the first
2068 + scenario work on non-Windows hosts.
2069 +
2070 + (**) https://github.com/dotnet/sdk/issues/840 tracks improving
2071 + the default RID selection here to make more non-AnyCPU scenarios
2072 + work without user intervention. The current static evaluation
2073 + requirement limits us.
2074 + -->
2075 + <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and&#xD;&#xA; '$(HasRuntimeOutput)' == 'true' and&#xD;&#xA; $([MSBuild]::IsOSPlatform(`Windows`))and&#xD;&#xA; '$(RuntimeIdentifier)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2076 + <_UsingDefaultRuntimeIdentifier>true</_UsingDefaultRuntimeIdentifier>
2077 + <RuntimeIdentifier Condition="'$(PlatformTarget)' == 'x64'">win7-x64</RuntimeIdentifier>
2078 + <RuntimeIdentifier Condition="'$(PlatformTarget)' == 'x86' or '$(PlatformTarget)' == ''">win7-x86</RuntimeIdentifier>
2079 + </PropertyGroup>
2080 + <PropertyGroup Condition="'$(UseCurrentRuntimeIdentifier)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2081 + <RuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</RuntimeIdentifier>
2082 + </PropertyGroup>
2083 + <PropertyGroup Condition="'$(PlatformTarget)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2084 + <_UsingDefaultPlatformTarget>true</_UsingDefaultPlatformTarget>
2085 + </PropertyGroup>
2086 + <!-- Determine PlatformTarget (if not already set) from runtime identifier. -->
2087 + <Choose xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2088 + <When Condition="'$(PlatformTarget)' != '' or '$(RuntimeIdentifier)' == ''" />
2089 + <When Condition="$(RuntimeIdentifier.EndsWith('-x86')) or $(RuntimeIdentifier.Contains('-x86-'))">
2090 + <PropertyGroup>
2091 + <PlatformTarget>x86</PlatformTarget>
2092 + </PropertyGroup>
2093 + </When>
2094 + <When Condition="$(RuntimeIdentifier.EndsWith('-x64')) or $(RuntimeIdentifier.Contains('-x64-'))">
2095 + <PropertyGroup>
2096 + <PlatformTarget>x64</PlatformTarget>
2097 + </PropertyGroup>
2098 + </When>
2099 + <When Condition="$(RuntimeIdentifier.EndsWith('-arm')) or $(RuntimeIdentifier.Contains('-arm-'))">
2100 + <PropertyGroup>
2101 + <PlatformTarget>arm</PlatformTarget>
2102 + </PropertyGroup>
2103 + </When>
2104 + <When Condition="$(RuntimeIdentifier.EndsWith('-arm64')) or $(RuntimeIdentifier.Contains('-arm64-'))">
2105 + <PropertyGroup>
2106 + <PlatformTarget>arm64</PlatformTarget>
2107 + </PropertyGroup>
2108 + </When>
2109 + <Otherwise>
2110 + <PropertyGroup>
2111 + <PlatformTarget>AnyCPU</PlatformTarget>
2112 + </PropertyGroup>
2113 + </Otherwise>
2114 + </Choose>
2115 + <!--
2116 + SelfContained was not an option in .NET Core SDK 1.0.
2117 + Default SelfContained based on the RuntimeIdentifier, so projects don't have to explicitly set SelfContained.
2118 + This avoids a breaking change from 1.0 behavior.
2119 + -->
2120 + <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(HasRuntimeOutput)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2121 + <SelfContained Condition="'$(SelfContained)' == '' and '$(RuntimeIdentifier)' != ''">true</SelfContained>
2122 + <SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
2123 + <_RuntimeIdentifierUsesAppHost Condition="$(RuntimeIdentifier.StartsWith('ios')) or $(RuntimeIdentifier.StartsWith('tvos')) or $(RuntimeIdentifier.StartsWith('maccatalyst')) or $(RuntimeIdentifier.StartsWith('android')) or $(RuntimeIdentifier.StartsWith('browser'))">false</_RuntimeIdentifierUsesAppHost>
2124 + <_RuntimeIdentifierUsesAppHost Condition="'$(_RuntimeIdentifierUsesAppHost)' == ''">true</_RuntimeIdentifierUsesAppHost>
2125 + <UseAppHost Condition="'$(UseAppHost)' == '' and&#xD;&#xA; '$(_RuntimeIdentifierUsesAppHost)' == 'true' and&#xD;&#xA; ('$(SelfContained)' == 'true' or&#xD;&#xA; ('$(RuntimeIdentifier)' != '' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '2.1') or&#xD;&#xA; '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0')">true</UseAppHost>
2126 + <UseAppHost Condition="'$(UseAppHost)' == ''">false</UseAppHost>
2127 + </PropertyGroup>
2128 + <!-- Only use the default apphost if building without a RID and without a deps file path (used by GenerateDeps.proj for CLI tools). -->
2129 + <PropertyGroup Condition="'$(DefaultAppHostRuntimeIdentifier)' == '' and&#xD;&#xA; '$(RuntimeIdentifier)' == '' and&#xD;&#xA; (('$(UseAppHost)' == 'true' and '$(ProjectDepsFilePath)' == '') or&#xD;&#xA; ('$(EnableComHosting)' == 'true' and '$(_IsExecutable)' != 'true') or&#xD;&#xA; '$(UseIJWHost)' == 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2130 + <DefaultAppHostRuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</DefaultAppHostRuntimeIdentifier>
2131 + <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'x64'">win-x64</DefaultAppHostRuntimeIdentifier>
2132 + <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'x86'">win-x86</DefaultAppHostRuntimeIdentifier>
2133 + <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'ARM'">win-arm</DefaultAppHostRuntimeIdentifier>
2134 + <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'ARM64'">win-arm64</DefaultAppHostRuntimeIdentifier>
2135 + <!-- If we are running on an M1 with a native SDK and the TFM is < 6.0, we have to use a x64 apphost since there are no osx-arm64 apphosts previous to .NET 6.0. -->
2136 + <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.EndsWith('arm64')) and&#xD;&#xA; $(DefaultAppHostRuntimeIdentifier.StartsWith('osx')) and&#xD;&#xA; $([MSBuild]::VersionLessThan('$(_TargetFrameworkVersionWithoutV)', '6.0'))">$(DefaultAppHostRuntimeIdentifier.Replace("arm64", "x64"))</DefaultAppHostRuntimeIdentifier>
2137 + <!-- If we are running on win-arm64 and the TFM is < 5.0, we have to use a x64 apphost since there are no win-arm64 apphosts previous to .NET 5.0. -->
2138 + <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.EndsWith('arm64')) and&#xD;&#xA; $(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and&#xD;&#xA; $([MSBuild]::VersionLessThan('$(_TargetFrameworkVersionWithoutV)', '5.0'))">$(DefaultAppHostRuntimeIdentifier.Replace("arm64", "x64"))</DefaultAppHostRuntimeIdentifier>
2139 + </PropertyGroup>
2140 + <Target Name="_CheckForUnsupportedAppHostUsage" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(HasRuntimeOutput)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2141 + <NETSdkError Condition="'$(SelfContained)' == 'true' and '$(RuntimeIdentifier)' == ''" ResourceName="CannotHaveSelfContainedWithoutRuntimeIdentifier" />
2142 + <NETSdkError Condition="'$(SelfContained)' == 'true' and '$(UseAppHost)' != 'true' and '$(_RuntimeIdentifierUsesAppHost)' == 'true'" ResourceName="CannotUseSelfContainedWithoutAppHost" />
2143 + <NETSdkError Condition="'$(SelfContained)' != 'true' and '$(UseAppHost)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1'" ResourceName="FrameworkDependentAppHostRequiresVersion21" />
2144 + <NETSdkError Condition="'$(PublishSingleFile)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'" ResourceName="PublishSingleFileRequiresVersion30" />
2145 + <NETSdkError Condition="'$(PublishSingleFile)' == 'true' and $(RuntimeIdentifier.StartsWith('win7-'))" ResourceName="SingleFileWin7Incompatible" FormatArguments="$(RuntimeIdentifier)" />
2146 + <!-- The TFM version checks for PublishReadyToRun PublishTrimmed only generate warnings in .Net core 3.1
2147 + because we do not want the behavior to be a breaking change compared to version 3.0 -->
2148 + <NETSdkWarning Condition="'$(PublishReadyToRun)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'" ResourceName="PublishReadyToRunRequiresVersion30" />
2149 + <NETSdkWarning Condition="'$(PublishTrimmed)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'" ResourceName="PublishTrimmedRequiresVersion30" />
2150 + <!-- Generate Trimming warnings for WinForms and Wpf applications-->
2151 + <NetSdkError Condition="('$(UseWindowsForms)' == 'true') and ('$(PublishTrimmed)' == 'true') and ('$(_SuppressWinFormsTrimError)' != 'true')" ResourceName="TrimmingWindowsFormsIsNotSupported" />
2152 + <NetSdkError Condition="('$(UseWpf)' == 'true') and ('$(PublishTrimmed)' == 'true') and ('$(_SuppressWpfTrimError)' != 'true')" ResourceName="TrimmingWpfIsNotSupported" />
2153 + </Target>
2154 + <Target Name="_CheckForUnsupportedHostingUsage" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2155 + <NETSdkWarning Condition="'$(SelfContained)' == 'true' and '$(EnableComHosting)' == 'true'" ResourceName="NoSupportComSelfContained" />
2156 + </Target>
2157 + <Target Name="_CheckForMismatchingPlatform" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition="'$(RuntimeIdentifier)' != '' and '$(PlatformTarget)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2158 + <NETSdkError Condition="'$(PlatformTarget)' != 'AnyCPU' and !$(RuntimeIdentifier.ToUpperInvariant().Contains($(PlatformTarget.ToUpperInvariant())))" ResourceName="CannotHaveRuntimeIdentifierPlatformMismatchPlatformTarget" FormatArguments="$(RuntimeIdentifier);$(PlatformTarget)" />
2159 + </Target>
2160 + <Target Name="_CheckForLanguageAndFeatureCombinationSupport" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;ProcessFrameworkReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2161 + <NETSdkError Condition="('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true') and $(OutputType) != 'library' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'" ResourceName="NoSupportCppNonDynamicLibraryDotnetCore" />
2162 + <NETSdkError Condition="('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true') and $(EnableComHosting) == 'true'" ResourceName="NoSupportCppEnableComHosting" />
2163 + <NETSdkError Condition="('$(Language)' == 'C++' and '$(_EnablePackageReferencesInVCProjects)' != 'true') and $(SelfContained) == 'true'" ResourceName="NoSupportCppSelfContained" />
2164 + </Target>
2165 + <Target Name="_CheckForNETCoreSdkIsPreview" BeforeTargets="_CheckForInvalidConfigurationAndPlatform" Condition=" '$(_NETCoreSdkIsPreview)' == 'true' AND '$(SuppressNETCoreSdkPreviewMessage)' != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2166 + <ShowPreviewMessage />
2167 + </Target>
2168 + <!-- Projects which don't use Microsoft.NET.Sdk will typically define the OutputPath directly (usually in a
2169 + Configuration-specific PropertyGroup), so in that case we won't append to it by default. -->
2170 + <PropertyGroup Condition="'$(UsingNETSdkDefaults)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2171 + <!-- Projects can opt out of having the RID appended to the output path by setting this to false. -->
2172 + <AppendRuntimeIdentifierToOutputPath Condition="'$(AppendRuntimeIdentifierToOutputPath)' == ''">true</AppendRuntimeIdentifierToOutputPath>
2173 + </PropertyGroup>
2174 + <!--
2175 + Append $(RuntimeIdentifier) directory to output and intermediate paths to prevent bin clashes between
2176 + targets.
2177 +
2178 + But do not append the implicit default runtime identifier for .NET Framework apps as that would
2179 + append a RID the user never mentioned in the path and do so even in the AnyCPU case.
2180 + -->
2181 + <PropertyGroup Condition="'$(AppendRuntimeIdentifierToOutputPath)' == 'true' and '$(RuntimeIdentifier)' != '' and '$(_UsingDefaultRuntimeIdentifier)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2182 + <IntermediateOutputPath>$(IntermediateOutputPath)$(RuntimeIdentifier)\</IntermediateOutputPath>
2183 + <OutputPath>$(OutputPath)$(RuntimeIdentifier)\</OutputPath>
2184 + </PropertyGroup>
2185 + <UsingTask TaskName="Microsoft.NET.Build.Tasks.GetDefaultPlatformTargetForNetFramework" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
2186 + <!--
2187 + Switch our default .NETFramework CPU architecture choice back to AnyCPU before
2188 + compiling the exe if no copy-local native dependencies were resolved from NuGet
2189 + -->
2190 + <Target Name="AdjustDefaultPlatformTargetForNetFrameworkExeWithNoNativeCopyLocalItems" AfterTargets="ResolvePackageAssets" BeforeTargets="CoreCompile" Condition="'$(_UsingDefaultPlatformTarget)' == 'true' and&#xD;&#xA; '$(_UsingDefaultRuntimeIdentifier)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2191 + <GetDefaultPlatformTargetForNetFramework PackageDependencies="@(PackageDependencies)" NativeCopyLocalItems="@(NativeCopyLocalItems)">
2192 + <Output TaskParameter="DefaultPlatformTarget" PropertyName="PlatformTarget" />
2193 + </GetDefaultPlatformTargetForNetFramework>
2194 + </Target>
2195 + <!--
2196 +============================================================================================================================================
2197 + </Import>
2198 +
2199 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
2200 +============================================================================================================================================
2201 +-->
2202 + <!-- Checks for EOL frameworks -->
2203 + <!--
2204 +============================================================================================================================================
2205 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.EolTargetFrameworks.targets">
2206 +
2207 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.EolTargetFrameworks.targets
2208 +============================================================================================================================================
2209 +-->
2210 + <!--
2211 +***********************************************************************************************
2212 +Microsoft.NET.EolTargetFrameworks.targets
2213 +
2214 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2215 + created a backup copy. Incorrect changes to this file will make it
2216 + impossible to load or build your projects from the command-line or the IDE.
2217 +
2218 +Copyright (c) .NET Foundation. All rights reserved.
2219 +***********************************************************************************************
2220 +-->
2221 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2222 + <!-- Default the check to true, but allow developers to turn the warning off. -->
2223 + <CheckEolTargetFramework Condition="'$(CheckEolTargetFramework)' == ''">true</CheckEolTargetFramework>
2224 + </PropertyGroup>
2225 + <!--
2226 + .NET Core framework versions that are currently considered to be end-of-life (EOL). These versions will not be targeted to
2227 + receive servicing updates and security fixes.
2228 + -->
2229 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2230 + <_EolNetCoreTargetFrameworkVersions Include="1.0;1.1;2.0;2.1;2.2;3.0" />
2231 + </ItemGroup>
2232 + <Target Name="_CheckForEolTargetFrameworks" AfterTargets="_CheckForUnsupportedNETCoreVersion" Condition="'@(_EolNetCoreTargetFrameworkVersions-&gt;AnyHaveMetadataValue('Identity', '$(_TargetFrameworkVersionWithoutV)'))' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(CheckEolTargetFramework)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2233 + <NETSdkWarning ResourceName="TargetFrameworkIsEol" FormatArguments="$(TargetFramework.ToLowerInvariant());https://aka.ms/dotnet-core-support" />
2234 + </Target>
2235 + <!--
2236 +============================================================================================================================================
2237 + </Import>
2238 +
2239 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
2240 +============================================================================================================================================
2241 +-->
2242 + <!-- Check if the Target Framework is coreclr based -->
2243 + <PropertyGroup Condition="'$(_IsNETCoreOrNETStandard)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2244 + <_IsNETCoreOrNETStandard Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'">true</_IsNETCoreOrNETStandard>
2245 + <_IsNETCoreOrNETStandard Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard'">true</_IsNETCoreOrNETStandard>
2246 + </PropertyGroup>
2247 + <!-- Unification / automatic binding redirect logic -->
2248 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2249 + <DesignTimeAutoUnify Condition="'$(DesignTimeAutoUnify)' == ''">true</DesignTimeAutoUnify>
2250 + <AutoUnifyAssemblyReferences Condition="'$(AutoUnifyAssemblyReferences)' == '' and $(OutputType) == 'Library'">true</AutoUnifyAssemblyReferences>
2251 + <AutoUnifyAssemblyReferences Condition="'$(AutoUnifyAssemblyReferences)' == '' and '$(_IsNETCoreOrNETStandard)' == 'true'">true</AutoUnifyAssemblyReferences>
2252 + </PropertyGroup>
2253 + <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(HasRuntimeOutput)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2254 + <AutoGenerateBindingRedirects Condition="'$(AutoGenerateBindingRedirects)' == ''">true</AutoGenerateBindingRedirects>
2255 + </PropertyGroup>
2256 + <!-- Default settings for .NET Core and .NET Standard build logic -->
2257 + <PropertyGroup Condition="'$(_IsNETCoreOrNETStandard)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2258 + <GenerateDependencyFile Condition=" '$(GenerateDependencyFile)' == '' ">true</GenerateDependencyFile>
2259 + <!-- Assembly and file versions of runtime assets should be written to the deps.json by default, to support
2260 + runtime minor version roll-forward: https://github.com/dotnet/core-setup/issues/3546 -->
2261 + <IncludeFileVersionsInDependencyFile Condition="'$(IncludeFileVersionsInDependencyFile)' == ''">true</IncludeFileVersionsInDependencyFile>
2262 + <!-- Force .dll extension for .NETCoreApp and .NETStandard projects even if output type is exe. -->
2263 + <TargetExt Condition="'$(TargetExt)' == ''">.dll</TargetExt>
2264 + <!-- Disable the use of FrameworkPathOverride in Microsoft.Common.CurrentVersion.targets which can slow down evaluation. FrameworkPathOverride
2265 + is not needed for NETStandard or NETCore since references come from NuGet packages-->
2266 + <EnableFrameworkPathOverride Condition="'$(EnableFrameworkPathOverride)' == ''">false</EnableFrameworkPathOverride>
2267 + </PropertyGroup>
2268 + <!-- Regardless of platform, enable dependency file generation if PreserveCompilationContext is set. -->
2269 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2270 + <GenerateDependencyFile Condition="'$(GenerateDependencyFile)' == ''">$(PreserveCompilationContext)</GenerateDependencyFile>
2271 + </PropertyGroup>
2272 + <!-- Set PublishDir here, before Microsoft.Common.targets, to avoid a competing default there. -->
2273 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2274 + <PublishDirName Condition="'$(PublishDirName)' == ''">publish</PublishDirName>
2275 + <!-- ensure the PublishDir is RID specific-->
2276 + <PublishDir Condition="'$(PublishDir)' == '' and&#xD;&#xA; '$(AppendRuntimeIdentifierToOutputPath)' != 'true' and&#xD;&#xA; '$(RuntimeIdentifier)' != '' and&#xD;&#xA; '$(_UsingDefaultRuntimeIdentifier)' != 'true'">$(OutputPath)$(RuntimeIdentifier)\$(PublishDirName)\</PublishDir>
2277 + <PublishDir Condition="'$(PublishDir)' == ''">$(OutputPath)$(PublishDirName)\</PublishDir>
2278 + </PropertyGroup>
2279 + <!--
2280 + Sets RestoreAdditionalProjectSources or RestoreAdditionalProjectFallbackFolders to the SDK Offline Cache based
2281 + on the TargetFramework.
2282 + -->
2283 + <!--
2284 +============================================================================================================================================
2285 + <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.NuGetOfflineCache.targets">
2286 +
2287 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.NuGetOfflineCache.targets
2288 +============================================================================================================================================
2289 +-->
2290 + <!--
2291 +***********************************************************************************************
2292 +Microsoft.NET.NuGetOfflineCache.targets
2293 +
2294 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2295 + created a backup copy. Incorrect changes to this file will make it
2296 + impossible to load or build your projects from the command-line or the IDE.
2297 +
2298 +Copyright (c) .NET Foundation. All rights reserved.
2299 +***********************************************************************************************
2300 +-->
2301 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2302 + <_NugetFallbackFolder>$(MSBuildThisFileDirectory)..\..\..\..\NuGetFallbackFolder</_NugetFallbackFolder>
2303 + <_IsNETCore1x Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &lt; '2.0' ">true</_IsNETCore1x>
2304 + <_WorkloadLibraryPacksFolder Condition="'$(_WorkloadLibraryPacksFolder)' == ''">$([MSBuild]::EnsureTrailingSlash('$(NetCoreRoot)'))library-packs</_WorkloadLibraryPacksFolder>
2305 + </PropertyGroup>
2306 + <PropertyGroup Condition=" '$(DisableImplicitNuGetFallbackFolder)' != 'true' and Exists($(_NugetFallbackFolder)) " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2307 + <RestoreAdditionalProjectSources Condition=" '$(_IsNETCore1x)' == 'true' and '$(DisableImplicit1xNuGetFallbackFolder)' != 'true' ">$(RestoreAdditionalProjectSources);$(_NugetFallbackFolder)</RestoreAdditionalProjectSources>
2308 + <RestoreAdditionalProjectFallbackFoldersExcludes Condition=" '$(_IsNETCore1x)' == 'true' ">$(RestoreAdditionalProjectFallbackFoldersExcludes);$(_NugetFallbackFolder)</RestoreAdditionalProjectFallbackFoldersExcludes>
2309 + <RestoreAdditionalProjectFallbackFolders Condition=" '$(_IsNETCore1x)' != 'true' ">$(RestoreAdditionalProjectFallbackFolders);$(_NugetFallbackFolder)</RestoreAdditionalProjectFallbackFolders>
2310 + </PropertyGroup>
2311 + <PropertyGroup Condition=" '$(DisableImplicitLibraryPacksFolder)' != 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2312 + <RestoreAdditionalProjectSources Condition="Exists('$(_WorkloadLibraryPacksFolder)')">$(RestoreAdditionalProjectSources);$(_WorkloadLibraryPacksFolder)</RestoreAdditionalProjectSources>
2313 + </PropertyGroup>
2314 + <!--
2315 +============================================================================================================================================
2316 + </Import>
2317 +
2318 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.BeforeCommon.targets
2319 +============================================================================================================================================
2320 +-->
2321 + <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETFramework'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2322 + <_SDKImplicitReference Include="System" />
2323 + <_SDKImplicitReference Include="System.Data" />
2324 + <_SDKImplicitReference Include="System.Drawing" />
2325 + <_SDKImplicitReference Include="System.Xml" />
2326 + <!-- When doing greater than/less than comparisons between strings, MSBuild will try to parse the strings as Version objects and compare them as
2327 + such if the parse succeeds. -->
2328 + <!-- Framework assemblies introduced in .NET 3.5 -->
2329 + <_SDKImplicitReference Include="System.Core" Condition=" '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.5' " />
2330 + <_SDKImplicitReference Include="System.Runtime.Serialization" Condition=" '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.5' " />
2331 + <_SDKImplicitReference Include="System.Xml.Linq" Condition=" '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.5' " />
2332 + <!-- Framework assemblies introduced in .NET 4.0 -->
2333 + <_SDKImplicitReference Include="System.Numerics" Condition=" '$(_TargetFrameworkVersionWithoutV)' &gt;= '4.0' " />
2334 + <!-- Framework assemblies introduced in .NET 4.5 -->
2335 + <_SDKImplicitReference Include="System.IO.Compression.FileSystem" Condition=" '$(_TargetFrameworkVersionWithoutV)' &gt;= '4.5' " />
2336 + <!-- Don't automatically reference System.IO.Compression or System.Net.Http to help avoid hitting https://github.com/Microsoft/msbuild/issues/1329. -->
2337 + <!--<Reference Include="System.IO.Compression" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.5' "/>
2338 + <_SDKImplicitReference Include="System.Net.Http" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.5' "/>-->
2339 + <_SDKImplicitReference Update="@(_SDKImplicitReference)" Pack="false" IsImplicitlyDefined="true" />
2340 + <!-- Don't duplicate any references that are explicit in the project file. This means that if you do want to include a framework assembly in your
2341 + NuGet package, you can just add the Reference to your project file. -->
2342 + <_SDKImplicitReference Remove="@(Reference)" />
2343 + <!-- Add the implicit references to @(Reference) -->
2344 + <Reference Include="@(_SDKImplicitReference)" />
2345 + </ItemGroup>
2346 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2347 + <!-- Prevent System.Core reference from being added separately (see Microsoft.NETFramework.CurrentVersion.props) -->
2348 + <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
2349 + </PropertyGroup>
2350 + <PropertyGroup Condition="'$(DisableImplicitAssetTargetFallback)' != 'true' and '$(_IsNETCoreOrNETStandard)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '2.0'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2351 + <AssetTargetFallback>$(AssetTargetFallback);net461;net462;net47;net471;net472;net48</AssetTargetFallback>
2352 + </PropertyGroup>
2353 + <!-- Add conditional compilation symbols for the target framework (for example NET461, NETSTANDARD2_0, NETCOREAPP1_0) -->
2354 + <PropertyGroup Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' and '$(TargetFrameworkIdentifier)' != '.NETPortable' and '$(TargetFrameworkIdentifier)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2355 + <_FrameworkIdentifierForImplicitDefine>$(TargetFrameworkIdentifier.Replace('.', '').ToUpperInvariant())</_FrameworkIdentifierForImplicitDefine>
2356 + <_FrameworkIdentifierForImplicitDefine Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) ">NET</_FrameworkIdentifierForImplicitDefine>
2357 + <VersionlessImplicitFrameworkDefine>$(_FrameworkIdentifierForImplicitDefine)</VersionlessImplicitFrameworkDefine>
2358 + <_FrameworkIdentifierForImplicitDefine Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework'">NET</_FrameworkIdentifierForImplicitDefine>
2359 + <_FrameworkVersionForImplicitDefine>$(TargetFrameworkVersion.TrimStart('vV'))</_FrameworkVersionForImplicitDefine>
2360 + <_FrameworkVersionForImplicitDefine>$(_FrameworkVersionForImplicitDefine.Replace('.', '_'))</_FrameworkVersionForImplicitDefine>
2361 + <_FrameworkVersionForImplicitDefine Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework'">$(_FrameworkVersionForImplicitDefine.Replace('_', ''))</_FrameworkVersionForImplicitDefine>
2362 + <ImplicitFrameworkDefine>$(_FrameworkIdentifierForImplicitDefine)$(_FrameworkVersionForImplicitDefine)</ImplicitFrameworkDefine>
2363 + <BackwardsCompatFrameworkDefine Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0))">$(TargetFrameworkIdentifier.Replace('.', '').ToUpperInvariant())</BackwardsCompatFrameworkDefine>
2364 + </PropertyGroup>
2365 + <!-- Add conditional compilation symbols for the target platform (for example ANDROID, IOS, WINDOWS) -->
2366 + <Target Name="GenerateTargetPlatformDefineConstants" Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' and '$(TargetPlatformIdentifier)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2367 + <PropertyGroup>
2368 + <_PlatformIdentifierForImplicitDefine>$(TargetPlatformIdentifier.ToUpperInvariant())</_PlatformIdentifierForImplicitDefine>
2369 + <_PlatformVersionForImplicitDefine>$(TargetPlatformVersion.Replace('.', '_'))</_PlatformVersionForImplicitDefine>
2370 + </PropertyGroup>
2371 + <ItemGroup>
2372 + <_ImplicitDefineConstant Include="$(_PlatformIdentifierForImplicitDefine)" />
2373 + <_ImplicitDefineConstant Include="$(_PlatformIdentifierForImplicitDefine)$(_PlatformVersionForImplicitDefine)" />
2374 + </ItemGroup>
2375 + </Target>
2376 + <!-- Add OR_GREATER compilation symbols for target frameworks with .NET Framework, .NET Standard, .NET Core, and .NET -->
2377 + <Target Name="GenerateNETCompatibleDefineConstants" Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' and ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' or '$(TargetFrameworkIdentifier)' == '.NETFramework' or '$(TargetFrameworkIdentifier)' == '.NETStandard')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2378 + <ItemGroup>
2379 + <_SupportedFrameworkVersions Include="@(SupportedNETCoreAppTargetFramework-&gt;'%(Identity)'-&gt;TrimStart('.NETCoreApp,Version=v'))" Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' " />
2380 + <_SupportedFrameworkVersions Include="@(SupportedNETFrameworkTargetFramework-&gt;'%(Identity)'-&gt;TrimStart('.NETFramework,Version=v'))" Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework' " />
2381 + <_SupportedFrameworkVersions Include="@(SupportedNETStandardTargetFramework-&gt;'%(Identity)'-&gt;TrimStart('.NETStandard,Version=v'))" Condition=" '$(TargetFrameworkIdentifier)' == '.NETStandard' " />
2382 + <_CompatibleFrameworkVersions Include="@(_SupportedFrameworkVersions)" Condition=" $([MSBuild]::VersionLessThanOrEquals(%(Identity), $(TargetFrameworkVersion))) " />
2383 + <_FormattedCompatibleFrameworkVersions Include="@(_CompatibleFrameworkVersions)" Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' or '$(TargetFrameworkIdentifier)' == '.NETStandard' " />
2384 + <_FormattedCompatibleFrameworkVersions Include="@(_CompatibleFrameworkVersions-&gt;'%(Identity)'-&gt;Replace('.', ''))" Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework' " />
2385 + <_ImplicitDefineConstant Include="@(_FormattedCompatibleFrameworkVersions-&gt;'$(_FrameworkIdentifierForImplicitDefine)%(Identity)_OR_GREATER'-&gt;Replace('.', '_'))" Condition=" '$(TargetFrameworkIdentifier)' != '.NETCoreApp' or $([MSBuild]::VersionGreaterThanOrEquals(%(_FormattedCompatibleFrameworkVersions.Identity), 5.0)) " />
2386 + <_ImplicitDefineConstant Include="@(_FormattedCompatibleFrameworkVersions-&gt;'NETCOREAPP%(Identity)_OR_GREATER'-&gt;Replace('.', '_'))" Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionLessThan(%(_FormattedCompatibleFrameworkVersions.Identity), 5.0)) " />
2387 + </ItemGroup>
2388 + </Target>
2389 + <!-- Add OR_GREATER compilation symbols for target platforms. -->
2390 + <Target Name="GeneratePlatformCompatibleDefineConstants" Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' and '$(TargetPlatformIdentifier)' != '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), 5.0)) " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2391 + <ItemGroup>
2392 + <_SupportedPlatformCompatibleVersions Include="@(SdkSupportedTargetPlatformVersion)" Condition=" %(Identity) != '' and $([MSBuild]::VersionLessThanOrEquals(%(Identity), $(TargetPlatformVersion))) " />
2393 + <_ImplicitDefineConstant Include="@(_SupportedPlatformCompatibleVersions-&gt;'$(TargetPlatformIdentifier.ToUpper())%(Identity)_OR_GREATER'-&gt;Replace('.', '_'))" />
2394 + </ItemGroup>
2395 + </Target>
2396 + <!-- Add implicitly defined preprocessor symbols to DefineConstants -->
2397 + <Target Name="AddImplicitDefineConstants" Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' " DependsOnTargets="GenerateTargetPlatformDefineConstants;GenerateNETCompatibleDefineConstants;GeneratePlatformCompatibleDefineConstants" BeforeTargets="CoreCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2398 + <PropertyGroup>
2399 + <DefineConstants Condition=" '@(_ImplicitDefineConstant)' != '' ">$(DefineConstants);@(_ImplicitDefineConstant)</DefineConstants>
2400 + <FinalDefineConstants Condition=" '@(_ImplicitDefineConstant)' != '' and '$(Language)' == 'VB' ">$(FinalDefineConstants),@(_ImplicitDefineConstant->'%(Identity)=-1', ',')</FinalDefineConstants>
2401 + </PropertyGroup>
2402 + </Target>
2403 + <!-- Handle XML documentation file settings -->
2404 + <PropertyGroup Condition="'$(GenerateDocumentationFile)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2405 + <GenerateDocumentationFile Condition="'$(DocumentationFile)' == ''">false</GenerateDocumentationFile>
2406 + <GenerateDocumentationFile Condition="'$(DocumentationFile)' != ''">true</GenerateDocumentationFile>
2407 + </PropertyGroup>
2408 + <PropertyGroup Condition="'$(GenerateDocumentationFile)' == 'true' and '$(DocumentationFile)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2409 + <DocumentationFile Condition="'$(MSBuildProjectExtension)' == '.vbproj'">$(AssemblyName).xml</DocumentationFile>
2410 + <DocumentationFile Condition="'$(MSBuildProjectExtension)' != '.vbproj'">$(IntermediateOutputPath)$(AssemblyName).xml</DocumentationFile>
2411 + </PropertyGroup>
2412 + <PropertyGroup Condition="'$(GenerateDocumentationFile)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2413 + <DocumentationFile />
2414 + </PropertyGroup>
2415 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2416 + <PublishDocumentationFiles Condition="'$(PublishDocumentationFiles)' == ''">true</PublishDocumentationFiles>
2417 + <PublishDocumentationFile Condition="'$(PublishDocumentationFile)' == '' and '$(PublishDocumentationFiles)' == 'true'">true</PublishDocumentationFile>
2418 + <PublishReferencesDocumentationFiles Condition="'$(PublishReferencesDocumentationFiles)' == '' and '$(PublishDocumentationFiles)' == 'true'">true</PublishReferencesDocumentationFiles>
2419 + </PropertyGroup>
2420 + <!-- Add a project capability so that the project properties in the IDE can show the option to generate an XML documentation file without specifying the filename -->
2421 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2422 + <ProjectCapability Include="GenerateDocumentationFile" />
2423 + </ItemGroup>
2424 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2425 + <IsNetCoreAppTargetingLatestTFM Condition="'$(IsNetCoreAppTargetingLatestTFM)' == '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' == '$(NETCoreAppMaximumVersion)'">true</IsNetCoreAppTargetingLatestTFM>
2426 + </PropertyGroup>
2427 + <!--
2428 +============================================================================================================================================
2429 + </Import>
2430 +
2431 +C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets
2432 +============================================================================================================================================
2433 +-->
2434 + <PropertyGroup Condition="'$(LanguageTargets)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2435 + <LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(MSBuildToolsPath)\Microsoft.CSharp.targets</LanguageTargets>
2436 + <LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.vbproj'">$(MSBuildToolsPath)\Microsoft.VisualBasic.targets</LanguageTargets>
2437 + <LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.fsproj'">$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.FSharpTargetsShim.targets</LanguageTargets>
2438 + <!-- If LanguageTargets isn't otherwise set, then just import the common targets. This should allow the restore target to run,
2439 + which could bring in NuGet packages that set the LanguageTargets to something else. This means support for different
2440 + languages could either be supplied via an SDK or via a NuGet package. -->
2441 + <LanguageTargets Condition="'$(LanguageTargets)' == ''">$(MSBuildToolsPath)\Microsoft.Common.targets</LanguageTargets>
2442 + </PropertyGroup>
2443 + <!-- REMARK: Dont remove/rename, the LanguageTargets property is used by F# to hook inside the project's sdk
2444 + using Sdk attribute (from .NET Core Sdk 1.0.0-preview4) -->
2445 + <!--
2446 +============================================================================================================================================
2447 + <Import Project="$(LanguageTargets)">
2448 +
2449 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.targets
2450 +============================================================================================================================================
2451 +-->
2452 + <!--
2453 +***********************************************************************************************
2454 +Microsoft.CSharp.targets
2455 +
2456 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2457 + created a backup copy. Incorrect changes to this file will make it
2458 + impossible to load or build your projects from the command-line or the IDE.
2459 +
2460 +This file defines the steps in the standard build process specific for C# .NET projects.
2461 +For example, it contains the step that actually calls the C# compiler. The remainder
2462 +of the build process is defined in Microsoft.Common.targets, which is imported by
2463 +this file.
2464 +
2465 +Copyright (C) Microsoft Corporation. All rights reserved.
2466 +***********************************************************************************************
2467 +-->
2468 + <!--
2469 + In VS 2010 SP1 and VS 2012, both supported for asset compatibility, the MSBuild installed
2470 + as part of them did not enforce using the local ToolsVersion (4.0) in all cases, but instead
2471 + just used whatever ToolsVersion was in the project file if it existed on the machine, and
2472 + only forced 4.0 if that ToolsVersion did not exist.
2473 +
2474 + Moving forward, we do want to enforce a single acting ToolsVersion per version of Visual Studio,
2475 + but in order to approximate this behavior on VS 2010 SP1 and VS 2012 as well, we've redirected
2476 + the targets: If we're building using 4.X MSBuild (which doesn't define the new reserved
2477 + property, MSBuildAssemblyVersion), we'll point right back at the 4.0 targets, which still exist
2478 + as part of the .NET Framework. Only if we're using the new MSBuild will we point to the current
2479 + targets.
2480 + -->
2481 + <Choose xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2482 + <When Condition="'$(MSBuildAssemblyVersion)' == ''">
2483 + <PropertyGroup>
2484 + <CSharpTargetsPath>$(MSBuildFrameworkToolsPath)\Microsoft.CSharp.targets</CSharpTargetsPath>
2485 + <!-- Same condition as in .NET 4.5 C# targets so that we can override the behavior where it defaults to
2486 + MSBuildToolsPath, which would be incorrect in this case -->
2487 + <CscToolPath Condition="'$(CscToolPath)' == '' and '$(BuildingInsideVisualStudio)' != 'true'">$(MsBuildFrameworkToolsPath)</CscToolPath>
2488 + </PropertyGroup>
2489 + </When>
2490 + <When Condition="'$(IsCrossTargetingBuild)' == 'true'">
2491 + <PropertyGroup>
2492 + <CSharpTargetsPath>$(MSBuildToolsPath)\Microsoft.CSharp.CrossTargeting.targets</CSharpTargetsPath>
2493 + </PropertyGroup>
2494 + </When>
2495 + <Otherwise>
2496 + <PropertyGroup>
2497 + <CSharpTargetsPath>$(MSBuildToolsPath)\Microsoft.CSharp.CurrentVersion.targets</CSharpTargetsPath>
2498 + </PropertyGroup>
2499 + </Otherwise>
2500 + </Choose>
2501 + <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2502 + <!--
2503 + Overrides for the Microsoft.Common.targets extension targets. Used to make sure that only the imports we specify
2504 + (hard-coded to 4.0 locations) are used, not the 12.0 locations that would be used by default. Defined here because
2505 + Microsoft.CSharp.targets imports Microsoft.Common.targets from the current directory rather than using MSBuildToolsPath,
2506 + so defining these in Microsoft.Common.targets alone would not suffice for C# projects.
2507 +
2508 + NOTE: This logic is duplicated in Microsoft.VisualBasic.targets (VB has the same problem) and in Microsoft.Common.targets
2509 + (for anyone who DOES import it directly), so for any changes to this logic in this file, please also edit the other two.
2510 + -->
2511 + <ImportByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == ''">$(ImportByWildcardBeforeMicrosoftCommonTargets)</ImportByWildcardBefore40MicrosoftCommonTargets>
2512 + <ImportByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == ''">true</ImportByWildcardBefore40MicrosoftCommonTargets>
2513 + <ImportByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportByWildcardAfter40MicrosoftCommonTargets)' == ''">$(ImportByWildcardAfterMicrosoftCommonTargets)</ImportByWildcardAfter40MicrosoftCommonTargets>
2514 + <ImportByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportByWildcardAfter40MicrosoftCommonTargets)' == ''">true</ImportByWildcardAfter40MicrosoftCommonTargets>
2515 + <ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == ''">$(ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets)</ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets>
2516 + <ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets>
2517 + <ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets)' == ''">$(ImportUserLocationsByWildcardAfterMicrosoftCommonTargets)</ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets>
2518 + <ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets>
2519 + <ImportByWildcardBeforeMicrosoftCommonTargets>false</ImportByWildcardBeforeMicrosoftCommonTargets>
2520 + <ImportByWildcardAfterMicrosoftCommonTargets>false</ImportByWildcardAfterMicrosoftCommonTargets>
2521 + <ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets>false</ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets>
2522 + <ImportUserLocationsByWildcardAfterMicrosoftCommonTargets>false</ImportUserLocationsByWildcardAfterMicrosoftCommonTargets>
2523 + <CustomBeforeMicrosoftCommonTargets Condition="'$(CustomBeforeMicrosoftCommonTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.Before.Microsoft.Common.targets</CustomBeforeMicrosoftCommonTargets>
2524 + <CustomAfterMicrosoftCommonTargets Condition="'$(CustomAfterMicrosoftCommonTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.After.Microsoft.Common.targets</CustomAfterMicrosoftCommonTargets>
2525 + <!-- Overrides for the Microsoft.CSharp.targets extension targets -->
2526 + <ImportByWildcardBefore40MicrosoftCSharpTargets Condition="'$(ImportByWildcardBefore40MicrosoftCSharpTargets)' == ''">$(ImportByWildcardBeforeMicrosoftCSharpTargets)</ImportByWildcardBefore40MicrosoftCSharpTargets>
2527 + <ImportByWildcardBefore40MicrosoftCSharpTargets Condition="'$(ImportByWildcardBefore40MicrosoftCSharpTargets)' == ''">true</ImportByWildcardBefore40MicrosoftCSharpTargets>
2528 + <ImportByWildcardAfter40MicrosoftCSharpTargets Condition="'$(ImportByWildcardAfter40MicrosoftCSharpTargets)' == ''">$(ImportByWildcardAfterMicrosoftCSharpTargets)</ImportByWildcardAfter40MicrosoftCSharpTargets>
2529 + <ImportByWildcardAfter40MicrosoftCSharpTargets Condition="'$(ImportByWildcardAfter40MicrosoftCSharpTargets)' == ''">true</ImportByWildcardAfter40MicrosoftCSharpTargets>
2530 + <ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets)' == ''">$(ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets)</ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets>
2531 + <ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets)' == ''">true</ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets>
2532 + <ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets)' == ''">$(ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets)</ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets>
2533 + <ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets)' == ''">true</ImportUserLocationsByWildcardAfter40MicrosoftCSharpTargets>
2534 + <ImportByWildcardBeforeMicrosoftCSharpTargets>false</ImportByWildcardBeforeMicrosoftCSharpTargets>
2535 + <ImportByWildcardAfterMicrosoftCSharpTargets>false</ImportByWildcardAfterMicrosoftCSharpTargets>
2536 + <ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets>false</ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets>
2537 + <ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets>false</ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets>
2538 + <CustomBeforeMicrosoftCSharpTargets Condition="'$(CustomBeforeMicrosoftCSharpTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.Before.Microsoft.CSharp.targets</CustomBeforeMicrosoftCSharpTargets>
2539 + <CustomAfterMicrosoftCSharpTargets Condition="'$(CustomAfterMicrosoftCSharpTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.After.Microsoft.CSharp.targets</CustomAfterMicrosoftCSharpTargets>
2540 + </PropertyGroup>
2541 + <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == '' and ('$(TargetFrameworkIdentifier)' == '.NETFramework' or '$(TargetFrameworkIdentifier)' == 'Silverlight' or ('$(TargetFrameworkIdentifier)' == '' and ('$(TargetRuntime)' == 'Managed' or '$(TargetRuntime)' == '')))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2542 + <!--
2543 + Overrides for the Microsoft.NETFramework.props extension targets. Used to make sure that only the imports we specify
2544 + (hard-coded to 4.0 locations) are used, not the 12.0 locations that would be used by default. Required because
2545 + Microsoft.Common.targets imports it from the current directory, so we don't get a chance to redirect these in its
2546 + own redirection targets.
2547 +
2548 + NOTE: This logic is duplicated in Microsoft.VisualBasic.targets and in Microsoft.Common.targets because VB and C#
2549 + import Microsoft.Common.targets from the current directory and thus don't get the benefit of these redirections either,
2550 + so for any changes to this logic in this file, please also edit the other two.
2551 + -->
2552 + <ImportByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">$(ImportByWildcardBeforeMicrosoftNetFrameworkProps)</ImportByWildcardBefore40MicrosoftNetFrameworkProps>
2553 + <ImportByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">true</ImportByWildcardBefore40MicrosoftNetFrameworkProps>
2554 + <ImportByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">$(ImportByWildcardAfterMicrosoftNetFrameworkProps)</ImportByWildcardAfter40MicrosoftNetFrameworkProps>
2555 + <ImportByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">true</ImportByWildcardAfter40MicrosoftNetFrameworkProps>
2556 + <ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">$(ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps)</ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps>
2557 + <ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">true</ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps>
2558 + <ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">$(ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps)</ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps>
2559 + <ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">true</ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps>
2560 + <ImportByWildcardBeforeMicrosoftNetFrameworkProps>false</ImportByWildcardBeforeMicrosoftNetFrameworkProps>
2561 + <ImportByWildcardAfterMicrosoftNetFrameworkProps>false</ImportByWildcardAfterMicrosoftNetFrameworkProps>
2562 + <ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps>false</ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps>
2563 + <ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps>false</ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps>
2564 + </PropertyGroup>
2565 + <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
2566 + <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportBefore')" />-->
2567 + <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportBefore\*" Condition="'$(ImportByWildcardBefore40MicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.CSharp.targets\ImportBefore')" />-->
2568 + <!--</ImportGroup>-->
2569 + <!-- Really should be imported right before Microsoft.Common.targets, but because Microsoft.CSharp.targets imports
2570 + Microsoft.Common.targets from the current directory rather than using MSBuildToolsPath (which would redirect to our
2571 + targets), we're stuck doing it this way instead. -->
2572 + <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
2573 + <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore')" />-->
2574 + <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore')" />-->
2575 + <!--</ImportGroup>-->
2576 + <!-- Really should be imported right before Microsoft.NETFramework.props, but because Microsoft.CSharp.targets imports
2577 + Microsoft.Common.targets from the current directory rather than using MSBuildToolsPath (which would redirect to our
2578 + targets), and Microsoft.Common.targets does likewise with Microsoft.NETFramework.props, we're stuck doing it this
2579 + way instead. -->
2580 + <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
2581 + <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore')" />-->
2582 + <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore\*" Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore')" />-->
2583 + <!--</ImportGroup>-->
2584 + <!--
2585 +============================================================================================================================================
2586 + <Import Project="$(MSBuildToolsPath)\Microsoft.Managed.Before.targets">
2587 +
2588 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Managed.Before.targets
2589 +============================================================================================================================================
2590 +-->
2591 + <!--
2592 +***********************************************************************************************
2593 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2594 + created a backup copy. Incorrect changes to this file will make it
2595 + impossible to load or build your projects from the command-line or the IDE.
2596 +
2597 +This file defines common build logic for all managed languaged: C#, VisualBasic, F#
2598 +It is imported before the common targets have been imported.
2599 +
2600 +Copyright (C) Microsoft Corporation. All rights reserved.
2601 +***********************************************************************************************
2602 +-->
2603 + <!--
2604 + We are doing a cross-targeting build if there is a non-empty list of target frameworks specified
2605 + and there is no current target framework being built individually. In that case, a multitargeting
2606 + project file like Microsoft.<language>.CrossTargeting.targets gets imported.
2607 + -->
2608 + <PropertyGroup Condition="'$(TargetFrameworks)' != '' and '$(TargetFramework)' == ''">
2609 + <IsCrossTargetingBuild>true</IsCrossTargetingBuild>
2610 + </PropertyGroup>
2611 + <!--
2612 +============================================================================================================================================
2613 + </Import>
2614 +
2615 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.targets
2616 +============================================================================================================================================
2617 +-->
2618 + <!--
2619 +============================================================================================================================================
2620 + <Import Project="$(CSharpTargetsPath)">
2621 +
2622 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.CurrentVersion.targets
2623 +============================================================================================================================================
2624 +-->
2625 + <!--
2626 +***********************************************************************************************
2627 +Microsoft.CSharp.CurrentVersion.targets
2628 +
2629 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
2630 + created a backup copy. Incorrect changes to this file will make it
2631 + impossible to load or build your projects from the command-line or the IDE.
2632 +
2633 +This file defines the steps in the standard build process specific for C# .NET projects.
2634 +For example, it contains the step that actually calls the C# compiler. The remainder
2635 +of the build process is defined in Microsoft.Common.targets, which is imported by
2636 +this file.
2637 +
2638 +Copyright (C) Microsoft Corporation. All rights reserved.
2639 +***********************************************************************************************
2640 +-->
2641 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2642 + <ImportByWildcardBeforeMicrosoftCSharpTargets Condition="'$(ImportByWildcardBeforeMicrosoftCSharpTargets)' == ''">true</ImportByWildcardBeforeMicrosoftCSharpTargets>
2643 + <ImportByWildcardAfterMicrosoftCSharpTargets Condition="'$(ImportByWildcardAfterMicrosoftCSharpTargets)' == ''">true</ImportByWildcardAfterMicrosoftCSharpTargets>
2644 + <ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets)' == ''">true</ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets>
2645 + <ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets Condition="'$(ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets)' == ''">true</ImportUserLocationsByWildcardAfterMicrosoftCSharpTargets>
2646 + </PropertyGroup>
2647 + <!--<Import Project="$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportBefore')" />-->
2648 + <!--<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCSharpTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.CSharp.targets\ImportBefore')" />-->
2649 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2650 + <CustomBeforeMicrosoftCSharpTargets Condition="'$(CustomBeforeMicrosoftCSharpTargets)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.Before.Microsoft.CSharp.targets</CustomBeforeMicrosoftCSharpTargets>
2651 + <CustomAfterMicrosoftCSharpTargets Condition="'$(CustomAfterMicrosoftCSharpTargets)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.After.Microsoft.CSharp.targets</CustomAfterMicrosoftCSharpTargets>
2652 + </PropertyGroup>
2653 + <!--<Import Project="$(CustomBeforeMicrosoftCSharpTargets)" Condition="'$(CustomBeforeMicrosoftCSharpTargets)' != '' and Exists('$(CustomBeforeMicrosoftCSharpTargets)')" />-->
2654 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2655 + <DefaultLanguageSourceExtension>.cs</DefaultLanguageSourceExtension>
2656 + <Language>C#</Language>
2657 + <TargetRuntime>Managed</TargetRuntime>
2658 + <AlwaysUseNumericalSuffixInItemNames>true</AlwaysUseNumericalSuffixInItemNames>
2659 + <DefineCommonItemSchemas Condition=" '$(DefineCommonItemSchemas)' == '' ">true</DefineCommonItemSchemas>
2660 + <DefineCommonReferenceSchemas Condition=" '$(DefineCommonReferenceSchemas)' == '' ">true</DefineCommonReferenceSchemas>
2661 + <DefineCommonCapabilities Condition=" '$(DefineCommonCapabilities)' == '' ">true</DefineCommonCapabilities>
2662 + <SynthesizeLinkMetadata Condition=" '$(SynthesizeLinkMetadata)' == '' and '$(HasSharedItems)' == 'true' ">true</SynthesizeLinkMetadata>
2663 + <DefaultProjectTypeGuid Condition=" '$(DefaultProjectTypeGuid)' == '' ">{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</DefaultProjectTypeGuid>
2664 + <AppDesignerFolder Condition="'$(AppDesignerFolder)' == ''">Properties</AppDesignerFolder>
2665 + </PropertyGroup>
2666 + <ItemGroup Condition=" '$(DefineCSharpItemSchemas)' != 'false' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2667 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)CSharp.ProjectItemsSchema.xaml;" />
2668 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)CSharp.xaml;">
2669 + <Context>File</Context>
2670 + </PropertyPageSchema>
2671 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)CSharp.BrowseObject.xaml;">
2672 + <Context>BrowseObject</Context>
2673 + </PropertyPageSchema>
2674 + <ProjectCapability Include="CSharp;Managed" />
2675 + </ItemGroup>
2676 + <ItemGroup Condition=" '$(DefineCommonCapabilities)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2677 + <ProjectCapability Include="ReferencesFolder;LanguageService" />
2678 + </ItemGroup>
2679 + <!--
2680 + The CreateManifestResourceNames target create the manifest resource names from the .RESX
2681 + files.
2682 +
2683 + [IN]
2684 + @(EmbeddedResource) - The list of EmbeddedResource items that have been pre-processed to add metadata about resource type
2685 + Expected Metadata "Type" can either be "Resx" or "Non-Resx"
2686 +
2687 + [OUT]
2688 + @(EmbeddedResource) - EmbeddedResource items with metadata
2689 +
2690 + For C# applications the transformation is like:
2691 +
2692 + Resources1.resx => RootNamespace.Resources1 => Build into main assembly
2693 + SubFolder\Resources1.resx => RootNamespace.SubFolder.Resources1 => Build into main assembly
2694 + Resources1.fr.resx => RootNamespace.Resources1.fr => Build into satellite assembly
2695 + Resources1.notaculture.resx => RootNamespace.Resources1.notaculture => Build into main assembly
2696 +
2697 + For other project systems, this transformation may be different.
2698 + -->
2699 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2700 + <CreateManifestResourceNamesDependsOn />
2701 + </PropertyGroup>
2702 + <Target Name="CreateManifestResourceNames" Condition="'@(EmbeddedResource)' != ''" DependsOnTargets="$(CreateManifestResourceNamesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2703 + <ItemGroup>
2704 + <_Temporary Remove="@(_Temporary)" />
2705 + </ItemGroup>
2706 + <!-- Create manifest names for culture and non-culture Resx files, and for non-culture Non-Resx resources -->
2707 + <CreateCSharpManifestResourceName ResourceFiles="@(EmbeddedResource)" RootNamespace="$(RootNamespace)" UseDependentUponConvention="$(EmbeddedResourceUseDependentUponConvention)" Condition="'%(EmbeddedResource.ManifestResourceName)' == '' and ('%(EmbeddedResource.WithCulture)' == 'false' or '%(EmbeddedResource.Type)' == 'Resx')">
2708 + <Output TaskParameter="ResourceFilesWithManifestResourceNames" ItemName="_Temporary" />
2709 + </CreateCSharpManifestResourceName>
2710 + <!-- Create manifest names for all culture non-resx resources -->
2711 + <CreateCSharpManifestResourceName ResourceFiles="@(EmbeddedResource)" RootNamespace="$(RootNamespace)" PrependCultureAsDirectory="false" UseDependentUponConvention="$(EmbeddedResourceUseDependentUponConvention)" Condition="'%(EmbeddedResource.ManifestResourceName)' == '' and '%(EmbeddedResource.WithCulture)' == 'true' and '%(EmbeddedResource.Type)' == 'Non-Resx'">
2712 + <Output TaskParameter="ResourceFilesWithManifestResourceNames" ItemName="_Temporary" />
2713 + </CreateCSharpManifestResourceName>
2714 + <ItemGroup>
2715 + <EmbeddedResource Remove="@(EmbeddedResource)" Condition="'%(EmbeddedResource.ManifestResourceName)' == ''" />
2716 + <EmbeddedResource Include="@(_Temporary)" />
2717 + <_Temporary Remove="@(_Temporary)" />
2718 + </ItemGroup>
2719 + </Target>
2720 + <Target Name="ResolveCodeAnalysisRuleSet" Condition="'$(CodeAnalysisRuleSet)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2721 + <ResolveCodeAnalysisRuleSet CodeAnalysisRuleSet="$(CodeAnalysisRuleSet)" CodeAnalysisRuleSetDirectories="$(CodeAnalysisRuleSetDirectories)" MSBuildProjectDirectory="$(MSBuildProjectDirectory)">
2722 + <Output TaskParameter="ResolvedCodeAnalysisRuleSet" PropertyName="ResolvedCodeAnalysisRuleSet" />
2723 + </ResolveCodeAnalysisRuleSet>
2724 + </Target>
2725 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2726 + <!-- Activate CPS projects to track folder names in namespace. -->
2727 + <ProjectCapability Include="RelativePathDerivedDefaultNamespace" />
2728 + </ItemGroup>
2729 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2730 + <!-- Provide a facility to override UseHostCompilerIfAvailable-->
2731 + <UseHostCompilerIfAvailable Condition=" '$(UseHostCompilerIfAvailable)' == ''">true</UseHostCompilerIfAvailable>
2732 + </PropertyGroup>
2733 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2734 + <DocFileItem Include="$(DocumentationFile)" Condition="'$(DocumentationFile)'!=''" />
2735 + </ItemGroup>
2736 + <ItemGroup Condition="'$(_DebugSymbolsProduced)' == 'true' and '$(PdbFile)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2737 + <_DebugSymbolsIntermediatePathTemporary Include="$(PdbFile)" />
2738 + <!-- Add any missing .pdb extension, as the compiler does -->
2739 + <_DebugSymbolsIntermediatePath Include="@(_DebugSymbolsIntermediatePathTemporary->'%(RootDir)%(Directory)%(Filename).pdb')" />
2740 + </ItemGroup>
2741 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2742 + <CoreCompileDependsOn>$(CoreCompileDependsOn);_ComputeNonExistentFileProperty;ResolveCodeAnalysisRuleSet</CoreCompileDependsOn>
2743 + <ExportWinMDFile Condition="'$(ExportWinMDFile)' == '' and '$(OutputType)' == 'WinMDObj'">true</ExportWinMDFile>
2744 + </PropertyGroup>
2745 + <!--
2746 + The XamlPreCompile target must remain identical to
2747 + the CoreCompile target in Microsoft.CSharp.Core.targets.
2748 + Any updates to one must be made to the other.
2749 +-->
2750 + <Target Name="XamlPreCompile" Inputs="$(MSBuildAllProjects);&#xD;&#xA; @(Compile);&#xD;&#xA; @(_CoreCompileResourceInputs);&#xD;&#xA; $(ApplicationIcon);&#xD;&#xA; $(AssemblyOriginatorKeyFile);&#xD;&#xA; @(ReferencePath);&#xD;&#xA; @(CompiledLicenseFile);&#xD;&#xA; @(LinkResource);&#xD;&#xA; @(EmbeddedDocumentation);&#xD;&#xA; $(Win32Resource);&#xD;&#xA; $(Win32Manifest);&#xD;&#xA; @(CustomAdditionalCompileInputs);&#xD;&#xA; @(Page);&#xD;&#xA; @(ApplicationDefinition);&#xD;&#xA; $(ResolvedCodeAnalysisRuleSet)" Outputs="@(DocFileItem);&#xD;&#xA; @(XamlIntermediateAssembly);&#xD;&#xA; @(_DebugSymbolsIntermediatePath);&#xD;&#xA; $(NonExistentFile);&#xD;&#xA; @(CustomAdditionalCompileOutputs)" Condition="'@(Page)' != '' Or '@(ApplicationDefinition)' != ''" Returns="" DependsOnTargets="$(CoreCompileDependsOn);GenerateMSBuildEditorConfigFile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2751 + <!-- These two compiler warnings are raised when a reference is bound to a different version
2752 + than specified in the assembly reference version number. MSBuild raises the same warning in this case,
2753 + so the compiler warning would be redundant. -->
2754 + <PropertyGroup Condition="('$(TargetFrameworkVersion)' != 'v1.0') and ('$(TargetFrameworkVersion)' != 'v1.1')">
2755 + <NoWarn>$(NoWarn);1701;1702</NoWarn>
2756 + </PropertyGroup>
2757 + <PropertyGroup>
2758 + <!-- To match historical behavior, when inside VS11+ disable the warning from csc.exe indicating that no sources were passed in-->
2759 + <NoWarn Condition=" '$(BuildingInsideVisualStudio)' == 'true' and '$(VisualStudioVersion)' != '' and '$(VisualStudioVersion)' &gt; '10.0' ">$(NoWarn);2008</NoWarn>
2760 + </PropertyGroup>
2761 + <ItemGroup Condition="'$(TargetingClr2Framework)'=='true'">
2762 + <ReferencePath>
2763 + <EmbedInteropTypes />
2764 + </ReferencePath>
2765 + </ItemGroup>
2766 + <PropertyGroup>
2767 + <!-- If the user has specified AppConfigForCompiler, we'll use it. If they have not, but they set UseAppConfigForCompiler,
2768 + then we'll use AppConfig -->
2769 + <AppConfigForCompiler Condition="'$(AppConfigForCompiler)' == '' and '$(UseAppConfigForCompiler)' == 'true'">$(AppConfig)</AppConfigForCompiler>
2770 + <!-- If we are targeting winmdobj we want to specifically the pdbFile property since we do not want it to collide with the output of winmdexp-->
2771 + <PdbFile Condition="'$(PdbFile)' == '' and '$(OutputType)' == 'winmdobj' and '$(_DebugSymbolsProduced)' == 'true'">$(IntermediateOutputPath)$(TargetName).compile.pdb</PdbFile>
2772 + </PropertyGroup>
2773 + <!-- Prefer32Bit was introduced in .NET 4.5. Set it to false if we are targeting 4.0 -->
2774 + <PropertyGroup Condition="('$(TargetFrameworkVersion)' == 'v4.0')">
2775 + <Prefer32Bit>false</Prefer32Bit>
2776 + </PropertyGroup>
2777 + <ItemGroup Condition="('$(AdditionalFileItemNames)' != '')">
2778 + <AdditionalFileItems Include="$(AdditionalFileItemNames)" />
2779 + <AdditionalFiles Include="@(%(AdditionalFileItems.Identity))" />
2780 + </ItemGroup>
2781 + <PropertyGroup Condition="'$(UseSharedCompilation)' == ''">
2782 + <UseSharedCompilation>true</UseSharedCompilation>
2783 + </PropertyGroup>
2784 + <!-- Condition is to filter out the _CoreCompileResourceInputs so that it doesn't pass in culture resources to the compiler -->
2785 + <Csc Condition=" '%(_CoreCompileResourceInputs.WithCulture)' != 'true' " AdditionalLibPaths="$(AdditionalLibPaths)" AddModules="@(AddModules)" AdditionalFiles="@(AdditionalFiles)" AllowUnsafeBlocks="$(AllowUnsafeBlocks)" AnalyzerConfigFiles="@(EditorConfigFiles)" Analyzers="@(Analyzer)" ApplicationConfiguration="$(AppConfigForCompiler)" BaseAddress="$(BaseAddress)" CheckForOverflowUnderflow="$(CheckForOverflowUnderflow)" CodeAnalysisRuleSet="$(ResolvedCodeAnalysisRuleSet)" CodePage="$(CodePage)" DebugType="$(DebugType)" DefineConstants="$(DefineConstants)" DelaySign="$(DelaySign)" DisabledWarnings="$(NoWarn)" DocumentationFile="@(DocFileItem)" EmitDebugInformation="$(DebugSymbols)" EnvironmentVariables="$(CscEnvironment)" ErrorEndLocation="$(ErrorEndLocation)" ErrorLog="$(ErrorLog)" ErrorReport="$(ErrorReport)" FileAlignment="$(FileAlignment)" GenerateFullPaths="$(GenerateFullPaths)" HighEntropyVA="$(HighEntropyVA)" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" LangVersion="$(LangVersion)" LinkResources="@(LinkResource)" MainEntryPoint="$(StartupObject)" ModuleAssemblyName="$(ModuleAssemblyName)" NoConfig="true" NoLogo="$(NoLogo)" NoStandardLib="$(NoCompilerStandardLib)" NoWin32Manifest="$(NoWin32Manifest)" Nullable="$(Nullable)" Optimize="$(Optimize)" OutputAssembly="@(XamlIntermediateAssembly)" PdbFile="$(PdbFile)" Platform="$(PlatformTarget)" Prefer32Bit="$(Prefer32Bit)" PreferredUILang="$(PreferredUILang)" References="@(ReferencePath)" ReportAnalyzer="$(ReportAnalyzer)" Resources="@(_CoreCompileResourceInputs);@(CompiledLicenseFile)" ResponseFiles="$(CompilerResponseFile)" SkipAnalyzers="$(_SkipAnalyzers)" Sources="@(Compile)" SubsystemVersion="$(SubsystemVersion)" TargetType="$(OutputType)" ToolExe="$(CscToolExe)" ToolPath="$(CscToolPath)" TreatWarningsAsErrors="$(TreatWarningsAsErrors)" UseHostCompilerIfAvailable="$(UseHostCompilerIfAvailable)" UseSharedCompilation="$(UseSharedCompilation)" Utf8Output="$(Utf8Output)" VsSessionGuid="$(VsSessionGuid)" WarningLevel="$(WarningLevel)" WarningsAsErrors="$(WarningsAsErrors)" WarningsNotAsErrors="$(WarningsNotAsErrors)" Win32Icon="$(ApplicationIcon)" Win32Manifest="$(Win32Manifest)" Win32Resource="$(Win32Resource)" />
2786 + <!-- Only Applicable to the regular CoreCompile:
2787 + <ItemGroup>
2788 + <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" />
2789 + </ItemGroup>
2790 +
2791 + <CallTarget Targets="$(TargetsTriggeredByCompilation)" Condition="'$(TargetsTriggeredByCompilation)' != ''"/>
2792 +-->
2793 + <OnError Condition="'$(OnXamlPreCompileErrorTarget)' != ''" ExecuteTargets="$(OnXamlPreCompileErrorTarget)" />
2794 + </Target>
2795 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2796 + <!-- Design-time builds require a newer version than 1.0 to succeed, so override back to inbox in that case -->
2797 + <CSharpCoreTargetsPath Condition="'$(CSharpCoreTargetsPath)' == '' or ('$(DesignTimeBuild)' == 'true' and $(CSharpCoreTargetsPath.Contains('Microsoft.Net.Compilers.1.0.0')))">$(RoslynTargetsPath)\Microsoft.CSharp.Core.targets</CSharpCoreTargetsPath>
2798 + </PropertyGroup>
2799 + <!--
2800 +============================================================================================================================================
2801 + <Import Project="$(CSharpCoreTargetsPath)">
2802 +
2803 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\Microsoft.CSharp.Core.targets
2804 +============================================================================================================================================
2805 +-->
2806 + <!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
2807 + <!--
2808 +============================================================================================================================================
2809 + <Import Project="Microsoft.Managed.Core.targets">
2810 +
2811 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\Microsoft.Managed.Core.targets
2812 +============================================================================================================================================
2813 +-->
2814 + <!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
2815 + <!--
2816 + Common targets for managed compilers.
2817 + -->
2818 + <UsingTask TaskName="Microsoft.CodeAnalysis.BuildTasks.MapSourceRoots" AssemblyFile="$(MSBuildThisFileDirectory)Microsoft.Build.Tasks.CodeAnalysis.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
2819 + <Target Name="ShimReferencePathsWhenCommonTargetsDoesNotUnderstandReferenceAssemblies" BeforeTargets="CoreCompile" Condition="'@(ReferencePathWithRefAssemblies)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2820 + <!--
2821 + FindReferenceAssembliesForReferences target in Common targets populate this item
2822 + since dev15.3. The compiler targets may be used (via NuGet package) on earlier MSBuilds.
2823 + If the ReferencePathWithRefAssemblies item is not populated, just use ReferencePaths
2824 + (implementation assemblies) as they are.
2825 +
2826 + Since XAML inner build runs CoreCompile directly (instead of Compile target),
2827 + it also doesn't invoke FindReferenceAssembliesForReferences listed in CompileDependsOn.
2828 + In that case we also populate ReferencePathWithRefAssemblies with implementation assemblies.
2829 + -->
2830 + <ItemGroup>
2831 + <ReferencePathWithRefAssemblies Include="@(ReferencePath)" />
2832 + </ItemGroup>
2833 + </Target>
2834 + <Target Name="_BeforeVBCSCoreCompile" DependsOnTargets="ShimReferencePathsWhenCommonTargetsDoesNotUnderstandReferenceAssemblies" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2835 + <ItemGroup Condition="'$(TargetingClr2Framework)' == 'true'">
2836 + <ReferencePathWithRefAssemblies>
2837 + <EmbedInteropTypes />
2838 + </ReferencePathWithRefAssemblies>
2839 + </ItemGroup>
2840 + <!-- Prefer32Bit was introduced in .NET 4.5. Set it to false if we are targeting 4.0 -->
2841 + <PropertyGroup Condition="('$(TargetFrameworkVersion)' == 'v4.0')">
2842 + <Prefer32Bit>false</Prefer32Bit>
2843 + </PropertyGroup>
2844 + <!-- TODO: Remove this ItemGroup once it has been moved to "_GenerateCompileInputs" target in Microsoft.Common.CurrentVersion.targets.
2845 + https://github.com/dotnet/roslyn/issues/12223 -->
2846 + <ItemGroup Condition="('$(AdditionalFileItemNames)' != '')">
2847 + <AdditionalFileItems Include="$(AdditionalFileItemNames)" />
2848 + <AdditionalFiles Include="@(%(AdditionalFileItems.Identity))" />
2849 + </ItemGroup>
2850 + <PropertyGroup Condition="'$(UseSharedCompilation)' == ''">
2851 + <UseSharedCompilation>true</UseSharedCompilation>
2852 + </PropertyGroup>
2853 + </Target>
2854 + <Target Name="_ComputeSkipAnalyzers" BeforeTargets="CoreCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2855 + <!-- First, force clear non-user facing property '_SkipAnalyzers'. -->
2856 + <PropertyGroup>
2857 + <_SkipAnalyzers />
2858 + </PropertyGroup>
2859 + <!--
2860 + Then, determine if '_SkipAnalyzers' needs to be 'true' based on user facing property 'RunAnalyzers'.
2861 + If 'RunAnalyzers' is not set, then fallback to user facing property 'RunAnalyzersDuringBuild'.
2862 + Latter property allows users to disable analyzers only for non-design time builds.
2863 + Design time builds are background builds inside Visual Studio,
2864 + see details here: https://github.com/dotnet/project-system/blob/main/docs/design-time-builds.md.
2865 + Setting 'RunAnalyzersDuringBuild' to false, without setting 'RunAnalyzers', allows users to
2866 + continue running analyzers in the background in Visual Studio while typing (i.e. intellisense),
2867 + while disabling analyzer execution on explicitly invoked non-design time builds.
2868 + -->
2869 + <PropertyGroup Condition="'$(RunAnalyzers)' == 'false' or&#xD;&#xA; ('$(RunAnalyzers)' == '' and '$(RunAnalyzersDuringBuild)' == 'false')">
2870 + <_SkipAnalyzers>true</_SkipAnalyzers>
2871 + </PropertyGroup>
2872 + </Target>
2873 + <!--
2874 + ========================
2875 + .editorconfig Support
2876 + ========================
2877 +
2878 + -->
2879 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2880 + <_AllDirectoriesAbove Include="@(Compile-&gt;GetPathsOfAllDirectoriesAbove())" Condition="'$(DiscoverEditorConfigFiles)' != 'false' or '$(DiscoverGlobalAnalyzerConfigFiles)' != 'false'" />
2881 + <!-- Work around a GetPathsOfAllDirectoriesAbove() bug where it can return multiple equivalent paths when the
2882 + compilation includes linked files with relative paths - https://github.com/microsoft/msbuild/issues/4392 -->
2883 + <PotentialEditorConfigFiles Include="@(_AllDirectoriesAbove-&gt;'%(FullPath)'-&gt;Distinct()-&gt;Combine('.editorconfig'))" Condition="'$(DiscoverEditorConfigFiles)' != 'false'" />
2884 + <EditorConfigFiles Include="@(PotentialEditorConfigFiles-&gt;Exists())" Condition="'$(DiscoverEditorConfigFiles)' != 'false'" />
2885 + <GlobalAnalyzerConfigFiles Include="@(_AllDirectoriesAbove-&gt;'%(FullPath)'-&gt;Distinct()-&gt;Combine('.globalconfig'))" Condition="'$(DiscoverGlobalAnalyzerConfigFiles)' != 'false'" />
2886 + <EditorConfigFiles Include="@(GlobalAnalyzerConfigFiles-&gt;Exists())" Condition="'$(DiscoverGlobalAnalyzerConfigFiles)' != 'false'" />
2887 + </ItemGroup>
2888 + <!--
2889 + ========================
2890 + Property/metadata global .editorconfig Support
2891 + ========================
2892 +
2893 + Generates a global editor config that contains the evaluation of requested MSBuild properties and item metadata
2894 +
2895 + Requested properties/items are requested via item groups like:
2896 +
2897 + <CompilerVisibleProperty Include="PropertyNameToEval" />
2898 + <CompilerVisibleItemMetadata Include="ItemType" MetadataName="MetadataToRetrieve" />
2899 + -->
2900 + <UsingTask TaskName="Microsoft.CodeAnalysis.BuildTasks.GenerateMSBuildEditorConfig" AssemblyFile="$(MSBuildThisFileDirectory)Microsoft.Build.Tasks.CodeAnalysis.dll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
2901 + <Target Name="GenerateMSBuildEditorConfigFile" BeforeTargets="BeforeCompile;CoreCompile" DependsOnTargets="PrepareForBuild;GenerateMSBuildEditorConfigFileShouldRun;GenerateMSBuildEditorConfigFileCore" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
2902 + <Target Name="GenerateMSBuildEditorConfigFileShouldRun" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2903 + <PropertyGroup>
2904 + <GeneratedMSBuildEditorConfigFile Condition="'$(GeneratedMSBuildEditorConfigFile)' == ''">$(IntermediateOutputPath)$(MSBuildProjectName).GeneratedMSBuildEditorConfig.editorconfig</GeneratedMSBuildEditorConfigFile>
2905 + <GenerateMSBuildEditorConfigFile Condition="'$(GenerateMSBuildEditorConfigFile)' == ''">true</GenerateMSBuildEditorConfigFile>
2906 + <_GeneratedEditorConfigHasItems Condition="'@(CompilerVisibleItemMetadata-&gt;Count())' != '0'">true</_GeneratedEditorConfigHasItems>
2907 + <_GeneratedEditorConfigShouldRun Condition="'$(GenerateMSBuildEditorConfigFile)' == 'true' and ('$(_GeneratedEditorConfigHasItems)' == 'true' or '@(CompilerVisibleProperty-&gt;Count())' != '0')">true</_GeneratedEditorConfigShouldRun>
2908 + </PropertyGroup>
2909 + </Target>
2910 + <Target Name="GenerateMSBuildEditorConfigFileCore" Condition="'$(_GeneratedEditorConfigShouldRun)' == 'true'" Outputs="$(GeneratedMSBuildEditorConfigFile)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2911 + <ItemGroup>
2912 + <!-- Collect requested properties, and eval their value -->
2913 + <_GeneratedEditorConfigProperty Include="@(CompilerVisibleProperty)">
2914 + <Value>$(%(CompilerVisibleProperty.Identity))</Value>
2915 + </_GeneratedEditorConfigProperty>
2916 + <!-- Collect the requested items and remember which metadata is wanted -->
2917 + <_GeneratedEditorConfigMetadata Include="@(%(CompilerVisibleItemMetadata.Identity))" Condition="'$(_GeneratedEditorConfigHasItems)' == 'true'">
2918 + <ItemType>%(Identity)</ItemType>
2919 + <MetadataName>%(CompilerVisibleItemMetadata.MetadataName)</MetadataName>
2920 + </_GeneratedEditorConfigMetadata>
2921 + <!-- Record that we'll write a file, and add it to the analyzerconfig inputs -->
2922 + <FileWrites Include="$(GeneratedMSBuildEditorConfigFile)" />
2923 + <EditorConfigFiles Include="$(GeneratedMSBuildEditorConfigFile)" />
2924 + </ItemGroup>
2925 + <!-- Transform the collected properties and items into an editor config file -->
2926 + <GenerateMSBuildEditorConfig PropertyItems="@(_GeneratedEditorConfigProperty)" MetadataItems="@(_GeneratedEditorConfigMetadata)">
2927 + <Output TaskParameter="ConfigFileContents" PropertyName="_GeneratedEditorConfigFileContent" />
2928 + </GenerateMSBuildEditorConfig>
2929 + <!-- Write the output to the generated file, if it's changed -->
2930 + <WriteLinesToFile Lines="$(_GeneratedEditorConfigFileContent)" File="$(GeneratedMSBuildEditorConfigFile)" Overwrite="True" WriteOnlyWhenDifferent="True" />
2931 + </Target>
2932 + <!--
2933 + ========================
2934 + DeterministicSourcePaths
2935 + ========================
2936 +
2937 + Unless specified otherwise enable deterministic source root (PathMap) when building deterministically on CI server, but not for local builds.
2938 + In order for the debugger to find source files when debugging a locally built binary the PDB must contain original, unmapped local paths.
2939 + -->
2940 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2941 + <DeterministicSourcePaths Condition="'$(DeterministicSourcePaths)' == '' and '$(Deterministic)' == 'true' and '$(ContinuousIntegrationBuild)' == 'true'">true</DeterministicSourcePaths>
2942 + </PropertyGroup>
2943 + <!--
2944 + ==========
2945 + SourceRoot
2946 + ==========
2947 +
2948 + All source files of the project are expected to be located under one of the directories specified by SourceRoot item group.
2949 + This target collects all SourceRoots from various sources.
2950 +
2951 + This target calculates final local path for each SourceRoot and sets SourceRoot.MappedPath metadata accordingly.
2952 + The final path is a path with deterministic prefix when DeterministicSourcePaths is true, and the original path otherwise.
2953 + In addition, the target validates and deduplicates the SourceRoot items.
2954 +
2955 + InitializeSourceControlInformation is an msbuild target that ensures the SourceRoot items are populated from source control.
2956 + The target is available only if SourceControlInformationFeatureSupported is true.
2957 +
2958 + A consumer of SourceRoot.MappedPath metadata, such as Source Link generator, shall depend on this target.
2959 + -->
2960 + <Target Name="InitializeSourceRootMappedPaths" DependsOnTargets="_InitializeSourceRootMappedPathsFromSourceControl" Returns="@(SourceRoot)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2961 + <ItemGroup Condition="'@(_MappedSourceRoot)' != ''">
2962 + <_MappedSourceRoot Remove="@(_MappedSourceRoot)" />
2963 + </ItemGroup>
2964 + <Microsoft.CodeAnalysis.BuildTasks.MapSourceRoots SourceRoots="@(SourceRoot)" Deterministic="$(DeterministicSourcePaths)">
2965 + <Output TaskParameter="MappedSourceRoots" ItemName="_MappedSourceRoot" />
2966 + </Microsoft.CodeAnalysis.BuildTasks.MapSourceRoots>
2967 + <ItemGroup>
2968 + <SourceRoot Remove="@(SourceRoot)" />
2969 + <SourceRoot Include="@(_MappedSourceRoot)" />
2970 + </ItemGroup>
2971 + </Target>
2972 + <!--
2973 + Declare that target InitializeSourceRootMappedPaths that populates MappedPaths metadata on SourceRoot items is available.
2974 + -->
2975 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2976 + <SourceRootMappedPathsFeatureSupported>true</SourceRootMappedPathsFeatureSupported>
2977 + </PropertyGroup>
2978 + <!--
2979 + If InitializeSourceControlInformation target isn't supported, we just continue without invoking that synchronization target.
2980 + We'll proceed with SourceRoot (and other source control properties) provided by the user (or blank).
2981 + -->
2982 + <Target Name="_InitializeSourceRootMappedPathsFromSourceControl" DependsOnTargets="InitializeSourceControlInformation" Condition="'$(SourceControlInformationFeatureSupported)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
2983 + <!--
2984 + =======
2985 + PathMap
2986 + =======
2987 +
2988 + If DeterministicSourcePaths is true sets PathMap based on SourceRoot.MappedPaths.
2989 +
2990 + This target requires SourceRoot to be initialized in order to calculate the PathMap.
2991 + If SourceRoot doesn't contain any top-level roots an error is reported.
2992 + -->
2993 + <Target Name="_SetPathMapFromSourceRoots" DependsOnTargets="InitializeSourceRootMappedPaths" BeforeTargets="CoreCompile" Condition="'$(DeterministicSourcePaths)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2994 + <ItemGroup>
2995 + <_TopLevelSourceRoot Include="@(SourceRoot)" Condition="'%(SourceRoot.NestedRoot)' == ''">
2996 + <EscapedKey>$([MSBuild]::ValueOrDefault('%(Identity)', '').Replace(',', ',,').Replace('=', '=='))</EscapedKey>
2997 + <EscapedValue>$([MSBuild]::ValueOrDefault('%(MappedPath)', '').Replace(',', ',,').Replace('=', '=='))</EscapedValue>
2998 + </_TopLevelSourceRoot>
2999 + </ItemGroup>
3000 + <PropertyGroup Condition="'@(_TopLevelSourceRoot)' != ''">
3001 + <!--
3002 + Prepend the SourceRoot.MappedPath values to PathMap, if it already has a value.
3003 + For each emitted source path the compiler applies the first mapping that matches the path.
3004 + PathMap values set previously will thus only be applied if the mapping provided by
3005 + SourceRoot.MappedPath doesn't match. Since SourceRoot.MappedPath is also used by SourceLink
3006 + preferring it over manually set PathMap ensures that PathMap is consistent with SourceLink.
3007 + -->
3008 + <PathMap>@(_TopLevelSourceRoot->'%(EscapedKey)=%(EscapedValue)', ','),$(PathMap)</PathMap>
3009 + </PropertyGroup>
3010 + </Target>
3011 + <!--
3012 + =======
3013 + CopyAdditionalFiles
3014 + =======
3015 +
3016 + If a user requests that any @(AdditionalFiles) items are copied to the output directory
3017 + we add them to the @(None) group to ensure they will be copied.
3018 + -->
3019 + <Target Name="CopyAdditionalFiles" BeforeTargets="AssignTargetPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3020 + <ItemGroup>
3021 + <None Include="@(AdditionalFiles)" Condition="'%(AdditionalFiles.CopyToOutputDirectory)' != ''" />
3022 + </ItemGroup>
3023 + </Target>
3024 + <!--
3025 + ========================
3026 + CompilerGeneratedFilesOutputPath
3027 + ========================
3028 +
3029 + Controls output of generated files.
3030 +
3031 + CompilerGeneratedFilesOutputPath controls the location the files will be output to.
3032 + The compiler will not emit any generated files when the path is empty, and defaults to a /generated directory in $(IntermediateOutputPath) if $(IntermediateOutputPath) has a value.
3033 + EmitCompilerGeneratedFiles allows the user to control if anything is emitted by clearing the property when not true.
3034 + When EmitCompilerGeneratedFiles is true, we ensure that CompilerGeneatedFilesOutputPath has a value and issue a warning if not.
3035 + We will create CompilerGeneratedFilesOutputPath if it does not exist.
3036 + -->
3037 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3038 + <EmitCompilerGeneratedFiles Condition="'$(EmitCompilerGeneratedFiles)' == ''">false</EmitCompilerGeneratedFiles>
3039 + <CompilerGeneratedFilesOutputPath Condition="'$(EmitCompilerGeneratedFiles)' != 'true'" />
3040 + <CompilerGeneratedFilesOutputPath Condition="'$(EmitCompilerGeneratedFiles)' == 'true' and '$(CompilerGeneratedFilesOutputPath)' == '' and '$(IntermediateOutputPath)' != ''">$(IntermediateOutputPath)/generated</CompilerGeneratedFilesOutputPath>
3041 + </PropertyGroup>
3042 + <Target Name="CreateCompilerGeneratedFilesOutputPath" BeforeTargets="CoreCompile" Condition="'$(EmitCompilerGeneratedFiles)' == 'true' and !('$(DesignTimeBuild)' == 'true' OR '$(BuildingProject)' != 'true')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3043 + <Warning Condition="'$(CompilerGeneratedFilesOutputPath)' == ''" Text="EmitCompilerGeneratedFiles was true, but no CompilerGeneratedFilesOutputPath was provided. CompilerGeneratedFilesOutputPath must be set in order to emit generated files." />
3044 + <MakeDir Condition="'$(CompilerGeneratedFilesOutputPath)' != ''" Directories="$(CompilerGeneratedFilesOutputPath)" />
3045 + </Target>
3046 + <!--
3047 + ========================
3048 + Component Debugger Support
3049 + ========================
3050 +
3051 + Add the specified VS capability if a user indicates this project supports component debugging
3052 + -->
3053 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3054 + <ProjectCapability Include="RoslynComponent" Condition="'$(IsRoslynComponent)' == 'true'" />
3055 + </ItemGroup>
3056 + <!--
3057 +============================================================================================================================================
3058 + </Import>
3059 +
3060 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\Microsoft.CSharp.Core.targets
3061 +============================================================================================================================================
3062 +-->
3063 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3064 + <!-- .NETCoreApp < 3.0, .NETStandard < 2.1, or any other target framework -->
3065 + <_MaxSupportedLangVersion Condition="('$(TargetFrameworkIdentifier)' != '.NETCoreApp' OR '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0') AND&#xD;&#xA; ('$(TargetFrameworkIdentifier)' != '.NETStandard' OR '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1')">7.3</_MaxSupportedLangVersion>
3066 + <!-- .NETCoreApp < 5.0, .NETStandard == 2.1 -->
3067 + <_MaxSupportedLangVersion Condition="(('$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' &lt; '5.0') OR&#xD;&#xA; ('$(TargetFrameworkIdentifier)' == '.NETStandard' AND '$(_TargetFrameworkVersionWithoutV)' == '2.1')) AND&#xD;&#xA; '$(_MaxSupportedLangVersion)' == ''">8.0</_MaxSupportedLangVersion>
3068 + <!-- .NETCoreApp == 5.0 -->
3069 + <_MaxSupportedLangVersion Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' AND '$(_TargetFrameworkVersionWithoutV)' == '5.0' AND&#xD;&#xA; '$(_MaxSupportedLangVersion)' == ''">9.0</_MaxSupportedLangVersion>
3070 + <MaxSupportedLangVersion>$(_MaxSupportedLangVersion)</MaxSupportedLangVersion>
3071 + <LangVersion Condition="'$(LangVersion)' == '' AND '$(_MaxSupportedLangVersion)' != ''">$(_MaxSupportedLangVersion)</LangVersion>
3072 + </PropertyGroup>
3073 + <Target Name="CoreCompile" Inputs="$(MSBuildAllProjects);&#xD;&#xA; @(Compile);&#xD;&#xA; @(_CoreCompileResourceInputs);&#xD;&#xA; $(ApplicationIcon);&#xD;&#xA; $(AssemblyOriginatorKeyFile);&#xD;&#xA; @(ReferencePathWithRefAssemblies);&#xD;&#xA; @(CompiledLicenseFile);&#xD;&#xA; @(LinkResource);&#xD;&#xA; @(EmbeddedDocumentation);&#xD;&#xA; $(Win32Resource);&#xD;&#xA; $(Win32Manifest);&#xD;&#xA; @(CustomAdditionalCompileInputs);&#xD;&#xA; $(ResolvedCodeAnalysisRuleSet);&#xD;&#xA; @(AdditionalFiles);&#xD;&#xA; @(EmbeddedFiles);&#xD;&#xA; @(EditorConfigFiles)" Outputs="@(DocFileItem);&#xD;&#xA; @(IntermediateAssembly);&#xD;&#xA; @(IntermediateRefAssembly);&#xD;&#xA; @(_DebugSymbolsIntermediatePath);&#xD;&#xA; $(NonExistentFile);&#xD;&#xA; @(CustomAdditionalCompileOutputs)" Returns="@(CscCommandLineArgs)" DependsOnTargets="$(CoreCompileDependsOn);_BeforeVBCSCoreCompile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3074 + <!-- These two compiler warnings are raised when a reference is bound to a different version
3075 + than specified in the assembly reference version number. MSBuild raises the same warning in this case,
3076 + so the compiler warning would be redundant. -->
3077 + <PropertyGroup Condition="('$(TargetFrameworkVersion)' != 'v1.0') and ('$(TargetFrameworkVersion)' != 'v1.1')">
3078 + <NoWarn>$(NoWarn);1701;1702</NoWarn>
3079 + </PropertyGroup>
3080 + <PropertyGroup>
3081 + <!-- To match historical behavior, when inside VS11+ disable the warning from csc.exe indicating that no sources were passed in-->
3082 + <NoWarn Condition="'$(BuildingInsideVisualStudio)' == 'true' AND '$(VisualStudioVersion)' != '' AND '$(VisualStudioVersion)' &gt; '10.0'">$(NoWarn);2008</NoWarn>
3083 + </PropertyGroup>
3084 + <PropertyGroup>
3085 + <!-- If the user has specified AppConfigForCompiler, we'll use it. If they have not, but they set UseAppConfigForCompiler,
3086 + then we'll use AppConfig -->
3087 + <AppConfigForCompiler Condition="'$(AppConfigForCompiler)' == '' AND '$(UseAppConfigForCompiler)' == 'true'">$(AppConfig)</AppConfigForCompiler>
3088 + <!-- If we are targeting winmdobj we want to specifically the pdbFile property since we do not want it to collide with the output of winmdexp-->
3089 + <PdbFile Condition="'$(PdbFile)' == '' AND '$(OutputType)' == 'winmdobj' AND '$(_DebugSymbolsProduced)' == 'true'">$(IntermediateOutputPath)$(TargetName).compile.pdb</PdbFile>
3090 + </PropertyGroup>
3091 + <!-- Condition is to filter out the _CoreCompileResourceInputs so that it doesn't pass in culture resources to the compiler -->
3092 + <Csc Condition="'%(_CoreCompileResourceInputs.WithCulture)' != 'true'" AdditionalLibPaths="$(AdditionalLibPaths)" AddModules="@(AddModules)" AdditionalFiles="@(AdditionalFiles)" AllowUnsafeBlocks="$(AllowUnsafeBlocks)" AnalyzerConfigFiles="@(EditorConfigFiles)" Analyzers="@(Analyzer)" ApplicationConfiguration="$(AppConfigForCompiler)" BaseAddress="$(BaseAddress)" CheckForOverflowUnderflow="$(CheckForOverflowUnderflow)" ChecksumAlgorithm="$(ChecksumAlgorithm)" CodeAnalysisRuleSet="$(ResolvedCodeAnalysisRuleSet)" CodePage="$(CodePage)" DebugType="$(DebugType)" DefineConstants="$(DefineConstants)" DelaySign="$(DelaySign)" DisabledWarnings="$(NoWarn)" DisableSdkPath="$(DisableSdkPath)" DocumentationFile="@(DocFileItem)" EmbedAllSources="$(EmbedAllSources)" EmbeddedFiles="@(EmbeddedFiles)" EmitDebugInformation="$(DebugSymbols)" EnvironmentVariables="$(CscEnvironment)" ErrorEndLocation="$(ErrorEndLocation)" ErrorLog="$(ErrorLog)" ErrorReport="$(ErrorReport)" Features="$(Features)" FileAlignment="$(FileAlignment)" GeneratedFilesOutputPath="$(CompilerGeneratedFilesOutputPath)" GenerateFullPaths="$(GenerateFullPaths)" HighEntropyVA="$(HighEntropyVA)" Instrument="$(Instrument)" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" LangVersion="$(LangVersion)" LinkResources="@(LinkResource)" MainEntryPoint="$(StartupObject)" ModuleAssemblyName="$(ModuleAssemblyName)" NoConfig="true" NoLogo="$(NoLogo)" NoStandardLib="$(NoCompilerStandardLib)" NoWin32Manifest="$(NoWin32Manifest)" Nullable="$(Nullable)" Optimize="$(Optimize)" Deterministic="$(Deterministic)" PublicSign="$(PublicSign)" OutputAssembly="@(IntermediateAssembly)" OutputRefAssembly="@(IntermediateRefAssembly)" PdbFile="$(PdbFile)" Platform="$(PlatformTarget)" Prefer32Bit="$(Prefer32Bit)" PreferredUILang="$(PreferredUILang)" ProvideCommandLineArgs="$(ProvideCommandLineArgs)" References="@(ReferencePathWithRefAssemblies)" RefOnly="$(ProduceOnlyReferenceAssembly)" ReportAnalyzer="$(ReportAnalyzer)" Resources="@(_CoreCompileResourceInputs);@(CompiledLicenseFile)" ResponseFiles="$(CompilerResponseFile)" RuntimeMetadataVersion="$(RuntimeMetadataVersion)" SharedCompilationId="$(SharedCompilationId)" SkipAnalyzers="$(_SkipAnalyzers)" SkipCompilerExecution="$(SkipCompilerExecution)" Sources="@(Compile)" SubsystemVersion="$(SubsystemVersion)" TargetType="$(OutputType)" ToolExe="$(CscToolExe)" ToolPath="$(CscToolPath)" TreatWarningsAsErrors="$(TreatWarningsAsErrors)" UseHostCompilerIfAvailable="$(UseHostCompilerIfAvailable)" UseSharedCompilation="$(UseSharedCompilation)" Utf8Output="$(Utf8Output)" VsSessionGuid="$(VsSessionGuid)" WarningLevel="$(WarningLevel)" WarningsAsErrors="$(WarningsAsErrors)" WarningsNotAsErrors="$(WarningsNotAsErrors)" Win32Icon="$(ApplicationIcon)" Win32Manifest="$(Win32Manifest)" Win32Resource="$(Win32Resource)" PathMap="$(PathMap)" SourceLink="$(SourceLink)">
3093 + <Output TaskParameter="CommandLineArgs" ItemName="CscCommandLineArgs" />
3094 + </Csc>
3095 + <ItemGroup>
3096 + <_CoreCompileResourceInputs Remove="@(_CoreCompileResourceInputs)" />
3097 + </ItemGroup>
3098 + <CallTarget Targets="$(TargetsTriggeredByCompilation)" Condition="'$(TargetsTriggeredByCompilation)' != ''" />
3099 + </Target>
3100 + <!--
3101 +============================================================================================================================================
3102 + </Import>
3103 +
3104 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.CurrentVersion.targets
3105 +============================================================================================================================================
3106 +-->
3107 + <!-- Import design time targets for Roslyn Project System. These are only available if Visual Studio is installed. -->
3108 + <!-- Import design time targets before the common targets, which import targets from Nuget. -->
3109 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3110 + <CSharpDesignTimeTargetsPath Condition="'$(CSharpDesignTimeTargetsPath)'==''">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\Managed\Microsoft.CSharp.DesignTime.targets</CSharpDesignTimeTargetsPath>
3111 + </PropertyGroup>
3112 + <!--
3113 +============================================================================================================================================
3114 + <Import Project="$(CSharpDesignTimeTargetsPath)" Condition="'$(CSharpDesignTimeTargetsPath)' != '' and Exists('$(CSharpDesignTimeTargetsPath)')">
3115 +
3116 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\Managed\Microsoft.CSharp.DesignTime.targets
3117 +============================================================================================================================================
3118 +-->
3119 + <!--
3120 +
3121 + This file contains Visual Studio and designer-related properties and items for C# projects.
3122 +
3123 +-->
3124 + <!--
3125 +============================================================================================================================================
3126 + <Import Project="Microsoft.Managed.DesignTime.targets">
3127 +
3128 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\Managed\Microsoft.Managed.DesignTime.targets
3129 +============================================================================================================================================
3130 +-->
3131 + <!--
3132 +
3133 + This file contains Visual Studio and designer-related properties and items for managed projects.
3134 +
3135 +-->
3136 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3137 + <!-- Turn off capabilities from Microsoft.Common.CurrentVersions.targets and explicitly include the ones we want. The list below
3138 + currently matches what is in common targets, but removes BuildWindowsDesktopTarget -->
3139 + <DefineCommonItemSchemas>false</DefineCommonItemSchemas>
3140 + <DefineCommonCapabilities>false</DefineCommonCapabilities>
3141 + <DefineCommonReferenceSchemas>false</DefineCommonReferenceSchemas>
3142 + <DefineCommonManagedCapabilities Condition=" '$(DefineCommonManagedCapabilities)' == '' ">true</DefineCommonManagedCapabilities>
3143 + <DefineCommonManagedItemSchemas Condition=" '$(DefineCommonManagedItemSchemas)' == '' ">true</DefineCommonManagedItemSchemas>
3144 + <DefineCommonManagedReferenceSchemas Condition=" '$(DefineCommonManagedReferenceSchemas)' == '' ">true</DefineCommonManagedReferenceSchemas>
3145 + <!--This property sets the default output types supported by the project system.-->
3146 + <SupportedOutputTypes Condition="'$(SupportedOutputTypes)' == ''">Exe;WinExe;Library</SupportedOutputTypes>
3147 + <SuppressOutOfDateMessageOnBuild Condition="'$(SuppressOutOfDateMessageOnBuild)' == ''">true</SuppressOutOfDateMessageOnBuild>
3148 + <!-- Tells CPS which target to run for the Package solution build type -->
3149 + <PackageAction Condition="'$(PackageAction)' == ''">Pack</PackageAction>
3150 + </PropertyGroup>
3151 + <PropertyGroup Condition="'$(AssemblyReferenceTabs)' == '' And '$(UsingMicrosoftNETSdk)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3152 + <!-- You cannot choose individual framework assemblies in .NET Core/.NET Standard, and AssemblyFoldersEx
3153 + is not supported, so completely opt out of the Assembly category in Reference Manager by default. -->
3154 + <AssemblyReferenceTabs>0</AssemblyReferenceTabs>
3155 + <!-- However, .NET Framework supports choosing individual framework assemblies, so opt into that tab -->
3156 + <AssemblyReferenceTabs Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">TAB_ASSEMBLY_FRAMEWORK</AssemblyReferenceTabs>
3157 + </PropertyGroup>
3158 + <!--
3159 + Rule files that don't need localization go in the neutral directory to save duplicating files into each language
3160 + -->
3161 + <PropertyGroup Condition="'$(ManagedXamlNeutralResourcesDirectory)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3162 + <ManagedXamlNeutralResourcesDirectory>$(MSBuildThisFileDirectory)</ManagedXamlNeutralResourcesDirectory>
3163 + </PropertyGroup>
3164 + <!--
3165 + Locate the approriate localized xaml resources based on the language ID or name.
3166 +
3167 + The logic here matches the resource manager sufficiently to handle the fixed set of
3168 + possible VS languages and directories on disk.
3169 +
3170 + We cannot respect the exact probe order of the resource manager as this has to evaluate statically
3171 + and we have only LangName and LangID and no access to System.Globalization API.
3172 + -->
3173 + <PropertyGroup Condition="'$(ManagedXamlResourcesDirectory)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3174 + <!-- 1. Probe for exact match against LangName. (e.g. pt-BR) -->
3175 + <ManagedXamlResourcesDirectory>$(MSBuildThisFileDirectory)$(LangName)</ManagedXamlResourcesDirectory>
3176 + <!-- 2. Handle special cases of languages which would not match above or below. -->
3177 + <ManagedXamlResourcesDirectory Condition="!Exists('$(ManagedXamlResourcesDirectory)') and '$(LangID)' == '2052'">$(MSBuildThisFileDirectory)zh-Hans</ManagedXamlResourcesDirectory>
3178 + <ManagedXamlResourcesDirectory Condition="!Exists('$(ManagedXamlResourcesDirectory)') and '$(LangID)' == '1028'">$(MSBuildThisFileDirectory)zh-Hant</ManagedXamlResourcesDirectory>
3179 + <!-- 3. Probe for parent by taking portion the portion before the hyphen (e.g. fr-FR -> fr) -->
3180 + <ManagedXamlResourcesDirectory Condition="!Exists('$(ManagedXamlResourcesDirectory)')">$(MSBuildThisFileDirectory)$(LangName.Split('-')[0])</ManagedXamlResourcesDirectory>
3181 + <!-- 4. Fall back to neutral resources if all of the above fail -->
3182 + <ManagedXamlResourcesDirectory Condition="!Exists('$(ManagedXamlResourcesDirectory)')">$(ManagedXamlNeutralResourcesDirectory)</ManagedXamlResourcesDirectory>
3183 + </PropertyGroup>
3184 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3185 + <ManagedXamlResourcesDirectory Condition="!HasTrailingSlash('$(ManagedXamlResourcesDirectory)')">$(ManagedXamlResourcesDirectory)\</ManagedXamlResourcesDirectory>
3186 + <DebuggerFlavor Condition="'$(DebuggerFlavor)' == ''">ProjectDebugger</DebuggerFlavor>
3187 + </PropertyGroup>
3188 + <!-- Project Capabilities -->
3189 + <!-- Capabilities shared between shared projects & binary-producing projects. -->
3190 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3191 + <ProjectCapability Include=".NET" />
3192 + </ItemGroup>
3193 + <!-- Capabilities for binary producing projects -->
3194 + <ItemGroup Condition="'$(DefineCommonManagedCapabilities)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3195 + <ProjectCapability Include="UseFileGlobs" />
3196 + <ProjectCapability Include="DynamicDependentFile" />
3197 + <ProjectCapability Include="ConfigurableFileNesting" />
3198 + <!-- DependenciesTree capability lights up a Dependencies tree node and its sub node providers-->
3199 + <ProjectCapability Include="DependenciesTree" />
3200 + <ProjectCapability Include="ProjectImportsTree" />
3201 + <ProjectCapability Include="LaunchProfiles" />
3202 + <ProjectCapability Include="NoGeneralDependentFileIcon" />
3203 + <ProjectCapability Include="PackageReferences" Condition="'$(RestoreProjectStyle)' == 'PackageReference'" />
3204 + <!--
3205 + List of capabilities below is adding back common capabilities defined in imported targets.
3206 + We disabled them with the property DefineCommonCapabilities=false to get rid of default
3207 + References capability, but everything else we want back.
3208 + -->
3209 + <ProjectCapability Include="&#xD;&#xA; AssemblyReferences;&#xD;&#xA; ProjectReferences; &#xD;&#xA; WinRTReferences;&#xD;&#xA; OutputGroups;&#xD;&#xA; AllTargetOutputGroups;&#xD;&#xA; VisualStudioWellKnownOutputGroups;&#xD;&#xA; SingleFileGenerators;&#xD;&#xA; DeclaredSourceItems;&#xD;&#xA; UserSourceItems;&#xD;&#xA; SupportAvailableItemName;&#xD;&#xA; IntegratedConsoleDebugging;&#xD;&#xA; DisableBuiltInDebuggerServices;&#xD;&#xA; PersistDesignTimeDataOutOfProject;" />
3210 + <!-- COM references are not supported in .NET Core before 3.0 -->
3211 + <ProjectCapability Include="COMReferences" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' Or ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0')" />
3212 + <!-- Settings page capability -->
3213 + <ProjectCapability Include="AppSettings" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' Or '$(UseWPF)' == 'true' Or '$(UseWindowsForms)' == 'true' " />
3214 + <!-- Publish capability enables the Publish command for the Project -->
3215 + <ProjectCapability Include="Publish" />
3216 + <ProjectCapability Include="FolderPublish" />
3217 + <!-- All Microsoft.NET.Sdk Exe projects, except WPF and WinForms exes, can be published to app service -->
3218 + <ProjectCapability Include="AppServicePublish" Condition="'$(OutputType)' == 'Exe'" />
3219 + <!-- Capabilities for WPF and WinForms -->
3220 + <ProjectCapability Include="WPF" Condition="'$(UseWPF)' == 'true'" />
3221 + <ProjectCapability Include="WindowsForms" Condition="'$(UseWindowsForms)' == 'true'" />
3222 + <ProjectCapability Include="DataSourceWindow" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' Or ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0')" />
3223 + </ItemGroup>
3224 + <!-- Common Project System rules that override rules defined in msbuild. These are exact copy of the rules defined in msbuild. -->
3225 + <ItemGroup Condition="'$(DefineCommonManagedItemSchemas)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3226 + <!-- Files/Folders schema -->
3227 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ProjectItemsSchema.xaml">
3228 + <Context>Project</Context>
3229 + </PropertyPageSchema>
3230 + <!-- Files/Folders -->
3231 + <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)Compile.xaml;">
3232 + <Context>File</Context>
3233 + </PropertyPageSchema>
3234 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)Compile.BrowseObject.xaml;">
3235 + <Context>BrowseObject</Context>
3236 + </PropertyPageSchema>
3237 + <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)Content.xaml">
3238 + <Context>File</Context>
3239 + </PropertyPageSchema>
3240 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)Content.BrowseObject.xaml">
3241 + <Context>BrowseObject</Context>
3242 + </PropertyPageSchema>
3243 + <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)EmbeddedResource.xaml">
3244 + <Context>File</Context>
3245 + </PropertyPageSchema>
3246 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)EmbeddedResource.BrowseObject.xaml">
3247 + <Context>BrowseObject</Context>
3248 + </PropertyPageSchema>
3249 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)Folder.xaml">
3250 + <Context>File;BrowseObject</Context>
3251 + </PropertyPageSchema>
3252 + <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)None.xaml">
3253 + <Context>File</Context>
3254 + </PropertyPageSchema>
3255 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)None.BrowseObject.xaml">
3256 + <Context>BrowseObject</Context>
3257 + </PropertyPageSchema>
3258 + <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)DebuggerGeneral.xaml">
3259 + <Context>Project</Context>
3260 + </PropertyPageSchema>
3261 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ApplicationPropertyPage.xaml">
3262 + <Context>Project</Context>
3263 + </PropertyPageSchema>
3264 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)BuildPropertyPage.xaml">
3265 + <Context>Project</Context>
3266 + </PropertyPageSchema>
3267 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)DebugPropertyPage.xaml">
3268 + <Context>Project</Context>
3269 + </PropertyPageSchema>
3270 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)PackagePropertyPage.xaml">
3271 + <Context>Project</Context>
3272 + </PropertyPageSchema>
3273 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ExecutableDebugPropertyPage.xaml">
3274 + <Context>Project</Context>
3275 + </PropertyPageSchema>
3276 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ProjectDebugPropertyPage.xaml">
3277 + <Context>Project</Context>
3278 + </PropertyPageSchema>
3279 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)GeneralBrowseObject.xaml">
3280 + <Context>BrowseObject</Context>
3281 + </PropertyPageSchema>
3282 + <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)GeneralConfiguredBrowseObject.xaml">
3283 + <Context>ConfiguredBrowseObject</Context>
3284 + </PropertyPageSchema>
3285 + <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)ProjectDebugger.xaml">
3286 + <Context>Project</Context>
3287 + </PropertyPageSchema>
3288 + </ItemGroup>
3289 + <ItemGroup Condition="'$(DefineCommonManagedReferenceSchemas)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3290 + <!-- Assembly references -->
3291 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)AssemblyReference.xaml">
3292 + <Context>Project;BrowseObject</Context>
3293 + </PropertyPageSchema>
3294 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedAssemblyReference.xaml">
3295 + <Context>ProjectSubscriptionService;BrowseObject</Context>
3296 + </PropertyPageSchema>
3297 + <!-- COM references -->
3298 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)COMReference.xaml">
3299 + <Context>Project;BrowseObject</Context>
3300 + </PropertyPageSchema>
3301 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedCOMReference.xaml">
3302 + <Context>ProjectSubscriptionService;BrowseObject</Context>
3303 + </PropertyPageSchema>
3304 + <!-- Framework references -->
3305 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)FrameworkReference.xaml">
3306 + <Context>Project;BrowseObject</Context>
3307 + </PropertyPageSchema>
3308 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedFrameworkReference.xaml">
3309 + <Context>ProjectSubscriptionService;BrowseObject</Context>
3310 + </PropertyPageSchema>
3311 + <!-- Project references -->
3312 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ProjectReference.xaml">
3313 + <Context>Project;BrowseObject</Context>
3314 + </PropertyPageSchema>
3315 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedProjectReference.xaml">
3316 + <Context>ProjectSubscriptionService;BrowseObject</Context>
3317 + </PropertyPageSchema>
3318 + <!-- Sdk references -->
3319 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)SdkReference.xaml">
3320 + <Context>Project;ProjectSubscriptionService;BrowseObject</Context>
3321 + </PropertyPageSchema>
3322 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedSdkReference.xaml">
3323 + <Context>ProjectSubscriptionService;BrowseObject</Context>
3324 + </PropertyPageSchema>
3325 + <!-- Package references -->
3326 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)PackageReference.xaml">
3327 + <Context>ProjectSubscriptionService;BrowseObject</Context>
3328 + </PropertyPageSchema>
3329 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedPackageReference.xaml">
3330 + <Context>ProjectSubscriptionService;BrowseObject</Context>
3331 + </PropertyPageSchema>
3332 + <!-- Analyzer references -->
3333 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)AnalyzerReference.xaml">
3334 + <Context>Project;ProjectSubscriptionService;BrowseObject</Context>
3335 + </PropertyPageSchema>
3336 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ResolvedAnalyzerReference.xaml">
3337 + <Context>ProjectSubscriptionService;BrowseObject</Context>
3338 + </PropertyPageSchema>
3339 + </ItemGroup>
3340 + <!-- List of external files that trigger re-evaluation & design-time builds when they are added or removed, or edited -->
3341 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3342 + <!-- Potential Editor config locations, we only want to trigger design-time builds on removal/addition and not edits -->
3343 + <AdditionalDesignTimeBuildInput Include="@(PotentialEditorConfigFiles)" ContentSensitive="false" />
3344 + </ItemGroup>
3345 + <!-- Find all potential locations of "global.json" starting from the Solution directory and walking backwards -->
3346 + <ItemGroup Condition="'$(UsingMicrosoftNETSdk)' == 'true' and '$(SolutionDir)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3347 + <_GlobalJsonStartingDir Include="$(SolutionDir)" />
3348 + <_PotentialContainingGlobalJsonDir Include="@(_GlobalJsonStartingDir-&gt;GetPathsOfAllDirectoriesAbove())" />
3349 + <AdditionalDesignTimeBuildInput Include="@(_PotentialContainingGlobalJsonDir-&gt;Combine('global.json'))" ContentSensitive="true" />
3350 + </ItemGroup>
3351 + <!--
3352 + EmbeddedFiles are source files to be embedded to the PDB.
3353 + We need to set Visible to false in order to not display duplicate entries in project UI.
3354 + -->
3355 + <ItemDefinitionGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3356 + <EmbeddedFiles>
3357 + <Visible>false</Visible>
3358 + </EmbeddedFiles>
3359 + </ItemDefinitionGroup>
3360 + <!-- Targets -->
3361 + <!-- For a newly created project with no packages restored, Design time build complains that there is no ResolvePackageDependenciesDesignTime
3362 + target, that is available only after restoring the .Net Core SDK targets. This No-op target will satisfy the check and will get overriden
3363 + once the actual targets are available after package restore-->
3364 + <Target Name="ResolvePackageDependenciesDesignTime" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3365 + <Target Name="CollectSDKReferencesDesignTime" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3366 + <Target Name="CollectResolvedSDKReferencesDesignTime" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3367 + <Target Name="ResolveFrameworkReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3368 + <Target Name="ResolveProjectReferencesDesignTime2" Returns="@(_ProjectReferencesFromRAR2);@(_ProjectReferencesWithoutOutputAssembly)" DependsOnTargets="ResolveProjectReferences;ResolveAssemblyReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3369 + <!-- This is similar to ResolveProjectReferencesDesignTime, except it also returns projects that do not get
3370 + resolved (hence do not appear in ReferencePath) because ReferenceOutputAssembly is set to false. -->
3371 + <ItemGroup>
3372 + <!-- We need to do this here because we only want project references which have passed through RAR and have
3373 + not been unresolved due to violating some multi-targeting rule which means we need to pull the project
3374 + references out of the referencepath item because they will only exist there if they were correctly
3375 + resolved. -->
3376 + <_ProjectReferencesFromRAR2 Include="@(ReferencePath-&gt;WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))">
3377 + <OriginalItemSpec>%(ReferencePath.ProjectReferenceOriginalItemSpec)</OriginalItemSpec>
3378 + </_ProjectReferencesFromRAR2>
3379 + <_ProjectReferencesWithoutOutputAssembly Include="@(ProjectReference-&gt;WithMetadataValue('ReferenceOutputAssembly', 'false'))">
3380 + <OriginalItemSpec>%(ProjectReference.Identity)</OriginalItemSpec>
3381 + </_ProjectReferencesWithoutOutputAssembly>
3382 + </ItemGroup>
3383 + </Target>
3384 + <Target Name="ResolveFrameworkReferencesDesignTime" Returns="@(ResolvedFrameworkReference)" DependsOnTargets="ResolveFrameworkReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3385 + <!-- This target is used to collect the PackageReferences in the project. This target can be overriden to add\remove packagereferences before they are
3386 + sent to NuGet to be restored.-->
3387 + <Target Name="CollectPackageReferences" Returns="@(PackageReference)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3388 + <!-- Validates that the correct properties have been set for design-time compiles -->
3389 + <Target Name="_CheckCompileDesignTimePrerequisite" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3390 + <Error Condition="'$(SkipCompilerExecution)|$(ProvideCommandLineArgs)' != 'true|true'" Text="SkipCompilerExecution and ProvideCommandLineArgs should be set before calling the CompileDesignTime target" />
3391 + </Target>
3392 + <!-- This target collects all Analyzers in the project. -->
3393 + <Target Name="CollectAnalyzersDesignTime" DependsOnTargets="CompileDesignTime" Returns="@(Analyzer)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3394 + <!-- This target collects all the resolved references that are used to actually compile. -->
3395 + <Target Name="CollectResolvedCompilationReferencesDesignTime" DependsOnTargets="CompileDesignTime" Returns="@(ReferencePathWithRefAssemblies)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3396 + <!-- This target collects all the extra inputs for the up to date check. -->
3397 + <Target Name="CollectUpToDateCheckInputDesignTime" DependsOnTargets="CompileDesignTime" Returns="@(UpToDateCheckInput)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3398 + <!-- This target collects all the extra outputs for the up to date check. -->
3399 + <Target Name="CollectUpToDateCheckOutputDesignTime" DependsOnTargets="CompileDesignTime" Returns="@(UpToDateCheckOutput)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
3400 + <!-- This target collects all the things built by the project for the up to date check. -->
3401 + <!-- See CopyFileToOutputDirectory target -->
3402 + <Target Name="CollectUpToDateCheckBuiltDesignTime" DependsOnTargets="CompileDesignTime" Returns="@(UpToDateCheckBuilt)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3403 + <ItemGroup>
3404 + <!-- Assembly output, bin and obj -->
3405 + <UpToDateCheckBuilt Condition="'$(CopyBuildOutputToOutputDirectory)' != 'false' and '$(SkipCopyBuildProduct)' != 'true'" Include="$(TargetPath)" />
3406 + <UpToDateCheckBuilt Include="@(IntermediateAssembly)" />
3407 + <!-- Documentation file, bin and obj -->
3408 + <UpToDateCheckBuilt Condition="'$(_DocumentationFileProduced)'=='true'" Include="@(FinalDocFile)" />
3409 + <UpToDateCheckBuilt Condition="'$(_DocumentationFileProduced)'=='true'" Include="@(DocFileItem)" />
3410 + <!-- Symbols, bin and obj -->
3411 + <UpToDateCheckBuilt Condition="'$(_DebugSymbolsProduced)'=='true'" Include="@(_DebugSymbolsIntermediatePath)" />
3412 + <UpToDateCheckBuilt Condition="'$(_DebugSymbolsProduced)'=='true' and '$(SkipCopyingSymbolsToOutputDirectory)' != 'true' and '$(CopyOutputSymbolsToOutputDirectory)' != 'false'" Include="@(_DebugSymbolsOutputPath)" />
3413 + <!-- app.config -->
3414 + <!-- The property AppConfig, created in PrepareForBuild, is used instead of AppConfigWithTargetPath because GenerateSupportedRuntime
3415 + rewrites AppConfigWithTargetPath to point to the intermediate filename. This is needed because Fast up-to-date needs to compare
3416 + the timestamp of the source filename (AppConfig) with destination filename.
3417 + https://github.com/microsoft/msbuild/blob/64c8e4a18e7cf7f064fbad304ea7ed877cdaa0a1/src/Tasks/Microsoft.Common.CurrentVersion.targets#L1109-L1122 -->
3418 + <UpToDateCheckBuilt Condition=" '@(AppConfigWithTargetPath)' != '' " Include="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" Original="$(AppConfig)" />
3419 + </ItemGroup>
3420 + </Target>
3421 + <!--
3422 +============================================================================================================================================
3423 + </Import>
3424 +
3425 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VisualStudio\Managed\Microsoft.CSharp.DesignTime.targets
3426 +============================================================================================================================================
3427 +-->
3428 + <!-- Properties -->
3429 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3430 + <AppDesignerFolder Condition="'$(AppDesignerFolder)' == ''">Properties</AppDesignerFolder>
3431 + <AppDesignerFolderContentsVisibleOnlyInShowAllFiles Condition="'$(AppDesignerFolderContentsVisibleOnlyInShowAllFiles)' == ''">false</AppDesignerFolderContentsVisibleOnlyInShowAllFiles>
3432 + <LanguageServiceName Condition="'$(LanguageServiceName)' == ''">C#</LanguageServiceName>
3433 + <LanguageServiceId Condition="'$(LanguageServiceId)'==''">{694DD9B6-B865-4C5B-AD85-86356E9C88DC}</LanguageServiceId>
3434 + <TemplateLanguage Condition="'$(TemplateLanguage)' == ''">CSharp</TemplateLanguage>
3435 + <AddItemTemplatesGuid Condition="'$(AddItemTemplatesGuid)' == ''">{FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}</AddItemTemplatesGuid>
3436 + <CmdUIContextGuid Condition="'$(CmdUIContextGuid)' == ''">{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}</CmdUIContextGuid>
3437 + <GeneratorsTypeGuid Condition="'$(GeneratorsTypeGuid)' == ''">{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}</GeneratorsTypeGuid>
3438 + <DesignerFunctionVisibility Condition="'$(DesignerFunctionVisibility)' == ''">Private</DesignerFunctionVisibility>
3439 + <DesignerVariableNaming Condition="'$(DesignerVariableNaming)' == ''">Camel</DesignerVariableNaming>
3440 + <DesignerHiddenCodeGeneration Condition="'$(DesignerHiddenCodeGeneration)' == ''">Declarations</DesignerHiddenCodeGeneration>
3441 + <!-- Turn off rules and capabilities that are defined in MSBuild so that we can import our own below -->
3442 + <DefineCSharpItemSchemas>false</DefineCSharpItemSchemas>
3443 + </PropertyGroup>
3444 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3445 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)ProjectItemsSchema.CSharp.xaml;" />
3446 + <ProjectCapability Include="&#xD;&#xA; CSharp;&#xD;&#xA; Managed;&#xD;&#xA; ClassDesigner;&#xD;&#xA; SharedProjectReferences;" />
3447 + </ItemGroup>
3448 + <ItemGroup Condition="'$(DefineCommonManagedItemSchemas)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3449 + <PropertyPageSchema Include="$(ManagedXamlNeutralResourcesDirectory)EditorConfigFiles.xaml">
3450 + <Context>File</Context>
3451 + </PropertyPageSchema>
3452 + <PropertyPageSchema Include="$(ManagedXamlResourcesDirectory)EditorConfigFiles.BrowseObject.xaml">
3453 + <Context>BrowseObject</Context>
3454 + </PropertyPageSchema>
3455 + </ItemGroup>
3456 + <!-- Targets -->
3457 + <!-- Returns Csc command-line arguments for the language service -->
3458 + <Target Name="CompileDesignTime" Returns="@(_CompilerCommandLineArgs)" DependsOnTargets="_CheckCompileDesignTimePrerequisite;Compile" Condition="'$(IsCrossTargetingBuild)' != 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3459 + <ItemGroup>
3460 + <_CompilerCommandLineArgs Include="@(CscCommandLineArgs)" />
3461 + </ItemGroup>
3462 + </Target>
3463 + <!--
3464 +============================================================================================================================================
3465 + </Import>
3466 +
3467 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.CSharp.CurrentVersion.targets
3468 +============================================================================================================================================
3469 +-->
3470 + <!--
3471 +============================================================================================================================================
3472 + <Import Project="Microsoft.Common.targets">
3473 +
3474 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.targets
3475 +============================================================================================================================================
3476 +-->
3477 + <!--
3478 +***********************************************************************************************
3479 +Microsoft.Common.targets
3480 +
3481 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3482 + created a backup copy. Incorrect changes to this file will make it
3483 + impossible to load or build your projects from the command-line or the IDE.
3484 +
3485 +This file defines the steps in the standard build process for .NET projects. It
3486 +contains all the steps that are common among the different .NET languages, such as
3487 +Visual Basic, and Visual C#.
3488 +
3489 +Copyright (C) Microsoft Corporation. All rights reserved.
3490 +***********************************************************************************************
3491 +-->
3492 + <!--
3493 + In VS 2010 SP1 and VS 2012, both supported for asset compatibility, the MSBuild installed
3494 + as part of them did not enforce using the local ToolsVersion (4.0) in all cases, but instead
3495 + just used whatever ToolsVersion was in the project file if it existed on the machine, and
3496 + only forced 4.0 if that ToolsVersion did not exist.
3497 +
3498 + Moving forward, we do want to enforce a single acting ToolsVersion per version of Visual Studio,
3499 + but in order to approximate this behavior on VS 2010 SP1 and VS 2012 as well, we've redirected
3500 + the targets: If we're building using 4.X MSBuild (which doesn't define the new reserved
3501 + property, MSBuildAssemblyVersion), we'll point right back at the 4.0 targets, which still exist
3502 + as part of the .NET Framework. Only if we're using the new MSBuild will we point to the current
3503 + targets.
3504 + -->
3505 + <Choose xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3506 + <When Condition="'$(MSBuildAssemblyVersion)' == ''">
3507 + <PropertyGroup>
3508 + <CommonTargetsPath>$(MSBuildFrameworkToolsPath)\Microsoft.Common.targets</CommonTargetsPath>
3509 + </PropertyGroup>
3510 + </When>
3511 + <Otherwise>
3512 + <PropertyGroup>
3513 + <CommonTargetsPath>$(MSBuildToolsPath)\Microsoft.Common.CurrentVersion.targets</CommonTargetsPath>
3514 + </PropertyGroup>
3515 + </Otherwise>
3516 + </Choose>
3517 + <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3518 + <!--
3519 + Overrides for the Microsoft.Common.targets extension targets. Used to make sure that only the imports we specify
3520 + (hard-coded to 4.0 locations) are used, not the 12.0 locations that would be used by default.
3521 +
3522 + NOTE: This logic is duplicated in Microsoft.VisualBasic.targets and in Microsoft.CSharp.targets because those two files
3523 + import Microsoft.Common.targets from the current directory and thus don't get the benefit of the redirections, so for
3524 + any changes to this logic in this file, please also edit the other two.
3525 + -->
3526 + <ImportByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == ''">$(ImportByWildcardBeforeMicrosoftCommonTargets)</ImportByWildcardBefore40MicrosoftCommonTargets>
3527 + <ImportByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == ''">true</ImportByWildcardBefore40MicrosoftCommonTargets>
3528 + <ImportByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportByWildcardAfter40MicrosoftCommonTargets)' == ''">$(ImportByWildcardAfterMicrosoftCommonTargets)</ImportByWildcardAfter40MicrosoftCommonTargets>
3529 + <ImportByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportByWildcardAfter40MicrosoftCommonTargets)' == ''">true</ImportByWildcardAfter40MicrosoftCommonTargets>
3530 + <ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == ''">$(ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets)</ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets>
3531 + <ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets>
3532 + <ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets)' == ''">$(ImportUserLocationsByWildcardAfterMicrosoftCommonTargets)</ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets>
3533 + <ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardAfter40MicrosoftCommonTargets>
3534 + <ImportByWildcardBeforeMicrosoftCommonTargets>false</ImportByWildcardBeforeMicrosoftCommonTargets>
3535 + <ImportByWildcardAfterMicrosoftCommonTargets>false</ImportByWildcardAfterMicrosoftCommonTargets>
3536 + <ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets>false</ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets>
3537 + <ImportUserLocationsByWildcardAfterMicrosoftCommonTargets>false</ImportUserLocationsByWildcardAfterMicrosoftCommonTargets>
3538 + <CustomBeforeMicrosoftCommonTargets Condition="'$(CustomBeforeMicrosoftCommonTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.Before.Microsoft.Common.targets</CustomBeforeMicrosoftCommonTargets>
3539 + <CustomAfterMicrosoftCommonTargets Condition="'$(CustomAfterMicrosoftCommonTargets)' == ''">$(MSBuildExtensionsPath)\v4.0\Custom.After.Microsoft.Common.targets</CustomAfterMicrosoftCommonTargets>
3540 + </PropertyGroup>
3541 + <PropertyGroup Condition="'$(MSBuildAssemblyVersion)' == '' and ('$(TargetFrameworkIdentifier)' == '.NETFramework' or '$(TargetFrameworkIdentifier)' == 'Silverlight' or ('$(TargetFrameworkIdentifier)' == '' and ('$(TargetRuntime)' == 'Managed' or '$(TargetRuntime)' == '')))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3542 + <!--
3543 + Overrides for the Microsoft.NETFramework.props extension targets. Used to make sure that only the imports we specify
3544 + (hard-coded to 4.0 locations) are used, not the 12.0 locations that would be used by default. Required because
3545 + Microsoft.Common.targets imports it from the current directory, so we don't get a chance to redirect these in its
3546 + own redirection targets.
3547 +
3548 + NOTE: This logic is duplicated in Microsoft.VisualBasic.targets and in Microsoft.CSharp.targets because those two files
3549 + import Microsoft.Common.targets from the current directory and thus don't get the benefit of these redirections either,
3550 + so for any changes to this logic in this file, please also edit the other two.
3551 + -->
3552 + <ImportByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">$(ImportByWildcardBeforeMicrosoftNetFrameworkProps)</ImportByWildcardBefore40MicrosoftNetFrameworkProps>
3553 + <ImportByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">true</ImportByWildcardBefore40MicrosoftNetFrameworkProps>
3554 + <ImportByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">$(ImportByWildcardAfterMicrosoftNetFrameworkProps)</ImportByWildcardAfter40MicrosoftNetFrameworkProps>
3555 + <ImportByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">true</ImportByWildcardAfter40MicrosoftNetFrameworkProps>
3556 + <ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">$(ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps)</ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps>
3557 + <ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == ''">true</ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps>
3558 + <ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">$(ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps)</ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps>
3559 + <ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps Condition="'$(ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps)' == ''">true</ImportUserLocationsByWildcardAfter40MicrosoftNetFrameworkProps>
3560 + <ImportByWildcardBeforeMicrosoftNetFrameworkProps>false</ImportByWildcardBeforeMicrosoftNetFrameworkProps>
3561 + <ImportByWildcardAfterMicrosoftNetFrameworkProps>false</ImportByWildcardAfterMicrosoftNetFrameworkProps>
3562 + <ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps>false</ImportUserLocationsByWildcardBeforeMicrosoftNetFrameworkProps>
3563 + <ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps>false</ImportUserLocationsByWildcardAfterMicrosoftNetFrameworkProps>
3564 + </PropertyGroup>
3565 + <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
3566 + <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore')" />-->
3567 + <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportByWildcardBefore40MicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.Common.targets\ImportBefore')" />-->
3568 + <!--</ImportGroup>-->
3569 + <!--<ImportGroup Condition="'$(MSBuildAssemblyVersion)' == ''">-->
3570 + <!--<Import Project="$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBefore40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildUserExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore')" />-->
3571 + <!--<Import Project="$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore\*" Condition="'$(ImportByWildcardBefore40MicrosoftNetFrameworkProps)' == 'true' and exists('$(MSBuildExtensionsPath)\4.0\Microsoft.NETFramework.props\ImportBefore')" />-->
3572 + <!--</ImportGroup>-->
3573 + <!--
3574 +============================================================================================================================================
3575 + <Import Project="$(CommonTargetsPath)">
3576 +
3577 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
3578 +============================================================================================================================================
3579 +-->
3580 + <!--
3581 +***********************************************************************************************
3582 +Microsoft.Common.CurrentVersion.targets
3583 +
3584 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3585 + created a backup copy. Incorrect changes to this file will make it
3586 + impossible to load or build your projects from the command-line or the IDE.
3587 +
3588 +This file defines the steps in the standard build process for .NET projects. It
3589 +contains all the steps that are common among the different .NET languages, such as
3590 +Visual Basic, and Visual C#.
3591 +
3592 +Copyright (C) Microsoft Corporation. All rights reserved.
3593 +***********************************************************************************************
3594 +-->
3595 + <!--<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="'$(MicrosoftCommonPropsHasBeenImported)' != 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />-->
3596 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3597 + <ImportByWildcardBeforeMicrosoftCommonTargets Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == ''">true</ImportByWildcardBeforeMicrosoftCommonTargets>
3598 + <ImportByWildcardAfterMicrosoftCommonTargets Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == ''">true</ImportByWildcardAfterMicrosoftCommonTargets>
3599 + <ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets>
3600 + <ImportUserLocationsByWildcardAfterMicrosoftCommonTargets Condition="'$(ImportUserLocationsByWildcardAfterMicrosoftCommonTargets)' == ''">true</ImportUserLocationsByWildcardAfterMicrosoftCommonTargets>
3601 + </PropertyGroup>
3602 + <!--<Import Project="$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportUserLocationsByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore')" />-->
3603 + <!--
3604 +============================================================================================================================================
3605 + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore')">
3606 +
3607 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportBefore\Microsoft.Cpp.VCLibs120Universal.targets
3608 +============================================================================================================================================
3609 +-->
3610 + <!--
3611 +***********************************************************************************************
3612 +Microsoft.cpp.VCLibs120Universal.targets
3613 +
3614 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3615 + created a backup copy. Incorrect changes to this file will make it
3616 + impossible to load or build your projects from the command-line or the IDE.
3617 +
3618 +Copyright (C) Microsoft Corporation. All rights reserved.
3619 +***********************************************************************************************
3620 +-->
3621 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3622 + <_GenerateAppxManifestDependsOn>$(_GenerateAppxManifestDependsOn);_FixVCLibs120References</_GenerateAppxManifestDependsOn>
3623 + </PropertyGroup>
3624 + <Target Name="_FixVCLibs120References" Condition="'$(AppxPackage)' == 'true' and '$(TargetPlatformIdentifier)' == 'UAP'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3625 + <!-- Check if VC libs 120 reference is found, If found remove it-->
3626 + <ItemGroup>
3627 + <VCLibs120Ref Include="'%(PackagingOutputs.SDKName)'" Condition="'%(PackagingOutputs.SDKName)' == 'Microsoft.VCLibs, Version=12.0'" />
3628 + </ItemGroup>
3629 + <ItemGroup Condition="'@(VCLibs120Ref)' != ''">
3630 + <PackagingOutputs Remove="@(PackagingOutputs)" Condition="'%(PackagingOutputs.SDKName)' == 'Microsoft.VCLibs, Version=12.0'" />
3631 + </ItemGroup>
3632 + <!-- Get the resolved SDK reference item for Microsoft.VCLibs.120, Version=14.0 and add that to the packaging output -->
3633 + <GetInstalledSDKLocations SDKDirectoryRoots="$(SDKReferenceDirectoryRoot)" SDKExtensionDirectoryRoots="$(SDKExtensionDirectoryRoot)" SDKRegistryRoot="$(SDKReferenceRegistryRoot)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" Condition="'@(InstalledSDKLocations)' == '' and '@(VCLibs120Ref)' != ''">
3634 + <Output TaskParameter="InstalledSDKs" ItemName="InstalledSDKLocations" />
3635 + </GetInstalledSDKLocations>
3636 + <ResolveSDKReference SDKReferences="Microsoft.VCLibs.120, Version=14.0" RuntimeReferenceOnlySDKDependencies="@(RuntimeReferenceOnlySDKDependencies)" References="@(Reference)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" WarnOnMissingPlatformVersion="$(SDKReferenceWarnOnMissingMaxPlatformVersion)" ProjectName="$(MSBuildProjectName)" TargetedSDKConfiguration="$(TargetedSDKConfiguration)" TargetedSDKArchitecture="$(TargetedSDKArchitecture)" InstalledSDKs="@(InstalledSDKLocations)" LogResolutionErrorsAsWarnings="$(LogSDKReferenceResolutionErrorsAsWarnings)" Prefer32Bit="$(Prefer32Bit)" ContinueOnError="$(ContinueOnError)" Condition="'@(VCLibs120Ref)' != ''">
3637 + <Output TaskParameter="ResolvedSDKReferences" ItemName="VCLibs12UniversalReference" />
3638 + </ResolveSDKReference>
3639 + <ItemGroup Condition="'@(VCLibs120Ref)' != '' and '@(VCLibs12UniversalReference)' != '' ">
3640 + <PackagingOutputs Include="@(VCLibs12UniversalReference)">
3641 + <OutputGroup>GetResolvedSDKReferences</OutputGroup>
3642 + </PackagingOutputs>
3643 + </ItemGroup>
3644 + </Target>
3645 + <!-- This target adds reference to the Microsoft.UniversalCRT.Debug Extension SDK for UWP apps that :
3646 + reference the Microsoft.VCLibs.14.00.Debug framework package
3647 + Needs to run after the GetPackagingOutputs so that it is not added if a UCRT Debug reference is already present in the parent or referenced projects. -->
3648 + <Target Name="_AddVCLibs140UniversalCrtDebugReference" AfterTargets="GetPackagingOutputs" Condition="'$(DisableImplicitUCRTReference)' == '' and '$(AppxPackage)' == 'true' and '$(TargetPlatformIdentifier)' == 'UAP'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3649 + <!-- ******************************************************************************
3650 + This item group queries the application project for the following traits:
3651 + a. Microsoft.VCLibs, Version=14.0, Configuration=Debug is referenced by the project or its referenced projects
3652 + b. This project or its referenced projects already reference Microsoft.UniversalCRT.Debug, Version=<Any>
3653 + ******************************************************************************* -->
3654 + <ItemGroup>
3655 + <VCLibs140UCRTRef Include="'%(PackagingOutputs.SDKName)'" Condition="'%(PackagingOutputs.SDKName)' == 'Microsoft.VCLibs, Version=14.0' and ('%(PackagingOutputs.TargetedSDKConfiguration)' == 'Debug' or '$(Configuration)'=='Debug')" />
3656 + <HasUCRTRef Include="'%(PackagingOutputs.SDKName)'" Condition="$([System.String]::new('%(PackagingOutputs.SDKName)').StartsWith('Microsoft.UniversalCRT.Debug, Version='))" />
3657 + </ItemGroup>
3658 + <!-- Add UCRT Debug reference if one is not already specified and the project (or referenced projects) have a reference to VCLibs140 framework package -->
3659 + <PropertyGroup>
3660 + <AddUCRTRef Condition="'@(HasUCRTRef)'=='' and '@(VCLibs140UCRTRef)'!=''">true</AddUCRTRef>
3661 + </PropertyGroup>
3662 + <!-- Get the resolved SDK reference item for Microsoft.UniversalCRT.Debug, Version=<TPV> and add that to the packaging output -->
3663 + <GetInstalledSDKLocations SDKDirectoryRoots="$(SDKReferenceDirectoryRoot)" SDKExtensionDirectoryRoots="$(SDKExtensionDirectoryRoot)" SDKRegistryRoot="$(SDKReferenceRegistryRoot)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" Condition="'@(InstalledSDKLocations)' == '' and '$(AddUCRTRef)'=='true'">
3664 + <Output TaskParameter="InstalledSDKs" ItemName="InstalledSDKLocations" />
3665 + </GetInstalledSDKLocations>
3666 + <!-- Find the Microsoft.Ucrt.Debug ESDK, based upon TPV. This package is installed by the Windows 10 SDK, so there should always be a matching
3667 + ESDK for given TPV value -->
3668 + <ResolveSDKReference Condition="'$(AddUCRTRef)'=='true'" SDKReferences="Microsoft.UniversalCRT.Debug, Version=$(TargetPlatformVersion)" RuntimeReferenceOnlySDKDependencies="@(RuntimeReferenceOnlySDKDependencies)" References="@(Reference)" TargetPlatformVersion="$(TargetPlatformVersion)" TargetPlatformIdentifier="$(TargetPlatformIdentifier)" WarnOnMissingPlatformVersion="$(SDKReferenceWarnOnMissingMaxPlatformVersion)" ProjectName="$(MSBuildProjectName)" TargetedSDKConfiguration="$(TargetedSDKConfiguration)" TargetedSDKArchitecture="$(TargetedSDKArchitecture)" InstalledSDKs="@(InstalledSDKLocations)" LogResolutionErrorsAsWarnings="$(LogSDKReferenceResolutionErrorsAsWarnings)" Prefer32Bit="$(Prefer32Bit)" ContinueOnError="$(ContinueOnError)">
3669 + <Output TaskParameter="ResolvedSDKReferences" ItemName="UniversalCrtDebugReference" />
3670 + </ResolveSDKReference>
3671 + <!-- Add the resolved ucrtbased.dll to the packaging output -->
3672 + <ItemGroup>
3673 + <PackagingOutputs Condition="'$(AddUCRTRef)' == 'true'" Include="@(UniversalCrtDebugReference->'%(Identity)\redist\Debug\%(TargetedSDKArchitecture)\ucrtbased.dll')">
3674 + <OutputGroup>SDKRedistOutputGroup</OutputGroup>
3675 + <ProjectName>$(MSBuildProjectName)</ProjectName>
3676 + <TargetPath>ucrtbased.dll</TargetPath>
3677 + </PackagingOutputs>
3678 + </ItemGroup>
3679 + </Target>
3680 + <!--
3681 +============================================================================================================================================
3682 + </Import>
3683 +============================================================================================================================================
3684 +-->
3685 + <!--
3686 +============================================================================================================================================
3687 + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore')">
3688 +
3689 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportBefore\Microsoft.Net.CoreRuntime.ImportBefore.targets
3690 +============================================================================================================================================
3691 +-->
3692 + <!--
3693 +***********************************************************************************************
3694 +Microsoft.Net.CoreRuntime.ImportBefore.targets
3695 +
3696 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3697 + created a backup copy. Incorrect changes to this file will make it
3698 + impossible to load or build your projects from the command-line or the IDE.
3699 +
3700 +Copyright (C) Microsoft Corporation. All rights reserved.
3701 +***********************************************************************************************
3702 +-->
3703 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3704 + <NetfxCoreRuntimeSettingsTargets Condition="'$(NetfxCoreRuntimeSettingsTargets)'==''">$(ProgramFiles)\MSBuild\15.0\.Net\CoreRuntime\Microsoft.Net.CoreRuntime.Settings.targets</NetfxCoreRuntimeSettingsTargets>
3705 + </PropertyGroup>
3706 + <!--<Import Project="$(NetfxCoreRuntimeSettingsTargets)" Condition="'$(TargetPlatformIdentifier)' == 'UAP' and '$(AppxPackage)' == 'true' and exists('$(NetfxCoreRuntimeSettingsTargets)')" />-->
3707 + <!--
3708 +============================================================================================================================================
3709 + </Import>
3710 +============================================================================================================================================
3711 +-->
3712 + <!--
3713 +============================================================================================================================================
3714 + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore')">
3715 +
3716 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Microsoft.Common.targets\ImportBefore\Microsoft.NetNative.ImportBefore.targets
3717 +============================================================================================================================================
3718 +-->
3719 + <!--
3720 +***********************************************************************************************
3721 +Microsoft.NetNative.ImportBefore.targets
3722 +
3723 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3724 + created a backup copy. Incorrect changes to this file will make it
3725 + impossible to load or build your projects from the command-line or the IDE.
3726 +
3727 +Copyright (C) Microsoft Corporation. All rights reserved.
3728 +***********************************************************************************************
3729 +-->
3730 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3731 + <_ProjectNPlatformSupported Condition="'$(TargetPlatformIdentifier)' == 'UAP'">true</_ProjectNPlatformSupported>
3732 + <_ProjectNProjectSupported Condition="'$(AppxPackage)' == 'true'">true</_ProjectNProjectSupported>
3733 + <!-- Denotes that Microsoft .Net Native is supported by this kind of project so corresponding UI elements should be visible -->
3734 + <CanUseProjectN Condition="'$(_ProjectNPlatformSupported)' == 'true' and '$(_ProjectNProjectSupported)' == 'true'">true</CanUseProjectN>
3735 + <UseDotNetNativeToolchain Condition="'$(UseDotNetNativeToolchain)' == ''">$(UseProjectNToolchain)</UseDotNetNativeToolchain>
3736 + <ProjectNProfileEnabled Condition="'$(CanUseProjectN)'=='true'">true</ProjectNProfileEnabled>
3737 + <ProjectNSettingsTargets Condition="'$(ProjectNSettingsTargets)'==''">$(ProgramFiles)\MSBuild\15.0\.Net\.NetNative\15.0.24211\Microsoft.NetNative.Settings.targets</ProjectNSettingsTargets>
3738 + </PropertyGroup>
3739 + <!--<Import Project="$(ProjectNSettingsTargets)" Condition="'$(ProjectNProfileEnabled)' == 'true' and exists('$(ProjectNSettingsTargets)')" />-->
3740 + <!--
3741 +============================================================================================================================================
3742 + </Import>
3743 +
3744 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
3745 +============================================================================================================================================
3746 +-->
3747 + <!--<Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')" />-->
3748 + <!-- VS10 without SP1 and without VS11 will not have VisualStudioVersion set, so do that here -->
3749 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3750 + <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
3751 + </PropertyGroup>
3752 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3753 + <CustomBeforeMicrosoftCommonTargets Condition="'$(CustomBeforeMicrosoftCommonTargets)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.Before.Microsoft.Common.targets</CustomBeforeMicrosoftCommonTargets>
3754 + <CustomAfterMicrosoftCommonTargets Condition="'$(CustomAfterMicrosoftCommonTargets)'==''">$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.After.Microsoft.Common.targets</CustomAfterMicrosoftCommonTargets>
3755 + <ReportingServicesTargets Condition="'$(ReportingServicesTargets)'==''">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\ReportingServices\Microsoft.ReportingServices.targets</ReportingServicesTargets>
3756 + </PropertyGroup>
3757 + <!--<Import Project="$(CustomBeforeMicrosoftCommonTargets)" Condition="'$(CustomBeforeMicrosoftCommonTargets)' != '' and Exists('$(CustomBeforeMicrosoftCommonTargets)')" />-->
3758 + <!-- By default, we are creating a managed app because .NET 2.0 projects did not have this property. -->
3759 + <PropertyGroup Condition="'$(TargetRuntime)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3760 + <TargetRuntime>Managed</TargetRuntime>
3761 + </PropertyGroup>
3762 + <!-- Because .NET 2.0 apps did not set TargetFrameworkIdentifier, we need to set it for them here by default. If
3763 + the runtime is set to Managed, we also need to set these. Otherwise they should be blank (for instance Javascript or
3764 + Native apps) because they do not target a .NET Framework. -->
3765 + <PropertyGroup Condition="'$(TargetRuntime)' == 'Managed'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3766 + <TargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)' == ''">.NETFramework</TargetFrameworkIdentifier>
3767 + <TargetFrameworkVersion Condition=" '$(TargetFrameworkVersion)' == '' ">v4.0</TargetFrameworkVersion>
3768 + </PropertyGroup>
3769 + <!-- AvailablePlatforms is the list of platform targets available. -->
3770 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3771 + <AvailablePlatforms Condition="'$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == ''">Any CPU,x86,x64,Itanium</AvailablePlatforms>
3772 + <AvailablePlatforms Condition="'$(VisualStudioVersion)' != '' and '$(VisualStudioVersion)' &gt; '10.0'">Any CPU,x86,x64</AvailablePlatforms>
3773 + </PropertyGroup>
3774 + <!-- Import depends on if it is .NETCore. Imports for .NETFramework is a superset of that for .NETCore-->
3775 + <!--<Import Project="Microsoft.NETFramework.props" Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' or '$(TargetFrameworkIdentifier)' == 'Silverlight'" />-->
3776 + <!--
3777 +============================================================================================================================================
3778 + <Import Project="Microsoft.NET.props" Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard' or '$(TargetFrameworkIdentifier)' == '.NETCoreApp'">
3779 +
3780 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.NET.props
3781 +============================================================================================================================================
3782 +-->
3783 + <!--
3784 +***********************************************************************************************
3785 +Microsoft.NET.props
3786 +
3787 +WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
3788 + created a backup copy. Incorrect changes to this file will make it
3789 + impossible to load or build your projects from the command-line or the IDE.
3790 +
3791 +This file contains .NET-specific properties, and items. This file is imported for .NET Core, .NET Standard, and .NET Framework projects.
3792 +these two files are used to encapsulate the multi-targeting and framework specific build process.
3793 +
3794 +Copyright (C) Microsoft Corporation. All rights reserved.
3795 +***********************************************************************************************
3796 +-->
3797 + <!--
3798 + ============================================================
3799 + GetToolPaths
3800 + Get the paths for the .NET Framework and .NET Core tools and sdk tools directories.
3801 + This does not need to be a target since all of the values are availiable at project evaluation time.
3802 + ============================================================
3803 + -->
3804 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3805 + <TargetFrameworkSDKToolsDirectory Condition=" '$(TargetFrameworkSDKToolsDirectory)' == '' ">$(SDK40ToolsPath)</TargetFrameworkSDKToolsDirectory>
3806 + </PropertyGroup>
3807 + <!--
3808 + ============================================================
3809 + SetHighEntropyVA
3810 + Set HighEntropyVA according to the TargetFramework
3811 + ============================================================
3812 + -->
3813 + <PropertyGroup Condition="('$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(TargetingClr2Framework)' != 'true' and '$(TargetFrameworkVersion)' != 'v4.0') or '$(TargetFrameworkIdentifier)' == '.NETCoreApp' or '$(TargetFrameworkIdentifier)' == '.NETStandard'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3814 + <HighEntropyVA Condition="'$(HighEntropyVA)' == ''">true</HighEntropyVA>
3815 + </PropertyGroup>
3816 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3817 + <HighEntropyVA Condition="'$(HighEntropyVA)' == ''">false</HighEntropyVA>
3818 + </PropertyGroup>
3819 + <!--
3820 +============================================================================================================================================
3821 + </Import>
3822 +
3823 +C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
3824 +============================================================================================================================================
3825 +-->
3826 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3827 + <!-- Generates full paths for the 'File' property in errors, warnings and messages in many targets -->
3828 + <GenerateFullPaths Condition="'$(GenerateFullPaths)' == ''">true</GenerateFullPaths>
3829 + <!-- Yield optimization properties -->
3830 + <YieldDuringToolExecution Condition="'$(YieldDuringToolExecution)' == ''">true</YieldDuringToolExecution>
3831 + </PropertyGroup>
3832 + <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' != '' and '$(TargetFrameworkVersion)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3833 + <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == '' and '$([System.String]::IsNullOrWhitespace($(TargetFrameworkProfile)))' != 'true'">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion),Profile=$(TargetFrameworkProfile)</TargetFrameworkMoniker>
3834 + <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion)</TargetFrameworkMoniker>
3835 + <!-- When working off a packaged reference assemblies, do not go to machine-global locations. This property is target-framework-specific, so it cannot be overridden in msbuild.exe.config once and for all. -->
3836 + <FrameworkPathOverride Condition="'$(EnableFrameworkPathOverride)' != 'false' And '$(FrameworkPathOverride)' == '' And Exists('$(TargetFrameworkRootPath)$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)')">$(TargetFrameworkRootPath)$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)</FrameworkPathOverride>
3837 + <!-- The FrameworkPathOverride is required for the inproc visual basic compiler to initialize when targeting target frameworks less than 4.0. If .net 2.0 is not installed then the property value above will not provide the location
3838 + of mscorlib. This is also true if the build author overrides this property to some other directory which does not contain mscorlib.dll. In the case we cannot find mscorlib.dll at the correct location
3839 + we need to find a directory which does contain mscorlib to allow the inproc compiler to initialize and give us the chance to show certain dialogs in the IDE (which only happen after initialization).-->
3840 + <FrameworkPathOverride Condition="'$(EnableFrameworkPathOverride)' != 'false' And '$(FrameworkPathOverride)' == ''">$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPathToStandardLibraries($(TargetFrameworkIdentifier), $(TargetFrameworkVersion), $(TargetFrameworkProfile), $(PlatformTarget), $(TargetFrameworkRootPath), $(TargetFrameworkFallbackSearchPaths)))</FrameworkPathOverride>
3841 + <FrameworkPathOverride Condition="'$(EnableFrameworkPathOverride)' != 'false' And !Exists('$(FrameworkPathOverride)\mscorlib.dll')">$(MSBuildFrameworkToolsPath)</FrameworkPathOverride>
3842 + </PropertyGroup>
3843 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3844 + <TargetPlatformIdentifier Condition="'$(TargetPlatformIdentifier)' == '' and '$(_EnableDefaultWindowsPlatform)' != 'false'">Windows</TargetPlatformIdentifier>
3845 + <TargetPlatformVersion Condition="'$(TargetPlatformVersion)' == '' and '$(_EnableDefaultWindowsPlatform)' != 'false'">7.0</TargetPlatformVersion>
3846 + <TargetPlatformSdkPath Condition="'$(TargetPlatformSdkPath)' == '' and '$(TargetPlatformSdkRootOverride)' != ''">$(TargetPlatformSdkRootOverride)\</TargetPlatformSdkPath>
3847 + <TargetPlatformSdkPath Condition="'$(TargetPlatformSdkPath)' == '' and '$(TargetPlatformIdentifier)' == 'Windows' and $([MSBuild]::IsOSPlatform('Windows')) and '$(MSBuildRuntimeType)' != 'Core'">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SDKs\Windows\v$(TargetPlatformVersion)', InstallationFolder, null, RegistryView.Registry32, RegistryView.Default))</TargetPlatformSdkPath>
3848 + <TargetPlatformSdkPath Condition="'$(TargetPlatformSdkPath)' == ''">$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKLocation($(TargetPlatformIdentifier), $(TargetPlatformVersion)))</TargetPlatformSdkPath>
3849 + <TargetPlatformSdkMetadataLocation Condition="'$(TargetPlatformSdkMetadataLocation)' == '' and Exists('$(TargetPlatformSdkPath)')">$(TargetPlatformSdkPath)Windows Metadata</TargetPlatformSdkMetadataLocation>
3850 + <TargetPlatformSdkMetadataLocation Condition="Exists('$(TargetPlatformSdkPath)') and ('$(TargetPlatformSdkMetadataLocation)' == '' or !Exists('$(TargetPlatformSdkMetadataLocation)'))">$(TargetPlatformSdkPath)References\CommonConfiguration\Neutral</TargetPlatformSdkMetadataLocation>
3851 + <TargetPlatformWinMDLocation Condition="'$(TargetPlatformWinMDLocation)' == '' and Exists('$(TargetPlatformSdkMetadataLocation)')">$(TargetPlatformSdkMetadataLocation)</TargetPlatformWinMDLocation>
3852 + <UseOSWinMdReferences Condition="'$(UseOSWinMdReferences)' == '' and ('$(TargetPlatformWinMDLocation)' == '' and '$(TargetPlatformIdentifier)' == 'Windows' and '$(TargetPlatformVersion)' &gt; '7.0')">true</UseOSWinMdReferences>
3853 + <TargetPlatformWinMDLocation Condition="'$(UseOsWinMdReferences)' == 'true'">$(WinDir)\System32\WinMetadata</TargetPlatformWinMDLocation>
3854 + <TargetPlatformMoniker Condition="'$(TargetPlatformMoniker)' == '' and '$(TargetPlatformIdentifier)' != '' and '$(TargetPlatformVersion)' != ''">$(TargetPlatformIdentifier),Version=$(TargetPlatformVersion)</TargetPlatformMoniker>
3855 + <TargetPlatformDisplayName Condition="'$(TargetPlatformDisplayName)' == ''">$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformSDKDisplayName($(TargetPlatformIdentifier), $(TargetPlatformVersion)))</TargetPlatformDisplayName>
3856 + </PropertyGroup>
3857 + <!--
3858 + Several properties must be set in the main project file, before using this .TARGETS file.
3859 + However, if the properties are not set, we pick some defaults.
3860 +
3861 + OutDir:
3862 + Indicates the final output location for the project or solution. When building a solution,
3863 + OutDir can be used to gather multiple project outputs in one location. In addition,
3864 + OutDir is included in AssemblySearchPaths used for resolving references.
3865 +
3866 + BaseOutputPath:
3867 + This is the top level folder where all configuration specific output folders will be created.
3868 + Default value is bin\
3869 +
3870 + OutputPath:
3871 + This is the full Output Path, and is derived from BaseOutputPath, if none specified
3872 + (eg. bin\Debug). If this property is overridden, then setting BaseOutputPath has no effect.
3873 +
3874 + For Legacy projects using only Common targets, this property is usually specified in the project file
3875 + and is used to initialize OutDir. Some SDKs including the .NET SDK derive this automatically.
3876 + OutDir and OutputPath are distinguished for legacy reasons, and OutDir should be used if at all possible.
3877 +
3878 + BaseIntermediateOutputPath:
3879 + This is the top level folder where all configuration specific intermediate output folders will be created.
3880 + Default value is obj\
3881 +
3882 + IntermediateOutputPath:
3883 + This is the full intermediate Output Path, and is derived from BaseIntermediateOutputPath, if none specified
3884 + (eg. obj\Debug). If this property is overridden, then setting BaseIntermediateOutputPath has no effect.
3885 +
3886 + Ensure any and all path property has a trailing slash, so it can be concatenated.
3887 + -->
3888 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3889 + <!-- Example, AnyCPU -->
3890 + <_OriginalPlatform>$(Platform)</_OriginalPlatform>
3891 + <!-- Example, Debug -->
3892 + <_OriginalConfiguration>$(Configuration)</_OriginalConfiguration>
3893 + <!-- Check whether OutputPath was specified for valid Configuration/Platform combination -->
3894 + <_OutputPathWasMissing Condition="'$(_OriginalPlatform)' != '' and '$(_OriginalConfiguration)' != '' and '$(OutputPath)' == ''">true</_OutputPathWasMissing>
3895 + <!-- Check whether BaseOutputPath was specified -->
3896 + <BaseOutputPathWasSpecified Condition="'$(BaseOutputPath)' != ''">true</BaseOutputPathWasSpecified>
3897 + </PropertyGroup>
3898 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3899 + <Platform Condition="'$(Platform)' == ''">AnyCPU</Platform>
3900 + <PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>
3901 + <Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
3902 + <ConfigurationName Condition="'$(ConfigurationName)' == ''">$(Configuration)</ConfigurationName>
3903 + <BaseOutputPath Condition="'$(BaseOutputPath)' == ''">bin\</BaseOutputPath>
3904 + <BaseOutputPath Condition="!HasTrailingSlash('$(BaseOutputPath)')">$(BaseOutputPath)\</BaseOutputPath>
3905 + <OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' == 'AnyCPU'">$(BaseOutputPath)$(Configuration)\</OutputPath>
3906 + <OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' != 'AnyCPU'">$(BaseOutputPath)$(PlatformName)\$(Configuration)\</OutputPath>
3907 + <OutputPath Condition="!HasTrailingSlash('$(OutputPath)')">$(OutputPath)\</OutputPath>
3908 + <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
3909 + <BaseIntermediateOutputPath Condition="!HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
3910 + <IntermediateOutputPath Condition="'$(IntermediateOutputPath)' == '' and '$(PlatformName)' == 'AnyCPU'">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
3911 + <IntermediateOutputPath Condition="'$(IntermediateOutputPath)' == '' and '$(PlatformName)' != 'AnyCPU'">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
3912 + <IntermediateOutputPath Condition="!HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
3913 + </PropertyGroup>
3914 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3915 + <!-- Determine OutputType property from the legacy TargetType property -->
3916 + <OutputType Condition=" '$(TargetType)' != ''">$(TargetType)</OutputType>
3917 + <OutputType Condition=" '$(TargetType)' == 'Container' or '$(TargetType)' == 'DocumentContainer' ">library</OutputType>
3918 + <OutputType Condition=" '$(OutputType)' == '' ">exe</OutputType>
3919 + <DebugSymbols Condition=" '$(ConfigurationName)' == 'Debug' and '$(DebugSymbols)' == '' and '$(DebugType)'==''">true</DebugSymbols>
3920 + <!-- Whether or not a .pdb file is produced. -->
3921 + <_DebugSymbolsProduced>false</_DebugSymbolsProduced>
3922 + <_DebugSymbolsProduced Condition="'$(DebugSymbols)'=='true'">true</_DebugSymbolsProduced>
3923 + <_DebugSymbolsProduced Condition="'$(DebugType)'=='none'">false</_DebugSymbolsProduced>
3924 + <_DebugSymbolsProduced Condition="'$(DebugType)'=='pdbonly'">true</_DebugSymbolsProduced>
3925 + <_DebugSymbolsProduced Condition="'$(DebugType)'=='full'">true</_DebugSymbolsProduced>
3926 + <_DebugSymbolsProduced Condition="'$(DebugType)'=='portable'">true</_DebugSymbolsProduced>
3927 + <_DebugSymbolsProduced Condition="'$(DebugType)'=='embedded'">false</_DebugSymbolsProduced>
3928 + <_DebugSymbolsProduced Condition="'$(ProduceOnlyReferenceAssembly)'=='true'">false</_DebugSymbolsProduced>
3929 + <!-- Whether or not a .xml file is produced. -->
3930 + <_DocumentationFileProduced>true</_DocumentationFileProduced>
3931 + <_DocumentationFileProduced Condition="'$(DocumentationFile)'==''">false</_DocumentationFileProduced>
3932 + <!-- Whether or not a reference assembly is produced. -->
3933 + <ProduceReferenceAssembly Condition="'$(ProduceReferenceAssembly)' == ''">false</ProduceReferenceAssembly>
3934 + </PropertyGroup>
3935 + <!--
3936 + For Legacy projects that define properties per Configuration/Platform combination, the validity of an
3937 + invalid combination is determined by the non-empty value of the 'OutputPath' property specified under
3938 + the IDE generated Configuration/Platform specific 'PropertyGroup' section.
3939 +
3940 + If 'BaseOutputPath' is specified, we can skip the validation, since, we assume the 'OutputPath' property
3941 + will be derived (e.g.: from the 'BaseOutputPath' property).
3942 + -->
3943 + <PropertyGroup Condition="'$(BaseOutputPathWasSpecified)' != 'true' and '$(_OutputPathWasMissing)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3944 + <!--
3945 + When 'OutputPath' is missing or empty (along with non-existent 'BaseOutputPath') at this point means,
3946 + we're in legacy mode and we shall assume the current Configuration/Platform combination as invalid.
3947 + Whether this is considered an error or a warning depends on the value of $(SkipInvalidConfigurations).
3948 + -->
3949 + <_InvalidConfigurationError Condition=" '$(SkipInvalidConfigurations)' != 'true' ">true</_InvalidConfigurationError>
3950 + <_InvalidConfigurationWarning Condition=" '$(SkipInvalidConfigurations)' == 'true' ">true</_InvalidConfigurationWarning>
3951 + </PropertyGroup>
3952 + <!--
3953 + IDE Macros available from both integrated builds and from command line builds.
3954 + The following properties are 'macros' that are available via IDE for
3955 + pre and post build steps.
3956 + -->
3957 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3958 + <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='exe'">.exe</TargetExt>
3959 + <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='winexe'">.exe</TargetExt>
3960 + <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='appcontainerexe'">.exe</TargetExt>
3961 + <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='library'">.dll</TargetExt>
3962 + <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='module'">.netmodule</TargetExt>
3963 + <TargetExt Condition="'$(TargetExt)' == '' and '$(OutputType)'=='winmdobj'">.winmdobj</TargetExt>
3964 + </PropertyGroup>
3965 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3966 + <!-- Required for enabling Team Build for packaging app package-generating projects -->
3967 + <OutDirWasSpecified Condition=" '$(OutDir)'!='' and '$(OutDirWasSpecified)'=='' ">true</OutDirWasSpecified>
3968 + <OutDir Condition=" '$(OutDir)' == '' ">$(OutputPath)</OutDir>
3969 + <!-- Example, bin\Debug\ -->
3970 + <!-- Ensure OutDir has a trailing slash, so it can be concatenated -->
3971 + <OutDir Condition="'$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')">$(OutDir)\</OutDir>
3972 + <ProjectName Condition=" '$(ProjectName)' == '' ">$(MSBuildProjectName)</ProjectName>
3973 + <!-- Example, MyProject -->
3974 + <!-- For projects that generate app packages or ones that want a per-project output directory, update OutDir to include the project name -->
3975 + <OutDir Condition="'$(OutDir)' != '' and '$(OutDirWasSpecified)' == 'true' and (('$(WindowsAppContainer)' == 'true' and '$(GenerateProjectSpecificOutputFolder)' != 'false') or '$(GenerateProjectSpecificOutputFolder)' == 'true')">$(OutDir)$(ProjectName)\</OutDir>
3976 + <AssemblyName Condition=" '$(AssemblyName)'=='' ">$(MSBuildProjectName)</AssemblyName>
3977 + <TargetName Condition="'$(TargetName)' == '' and '$(OutputType)' == 'winmdobj' and '$(RootNamespace)' != ''">$(RootNamespace)</TargetName>
3978 + <TargetName Condition=" '$(TargetName)' == '' ">$(AssemblyName)</TargetName>
3979 + <!-- Example, MyAssembly -->
3980 + <ProjectFileName Condition=" '$(ProjectFileName)' == '' ">$(MSBuildProjectFile)</ProjectFileName>
3981 + <!-- Example, MyProject.csproj -->
3982 + <ProjectExt Condition=" '$(ProjectExt)' == '' ">$(MSBuildProjectExtension)</ProjectExt>
3983 + <!-- Example, .csproj -->
3984 + <WinMDExpOutputWindowsMetadataFilename Condition="'$(WinMDExpOutputWindowsMetadataFilename)' == '' and '$(OutputType)' == 'winmdobj'">$(TargetName).winmd</WinMDExpOutputWindowsMetadataFilename>
3985 + <TargetFileName Condition=" '$(TargetFileName)' == '' and '$(OutputType)' == 'winmdobj'">$(WinMDExpOutputWindowsMetadataFilename)</TargetFileName>
3986 + <TargetFileName Condition=" '$(TargetFileName)' == '' ">$(TargetName)$(TargetExt)</TargetFileName>
3987 + <!-- Example, MyAssembly.dll -->
3988 + </PropertyGroup>
3989 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3990 + <!--
3991 + The PublishableProject property is used when invoking the publish target on a solution that
3992 + contains multiple projects. The property determines which projects should be published, and
3993 + which projects should be skipped in the publish target. By default any "Windows Application"
3994 + or "Console Application" project type is publishable. However, a project that would otherwise
3995 + be published can be skipped by defining the PublishableProject property in the project itself.
3996 + -->
3997 + <_DeploymentPublishableProjectDefault Condition="'$(OutputType)'=='winexe' or '$(OutputType)'=='exe' or '$(OutputType)'=='appcontainerexe'">true</_DeploymentPublishableProjectDefault>
3998 + <PublishableProject Condition="'$(PublishableProject)'==''">$(_DeploymentPublishableProjectDefault)</PublishableProject>
3999 + <_DeploymentTargetApplicationManifestFileName Condition="'$(OutputType)'=='library'">Native.$(AssemblyName).manifest</_DeploymentTargetApplicationManifestFileName>
4000 + <!-- Example, Native.MyAssembly.manifest -->
4001 + <_DeploymentTargetApplicationManifestFileName Condition="'$(OutputType)'=='winexe'">$(TargetFileName).manifest</_DeploymentTargetApplicationManifestFileName>
4002 + <!-- Example, MyAssembly.exe.manifest -->
4003 + <_DeploymentTargetApplicationManifestFileName Condition="'$(OutputType)'=='exe'">$(TargetFileName).manifest</_DeploymentTargetApplicationManifestFileName>
4004 + <!-- Example, MyAssembly.exe.manifest -->
4005 + <_DeploymentTargetApplicationManifestFileName Condition="'$(OutputType)'=='appcontainerexe'">$(TargetFileName).manifest</_DeploymentTargetApplicationManifestFileName>
4006 + <!-- Example, MyAssembly.exe.manifest -->
4007 + <TargetDeployManifestFileName Condition="'$(TargetDeployManifestFileName)' == '' and '$(HostInBrowser)' != 'true'">$(AssemblyName).application</TargetDeployManifestFileName>
4008 + <!-- Example, MyAssembly.application -->
4009 + <TargetDeployManifestFileName Condition="'$(TargetDeployManifestFileName)' == '' and '$(HostInBrowser)' == 'true'">$(AssemblyName).xbap</TargetDeployManifestFileName>
4010 + <!-- Example, MyAssembly.xbap -->
4011 + <GenerateClickOnceManifests Condition="'$(OutputType)'=='winexe' or '$(OutputType)'=='exe' or '$(OutputType)'=='appcontainerexe'">$(GenerateManifests)</GenerateClickOnceManifests>
4012 + <_DeploymentApplicationManifestIdentity Condition="'$(OutputType)'=='library'">Native.$(AssemblyName)</_DeploymentApplicationManifestIdentity>
4013 + <_DeploymentApplicationManifestIdentity Condition="'$(OutputType)'=='winexe'">$(AssemblyName).exe</_DeploymentApplicationManifestIdentity>
4014 + <_DeploymentApplicationManifestIdentity Condition="'$(OutputType)'=='exe'">$(AssemblyName).exe</_DeploymentApplicationManifestIdentity>
4015 + <_DeploymentApplicationManifestIdentity Condition="'$(OutputType)'=='appcontainerexe'">$(AssemblyName).exe</_DeploymentApplicationManifestIdentity>
4016 + <_DeploymentDeployManifestIdentity Condition="'$(HostInBrowser)' != 'true'">$(AssemblyName).application</_DeploymentDeployManifestIdentity>
4017 + <_DeploymentDeployManifestIdentity Condition="'$(HostInBrowser)' == 'true'">$(AssemblyName).xbap</_DeploymentDeployManifestIdentity>
4018 + <_DeploymentFileMappingExtension Condition="'$(MapFileExtensions)'=='true'">.deploy</_DeploymentFileMappingExtension>
4019 + <_DeploymentFileMappingExtension Condition="'$(MapFileExtensions)'!='true'" />
4020 + <_DeploymentBuiltUpdateInterval Condition="'$(UpdatePeriodically)'=='true'">$(UpdateInterval)</_DeploymentBuiltUpdateInterval>
4021 + <_DeploymentBuiltUpdateIntervalUnits Condition="'$(UpdatePeriodically)'=='true'">$(UpdateIntervalUnits)</_DeploymentBuiltUpdateIntervalUnits>
4022 + <_DeploymentBuiltUpdateInterval Condition="'$(UpdatePeriodically)'!='true'">0</_DeploymentBuiltUpdateInterval>
4023 + <_DeploymentBuiltUpdateIntervalUnits Condition="'$(UpdatePeriodically)'!='true'">Days</_DeploymentBuiltUpdateIntervalUnits>
4024 + <_DeploymentBuiltMinimumRequiredVersion Condition="'$(UpdateRequired)'=='true' and '$(Install)'=='true'">$(MinimumRequiredVersion)</_DeploymentBuiltMinimumRequiredVersion>
4025 + <_DeploymentLauncherBased Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'">true</_DeploymentLauncherBased>
4026 + <MaxTargetPath Condition="'$(MaxTargetPath)'==''">100</MaxTargetPath>
4027 + </PropertyGroup>
4028 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4029 + <!--
4030 + By default, GenerateApplicationManifest puts all satellite assemblies to the manifest
4031 + record by default by setting TargetCulture to *.
4032 + -->
4033 + <TargetCulture Condition="'$(TargetCulture)'==''">*</TargetCulture>
4034 + <FallbackCulture Condition="'$(UICulture)'!='' and '$(FallbackCulture)'==''">$(UICulture)</FallbackCulture>
4035 + </PropertyGroup>
4036 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4037 + <!-- Not used any more-->
4038 + <_OutputPathItem Include="$(OutDir)" />
4039 + <_UnmanagedRegistrationCache Include="$(BaseIntermediateOutputPath)$(MSBuildProjectFile).UnmanagedRegistration.cache" />
4040 + <_ResolveComReferenceCache Include="$(IntermediateOutputPath)$(MSBuildProjectFile).ResolveComReference.cache" />
4041 + </ItemGroup>
4042 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4043 + <!-- Example, C:\MyProjects\MyProject\bin\Debug\ -->
4044 + <!--
4045 + Condition intentionally omitted on this one, because it causes problems
4046 + when we pick up the value of an environment variable named TargetDir
4047 + -->
4048 + <TargetDir Condition="'$(OutDir)' != ''">$([MSBuild]::Escape($([System.IO.Path]::GetFullPath(`$([System.IO.Path]::Combine(`$(MSBuildProjectDirectory)`, `$(OutDir)`))`))))</TargetDir>
4049 + <!-- Example, C:\MyProjects\MyProject\bin\Debug\MyAssembly.dll -->
4050 + <TargetPath Condition=" '$(TargetPath)' == '' ">$(TargetDir)$(TargetFileName)</TargetPath>
4051 + <TargetRefPath Condition=" '$(TargetRefPath)' == '' and '$(ProduceReferenceAssembly)' == 'true' ">$([MSBuild]::NormalizePath($(TargetDir), 'ref', $(TargetFileName)))</TargetRefPath>
4052 + <!-- Example, C:\MyProjects\MyProject\ -->
4053 + <ProjectDir Condition=" '$(ProjectDir)' == '' ">$([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))</ProjectDir>
4054 + <!-- Example, C:\MyProjects\MyProject\MyProject.csproj -->
4055 + <ProjectPath Condition=" '$(ProjectPath)' == '' ">$(ProjectDir)$(ProjectFileName)</ProjectPath>
4056 + </PropertyGroup>
4057 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4058 + <!-- This is not used here but remains for backwards compatibility -->
4059 + <AppConfigFileDestination Include="$(OutDir)$(TargetFileName).config" />
4060 + </ItemGroup>
4061 + <!--
4062 + IDE Macros available only from integrated builds.
4063 + The following properties are 'macros' that are available via IDE for
4064 + pre and post build steps. However, they are not defined when directly building
4065 + a project from the command line, only when building a solution.
4066 + -->
4067 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4068 + <DevEnvDir Condition="'$(DevEnvDir)'==''">*Undefined*</DevEnvDir>
4069 + <SolutionName Condition="'$(SolutionName)'==''">*Undefined*</SolutionName>
4070 + <!-- Example, MySolution -->
4071 + <SolutionFileName Condition="'$(SolutionFileName)'==''">*Undefined*</SolutionFileName>
4072 + <!-- Example, MySolution.sln -->
4073 + <SolutionPath Condition="'$(SolutionPath)'==''">*Undefined*</SolutionPath>
4074 + <!-- Example, f:\MySolutions\MySolution\MySolution.sln -->
4075 + <SolutionDir Condition="'$(SolutionDir)'==''">*Undefined*</SolutionDir>
4076 + <!-- Example, f:\MySolutions\MySolution\ -->
4077 + <SolutionExt Condition="'$(SolutionExt)'==''">*Undefined*</SolutionExt>
4078 + <!-- Example, .sln -->
4079 + </PropertyGroup>
4080 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4081 + <GenerateBindingRedirectsOutputType Condition="'$(OutputType)'=='exe' or '$(OutputType)'=='winexe'">true</GenerateBindingRedirectsOutputType>
4082 + <!-- It would be a breaking change to automatically turn on binding redirects for existing projects, so turn them on only when opting into a new framework. -->
4083 + <AutoGenerateBindingRedirects Condition="'$(AutoGenerateBindingRedirects)' == '' and '$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(TargetFrameworkVersion.TrimStart(vV))' &gt;= '4.7.2'">true</AutoGenerateBindingRedirects>
4084 + </PropertyGroup>
4085 + <PropertyGroup Condition="'$(AutoUnifyAssemblyReferences)' == ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4086 + <AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>
4087 + <AutoUnifyAssemblyReferences Condition="'$(GenerateBindingRedirectsOutputType)' == 'true' and '$(AutoGenerateBindingRedirects)' != 'true'">false</AutoUnifyAssemblyReferences>
4088 + </PropertyGroup>
4089 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4090 + <CleanFile Condition="'$(CleanFile)'==''">$(MSBuildProjectFile).FileListAbsolute.txt</CleanFile>
4091 + <!-- During DesignTime Builds, skip project reference build as Design time is only queueing information.-->
4092 + <BuildProjectReferences Condition="'$(BuildProjectReferences)' == '' and '$(DesignTimeBuild)' == 'true'">false</BuildProjectReferences>
4093 + <!-- By default we will build (and if applicable, clean) all project references. But this can be used to disable that-->
4094 + <BuildProjectReferences Condition="'$(BuildProjectReferences)' == ''">true</BuildProjectReferences>
4095 + <BuildInParallel Condition="'$(BuildInParallel)' == ''">true</BuildInParallel>
4096 + <_ResolveReferenceDependencies Condition="'$(_ResolveReferenceDependencies)' == ''">false</_ResolveReferenceDependencies>
4097 + <_GetChildProjectCopyToOutputDirectoryItems Condition="'$(_GetChildProjectCopyToOutputDirectoryItems)' == ''">true</_GetChildProjectCopyToOutputDirectoryItems>
4098 + <OverwriteReadOnlyFiles Condition="'$(OverwriteReadOnlyFiles)' == ''">false</OverwriteReadOnlyFiles>
4099 + <ComReferenceNoClassMembers Condition="'$(ComReferenceNoClassMembers)' == ''">false</ComReferenceNoClassMembers>
4100 + </PropertyGroup>
4101 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4102 + <_GenerateBindingRedirectsIntermediateAppConfig>$(IntermediateOutputPath)$(TargetFileName).config</_GenerateBindingRedirectsIntermediateAppConfig>
4103 + </PropertyGroup>
4104 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4105 + <IntermediateAssembly Include="$(IntermediateOutputPath)$(TargetName)$(TargetExt)" />
4106 + <FinalDocFile Include="@(DocFileItem->'$(OutDir)%(Filename)%(Extension)')" />
4107 + <CopyUpToDateMarker Include="$([MSBuild]::NormalizePath('$(MSBuildProjectDirectory)', '$(IntermediateOutputPath)', '$(MSBuildProjectFile).CopyComplete'))" />
4108 + </ItemGroup>
4109 + <ItemGroup Condition="'$(ProduceReferenceAssembly)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4110 + <IntermediateRefAssembly Include="$(IntermediateOutputPath)ref\$(TargetName)$(TargetExt)" Condition="'@(IntermediateRefAssembly)' == ''" />
4111 + <CreateDirectory Include="@(IntermediateRefAssembly->'%(RootDir)%(Directory)')" />
4112 + <CreateDirectory Include="$(OutDir)ref" />
4113 + </ItemGroup>
4114 + <ItemGroup Condition="'$(_DebugSymbolsProduced)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4115 + <_DebugSymbolsIntermediatePath Include="$(IntermediateOutputPath)$(TargetName).compile.pdb" Condition="'$(OutputType)' == 'winmdobj' and '@(_DebugSymbolsIntermediatePath)' == ''" />
4116 + <_DebugSymbolsIntermediatePath Include="$(IntermediateOutputPath)$(TargetName).pdb" Condition="'$(OutputType)' != 'winmdobj' and '@(_DebugSymbolsIntermediatePath)' == ''" />
4117 + <_DebugSymbolsOutputPath Include="@(_DebugSymbolsIntermediatePath->'$(OutDir)%(Filename)%(Extension)')" />
4118 + </ItemGroup>
4119 + <PropertyGroup Condition="'$(_DebugSymbolsProduced)' == 'true' and '$(OutputType)' == 'winmdobj'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4120 + <WinMDExpOutputPdb Condition="'$(WinMDExpOutputPdb)' == ''">$(IntermediateOutputPath)$(TargetName).pdb</WinMDExpOutputPdb>
4121 + <_WinMDDebugSymbolsOutputPath>$([System.IO.Path]::Combine('$(OutDir)', $([System.IO.Path]::GetFileName('$(WinMDExpOutputPdb)'))))</_WinMDDebugSymbolsOutputPath>
4122 + </PropertyGroup>
4123 + <PropertyGroup Condition="'$(OutputType)' == 'winmdobj' and '$(DocumentationFile)'!=''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4124 + <WinMDOutputDocumentationFile Condition="'$(WinMDOutputDocumentationFile)' == ''">$(IntermediateOutputPath)$(TargetName).xml</WinMDOutputDocumentationFile>
4125 + <_WinMDDocFileOutputPath>$([System.IO.Path]::Combine('$(OutDir)', $([System.IO.Path]::GetFileName('$(WinMDOutputDocumentationFile)'))))</_WinMDDocFileOutputPath>
4126 + </PropertyGroup>
4127 + <PropertyGroup Condition="'$(WinMDExpOutputWindowsMetadataFilename)' != ''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4128 + <_IntermediateWindowsMetadataPath>$(IntermediateOutputPath)$(WinMDExpOutputWindowsMetadataFilename)</_IntermediateWindowsMetadataPath>
4129 + <_WindowsMetadataOutputPath>$(OutDir)$(WinMDExpOutputWindowsMetadataFilename)</_WindowsMetadataOutputPath>
4130 + </PropertyGroup>
4131 + <ItemGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4132 + <!-- Create an item for entry point of the ClickOnce application (Example: WindowsApplication1.exe) -->
4133 + <_DeploymentManifestEntryPoint Include="@(IntermediateAssembly)">
4134 + <TargetPath>$(TargetFileName)</TargetPath>
4135 + </_DeploymentManifestEntryPoint>
4136 + <!-- Create an item for the application icon if one exists in the project (Example: app.ico) -->
4137 + <!-- NOTE: The item Include and the Exists function are operating relative to the PROJECT (.csproj, .vbproj etc.) directory in this case -->
4138 + <_DeploymentManifestIconFile Include="$(ApplicationIcon)" Condition="Exists('$(ApplicationIcon)')">
4139 + <TargetPath>$(ApplicationIcon)</TargetPath>
4140 + </_DeploymentManifestIconFile>
4141 + <!-- Create an item for the output application manifest (Example: WindowsApplication1.exe.manifeset) -->
4142 + <ApplicationManifest Include="$(IntermediateOutputPath)$(_DeploymentTargetApplicationManifestFileName)">
4143 + <TargetPath>$(_DeploymentTargetApplicationManifestFileName)</TargetPath>
4144 + </ApplicationManifest>
4145 + <!-- Create an item for the final application manifest (Example: WindowsApplication1.exe.manifeset)
4146 + This item represents the final output application manifest used for project-to-project
4147 + references and for copying to the publish output location. -->
4148 + <_ApplicationManifestFinal Include="$(OutDir)$(_DeploymentTargetApplicationManifestFileName)">
4149 + <TargetPath>$(_DeploymentTargetApplicationManifestFileName)</TargetPath>
4150 + </_ApplicationManifestFinal>
4151 + <!-- Create an item for the output deploy manifest (Example: WindowsApplication1.application) -->
4152 + <DeployManifest Include="$(IntermediateOutputPath)$(TargetDeployManifestFileName)">
4153 + <TargetPath>$(TargetDeployManifestFileName)</TargetPath>
4154 + </DeployManifest>
4155 + <!-- Create an item for the intermediate trust info file -->
4156 + <_DeploymentIntermediateTrustInfoFile Include="$(IntermediateOutputPath)$(TargetName).TrustInfo.xml" Condition="'$(TargetZone)'!=''" />
4157 + </ItemGroup>
4158 + <!--
4159 + Determine the <deploymentProvider> (_DeploymentUrl) for the ClickOnce deployment manifest.
4160 + Prefer the UpdateUrl, falling back to InstallUrl or PublishUrl if not specified.
4161 + If the UpdateUrl is specified then _DeploymentUrl is always set to the UpdateUrl.
4162 + Otherwise, only set the _DeploymentUrl if it's an installed app and updates are enabled.
4163 + -->
4164 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4165 + <_DeploymentUrl Condition="'$(_DeploymentUrl)'==''">$(UpdateUrl)</_DeploymentUrl>
4166 + <_DeploymentUrl Condition="'$(_DeploymentUrl)'==''">$(InstallUrl)</_DeploymentUrl>
4167 + <_DeploymentUrl Condition="'$(_DeploymentUrl)'==''">$(PublishUrl)</_DeploymentUrl>
4168 + <_DeploymentUrl Condition="!('$(UpdateUrl)'=='') and '$(Install)'=='false'" />
4169 + <_DeploymentUrl Condition="'$(_DeploymentUrl)'!=''">$(_DeploymentUrl)$(TargetDeployManifestFileName)</_DeploymentUrl>
4170 + <!--
4171 + Need to explicitly blank out the _DeploymentUrl when it's not used. Otherwise an
4172 + inappropriate value may be used. For example a local path from the PublishUrl
4173 + is something we never want to see in the manifest because it means you could
4174 + only install the app from that machine.
4175 + -->
4176 + <_DeploymentUrl Condition="'$(UpdateUrl)'=='' and !('$(Install)'=='true' and '$(UpdateEnabled)'=='true')" />
4177 + <_DeploymentUrl Condition="'$(ExcludeDeploymentUrl)'=='true'" />
4178 + </PropertyGroup>
4179 + <!-- Determine the URLs for the bootstrapper. -->
4180 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4181 + <_DeploymentApplicationUrl Condition="'$(IsWebBootstrapper)'=='true'">$(InstallUrl)</_DeploymentApplicationUrl>
4182 + <_DeploymentApplicationUrl Condition="'$(IsWebBootstrapper)'=='true' and '$(InstallUrl)'==''">$(PublishUrl)</_DeploymentApplicationUrl>
4183 + <_DeploymentComponentsUrl Condition="'$(BootstrapperComponentsLocation)'=='Absolute'">$(BootstrapperComponentsUrl)</_DeploymentComponentsUrl>
4184 + </PropertyGroup>
4185 + <!-- Output location for publish target. -->
4186 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4187 + <PublishDir Condition="'$(PublishDir)' != '' and !HasTrailingSlash('$(PublishDir)')">$(PublishDir)\</PublishDir>
4188 + <PublishDir Condition="'$(PublishDir)'==''">$(OutputPath)app.publish\</PublishDir>
4189 + </PropertyGroup>
4190 + <!--
4191 + ProcessorArchitecture is the target processor architecture.
4192 + -->
4193 + <PropertyGroup Condition="'$(ProcessorArchitecture)'==''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4194 + <!--
4195 + If ProcessorArchitecture is not set, set it to PlatformTarget
4196 + Note: if $(PlatformTarget) is also blank resolve assembly reference defaults to msil which is the
4197 + desired behavior in this case
4198 + -->
4199 + <ProcessorArchitecture>$(PlatformTarget)</ProcessorArchitecture>
4200 + <!--
4201 + If Processor architecture is not set and PlatformTarget is a known target translate the
4202 + PlatformTarget into something ResolveAssemblyReference knows about
4203 + -->
4204 + <ProcessorArchitecture Condition=" '$(PlatformTarget)' == 'AnyCpu' ">msil</ProcessorArchitecture>
4205 + <ProcessorArchitecture Condition=" '$(PlatformTarget)' == 'x64' ">amd64</ProcessorArchitecture>
4206 + <ProcessorArchitecture Condition=" '$(PlatformTarget)' == 'Itanium' ">ia64</ProcessorArchitecture>
4207 + <ProcessorArchitecture Condition=" '$(PlatformTarget)' == 'x86' ">x86</ProcessorArchitecture>
4208 + <ProcessorArchitecture Condition=" '$(PlatformTarget)' == 'ARM' ">arm</ProcessorArchitecture>
4209 + </PropertyGroup>
4210 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4211 + <ConsiderPlatformAsProcessorArchitecture Condition="'$(ConsiderPlatformAsProcessorArchitecture)' == ''">true</ConsiderPlatformAsProcessorArchitecture>
4212 + </PropertyGroup>
4213 + <PropertyGroup Condition="'$(ProcessorArchitecture)' == '' and '$(ConsiderPlatformAsProcessorArchitecture)' == 'true'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4214 + <!-- We need to do this here because if we were to just compare against platform visual would parse them out as available platforms which may not be the case -->
4215 + <ProcessorArchitectureAsPlatform>$(Platform)</ProcessorArchitectureAsPlatform>
4216 + <ProcessorArchitecture Condition=" '$(ProcessorArchitectureAsPlatform)' == 'AnyCpu' or '$(ProcessorArchitectureAsPlatform)' == 'Any Cpu'">msil</ProcessorArchitecture>
4217 + <ProcessorArchitecture Condition=" '$(ProcessorArchitectureAsPlatform)' == 'x64' or '$(ProcessorArchitectureAsPlatform)' == 'amd64'">amd64</ProcessorArchitecture>
4218 + <ProcessorArchitecture Condition=" '$(ProcessorArchitectureAsPlatform)' == 'Itanium' ">ia64</ProcessorArchitecture>
4219 + <ProcessorArchitecture Condition=" '$(ProcessorArchitectureAsPlatform)' == 'x86' or '$(ProcessorArchitectureAsPlatform)' == 'win32'">x86</ProcessorArchitecture>
4220 + <ProcessorArchitecture Condition=" '$(ProcessorArchitectureAsPlatform)' == 'ARM' ">arm</ProcessorArchitecture>
4221 + <!--For compatibility with the 4.0 behavior, if not set above, default to the environment. To override this, set ProcessorArchitecture explicitly. We also need to disable the warning since we do not know if what the environment is set to is correct-->
4222 + <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch Condition="'$(ProcessorArchitecture)'==''">None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
4223 + <ProcessorArchitecture Condition="'$(ProcessorArchitecture)'==''">$(PROCESSOR_ARCHITECTURE)</ProcessorArchitecture>
4224 + </PropertyGroup>
4225 + <!-- Sensible defaults for the most-commonly-desired MSBuildRuntime and MSBuildArchitecture values. The Core and Mono runtimes do not currently support specifying task architecture or runtime.
4226 + If support for out-of-proc task execution is added on other runtimes, make sure each task's logic is checked against the current state of support. -->
4227 + <PropertyGroup Condition="'$(DisableOutOfProcTaskHost)' == '' and '$(MSBuildRuntimeType)' == 'Full'" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4228 + <TargetFrameworkAsMSBuildRuntime Condition="'$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5'">CLR2</TargetFrameworkAsMSBuildRuntime>
4229 + <TargetFrameworkAsMSBuildRuntime Condition="'$(TargetFrameworkVersion)' == 'v4.0' or '$(TargetFrameworkVersion)' == 'v4.5'">CLR4</TargetFrameworkAsMSBuildRuntime>
4230 + <TargetFrameworkAsMSBuildRuntime Condition="'$(TargetFrameworkAsMSBuildRuntime)' == ''">CurrentRuntime</TargetFrameworkAsMSBuildRuntime>
4231 + <PlatformTargetAsMSBuildArchitectureExplicitlySet Condition="'$(PlatformTargetAsMSBuildArchitecture)' != ''">true</PlatformTargetAsMSBuildArchitectureExplicitlySet>
4232 + <PlatformTargetAsMSBuildArchitectureExplicitlySet Condition="'$(PlatformTargetAsMSBuildArchitecture)' == ''">false</PlatformTargetAsMSBuildArchitectureExplicitlySet>
4233 + <PlatformTargetAsMSBuildArchitecture Condition="'$(PlatformTarget)' == 'x86' or ('$(PlatformTarget)' == 'x64' and '$(MSBuildExtensionsPath64)' != '')">$(PlatformTarget)</PlatformTargetAsMSBuildArchitecture>
4234 + <PlatformTargetAsMSBuildArchitecture Condition="'$(PlatformTarget)' == 'arm'">x86</PlatformTargetAsMSBuildArchitecture>
4235 + <PlatformTargetAsMSBuildArchitecture Condition="('$(PlatformTarget)' == 'ia64' and '$(MSBuildExtensionsPath64)' != '')">x64</PlatformTargetAsMSBuildArchitecture>
4236 + <PlatformTargetAsMSBuildArchitecture Condition="'$(PlatformTargetAsMSBuildArchitecture)' == ''">CurrentArchitecture</PlatformTargetAsMSBuildArchitecture>
4237 + </PropertyGroup>
4238 + <!-- Flavor is the project flavor. For example, Client, Smart Devices, SQL Server, etc. -->
4239 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4240 + <ProjectFlavor Condition="'$(ProjectFlavor)'==''">Client</ProjectFlavor>
4241 + </PropertyGroup>
4242 + <!--
4243 + The default for compilers is to not delay-sign. If $(DelaySign) is false, let the compiler
4244 + use its default rather than forcing a no-delay-sign flag to be passed in. This is so that
4245 + attributes in the source code can override this decision.
4246 + -->
4247 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4248 + <DelaySign Condition="'$(SignAssembly)' != 'true'">false</DelaySign>
4249 + <DelaySign Condition="'$(DelaySign)'!='true'" />
4250 + </PropertyGroup>
4251 + <!-- These properties control web reference proxy generation. -->
4252 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4253 + <WebReference_EnableProperties Condition=" '$(WebReference_EnableProperties)' == '' ">true</WebReference_EnableProperties>
4254 + <WebReference_EnableSQLTypes Condition=" '$(WebReference_EnableSQLTypes)' == '' ">true</WebReference_EnableSQLTypes>
4255 + <WebReference_EnableLegacyEventingModel Condition=" '$(WebReference_EnableLegacyEventingModel)' == '' ">false</WebReference_EnableLegacyEventingModel>
4256 + </PropertyGroup>
4257 + <!--
4258 + These parameters control where to look in the registry for directories to search for
4259 + assemblies in the assembly resolution tasks.
4260 + -->
4261 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4262 + <AssemblyFoldersSuffix Condition=" '$(AssemblyFoldersSuffix)' == '' ">AssemblyFoldersEx</AssemblyFoldersSuffix>
4263 + <FrameworkRegistryBase Condition=" '$(FrameworkRegistryBase)' == '' ">Software\Microsoft\$(TargetFrameworkIdentifier)</FrameworkRegistryBase>
4264 + <TargetPlatformRegistryBase Condition="'$(TargetPlatformRegistryBase)' == ''">Software\Microsoft\Microsoft SDKs\$(TargetPlatformIdentifier)</TargetPlatformRegistryBase>
4265 + <AssemblyFoldersConfigFile Condition="'$(AssemblyFoldersConfigFile)' == ''">$(MSBuildToolsPath32)\AssemblyFolders.config</AssemblyFoldersConfigFile>
4266 + <AssemblyFoldersConfigFileSearchPath Condition="Exists('$(AssemblyFoldersConfigFile)')">{AssemblyFoldersFromConfig:$(AssemblyFoldersConfigFile),$(TargetFrameworkVersion)};</AssemblyFoldersConfigFileSearchPath>
4267 + <!--
4268 + The SearchPaths property is set to find assemblies in the following order:
4269 +
4270 + (1) Files from current project - indicated by {CandidateAssemblyFiles}
4271 + (2) $(ReferencePath) - the reference path property, which comes from the .USER file.
4272 + (3) The hintpath from the referenced item itself, indicated by {HintPathFromItem}.
4273 + (4) The directory of MSBuild's "target" runtime from GetFrameworkPath.
4274 + The "target" runtime folder is the folder of the runtime that MSBuild is a part of.
4275 + (5) Registered assembly folders, indicated by {Registry:*,*,*}
4276 + (6) Assembly folders from AssemblyFolders.config file (provided by Visual Studio Dev15+).
4277 + (7) Legacy registered assembly folders, indicated by {AssemblyFolders}
4278 + (8) Resolve to the GAC.
4279 + (9) Treat the reference's Include as if it were a real file name.
4280 + (10) Look in the application's output folder (like bin\debug)
4281 + -->
4282 + <AssemblySearchPaths Condition=" '$(AssemblySearchPaths)' == ''">
4283 + {CandidateAssemblyFiles};
4284 + $(ReferencePath);
4285 + {HintPathFromItem};
4286 + {TargetFrameworkDirectory};
4287 + $(AssemblyFoldersConfigFileSearchPath)
4288 + {Registry:$(FrameworkRegistryBase),$(TargetFrameworkVersion),$(AssemblyFoldersSuffix)$(AssemblyFoldersExConditions)};
4289 + {AssemblyFolders};
4290 + {GAC};
4291 + {RawFileName};
4292 + $(OutDir)
4293 + </AssemblySearchPaths>
4294 + <!--
4295 + These are the extensions that assembly reference resolution will consider for resolution.
4296 + Add new extensions here if you want to add new file types to consider (for example, .metadata_dll).
4297 + Put the most likely extensions first for reference resolution speed.
4298 + -->
4299 + <AllowedReferenceAssemblyFileExtensions Condition=" '$(AllowedReferenceAssemblyFileExtensions)' == '' ">
4300 + .winmd;
4301 + .dll;
4302 + .exe
4303 + </AllowedReferenceAssemblyFileExtensions>
4304 + <!--
4305 + These are the extensions that reference resolution will consider when looking for files related
4306 + to resolved references. Add new extensions here if you want to add new file types to consider.
4307 + -->
4308 + <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
4309 + .pdb;
4310 + .xml;
4311 + .pri;
4312 + .dll.config;
4313 + .exe.config
4314 + </AllowedReferenceRelatedFileExtensions>
4315 + <!--
4316 + These names are used when determining which TargetFramework subset to use. If the any of the FullReferenceAssemblyNames
4317 + are seen in the list of client subsets, RAR will assume that no client subset is being used. The list is semicolon seperated
4318 + For example : Full;Complete;AllThere
4319 + -->
4320 + <FullReferenceAssemblyNames Condition="'$(FullReferenceAssemblyNames)' == ''">Full</FullReferenceAssemblyNames>
4321 + </PropertyGroup>
4322 + <!-- ContinueOnError takes 3 values: WarnAndContinue (true), ErrorAndStop (false), and ErrorAndContinue.
4323 + Default to ErrorAndStop, since that matches the behaviour in previous versions, and what users
4324 + typically expect -->
4325 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4326 + <ContinueOnError Condition="'$(ContinueOnError)' == ''">false</ContinueOnError>
4327 + </PropertyGroup>
4328 + <!-- Users familiar with how some other repos work try to use NoWarn with MSBuild in place of MSBuildWarningsAsMessages. -->
4329 + <PropertyGroup Condition="$([MSBuild]::AreFeaturesEnabled('16.8'))" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4330 + <MSBuildWarningsAsMessages Condition="'$(MSBuildWarningsAsMessages)'==''">$(NoWarn)</MSBuildWarningsAsMessages>
4331 + <MSBuildWarningsAsErrors Condition="'$(MSBuildWarningsAsErrors)'==''">$(WarningsAsErrors)</MSBuildWarningsAsErrors>
4332 + </PropertyGroup>
4333 + <!-- Common Project System support -->
4334 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4335 + <CommonXamlResourcesDirectory Condition=" '$(CommonXamlResourcesDirectory)' == '' ">$(MSBuildThisFileDirectory)$(LangName)\</CommonXamlResourcesDirectory>
4336 + </PropertyGroup>
4337 + <!-- We need to fallback to en-US in case the xaml rules are not localized (possibly happen on community languages). -->
4338 + <PropertyGroup Condition="!Exists('$(CommonXamlResourcesDirectory)')" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4339 + <CommonXamlResourcesDirectory>$(MSBuildThisFileDirectory)en-US\</CommonXamlResourcesDirectory>
4340 + </PropertyGroup>
4341 + <ItemGroup Condition=" '$(DefineCommonItemSchemas)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4342 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)ProjectItemsSchema.xaml" />
4343 + <PropertyPageSchema Include="&#xD;&#xA; $(CommonXamlResourcesDirectory)General.xaml;&#xD;&#xA; $(CommonXamlResourcesDirectory)Debugger_General.xaml">
4344 + <Context>Project</Context>
4345 + </PropertyPageSchema>
4346 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)General.BrowseObject.xaml">
4347 + <Context>BrowseObject</Context>
4348 + </PropertyPageSchema>
4349 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)General_File.xaml">
4350 + <Context>File</Context>
4351 + </PropertyPageSchema>
4352 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)SCC.xaml">
4353 + <Context>Invisible</Context>
4354 + </PropertyPageSchema>
4355 + <PropertyPageSchema Include="&#xD;&#xA; $(CommonXamlResourcesDirectory)Folder.xaml;&#xD;&#xA; $(CommonXamlResourcesDirectory)None.xaml;&#xD;&#xA; $(CommonXamlResourcesDirectory)Content.xaml;&#xD;&#xA; $(CommonXamlResourcesDirectory)EmbeddedResource.xaml;&#xD;&#xA; ">
4356 + <Context>File;BrowseObject</Context>
4357 + </PropertyPageSchema>
4358 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)SpecialFolder.xaml;">
4359 + <Context>File;ProjectSubscriptionService</Context>
4360 + </PropertyPageSchema>
4361 + </ItemGroup>
4362 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4363 + <DefineCommonReferenceSchemas Condition=" '$(DefineCommonReferenceSchemas)' == '' ">$(DefineCommonItemSchemas)</DefineCommonReferenceSchemas>
4364 + </PropertyGroup>
4365 + <ItemGroup Condition=" '$(DefineCommonReferenceSchemas)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4366 + <!-- Assembly references -->
4367 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)assemblyreference.xaml">
4368 + <Context>;BrowseObject</Context>
4369 + </PropertyPageSchema>
4370 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)ResolvedAssemblyReference.xaml">
4371 + <Context>ProjectSubscriptionService;BrowseObject</Context>
4372 + </PropertyPageSchema>
4373 + <!-- COM references -->
4374 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)COMReference.xaml">
4375 + <Context>;BrowseObject</Context>
4376 + </PropertyPageSchema>
4377 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)ResolvedCOMReference.xaml">
4378 + <Context>ProjectSubscriptionService;BrowseObject</Context>
4379 + </PropertyPageSchema>
4380 + <!-- Project references -->
4381 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)ProjectReference.xaml">
4382 + <Context>;BrowseObject</Context>
4383 + </PropertyPageSchema>
4384 + <PropertyPageSchema Include="$(CommonXamlResourcesDirectory)ResolvedProjectReference.xaml">
4385 + <Context>ProjectSubscriptionService;BrowseObject</Context>
4386 + </PropertyPageSchema>
4387 + </ItemGroup>
4388 + <ItemGroup Condition=" '$(DefineCommonCapabilities)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4389 + <ProjectCapability Include="&#xD;&#xA; AssemblyReferences;&#xD;&#xA; COMReferences;&#xD;&#xA; ProjectReferences;&#xD;&#xA; SharedProjectReferences;&#xD;&#xA; OutputGroups;&#xD;&#xA; AllTargetOutputGroups;&#xD;&#xA; VisualStudioWellKnownOutputGroups;&#xD;&#xA; SingleFileGenerators;&#xD;&#xA; DeclaredSourceItems;&#xD;&#xA; UserSourceItems;&#xD;&#xA; " />
4390 + <ProjectCapability Condition=" '$(TargetPlatformIdentifier)' == 'Windows' and '$(TargetPlatformVersion)' &lt; 8.0 " Include="BuildWindowsDesktopTarget" />
4391 + </ItemGroup>
4392 + <ItemDefinitionGroup Condition=" '$(DefineExplicitDefaults)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4393 + <None>
4394 + <CopyToOutputDirectory>Never</CopyToOutputDirectory>
4395 + </None>
4396 + <Content>
4397 + <CopyToOutputDirectory>Never</CopyToOutputDirectory>
4398 + </Content>
4399 + <Compile>
4400 + <CopyToOutputDirectory>Never</CopyToOutputDirectory>
4401 + </Compile>
4402 + <EmbeddedResource>
4403 + <CopyToOutputDirectory>Never</CopyToOutputDirectory>
4404 + </EmbeddedResource>
4405 + </ItemDefinitionGroup>
4406 + <!--
4407 + Target that allows targets consuming source control confirmation to establish a dependency on targets producing this information.
4408 +
4409 + Any target that reads SourceRevisionId, PrivateRepositoryUrl, SourceRoot, and other source control properties and items
4410 + should depend on this target and be conditioned on '$(SourceControlInformationFeatureSupported)' == 'true'.
4411 +
4412 + SourceRevisionId property uniquely identifies the source control revision of the repository the project belongs to.
4413 + For Git repositories this id is a commit hash, for TFVC repositories it's the changeset number, etc.
4414 +
4415 + PrivateRepositoryUrl property stores the URL of the repository supplied by the CI server or retrieved from source control manager.
4416 + Targets consuming this property shall not publish its value implicitly as it might inadvertently reveal an internal URL.
4417 + Instead, they shall only do so if the project sets PublishRepositoryUrl property to true. For example, the NuGet Pack target
4418 + may include the repository URL in the nuspec file generated for NuGet package produced by the project if PublishRepositoryUrl is true.
4419 +
4420 + SourceRoot item group lists all source roots that the project source files reside under and their mapping to source control server URLs,
4421 + if available. This includes both source files under source control as well as source files in source packages. SourceRoot items are
4422 + used by compilers to determine path map in deterministic build and by SourceLink provider, which maps local paths to URLs of source files
4423 + stored on the source control server.
4424 +
4425 + Source control information provider that sets these properties and items shall execute before this target (by including
4426 + InitializeSourceControlInformation in its BeforeTargets) and set source control properties and items that haven't been initialized yet.
4427 + -->
4428 + <Target Name="InitializeSourceControlInformation" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4429 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4430 + <SourceControlInformationFeatureSupported>true</SourceControlInformationFeatureSupported>
4431 + </PropertyGroup>
4432 + <!--
4433 + ***********************************************************************************************
4434 + ***********************************************************************************************
4435 + Build Section
4436 + ***********************************************************************************************
4437 + ***********************************************************************************************
4438 + -->
4439 + <Target Name="_AddOutputPathToGlobalPropertiesToRemove" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4440 + <PropertyGroup>
4441 + <_GlobalPropertiesToRemoveFromProjectReferences Condition="'$(PassOutputPathToReferencedProjects)'=='false'">$(_GlobalPropertiesToRemoveFromProjectReferences);OutputPath</_GlobalPropertiesToRemoveFromProjectReferences>
4442 + </PropertyGroup>
4443 + </Target>
4444 + <!--
4445 + ============================================================
4446 + _CheckForInvalidConfigurationAndPlatform
4447 +
4448 + This target checks for errors in statically defined properties. By setting BeforeTargets, we try
4449 + to ensure that the target runs before any build related targets.
4450 + If your target requires this check and is running as a BeforeTargets of one of the first targets
4451 + of $(BuildDependsOn), $(RebuildDependsOn), or $(CleanDependsOn) you will need to set your DependsOn
4452 + to this target.
4453 + ============================================================
4454 + -->
4455 + <Target Name="_CheckForInvalidConfigurationAndPlatform" BeforeTargets="$(BuildDependsOn);Build;$(RebuildDependsOn);Rebuild;$(CleanDependsOn);Clean" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4456 + <PropertyGroup>
4457 + <_InvalidConfigurationMessageText>The BaseOutputPath/OutputPath property is not set for project '$(MSBuildProjectFile)'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='$(_OriginalConfiguration)' Platform='$(_OriginalPlatform)'.</_InvalidConfigurationMessageText>
4458 + <_InvalidConfigurationMessageText Condition="'$(BuildingInsideVisualStudio)' == 'true'">$(_InvalidConfigurationMessageText) This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform.</_InvalidConfigurationMessageText>
4459 + <_InvalidConfigurationMessageText Condition="'$(BuildingInsideVisualStudio)' != 'true'">$(_InvalidConfigurationMessageText) You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project.</_InvalidConfigurationMessageText>
4460 + </PropertyGroup>
4461 + <Error Condition=" '$(_InvalidConfigurationError)' == 'true' " Text="$(_InvalidConfigurationMessageText)" />
4462 + <Warning Condition=" '$(_InvalidConfigurationWarning)' == 'true' " Text="$(_InvalidConfigurationMessageText)" />
4463 + <Message Condition="'$(DesignTimeBuild)' != 'true'" Text="Configuration=$(Configuration)" Importance="Low" />
4464 + <Message Condition="'$(DesignTimeBuild)' != 'true'" Text="Platform=$(Platform)" Importance="Low" />
4465 + <!-- Although we try to ensure a trailing slash, it's possible to circumvent this if the property is set on the command line -->
4466 + <Error Condition="'$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')" Text="The OutDir property must end with a trailing slash." />
4467 + <Error Condition="'$(IntermediateOutputPath)' != '' and !HasTrailingSlash('$(IntermediateOutputPath)')" Text="The IntermediateOutputPath must end with a trailing slash." />
4468 + <Error Condition="'$(BaseIntermediateOutputPath)' != '' and !HasTrailingSlash('$(BaseIntermediateOutputPath)')" Text="The BaseIntermediateOutputPath must end with a trailing slash." />
4469 + <!-- Also update the value of PlatformTargetAsMSBuildArchitecture per the value of Prefer32Bit. We are doing
4470 + this here because Prefer32Bit may be set anywhere in the targets, so we can't depend on it having the
4471 + correct value when we're trying to figure out PlatformTargetAsMSBuildArchitecture -->
4472 + <PropertyGroup Condition="'$(Prefer32Bit)' == 'true' and ('$(PlatformTarget)' == 'AnyCPU' or '$(PlatformTarget)' == '') and '$(PlatformTargetAsMSBuildArchitectureExplicitlySet)' != 'true'">
4473 + <PlatformTargetAsMSBuildArchitecture>x86</PlatformTargetAsMSBuildArchitecture>
4474 + </PropertyGroup>
4475 + <!--
4476 + Log an error if the user set MSBuildProjectExtensionsPath in the body of a project. In an SDK style project
4477 + if you set a value in the body, the value is not used by the top implicit import but is used by the bottom.
4478 + This can lead to confusing behavior and builds can fail for obscure reasons.
4479 + -->
4480 + <Error Condition=" '$(_InitialMSBuildProjectExtensionsPath)' != '' And '$(MSBuildProjectExtensionsPath)' != '$(_InitialMSBuildProjectExtensionsPath)' " Code="MSB3540" Text="The value of the property &quot;MSBuildProjectExtensionsPath&quot; was modified after it was used by MSBuild which can lead to unexpected build results. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" />
4481 + <!--
4482 + Log a warning if:
4483 + 1. $(EnableBaseIntermediateOutputPathMismatchWarning) is 'true'
4484 + 2. $(BaseIntermediateOutputPath) was set in the body of a project after its default value was set in Microsoft.Common.props
4485 + 3. $(BaseIntermediateOutputPath) is not the same as $(MSBuildProjectExtensionsPath)
4486 +
4487 + Similar to the error above, there are cases when users set $(BaseIntermediateOutputPath) in the body of their project and things build but only by coincidence.
4488 + MSBuild does not know if $(BaseIntermediateOutputPath) changing would cause problems so tools like NuGet must set $(EnableBaseIntermediateOutputPathMismatchWarning)
4489 + to 'true'.
4490 + -->
4491 + <Warning Condition=" '$(EnableBaseIntermediateOutputPathMismatchWarning)' == 'true' And '$(_InitialBaseIntermediateOutputPath)' != '$(BaseIntermediateOutputPath)' And '$(BaseIntermediateOutputPath)' != '$(MSBuildProjectExtensionsPath)' " Code="MSB3539" Text="The value of the property &quot;BaseIntermediateOutputPath&quot; was modified after it was used by MSBuild which can lead to unexpected build results. Tools such as NuGet will write outputs to the path specified by the &quot;MSBuildProjectExtensionsPath&quot; instead. To set this property, you must do so before Microsoft.Common.props is imported, for example by using Directory.Build.props. For more information, please visit https://go.microsoft.com/fwlink/?linkid=869650" />
4492 + </Target>
4493 + <!--
4494 + ============================================================
4495 + Build
4496 +
4497 + The main build entry point.
4498 + ============================================================
4499 + -->
4500 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4501 + <BuildDependsOn>
4502 + BeforeBuild;
4503 + CoreBuild;
4504 + AfterBuild
4505 + </BuildDependsOn>
4506 + </PropertyGroup>
4507 + <Target Name="Build" Condition=" '$(_InvalidConfigurationWarning)' != 'true' " DependsOnTargets="$(BuildDependsOn)" Returns="@(TargetPathWithTargetPlatformMoniker)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4508 + <!--
4509 + ============================================================
4510 + BeforeBuild
4511 +
4512 + Redefine this target in your project in order to run tasks just before Build
4513 + ============================================================
4514 + -->
4515 + <Target Name="BeforeBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4516 + <!--
4517 + ============================================================
4518 + AfterBuild
4519 +
4520 + Redefine this target in your project in order to run tasks just after Build
4521 + ============================================================
4522 + -->
4523 + <Target Name="AfterBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4524 + <!--
4525 + ============================================================
4526 + CoreBuild
4527 +
4528 + The core build step calls each of the build targets.
4529 + ============================================================
4530 + -->
4531 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4532 + <CoreBuildDependsOn>
4533 + BuildOnlySettings;
4534 + PrepareForBuild;
4535 + PreBuildEvent;
4536 + ResolveReferences;
4537 + PrepareResources;
4538 + ResolveKeySource;
4539 + Compile;
4540 + ExportWindowsMDFile;
4541 + UnmanagedUnregistration;
4542 + GenerateSerializationAssemblies;
4543 + CreateSatelliteAssemblies;
4544 + GenerateManifests;
4545 + GetTargetPath;
4546 + PrepareForRun;
4547 + UnmanagedRegistration;
4548 + IncrementalClean;
4549 + PostBuildEvent
4550 + </CoreBuildDependsOn>
4551 + </PropertyGroup>
4552 + <Target Name="CoreBuild" DependsOnTargets="$(CoreBuildDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4553 + <OnError ExecuteTargets="_TimeStampAfterCompile;PostBuildEvent" Condition="'$(RunPostBuildEvent)'=='Always' or '$(RunPostBuildEvent)'=='OnOutputUpdated'" />
4554 + <OnError ExecuteTargets="_CleanRecordFileWrites" />
4555 + </Target>
4556 + <!--
4557 + ============================================================
4558 + Rebuild
4559 +
4560 + Delete all intermediate and final build outputs, and then build the project from scratch.
4561 + ============================================================
4562 + -->
4563 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4564 + <_ProjectDefaultTargets Condition="'$(MSBuildProjectDefaultTargets)' != ''">$(MSBuildProjectDefaultTargets)</_ProjectDefaultTargets>
4565 + <_ProjectDefaultTargets Condition="'$(MSBuildProjectDefaultTargets)' == ''">Build</_ProjectDefaultTargets>
4566 + <RebuildDependsOn>
4567 + BeforeRebuild;
4568 + Clean;
4569 + $(_ProjectDefaultTargets);
4570 + AfterRebuild;
4571 + </RebuildDependsOn>
4572 + <RebuildDependsOn Condition=" '$(MSBuildProjectDefaultTargets)' == 'Rebuild' ">
4573 + BeforeRebuild;
4574 + Clean;
4575 + Build;
4576 + AfterRebuild;
4577 + </RebuildDependsOn>
4578 + </PropertyGroup>
4579 + <Target Name="Rebuild" Condition=" '$(_InvalidConfigurationWarning)' != 'true' " DependsOnTargets="$(RebuildDependsOn)" Returns="$(TargetPath)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4580 + <!--
4581 + ============================================================
4582 + BeforeRebuild
4583 +
4584 + Redefine this target in your project in order to run tasks just before Rebuild
4585 + ============================================================
4586 + -->
4587 + <Target Name="BeforeRebuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4588 + <!--
4589 + ============================================================
4590 + AfterRebuild
4591 +
4592 + Redefine this target in your project in order to run tasks just after Rebuild
4593 + ============================================================
4594 + -->
4595 + <Target Name="AfterRebuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4596 + <!--
4597 + ============================================================
4598 + BuildGenerateSources
4599 +
4600 + Redefine this target in your project in order to run tasks for BuildGenerateSources
4601 +
4602 + Set BuildPassReferences to enable P2P builds
4603 + ============================================================
4604 + -->
4605 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4606 + <BuildGenerateSourcesAction>Build</BuildGenerateSourcesAction>
4607 + </PropertyGroup>
4608 + <Target Name="BuildGenerateSources" DependsOnTargets="BuildGenerateSourcesTraverse;$(BuildGenerateSourcesAction)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4609 + <Target Name="BuildGenerateSourcesTraverse" DependsOnTargets="PrepareProjectReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4610 + <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="BuildGenerateSources" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework);" Condition="'$(BuildPassReferences)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '@(_MSBuildProjectReferenceExistent)' != '' and '%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true'" ContinueOnError="!$(BuildingProject)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)" />
4611 + </Target>
4612 + <!--
4613 + ============================================================
4614 + BuildCompile
4615 +
4616 + Redefine this target in your project in order to run tasks for BuildCompile
4617 + ============================================================
4618 + -->
4619 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4620 + <BuildCompileAction>Build</BuildCompileAction>
4621 + </PropertyGroup>
4622 + <Target Name="BuildCompile" DependsOnTargets="BuildCompileTraverse;$(BuildCompileAction)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4623 + <Target Name="BuildCompileTraverse" DependsOnTargets="PrepareProjectReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4624 + <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="BuildCompile" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" Condition="'$(BuildPassReferences)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '@(_MSBuildProjectReferenceExistent)' != '' and '%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true'" ContinueOnError="!$(BuildingProject)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)" />
4625 + </Target>
4626 + <!--
4627 + ============================================================
4628 + BuildLink
4629 +
4630 + Redefine this target in your project in order to run tasks for BuildLink
4631 + ============================================================
4632 + -->
4633 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4634 + <BuildLinkAction>Build</BuildLinkAction>
4635 + </PropertyGroup>
4636 + <Target Name="BuildLink" DependsOnTargets="BuildLinkTraverse;$(BuildLinkAction)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4637 + <Target Name="BuildLinkTraverse" DependsOnTargets="PrepareProjectReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4638 + <MSBuild Projects="@(_MSBuildProjectReferenceExistent)" Targets="BuildLink" BuildInParallel="$(BuildInParallel)" Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)" Condition="'$(BuildPassReferences)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '@(_MSBuildProjectReferenceExistent)' != '' and '%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true'" ContinueOnError="!$(BuildingProject)" RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)$(_GlobalPropertiesToRemoveFromProjectReferences)" />
4639 + </Target>
4640 + <!--
4641 + ============================================================
4642 + CopyRunEnvironmentFiles
4643 +
4644 + Copy environment files necessary to run the user's app to the final directory.
4645 + This is a public target that can be invoked by an IDE.
4646 +
4647 + This may be used by an IDE to make the app.config file available for running
4648 + the target app.
4649 + ============================================================
4650 + -->
4651 + <Target Name="CopyRunEnvironmentFiles" DependsOnTargets="PrepareForBuild;SetWin32ManifestProperties;_CopyAppConfigFile;_CleanRecordFileWrites" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4652 + <!--
4653 + ============================================================
4654 + Run
4655 +
4656 + Run the final build output if it is a .EXE
4657 + ============================================================
4658 + -->
4659 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4660 + <RunDependsOn />
4661 + </PropertyGroup>
4662 + <Target Name="Run" DependsOnTargets="$(RunDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4663 + <Error Text="Cannot run '$(TargetPath)' because project output type is not '.exe'" Condition="'$(TargetExt)'!='.exe'" />
4664 + <Exec Command="$(TargetPath) $(StartArguments)" WorkingDirectory="$(OutDir)" Condition=" '$(StartWorkingDirectory)' == '' " />
4665 + <Exec Command="$(TargetPath) $(StartArguments)" WorkingDirectory="$(StartWorkingDirectory)" Condition=" '$(StartWorkingDirectory)' != '' " />
4666 + </Target>
4667 + <!--
4668 + ***********************************************************************************************
4669 + ***********************************************************************************************
4670 + BuildOnlySettings Section
4671 + ***********************************************************************************************
4672 + ***********************************************************************************************
4673 + -->
4674 + <!--
4675 + ============================================================
4676 + BuildOnlySettings
4677 +
4678 + This target is called only when doing a real build. It is specifically not called during project load.
4679 + ============================================================
4680 + -->
4681 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4682 + <BuildingProject>false</BuildingProject>
4683 + </PropertyGroup>
4684 + <Target Name="BuildOnlySettings" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4685 + <PropertyGroup>
4686 + <BuildingProject>true</BuildingProject>
4687 + </PropertyGroup>
4688 + </Target>
4689 + <!--
4690 + ***********************************************************************************************
4691 + ***********************************************************************************************
4692 + PrepareForBuild Section
4693 + ***********************************************************************************************
4694 + ***********************************************************************************************
4695 + -->
4696 + <!--
4697 + ============================================================
4698 + PrepareForBuild
4699 +
4700 + Prepare the prerequisites for building.
4701 + ============================================================
4702 + -->
4703 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4704 + <PrepareForBuildDependsOn>$(PrepareForBuildDependsOn);GetFrameworkPaths;GetReferenceAssemblyPaths;AssignLinkMetadata</PrepareForBuildDependsOn>
4705 + </PropertyGroup>
4706 + <Target Name="PrepareForBuild" DependsOnTargets="$(PrepareForBuildDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4707 + <ItemGroup>
4708 + <AppConfigWithTargetPath Include="$(AppConfig)" Condition="'$(AppConfig)'!=''">
4709 + <TargetPath>$(TargetFileName).config</TargetPath>
4710 + </AppConfigWithTargetPath>
4711 + </ItemGroup>
4712 + <FindAppConfigFile PrimaryList="@(None)" SecondaryList="@(Content)" TargetPath="$(TargetFileName).config" Condition="'$(AppConfig)'==''">
4713 + <Output TaskParameter="AppConfigFile" ItemName="AppConfigWithTargetPath" />
4714 + <Output TaskParameter="AppConfigFile" PropertyName="AppConfig" />
4715 + </FindAppConfigFile>
4716 + <!-- Create the directories for intermediate and final build products, and any other arbitrary directories. -->
4717 + <!-- We are going to continue on error here so that if the tree is read only we will still get intellisense -->
4718 + <MakeDir Directories="$(OutDir);$(IntermediateOutputPath);@(DocFileItem->'%(RelativeDir)');@(CreateDirectory)" ContinueOnError="True" />
4719 + </Target>
4720 + <!--
4721 + ============================================================
4722 + GetFrameworkPaths
4723 +
4724 + Get the paths for the .NET Framework installation directory
4725 +
4726 + These paths are not used directly by this .targets file but are available for pre and
4727 + post build steps.
4728 + ============================================================
4729 + -->
4730 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4731 + <Framework40Dir>@(_TargetFramework40DirectoryItem)</Framework40Dir>
4732 + <Framework35Dir>@(_TargetFramework35DirectoryItem)</Framework35Dir>
4733 + <Framework30Dir>@(_TargetFramework30DirectoryItem)</Framework30Dir>
4734 + <Framework20Dir>@(_TargetFramework20DirectoryItem)</Framework20Dir>
4735 + <!-- Note we need to make the 4.0 FrameworkDir point to the 2.0 location by default since we shipped msbuild 4.0 that way and to change it would be a breaking change.-->
4736 + <FrameworkDir Condition="'$(FrameworkDir)' == '' and ('$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.5' or '$(TargetFrameworkVersion)' == 'v4.0')">@(_TargetFramework20DirectoryItem)</FrameworkDir>
4737 + <FrameworkDir Condition="'$(FrameworkDir)' == ''">@(_TargetFramework40DirectoryItem)</FrameworkDir>
4738 + <TargetedFrameworkDir Condition="'$(TargetedFrameworkDir)' == ''">@(_TargetedFrameworkDirectoryItem)</TargetedFrameworkDir>
4739 + <FrameworkSDKDir Condition="'$(FrameworkSDKDir)' == ''">@(_TargetFrameworkSDKDirectoryItem)</FrameworkSDKDir>
4740 + <GetFrameworkPathsDependsOn />
4741 + </PropertyGroup>
4742 + <!-- This is a generally overriden target, for example it is overriden in the Microsoft.NETFramework.targets file -->
4743 + <Target Name="GetFrameworkPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4744 + <!--
4745 + ============================================================
4746 + GetReferenceAssemblyPaths
4747 +
4748 + Get the paths for the Reference Assemblies for the known versions of the
4749 + .NET Framework.
4750 +
4751 + These paths are used by the build process in order to resolve the correct
4752 + assemblies from the various directories, and to support multi-targeting
4753 + ============================================================
4754 + -->
4755 + <Target Name="GetReferenceAssemblyPaths" DependsOnTargets="$(GetReferenceAssemblyPathsDependsOn);GetFrameworkPaths" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4756 + <!-- if TargetFrameworkDirectory doesn't have a custom value, clear it out; that way we can get reference paths and target framework directories all in the right order -->
4757 + <PropertyGroup>
4758 + <TargetFrameworkDirectory Condition="'@(_CombinedTargetFrameworkDirectoriesItem)' == '$(TargetFrameworkDirectory)'" />
4759 + </PropertyGroup>
4760 + <!-- By default if there is no root path set then the task will assume it is Program Files\Reference Assemblies\Microsoft\Framework-->
4761 + <GetReferenceAssemblyPaths Condition="'$(TargetFrameworkMoniker)' != '' and ('$(_TargetFrameworkDirectories)' == '' or '$(_FullFrameworkReferenceAssemblyPaths)' == '')" TargetFrameworkMoniker="$(TargetFrameworkMoniker)" RootPath="$(TargetFrameworkRootPath)" TargetFrameworkFallbackSearchPaths="$(TargetFrameworkFallbackSearchPaths)" BypassFrameworkInstallChecks="$(BypassFrameworkInstallChecks)">
4762 + <Output TaskParameter="ReferenceAssemblyPaths" PropertyName="_TargetFrameworkDirectories" />
4763 + <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="_FullFrameworkReferenceAssemblyPaths" />
4764 + <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName" Condition="'$(TargetFrameworkMonikerDisplayName)' == ''" />
4765 + </GetReferenceAssemblyPaths>
4766 + <PropertyGroup>
4767 + <TargetFrameworkDirectory>$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory);$(WinFXAssemblyDirectory)</TargetFrameworkDirectory>
4768 + <TargetFrameworkDirectory Condition="'$(TargetPlatformWinMDLocation)' != '' and Exists('$(TargetPlatformWinMDLocation)')">$(TargetFrameworkDirectory);$(TargetPlatformWinMDLocation)</TargetFrameworkDirectory>
4769 + </PropertyGroup>
4770 + <!-- Remove the AssemblyFolders if no target framework directories could be found. This is to prevent us from
4771 + resolving from the assemblyfolders global location if we are not acutally targeting a framework-->
4772 + <PropertyGroup>
4773 + <RemoveAssemblyFoldersIfNoTargetFramework Condition="'$(RemoveAssemblyFoldersIfNoTargetFramework)' == ''">true</RemoveAssemblyFoldersIfNoTargetFramework>
4774 + </PropertyGroup>
4775 + <PropertyGroup Condition="'$(_TargetFrameworkDirectories)' == '' and '$(AssemblySearchPaths)' != '' and '$(RemoveAssemblyFoldersIfNoTargetFramework)' == 'true'">
4776 + <AssemblySearchPaths>$(AssemblySearchPaths.Replace('{AssemblyFolders}', '').Split(';'))</AssemblySearchPaths>
4777 + </PropertyGroup>
4778 + <ItemGroup Condition="'$(ImplicitlyExpandDesignTimeFacades)' == 'true'">
4779 + <DesignTimeFacadeDirectoryRoots Include="$(TargetFrameworkDirectory)" />
4780 + <DesignTimeFacadeDirectories Include="%(DesignTimeFacadeDirectoryRoots.Identity)Facades\" Condition="Exists('%(DesignTimeFacadeDirectoryRoots.Identity)Facades\')" />
4781 + </ItemGroup>
4782 + <PropertyGroup Condition="'@(DesignTimeFacadeDirectories)' != ''">
4783 + <TargetFrameworkDirectory>$(TargetFrameworkDirectory);@(DesignTimeFacadeDirectories)</TargetFrameworkDirectory>
4784 + </PropertyGroup>
4785 + <PropertyGroup Condition="'$(_TargetFrameworkDirectories)' == ''">
4786 + <TargetFrameworkProfile />
4787 + </PropertyGroup>
4788 + </Target>
4789 + <!-- Returns target framework moniker. E.g. ".NETFramework,Version=v4.0.1" -->
4790 + <Target Name="GetTargetFrameworkMoniker" Returns="$(TargetFrameworkMoniker)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4791 + <!-- Returns target framework moniker display name. E.g. ".NET Framework 4 Platform Update 1 (KB2478063)" -->
4792 + <Target Name="GetTargetFrameworkMonikerDisplayName" DependsOnTargets="GetFrameworkPaths;GetReferenceAssemblyPaths" Returns="$(TargetFrameworkMonikerDisplayName)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4793 + <!-- Returns semicolon separated list of target framework directories.
4794 + E.g "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0.1\;C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\" -->
4795 + <Target Name="GetTargetFrameworkDirectories" DependsOnTargets="GetFrameworkPaths;GetReferenceAssemblyPaths" Returns="$(TargetFrameworkDirectory)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4796 + <!--
4797 + ============================================================
4798 + AssignLinkMetadata
4799 +
4800 + For items of a certain set of whitelisted types, make sure that
4801 + if they are defined in a file other than the project file, that
4802 + they have "Link" metadata set to an appropriate default.
4803 + ============================================================
4804 + -->
4805 + <Target Name="AssignLinkMetadata" Condition=" '$(SynthesizeLinkMetadata)' == 'true' " xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4806 + <!-- NONE ITEMS -->
4807 + <AssignLinkMetadata Items="@(None)" Condition="'@(None)' != '' and '%(None.DefiningProjectFullPath)' != '$(MSBuildProjectFullPath)'">
4808 + <Output TaskParameter="OutputItems" ItemName="_Temp" />
4809 + </AssignLinkMetadata>
4810 + <ItemGroup>
4811 + <None Remove="@(_Temp)" />
4812 + <None Include="@(_Temp)" />
4813 + <_Temp Remove="@(_Temp)" />
4814 + </ItemGroup>
4815 + <!-- CONTENT ITEMS -->
4816 + <AssignLinkMetadata Items="@(Content)" Condition="'@(Content)' != '' and '%(Content.DefiningProjectFullPath)' != '$(MSBuildProjectFullPath)'">
4817 + <Output TaskParameter="OutputItems" ItemName="_Temp" />
4818 + </AssignLinkMetadata>
4819 + <ItemGroup>
4820 + <Content Remove="@(_Temp)" />
4821 + <Content Include="@(_Temp)" />
4822 + <_Temp Remove="@(_Temp)" />
4823 + </ItemGroup>
4824 + <!-- PAGE ITEMS -->
4825 + <AssignLinkMetadata Items="@(Page)" Condition="'@(Page)' != '' and '%(Page.DefiningProjectFullPath)' != '$(MSBuildProjectFullPath)'">
4826 + <Output TaskParameter="OutputItems" ItemName="_Temp" />
4827 + </AssignLinkMetadata>
4828 + <ItemGroup>
4829 + <Page Remove="@(_Temp)" />
4830 + <Page Include="@(_Temp)" />
4831 + <_Temp Remove="@(_Temp)" />
4832 + </ItemGroup>
4833 + <!-- APPLICATIONDEFINITION ITEMS -->
4834 + <AssignLinkMetadata Items="@(ApplicationDefinition)" Condition="'@(ApplicationDefinition)' != '' and '%(ApplicationDefinition.DefiningProjectFullPath)' != '$(MSBuildProjectFullPath)'">
4835 + <Output TaskParameter="OutputItems" ItemName="_Temp" />
4836 + </AssignLinkMetadata>
4837 + <ItemGroup>
4838 + <ApplicationDefinition Remove="@(_Temp)" />
4839 + <ApplicationDefinition Include="@(_Temp)" />
4840 + <_Temp Remove="@(_Temp)" />
4841 + </ItemGroup>
4842 + <!-- EMBEDDEDRESOURCE ITEMS -->
4843 + <AssignLinkMetadata Items="@(EmbeddedResource)" Condition="'@(EmbeddedResource)' != '' and '%(EmbeddedResource.DefiningProjectFullPath)' != '$(MSBuildProjectFullPath)'">
4844 + <Output TaskParameter="OutputItems" ItemName="_Temp" />
4845 + </AssignLinkMetadata>
4846 + <ItemGroup>
4847 + <EmbeddedResource Remove="@(_Temp)" />
4848 + <EmbeddedResource Include="@(_Temp)" />
4849 + <_Temp Remove="@(_Temp)" />
4850 + </ItemGroup>
4851 + </Target>
4852 + <!--
4853 + ***********************************************************************************************
4854 + ***********************************************************************************************
4855 + PreBuildEvent Section
4856 + ***********************************************************************************************
4857 + ***********************************************************************************************
4858 + -->
4859 + <!--
4860 + ============================================================
4861 + PreBuildEvent
4862 +
4863 + Run the pre-build event if there is one.
4864 + ============================================================
4865 + -->
4866 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4867 + <PreBuildEventDependsOn />
4868 + </PropertyGroup>
4869 + <Target Name="PreBuildEvent" Condition="'$(PreBuildEvent)'!=''" DependsOnTargets="$(PreBuildEventDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4870 + <Exec WorkingDirectory="$(OutDir)" Command="$(PreBuildEvent)" />
4871 + </Target>
4872 + <!--
4873 + ***********************************************************************************************
4874 + ***********************************************************************************************
4875 + UnmanagedUnregistration Section
4876 + ***********************************************************************************************
4877 + ***********************************************************************************************
4878 + -->
4879 + <!--
4880 + ============================================================
4881 + UnmanagedUnregistration
4882 +
4883 + If the main assembly had previously been registered for COM interop, unregister it now.
4884 + We will re-register the new version after it has been built.
4885 + ============================================================
4886 + -->
4887 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4888 + <UnmanagedUnregistrationDependsOn />
4889 + </PropertyGroup>
4890 + <Target Name="UnmanagedUnregistration" Condition="(('$(_AssemblyTimestampBeforeCompile)' != '$(_AssemblyTimestampAfterCompile)' or '$(RegisterForComInterop)' != 'true' or '$(OutputType)' != 'library') or&#xD;&#xA; ('$(_AssemblyTimestampBeforeCompile)' == '')) and&#xD;&#xA; Exists('@(_UnmanagedRegistrationCache)')" DependsOnTargets="$(UnmanagedUnregistrationDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4891 + <PropertyGroup>
4892 + <UnregisterAssemblyMSBuildArchitecture Condition="'$(UnregisterAssemblyMSBuildArchitecture)' == ''">$(PlatformTargetAsMSBuildArchitecture)</UnregisterAssemblyMSBuildArchitecture>
4893 + </PropertyGroup>
4894 + <PropertyGroup Condition="'$(TargetFrameworkAsMSBuildRuntime)' != '' and '$(UnregisterAssemblyMSBuildArchitecture)' != ''">
4895 + <!-- Falling back to the current runtime if we are targeting CLR2 and the task host doesn't exist will lead to
4896 + incorrect behavior in some cases, but it's the same incorrect behavior as Visual Studio 2010, and thus better
4897 + than causing build breaks on upgrade to Win8 the way not doing so would. For more details, see the
4898 + corresponding comment in GenerateResource. -->
4899 + <UnregisterAssemblyMSBuildRuntime Condition="'$(UnregisterAssemblyMSBuildRuntime)' == '' and&#xD;&#xA; $([MSBuild]::DoesTaskHostExist(`$(TargetFrameworkAsMSBuildRuntime)`, `$(UnregisterAssemblyMSBuildArchitecture)`))">$(TargetFrameworkAsMSBuildRuntime)</UnregisterAssemblyMSBuildRuntime>
4900 + <!-- If the targeted runtime doesn't exist, fall back to current -->
4901 + <UnregisterAssemblyMSBuildRuntime Condition="'$(UnregisterAssemblyMSBuildRuntime)' == ''">CurrentRuntime</UnregisterAssemblyMSBuildRuntime>
4902 + </PropertyGroup>
4903 + <UnregisterAssembly AssemblyListFile="@(_UnmanagedRegistrationCache)" MSBuildArchitecture="$(UnregisterAssemblyMSBuildArchitecture)" MSBuildRuntime="$(UnregisterAssemblyMSBuildRuntime)" />
4904 + </Target>
4905 + <!--
4906 + ***********************************************************************************************
4907 + ***********************************************************************************************
4908 + ResolveReferences Section
4909 + ***********************************************************************************************
4910 + ***********************************************************************************************
4911 + -->
4912 + <!--
4913 + ============================================================
4914 + GetTargetFrameworkVersion
4915 +
4916 + This stand-alone target returns the target framework version (i.e. v3.5, v4.0, etc.)
4917 + that would be used if we built this project.
4918 +
4919 + ============================================================
4920 + -->
4921 + <Target Name="GetTargetFrameworkVersion" Returns="$(TargetFrameworkVersion)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4922 + <!--
4923 + ============================================================
4924 + ResolveReferences
4925 + ============================================================
4926 + -->
4927 + <PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4928 + <ResolveReferencesDependsOn>
4929 + BeforeResolveReferences;
4930 + AssignProjectConfiguration;
4931 + ResolveProjectReferences;
4932 + FindInvalidProjectReferences;
4933 + ResolveNativeReferences;
4934 + ResolveAssemblyReferences;
4935 + GenerateBindingRedirects;
4936 + ResolveComReferences;
4937 + AfterResolveReferences
4938 + </ResolveReferencesDependsOn>
4939 + </PropertyGroup>
4940 + <Target Name="ResolveReferences" Returns="@(ReferencePath)" DependsOnTargets="$(ResolveReferencesDependsOn)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4941 + <!--
4942 + ============================================================
4943 + BeforeResolveReferences
4944 +
4945 + Redefine this target in your project in order to run tasks just before ResolveReferences
4946 + ============================================================
4947 + -->
4948 + <Target Name="BeforeResolveReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4949 + <!--
4950 + ============================================================
4951 + AfterResolveReferences
4952 +
4953 + Redefine this target in your project in order to run tasks just after ResolveReferences
4954 + ============================================================
4955 + -->
4956 + <Target Name="AfterResolveReferences" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
4957 + <!--
4958 + ============================================================
4959 + AssignProjectConfiguration
4960 +
4961 + Assigns the appropriate configuration to each project in the list of project references passed in.
4962 + Adds to the project references passed in any project references implied by dependencies expressed in the solution file, if any.
4963 +
4964 + [IN]
4965 + @(ProjectReference) - the list of all project references
4966 +
4967 + [OUT]
4968 + @(ProjectReferenceWithConfiguration) - the list of project references (MSBuild and potentially VSIP projects)
4969 + with metadata values FullConfiguration, Configuration, Platform,
4970 + SetConfiguration, and SetPlatform
4971 + ============================================================
4972 + -->
4973 + <Target Name="AssignProjectConfiguration" Condition="'$(CurrentSolutionConfigurationContents)' != '' or '@(ProjectReference)'!=''" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4974 + <PropertyGroup>
4975 + <OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration Condition="'$(OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration)' == ''">true</OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration>
4976 + <ShouldUnsetParentConfigurationAndPlatform Condition="'$(ShouldUnsetParentConfigurationAndPlatform)' == '' and ('$(BuildingInsideVisualStudio)' == 'true' or '$(BuildingSolutionFile)' == 'true')">true</ShouldUnsetParentConfigurationAndPlatform>
4977 + <ShouldUnsetParentConfigurationAndPlatform Condition="'$(ShouldUnsetParentConfigurationAndPlatform)' == ''">false</ShouldUnsetParentConfigurationAndPlatform>
4978 + <!-- Web Application projects can "secretly" reference Silverlight projects, which can take project dependencies on that same Web Application. If the project
4979 + dependencies are promoted to project references, this ends up creating a situation where we have a circular reference between the two projects. We don't
4980 + want this to happen, so just turn off synthetic project reference generation for Silverlight projects. -->
4981 + <AddSyntheticProjectReferencesForSolutionDependencies Condition="'$(AddSyntheticProjectReferencesForSolutionDependencies)' == '' and '$(TargetFrameworkIdentifier)' == 'Silverlight'">false</AddSyntheticProjectReferencesForSolutionDependencies>
4982 + <!-- Inside VS, we do not need to add synthetic references, as VS already organizes the build per any solution-level dependencies; we only do this on the command line-->
4983 + <AddSyntheticProjectReferencesForSolutionDependencies Condition="'$(AddSyntheticProjectReferencesForSolutionDependencies)' == '' and '$(BuildingInsideVisualStudio)' != 'true'">true</AddSyntheticProjectReferencesForSolutionDependencies>
4984 + </PropertyGroup>
4985 + <!-- Assign a project configuration to each project reference if we're building a solution file. -->
4986 + <AssignProjectConfiguration ProjectReferences="@(ProjectReference)" CurrentProject="$(MSBuildProjectFullPath)" CurrentProjectConfiguration="$(Configuration)" CurrentProjectPlatform="$(Platform)" DefaultToVcxPlatformMapping="$(DefaultToVcxPlatformMapping)" VcxToDefaultPlatformMapping="$(VcxToDefaultPlatformMapping)" OutputType="$(OutputType)" ResolveConfigurationPlatformUsingMappings="false" SolutionConfigurationContents="$(CurrentSolutionConfigurationContents)" AddSyntheticProjectReferencesForSolutionDependencies="$(AddSyntheticProjectReferencesForSolutionDependencies)" OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration="$(OnlyReferenceAndBuildProjectsEnabledInSolutionConfiguration)" ShouldUnsetParentConfigurationAndPlatform="$(ShouldUnsetParentConfigurationAndPlatform)">
4987 + <!-- EMITTED FOR COMPATIBILITY REASONS ONLY. CONSUME PROJECTREFERENCEWITHCONFIGURATION INSTEAD -->
4988 + <Output TaskParameter="AssignedProjects" ItemName="_ProjectReferenceWithConfiguration" />
4989 + <Output TaskParameter="UnassignedProjects" ItemName="_ProjectReferenceWithConfiguration" />
4990 + <Output TaskParameter="AssignedProjects" ItemName="ProjectReferenceWithConfiguration" />
4991 + <Output TaskParameter="UnassignedProjects" ItemName="ProjectReferenceWithConfiguration" />
4992 + </AssignProjectConfiguration>
4993 + <ItemGroup>
4994 + <_ProjectReferenceWithConfiguration>
4995 + <BuildReference Condition="'%(_ProjectReferenceWithConfiguration.BuildReference)' == ''">true</BuildReference>
4996 + <ReferenceOutputAssembly Condition="'%(_ProjectReferenceWithConfiguration.ReferenceOutputAssembly)' == ''">true</ReferenceOutputAssembly>
4997 + </_ProjectReferenceWithConfiguration>
4998 + <ProjectReferenceWithConfiguration>
4999 + <BuildReference Condition="'%(ProjectReferenceWithConfiguration.BuildReference)' == ''">true</BuildReference>

This file is too large to show in full.

src/test/wix/TestData/CsprojWebApplicationNetCore/CsprojWebApplicationNetCore.csproj new
+11
@@ -0,0 +1,11 @@
1 +<Project Sdk="Microsoft.NET.Sdk.Web">
2 +
3 + <PropertyGroup>
4 + <TargetFramework>netcoreapp3.1</TargetFramework>
5 + </PropertyGroup>
6 +
7 + <ItemGroup>
8 + <ProjectReference Include="..\CsprojClassLibraryNetCore\CsprojClassLibraryNetCore.csproj" />
9 + </ItemGroup>
10 +
11 +</Project>
src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Error.cshtml new
+26
@@ -0,0 +1,26 @@
1 +@page
2 +@model ErrorModel
3 +@{
4 + ViewData["Title"] = "Error";
5 +}
6 +
7 +<h1 class="text-danger">Error.</h1>
8 +<h2 class="text-danger">An error occurred while processing your request.</h2>
9 +
10 +@if (Model.ShowRequestId)
11 +{
12 + <p>
13 + <strong>Request ID:</strong> <code>@Model.RequestId</code>
14 + </p>
15 +}
16 +
17 +<h3>Development Mode</h3>
18 +<p>
19 + Swapping to the <strong>Development</strong> environment displays detailed information about the error that occurred.
20 +</p>
21 +<p>
22 + <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
23 + It can result in displaying sensitive information from exceptions to end users.
24 + For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
25 + and restarting the app.
26 +</p>
src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Error.cshtml.cs new
+31
@@ -0,0 +1,31 @@
1 +using Microsoft.AspNetCore.Mvc;
2 +using Microsoft.AspNetCore.Mvc.RazorPages;
3 +using Microsoft.Extensions.Logging;
4 +using System;
5 +using System.Collections.Generic;
6 +using System.Diagnostics;
7 +using System.Linq;
8 +using System.Threading.Tasks;
9 +
10 +namespace CsprojWebApplicationNetCore.Pages
11 +{
12 + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
13 + public class ErrorModel : PageModel
14 + {
15 + public string RequestId { get; set; }
16 +
17 + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
18 +
19 + private readonly ILogger<ErrorModel> _logger;
20 +
21 + public ErrorModel(ILogger<ErrorModel> logger)
22 + {
23 + _logger = logger;
24 + }
25 +
26 + public void OnGet()
27 + {
28 + RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
29 + }
30 + }
31 +}
src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Index.cshtml new
+10
@@ -0,0 +1,10 @@
1 +@page
2 +@model IndexModel
3 +@{
4 + ViewData["Title"] = "Home page";
5 +}
6 +
7 +<div class="text-center">
8 + <h1 class="display-4">Welcome</h1>
9 + <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
10 +</div>
src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Index.cshtml.cs new
+25
@@ -0,0 +1,25 @@
1 +using Microsoft.AspNetCore.Mvc;
2 +using Microsoft.AspNetCore.Mvc.RazorPages;
3 +using Microsoft.Extensions.Logging;
4 +using System;
5 +using System.Collections.Generic;
6 +using System.Linq;
7 +using System.Threading.Tasks;
8 +
9 +namespace CsprojWebApplicationNetCore.Pages
10 +{
11 + public class IndexModel : PageModel
12 + {
13 + private readonly ILogger<IndexModel> _logger;
14 +
15 + public IndexModel(ILogger<IndexModel> logger)
16 + {
17 + _logger = logger;
18 + }
19 +
20 + public void OnGet()
21 + {
22 +
23 + }
24 + }
25 +}
src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Privacy.cshtml new
+8
@@ -0,0 +1,8 @@
1 +@page
2 +@model PrivacyModel
3 +@{
4 + ViewData["Title"] = "Privacy Policy";
5 +}
6 +<h1>@ViewData["Title"]</h1>
7 +
8 +<p>Use this page to detail your site's privacy policy.</p>
src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Privacy.cshtml.cs new
+24
@@ -0,0 +1,24 @@
1 +using Microsoft.AspNetCore.Mvc;
2 +using Microsoft.AspNetCore.Mvc.RazorPages;
3 +using Microsoft.Extensions.Logging;
4 +using System;
5 +using System.Collections.Generic;
6 +using System.Linq;
7 +using System.Threading.Tasks;
8 +
9 +namespace CsprojWebApplicationNetCore.Pages
10 +{
11 + public class PrivacyModel : PageModel
12 + {
13 + private readonly ILogger<PrivacyModel> _logger;
14 +
15 + public PrivacyModel(ILogger<PrivacyModel> logger)
16 + {
17 + _logger = logger;
18 + }
19 +
20 + public void OnGet()
21 + {
22 + }
23 + }
24 +}
src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Shared/_Layout.cshtml new
+50
@@ -0,0 +1,50 @@
1 +<!DOCTYPE html>
2 +<html lang="en">
3 +<head>
4 + <meta charset="utf-8" />
5 + <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6 + <title>@ViewData["Title"] - CsprojWebApplicationNetCore</title>
7 + <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
8 + <link rel="stylesheet" href="~/css/site.css" />
9 +</head>
10 +<body>
11 + <header>
12 + <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
13 + <div class="container">
14 + <a class="navbar-brand" asp-area="" asp-page="/Index">CsprojWebApplicationNetCore</a>
15 + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
16 + aria-expanded="false" aria-label="Toggle navigation">
17 + <span class="navbar-toggler-icon"></span>
18 + </button>
19 + <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
20 + <ul class="navbar-nav flex-grow-1">
21 + <li class="nav-item">
22 + <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
23 + </li>
24 + <li class="nav-item">
25 + <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
26 + </li>
27 + </ul>
28 + </div>
29 + </div>
30 + </nav>
31 + </header>
32 + <div class="container">
33 + <main role="main" class="pb-3">
34 + @RenderBody()
35 + </main>
36 + </div>
37 +
38 + <footer class="border-top footer text-muted">
39 + <div class="container">
40 + &copy; 2021 - CsprojWebApplicationNetCore - <a asp-area="" asp-page="/Privacy">Privacy</a>
41 + </div>
42 + </footer>
43 +
44 + <script src="~/lib/jquery/dist/jquery.min.js"></script>
45 + <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
46 + <script src="~/js/site.js" asp-append-version="true"></script>
47 +
48 + @RenderSection("Scripts", required: false)
49 +</body>
50 +</html>
src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/Shared/_ValidationScriptsPartial.cshtml new
+2
@@ -0,0 +1,2 @@
1 +<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
2 +<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/_ViewImports.cshtml new
+3
@@ -0,0 +1,3 @@
1 +@using CsprojWebApplicationNetCore
2 +@namespace CsprojWebApplicationNetCore.Pages
3 +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
src/test/wix/TestData/CsprojWebApplicationNetCore/Pages/_ViewStart.cshtml new
+3
@@ -0,0 +1,3 @@
1 +@{
2 + Layout = "_Layout";
3 +}
src/test/wix/TestData/CsprojWebApplicationNetCore/Program.cs new
+26
@@ -0,0 +1,26 @@
1 +using Microsoft.AspNetCore.Hosting;
2 +using Microsoft.Extensions.Configuration;
3 +using Microsoft.Extensions.Hosting;
4 +using Microsoft.Extensions.Logging;
5 +using System;
6 +using System.Collections.Generic;
7 +using System.Linq;
8 +using System.Threading.Tasks;
9 +
10 +namespace CsprojWebApplicationNetCore
11 +{
12 + public class Program
13 + {
14 + public static void Main(string[] args)
15 + {
16 + CreateHostBuilder(args).Build().Run();
17 + }
18 +
19 + public static IHostBuilder CreateHostBuilder(string[] args) =>
20 + Host.CreateDefaultBuilder(args)
21 + .ConfigureWebHostDefaults(webBuilder =>
22 + {
23 + webBuilder.UseStartup<Startup>();
24 + });
25 + }
26 +}
src/test/wix/TestData/CsprojWebApplicationNetCore/Properties/launchSettings.json new
+27
@@ -0,0 +1,27 @@
1 +{
2 + "iisSettings": {
3 + "windowsAuthentication": false,
4 + "anonymousAuthentication": true,
5 + "iisExpress": {
6 + "applicationUrl": "http://localhost:53225",
7 + "sslPort": 0
8 + }
9 + },
10 + "profiles": {
11 + "IIS Express": {
12 + "commandName": "IISExpress",
13 + "launchBrowser": true,
14 + "environmentVariables": {
15 + "ASPNETCORE_ENVIRONMENT": "Development"
16 + }
17 + },
18 + "CsprojWebApplicationNetCore": {
19 + "commandName": "Project",
20 + "launchBrowser": true,
21 + "applicationUrl": "http://localhost:5000",
22 + "environmentVariables": {
23 + "ASPNETCORE_ENVIRONMENT": "Development"
24 + }
25 + }
26 + }
27 +}
src/test/wix/TestData/CsprojWebApplicationNetCore/Startup.cs new
+52
@@ -0,0 +1,52 @@
1 +using Microsoft.AspNetCore.Builder;
2 +using Microsoft.AspNetCore.Hosting;
3 +using Microsoft.Extensions.Configuration;
4 +using Microsoft.Extensions.DependencyInjection;
5 +using Microsoft.Extensions.Hosting;
6 +using System;
7 +using System.Collections.Generic;
8 +using System.Linq;
9 +using System.Threading.Tasks;
10 +
11 +namespace CsprojWebApplicationNetCore
12 +{
13 + public class Startup
14 + {
15 + public Startup(IConfiguration configuration)
16 + {
17 + Configuration = configuration;
18 + }
19 +
20 + public IConfiguration Configuration { get; }
21 +
22 + // This method gets called by the runtime. Use this method to add services to the container.
23 + public void ConfigureServices(IServiceCollection services)
24 + {
25 + services.AddRazorPages();
26 + }
27 +
28 + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
29 + public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
30 + {
31 + if (env.IsDevelopment())
32 + {
33 + app.UseDeveloperExceptionPage();
34 + }
35 + else
36 + {
37 + app.UseExceptionHandler("/Error");
38 + }
39 +
40 + app.UseStaticFiles();
41 +
42 + app.UseRouting();
43 +
44 + app.UseAuthorization();
45 +
46 + app.UseEndpoints(endpoints =>
47 + {
48 + endpoints.MapRazorPages();
49 + });
50 + }
51 + }
52 +}
src/test/wix/TestData/CsprojWebApplicationNetCore/appsettings.Development.json new
+9
@@ -0,0 +1,9 @@
1 +{
2 + "Logging": {
3 + "LogLevel": {
4 + "Default": "Information",
5 + "Microsoft": "Warning",
6 + "Microsoft.Hosting.Lifetime": "Information"
7 + }
8 + }
9 +}
src/test/wix/TestData/CsprojWebApplicationNetCore/appsettings.json new
+10
@@ -0,0 +1,10 @@
1 +{
2 + "Logging": {
3 + "LogLevel": {
4 + "Default": "Information",
5 + "Microsoft": "Warning",
6 + "Microsoft.Hosting.Lifetime": "Information"
7 + }
8 + },
9 + "AllowedHosts": "*"
10 +}
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/css/site.css new
+71
@@ -0,0 +1,71 @@
1 +/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
2 +for details on configuring this project to bundle and minify static web assets. */
3 +
4 +a.navbar-brand {
5 + white-space: normal;
6 + text-align: center;
7 + word-break: break-all;
8 +}
9 +
10 +/* Provide sufficient contrast against white background */
11 +a {
12 + color: #0366d6;
13 +}
14 +
15 +.btn-primary {
16 + color: #fff;
17 + background-color: #1b6ec2;
18 + border-color: #1861ac;
19 +}
20 +
21 +.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
22 + color: #fff;
23 + background-color: #1b6ec2;
24 + border-color: #1861ac;
25 +}
26 +
27 +/* Sticky footer styles
28 +-------------------------------------------------- */
29 +html {
30 + font-size: 14px;
31 +}
32 +@media (min-width: 768px) {
33 + html {
34 + font-size: 16px;
35 + }
36 +}
37 +
38 +.border-top {
39 + border-top: 1px solid #e5e5e5;
40 +}
41 +.border-bottom {
42 + border-bottom: 1px solid #e5e5e5;
43 +}
44 +
45 +.box-shadow {
46 + box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
47 +}
48 +
49 +button.accept-policy {
50 + font-size: 1rem;
51 + line-height: inherit;
52 +}
53 +
54 +/* Sticky footer styles
55 +-------------------------------------------------- */
56 +html {
57 + position: relative;
58 + min-height: 100%;
59 +}
60 +
61 +body {
62 + /* Margin bottom by footer height */
63 + margin-bottom: 60px;
64 +}
65 +.footer {
66 + position: absolute;
67 + bottom: 0;
68 + width: 100%;
69 + white-space: nowrap;
70 + line-height: 60px; /* Vertically center the text there */
71 +}
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/favicon.ico
Binary files /dev/null and b/src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/favicon.ico differ
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/js/site.js new
+4
@@ -0,0 +1,4 @@
1 +// Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
2 +// for details on configuring this project to bundle and minify static web assets.
3 +
4 +// Write your Javascript code.
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/LICENSE new
+22
@@ -0,0 +1,22 @@
1 +The MIT License (MIT)
2 +
3 +Copyright (c) 2011-2018 Twitter, Inc.
4 +Copyright (c) 2011-2018 The Bootstrap Authors
5 +
6 +Permission is hereby granted, free of charge, to any person obtaining a copy
7 +of this software and associated documentation files (the "Software"), to deal
8 +in the Software without restriction, including without limitation the rights
9 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 +copies of the Software, and to permit persons to whom the Software is
11 +furnished to do so, subject to the following conditions:
12 +
13 +The above copyright notice and this permission notice shall be included in
14 +all copies or substantial portions of the Software.
15 +
16 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 +THE SOFTWARE.
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/dist/css/bootstrap.css new
+10038
@@ -0,0 +1,10038 @@
1 +/*!
2 + * Bootstrap v4.3.1 (https://getbootstrap.com/)
3 + * Copyright 2011-2019 The Bootstrap Authors
4 + * Copyright 2011-2019 Twitter, Inc.
5 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 + */
7 +:root {
8 + --blue: #007bff;
9 + --indigo: #6610f2;
10 + --purple: #6f42c1;
11 + --pink: #e83e8c;
12 + --red: #dc3545;
13 + --orange: #fd7e14;
14 + --yellow: #ffc107;
15 + --green: #28a745;
16 + --teal: #20c997;
17 + --cyan: #17a2b8;
18 + --white: #fff;
19 + --gray: #6c757d;
20 + --gray-dark: #343a40;
21 + --primary: #007bff;
22 + --secondary: #6c757d;
23 + --success: #28a745;
24 + --info: #17a2b8;
25 + --warning: #ffc107;
26 + --danger: #dc3545;
27 + --light: #f8f9fa;
28 + --dark: #343a40;
29 + --breakpoint-xs: 0;
30 + --breakpoint-sm: 576px;
31 + --breakpoint-md: 768px;
32 + --breakpoint-lg: 992px;
33 + --breakpoint-xl: 1200px;
34 + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
35 + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
36 +}
37 +
38 +*,
39 +*::before,
40 +*::after {
41 + box-sizing: border-box;
42 +}
43 +
44 +html {
45 + font-family: sans-serif;
46 + line-height: 1.15;
47 + -webkit-text-size-adjust: 100%;
48 + -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
49 +}
50 +
51 +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
52 + display: block;
53 +}
54 +
55 +body {
56 + margin: 0;
57 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
58 + font-size: 1rem;
59 + font-weight: 400;
60 + line-height: 1.5;
61 + color: #212529;
62 + text-align: left;
63 + background-color: #fff;
64 +}
65 +
66 +[tabindex="-1"]:focus {
67 + outline: 0 !important;
68 +}
69 +
70 +hr {
71 + box-sizing: content-box;
72 + height: 0;
73 + overflow: visible;
74 +}
75 +
76 +h1, h2, h3, h4, h5, h6 {
77 + margin-top: 0;
78 + margin-bottom: 0.5rem;
79 +}
80 +
81 +p {
82 + margin-top: 0;
83 + margin-bottom: 1rem;
84 +}
85 +
86 +abbr[title],
87 +abbr[data-original-title] {
88 + text-decoration: underline;
89 + -webkit-text-decoration: underline dotted;
90 + text-decoration: underline dotted;
91 + cursor: help;
92 + border-bottom: 0;
93 + -webkit-text-decoration-skip-ink: none;
94 + text-decoration-skip-ink: none;
95 +}
96 +
97 +address {
98 + margin-bottom: 1rem;
99 + font-style: normal;
100 + line-height: inherit;
101 +}
102 +
103 +ol,
104 +ul,
105 +dl {
106 + margin-top: 0;
107 + margin-bottom: 1rem;
108 +}
109 +
110 +ol ol,
111 +ul ul,
112 +ol ul,
113 +ul ol {
114 + margin-bottom: 0;
115 +}
116 +
117 +dt {
118 + font-weight: 700;
119 +}
120 +
121 +dd {
122 + margin-bottom: .5rem;
123 + margin-left: 0;
124 +}
125 +
126 +blockquote {
127 + margin: 0 0 1rem;
128 +}
129 +
130 +b,
131 +strong {
132 + font-weight: bolder;
133 +}
134 +
135 +small {
136 + font-size: 80%;
137 +}
138 +
139 +sub,
140 +sup {
141 + position: relative;
142 + font-size: 75%;
143 + line-height: 0;
144 + vertical-align: baseline;
145 +}
146 +
147 +sub {
148 + bottom: -.25em;
149 +}
150 +
151 +sup {
152 + top: -.5em;
153 +}
154 +
155 +a {
156 + color: #007bff;
157 + text-decoration: none;
158 + background-color: transparent;
159 +}
160 +
161 +a:hover {
162 + color: #0056b3;
163 + text-decoration: underline;
164 +}
165 +
166 +a:not([href]):not([tabindex]) {
167 + color: inherit;
168 + text-decoration: none;
169 +}
170 +
171 +a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
172 + color: inherit;
173 + text-decoration: none;
174 +}
175 +
176 +a:not([href]):not([tabindex]):focus {
177 + outline: 0;
178 +}
179 +
180 +pre,
181 +code,
182 +kbd,
183 +samp {
184 + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
185 + font-size: 1em;
186 +}
187 +
188 +pre {
189 + margin-top: 0;
190 + margin-bottom: 1rem;
191 + overflow: auto;
192 +}
193 +
194 +figure {
195 + margin: 0 0 1rem;
196 +}
197 +
198 +img {
199 + vertical-align: middle;
200 + border-style: none;
201 +}
202 +
203 +svg {
204 + overflow: hidden;
205 + vertical-align: middle;
206 +}
207 +
208 +table {
209 + border-collapse: collapse;
210 +}
211 +
212 +caption {
213 + padding-top: 0.75rem;
214 + padding-bottom: 0.75rem;
215 + color: #6c757d;
216 + text-align: left;
217 + caption-side: bottom;
218 +}
219 +
220 +th {
221 + text-align: inherit;
222 +}
223 +
224 +label {
225 + display: inline-block;
226 + margin-bottom: 0.5rem;
227 +}
228 +
229 +button {
230 + border-radius: 0;
231 +}
232 +
233 +button:focus {
234 + outline: 1px dotted;
235 + outline: 5px auto -webkit-focus-ring-color;
236 +}
237 +
238 +input,
239 +button,
240 +select,
241 +optgroup,
242 +textarea {
243 + margin: 0;
244 + font-family: inherit;
245 + font-size: inherit;
246 + line-height: inherit;
247 +}
248 +
249 +button,
250 +input {
251 + overflow: visible;
252 +}
253 +
254 +button,
255 +select {
256 + text-transform: none;
257 +}
258 +
259 +select {
260 + word-wrap: normal;
261 +}
262 +
263 +button,
264 +[type="button"],
265 +[type="reset"],
266 +[type="submit"] {
267 + -webkit-appearance: button;
268 +}
269 +
270 +button:not(:disabled),
271 +[type="button"]:not(:disabled),
272 +[type="reset"]:not(:disabled),
273 +[type="submit"]:not(:disabled) {
274 + cursor: pointer;
275 +}
276 +
277 +button::-moz-focus-inner,
278 +[type="button"]::-moz-focus-inner,
279 +[type="reset"]::-moz-focus-inner,
280 +[type="submit"]::-moz-focus-inner {
281 + padding: 0;
282 + border-style: none;
283 +}
284 +
285 +input[type="radio"],
286 +input[type="checkbox"] {
287 + box-sizing: border-box;
288 + padding: 0;
289 +}
290 +
291 +input[type="date"],
292 +input[type="time"],
293 +input[type="datetime-local"],
294 +input[type="month"] {
295 + -webkit-appearance: listbox;
296 +}
297 +
298 +textarea {
299 + overflow: auto;
300 + resize: vertical;
301 +}
302 +
303 +fieldset {
304 + min-width: 0;
305 + padding: 0;
306 + margin: 0;
307 + border: 0;
308 +}
309 +
310 +legend {
311 + display: block;
312 + width: 100%;
313 + max-width: 100%;
314 + padding: 0;
315 + margin-bottom: .5rem;
316 + font-size: 1.5rem;
317 + line-height: inherit;
318 + color: inherit;
319 + white-space: normal;
320 +}
321 +
322 +progress {
323 + vertical-align: baseline;
324 +}
325 +
326 +[type="number"]::-webkit-inner-spin-button,
327 +[type="number"]::-webkit-outer-spin-button {
328 + height: auto;
329 +}
330 +
331 +[type="search"] {
332 + outline-offset: -2px;
333 + -webkit-appearance: none;
334 +}
335 +
336 +[type="search"]::-webkit-search-decoration {
337 + -webkit-appearance: none;
338 +}
339 +
340 +::-webkit-file-upload-button {
341 + font: inherit;
342 + -webkit-appearance: button;
343 +}
344 +
345 +output {
346 + display: inline-block;
347 +}
348 +
349 +summary {
350 + display: list-item;
351 + cursor: pointer;
352 +}
353 +
354 +template {
355 + display: none;
356 +}
357 +
358 +[hidden] {
359 + display: none !important;
360 +}
361 +
362 +h1, h2, h3, h4, h5, h6,
363 +.h1, .h2, .h3, .h4, .h5, .h6 {
364 + margin-bottom: 0.5rem;
365 + font-weight: 500;
366 + line-height: 1.2;
367 +}
368 +
369 +h1, .h1 {
370 + font-size: 2.5rem;
371 +}
372 +
373 +h2, .h2 {
374 + font-size: 2rem;
375 +}
376 +
377 +h3, .h3 {
378 + font-size: 1.75rem;
379 +}
380 +
381 +h4, .h4 {
382 + font-size: 1.5rem;
383 +}
384 +
385 +h5, .h5 {
386 + font-size: 1.25rem;
387 +}
388 +
389 +h6, .h6 {
390 + font-size: 1rem;
391 +}
392 +
393 +.lead {
394 + font-size: 1.25rem;
395 + font-weight: 300;
396 +}
397 +
398 +.display-1 {
399 + font-size: 6rem;
400 + font-weight: 300;
401 + line-height: 1.2;
402 +}
403 +
404 +.display-2 {
405 + font-size: 5.5rem;
406 + font-weight: 300;
407 + line-height: 1.2;
408 +}
409 +
410 +.display-3 {
411 + font-size: 4.5rem;
412 + font-weight: 300;
413 + line-height: 1.2;
414 +}
415 +
416 +.display-4 {
417 + font-size: 3.5rem;
418 + font-weight: 300;
419 + line-height: 1.2;
420 +}
421 +
422 +hr {
423 + margin-top: 1rem;
424 + margin-bottom: 1rem;
425 + border: 0;
426 + border-top: 1px solid rgba(0, 0, 0, 0.1);
427 +}
428 +
429 +small,
430 +.small {
431 + font-size: 80%;
432 + font-weight: 400;
433 +}
434 +
435 +mark,
436 +.mark {
437 + padding: 0.2em;
438 + background-color: #fcf8e3;
439 +}
440 +
441 +.list-unstyled {
442 + padding-left: 0;
443 + list-style: none;
444 +}
445 +
446 +.list-inline {
447 + padding-left: 0;
448 + list-style: none;
449 +}
450 +
451 +.list-inline-item {
452 + display: inline-block;
453 +}
454 +
455 +.list-inline-item:not(:last-child) {
456 + margin-right: 0.5rem;
457 +}
458 +
459 +.initialism {
460 + font-size: 90%;
461 + text-transform: uppercase;
462 +}
463 +
464 +.blockquote {
465 + margin-bottom: 1rem;
466 + font-size: 1.25rem;
467 +}
468 +
469 +.blockquote-footer {
470 + display: block;
471 + font-size: 80%;
472 + color: #6c757d;
473 +}
474 +
475 +.blockquote-footer::before {
476 + content: "\2014\00A0";
477 +}
478 +
479 +.img-fluid {
480 + max-width: 100%;
481 + height: auto;
482 +}
483 +
484 +.img-thumbnail {
485 + padding: 0.25rem;
486 + background-color: #fff;
487 + border: 1px solid #dee2e6;
488 + border-radius: 0.25rem;
489 + max-width: 100%;
490 + height: auto;
491 +}
492 +
493 +.figure {
494 + display: inline-block;
495 +}
496 +
497 +.figure-img {
498 + margin-bottom: 0.5rem;
499 + line-height: 1;
500 +}
501 +
502 +.figure-caption {
503 + font-size: 90%;
504 + color: #6c757d;
505 +}
506 +
507 +code {
508 + font-size: 87.5%;
509 + color: #e83e8c;
510 + word-break: break-word;
511 +}
512 +
513 +a > code {
514 + color: inherit;
515 +}
516 +
517 +kbd {
518 + padding: 0.2rem 0.4rem;
519 + font-size: 87.5%;
520 + color: #fff;
521 + background-color: #212529;
522 + border-radius: 0.2rem;
523 +}
524 +
525 +kbd kbd {
526 + padding: 0;
527 + font-size: 100%;
528 + font-weight: 700;
529 +}
530 +
531 +pre {
532 + display: block;
533 + font-size: 87.5%;
534 + color: #212529;
535 +}
536 +
537 +pre code {
538 + font-size: inherit;
539 + color: inherit;
540 + word-break: normal;
541 +}
542 +
543 +.pre-scrollable {
544 + max-height: 340px;
545 + overflow-y: scroll;
546 +}
547 +
548 +.container {
549 + width: 100%;
550 + padding-right: 15px;
551 + padding-left: 15px;
552 + margin-right: auto;
553 + margin-left: auto;
554 +}
555 +
556 +@media (min-width: 576px) {
557 + .container {
558 + max-width: 540px;
559 + }
560 +}
561 +
562 +@media (min-width: 768px) {
563 + .container {
564 + max-width: 720px;
565 + }
566 +}
567 +
568 +@media (min-width: 992px) {
569 + .container {
570 + max-width: 960px;
571 + }
572 +}
573 +
574 +@media (min-width: 1200px) {
575 + .container {
576 + max-width: 1140px;
577 + }
578 +}
579 +
580 +.container-fluid {
581 + width: 100%;
582 + padding-right: 15px;
583 + padding-left: 15px;
584 + margin-right: auto;
585 + margin-left: auto;
586 +}
587 +
588 +.row {
589 + display: -ms-flexbox;
590 + display: flex;
591 + -ms-flex-wrap: wrap;
592 + flex-wrap: wrap;
593 + margin-right: -15px;
594 + margin-left: -15px;
595 +}
596 +
597 +.no-gutters {
598 + margin-right: 0;
599 + margin-left: 0;
600 +}
601 +
602 +.no-gutters > .col,
603 +.no-gutters > [class*="col-"] {
604 + padding-right: 0;
605 + padding-left: 0;
606 +}
607 +
608 +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
609 +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,
610 +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,
611 +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,
612 +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,
613 +.col-xl-auto {
614 + position: relative;
615 + width: 100%;
616 + padding-right: 15px;
617 + padding-left: 15px;
618 +}
619 +
620 +.col {
621 + -ms-flex-preferred-size: 0;
622 + flex-basis: 0;
623 + -ms-flex-positive: 1;
624 + flex-grow: 1;
625 + max-width: 100%;
626 +}
627 +
628 +.col-auto {
629 + -ms-flex: 0 0 auto;
630 + flex: 0 0 auto;
631 + width: auto;
632 + max-width: 100%;
633 +}
634 +
635 +.col-1 {
636 + -ms-flex: 0 0 8.333333%;
637 + flex: 0 0 8.333333%;
638 + max-width: 8.333333%;
639 +}
640 +
641 +.col-2 {
642 + -ms-flex: 0 0 16.666667%;
643 + flex: 0 0 16.666667%;
644 + max-width: 16.666667%;
645 +}
646 +
647 +.col-3 {
648 + -ms-flex: 0 0 25%;
649 + flex: 0 0 25%;
650 + max-width: 25%;
651 +}
652 +
653 +.col-4 {
654 + -ms-flex: 0 0 33.333333%;
655 + flex: 0 0 33.333333%;
656 + max-width: 33.333333%;
657 +}
658 +
659 +.col-5 {
660 + -ms-flex: 0 0 41.666667%;
661 + flex: 0 0 41.666667%;
662 + max-width: 41.666667%;
663 +}
664 +
665 +.col-6 {
666 + -ms-flex: 0 0 50%;
667 + flex: 0 0 50%;
668 + max-width: 50%;
669 +}
670 +
671 +.col-7 {
672 + -ms-flex: 0 0 58.333333%;
673 + flex: 0 0 58.333333%;
674 + max-width: 58.333333%;
675 +}
676 +
677 +.col-8 {
678 + -ms-flex: 0 0 66.666667%;
679 + flex: 0 0 66.666667%;
680 + max-width: 66.666667%;
681 +}
682 +
683 +.col-9 {
684 + -ms-flex: 0 0 75%;
685 + flex: 0 0 75%;
686 + max-width: 75%;
687 +}
688 +
689 +.col-10 {
690 + -ms-flex: 0 0 83.333333%;
691 + flex: 0 0 83.333333%;
692 + max-width: 83.333333%;
693 +}
694 +
695 +.col-11 {
696 + -ms-flex: 0 0 91.666667%;
697 + flex: 0 0 91.666667%;
698 + max-width: 91.666667%;
699 +}
700 +
701 +.col-12 {
702 + -ms-flex: 0 0 100%;
703 + flex: 0 0 100%;
704 + max-width: 100%;
705 +}
706 +
707 +.order-first {
708 + -ms-flex-order: -1;
709 + order: -1;
710 +}
711 +
712 +.order-last {
713 + -ms-flex-order: 13;
714 + order: 13;
715 +}
716 +
717 +.order-0 {
718 + -ms-flex-order: 0;
719 + order: 0;
720 +}
721 +
722 +.order-1 {
723 + -ms-flex-order: 1;
724 + order: 1;
725 +}
726 +
727 +.order-2 {
728 + -ms-flex-order: 2;
729 + order: 2;
730 +}
731 +
732 +.order-3 {
733 + -ms-flex-order: 3;
734 + order: 3;
735 +}
736 +
737 +.order-4 {
738 + -ms-flex-order: 4;
739 + order: 4;
740 +}
741 +
742 +.order-5 {
743 + -ms-flex-order: 5;
744 + order: 5;
745 +}
746 +
747 +.order-6 {
748 + -ms-flex-order: 6;
749 + order: 6;
750 +}
751 +
752 +.order-7 {
753 + -ms-flex-order: 7;
754 + order: 7;
755 +}
756 +
757 +.order-8 {
758 + -ms-flex-order: 8;
759 + order: 8;
760 +}
761 +
762 +.order-9 {
763 + -ms-flex-order: 9;
764 + order: 9;
765 +}
766 +
767 +.order-10 {
768 + -ms-flex-order: 10;
769 + order: 10;
770 +}
771 +
772 +.order-11 {
773 + -ms-flex-order: 11;
774 + order: 11;
775 +}
776 +
777 +.order-12 {
778 + -ms-flex-order: 12;
779 + order: 12;
780 +}
781 +
782 +.offset-1 {
783 + margin-left: 8.333333%;
784 +}
785 +
786 +.offset-2 {
787 + margin-left: 16.666667%;
788 +}
789 +
790 +.offset-3 {
791 + margin-left: 25%;
792 +}
793 +
794 +.offset-4 {
795 + margin-left: 33.333333%;
796 +}
797 +
798 +.offset-5 {
799 + margin-left: 41.666667%;
800 +}
801 +
802 +.offset-6 {
803 + margin-left: 50%;
804 +}
805 +
806 +.offset-7 {
807 + margin-left: 58.333333%;
808 +}
809 +
810 +.offset-8 {
811 + margin-left: 66.666667%;
812 +}
813 +
814 +.offset-9 {
815 + margin-left: 75%;
816 +}
817 +
818 +.offset-10 {
819 + margin-left: 83.333333%;
820 +}
821 +
822 +.offset-11 {
823 + margin-left: 91.666667%;
824 +}
825 +
826 +@media (min-width: 576px) {
827 + .col-sm {
828 + -ms-flex-preferred-size: 0;
829 + flex-basis: 0;
830 + -ms-flex-positive: 1;
831 + flex-grow: 1;
832 + max-width: 100%;
833 + }
834 + .col-sm-auto {
835 + -ms-flex: 0 0 auto;
836 + flex: 0 0 auto;
837 + width: auto;
838 + max-width: 100%;
839 + }
840 + .col-sm-1 {
841 + -ms-flex: 0 0 8.333333%;
842 + flex: 0 0 8.333333%;
843 + max-width: 8.333333%;
844 + }
845 + .col-sm-2 {
846 + -ms-flex: 0 0 16.666667%;
847 + flex: 0 0 16.666667%;
848 + max-width: 16.666667%;
849 + }
850 + .col-sm-3 {
851 + -ms-flex: 0 0 25%;
852 + flex: 0 0 25%;
853 + max-width: 25%;
854 + }
855 + .col-sm-4 {
856 + -ms-flex: 0 0 33.333333%;
857 + flex: 0 0 33.333333%;
858 + max-width: 33.333333%;
859 + }
860 + .col-sm-5 {
861 + -ms-flex: 0 0 41.666667%;
862 + flex: 0 0 41.666667%;
863 + max-width: 41.666667%;
864 + }
865 + .col-sm-6 {
866 + -ms-flex: 0 0 50%;
867 + flex: 0 0 50%;
868 + max-width: 50%;
869 + }
870 + .col-sm-7 {
871 + -ms-flex: 0 0 58.333333%;
872 + flex: 0 0 58.333333%;
873 + max-width: 58.333333%;
874 + }
875 + .col-sm-8 {
876 + -ms-flex: 0 0 66.666667%;
877 + flex: 0 0 66.666667%;
878 + max-width: 66.666667%;
879 + }
880 + .col-sm-9 {
881 + -ms-flex: 0 0 75%;
882 + flex: 0 0 75%;
883 + max-width: 75%;
884 + }
885 + .col-sm-10 {
886 + -ms-flex: 0 0 83.333333%;
887 + flex: 0 0 83.333333%;
888 + max-width: 83.333333%;
889 + }
890 + .col-sm-11 {
891 + -ms-flex: 0 0 91.666667%;
892 + flex: 0 0 91.666667%;
893 + max-width: 91.666667%;
894 + }
895 + .col-sm-12 {
896 + -ms-flex: 0 0 100%;
897 + flex: 0 0 100%;
898 + max-width: 100%;
899 + }
900 + .order-sm-first {
901 + -ms-flex-order: -1;
902 + order: -1;
903 + }
904 + .order-sm-last {
905 + -ms-flex-order: 13;
906 + order: 13;
907 + }
908 + .order-sm-0 {
909 + -ms-flex-order: 0;
910 + order: 0;
911 + }
912 + .order-sm-1 {
913 + -ms-flex-order: 1;
914 + order: 1;
915 + }
916 + .order-sm-2 {
917 + -ms-flex-order: 2;
918 + order: 2;
919 + }
920 + .order-sm-3 {
921 + -ms-flex-order: 3;
922 + order: 3;
923 + }
924 + .order-sm-4 {
925 + -ms-flex-order: 4;
926 + order: 4;
927 + }
928 + .order-sm-5 {
929 + -ms-flex-order: 5;
930 + order: 5;
931 + }
932 + .order-sm-6 {
933 + -ms-flex-order: 6;
934 + order: 6;
935 + }
936 + .order-sm-7 {
937 + -ms-flex-order: 7;
938 + order: 7;
939 + }
940 + .order-sm-8 {
941 + -ms-flex-order: 8;
942 + order: 8;
943 + }
944 + .order-sm-9 {
945 + -ms-flex-order: 9;
946 + order: 9;
947 + }
948 + .order-sm-10 {
949 + -ms-flex-order: 10;
950 + order: 10;
951 + }
952 + .order-sm-11 {
953 + -ms-flex-order: 11;
954 + order: 11;
955 + }
956 + .order-sm-12 {
957 + -ms-flex-order: 12;
958 + order: 12;
959 + }
960 + .offset-sm-0 {
961 + margin-left: 0;
962 + }
963 + .offset-sm-1 {
964 + margin-left: 8.333333%;
965 + }
966 + .offset-sm-2 {
967 + margin-left: 16.666667%;
968 + }
969 + .offset-sm-3 {
970 + margin-left: 25%;
971 + }
972 + .offset-sm-4 {
973 + margin-left: 33.333333%;
974 + }
975 + .offset-sm-5 {
976 + margin-left: 41.666667%;
977 + }
978 + .offset-sm-6 {
979 + margin-left: 50%;
980 + }
981 + .offset-sm-7 {
982 + margin-left: 58.333333%;
983 + }
984 + .offset-sm-8 {
985 + margin-left: 66.666667%;
986 + }
987 + .offset-sm-9 {
988 + margin-left: 75%;
989 + }
990 + .offset-sm-10 {
991 + margin-left: 83.333333%;
992 + }
993 + .offset-sm-11 {
994 + margin-left: 91.666667%;
995 + }
996 +}
997 +
998 +@media (min-width: 768px) {
999 + .col-md {
1000 + -ms-flex-preferred-size: 0;
1001 + flex-basis: 0;
1002 + -ms-flex-positive: 1;
1003 + flex-grow: 1;
1004 + max-width: 100%;
1005 + }
1006 + .col-md-auto {
1007 + -ms-flex: 0 0 auto;
1008 + flex: 0 0 auto;
1009 + width: auto;
1010 + max-width: 100%;
1011 + }
1012 + .col-md-1 {
1013 + -ms-flex: 0 0 8.333333%;
1014 + flex: 0 0 8.333333%;
1015 + max-width: 8.333333%;
1016 + }
1017 + .col-md-2 {
1018 + -ms-flex: 0 0 16.666667%;
1019 + flex: 0 0 16.666667%;
1020 + max-width: 16.666667%;
1021 + }
1022 + .col-md-3 {
1023 + -ms-flex: 0 0 25%;
1024 + flex: 0 0 25%;
1025 + max-width: 25%;
1026 + }
1027 + .col-md-4 {
1028 + -ms-flex: 0 0 33.333333%;
1029 + flex: 0 0 33.333333%;
1030 + max-width: 33.333333%;
1031 + }
1032 + .col-md-5 {
1033 + -ms-flex: 0 0 41.666667%;
1034 + flex: 0 0 41.666667%;
1035 + max-width: 41.666667%;
1036 + }
1037 + .col-md-6 {
1038 + -ms-flex: 0 0 50%;
1039 + flex: 0 0 50%;
1040 + max-width: 50%;
1041 + }
1042 + .col-md-7 {
1043 + -ms-flex: 0 0 58.333333%;
1044 + flex: 0 0 58.333333%;
1045 + max-width: 58.333333%;
1046 + }
1047 + .col-md-8 {
1048 + -ms-flex: 0 0 66.666667%;
1049 + flex: 0 0 66.666667%;
1050 + max-width: 66.666667%;
1051 + }
1052 + .col-md-9 {
1053 + -ms-flex: 0 0 75%;
1054 + flex: 0 0 75%;
1055 + max-width: 75%;
1056 + }
1057 + .col-md-10 {
1058 + -ms-flex: 0 0 83.333333%;
1059 + flex: 0 0 83.333333%;
1060 + max-width: 83.333333%;
1061 + }
1062 + .col-md-11 {
1063 + -ms-flex: 0 0 91.666667%;
1064 + flex: 0 0 91.666667%;
1065 + max-width: 91.666667%;
1066 + }
1067 + .col-md-12 {
1068 + -ms-flex: 0 0 100%;
1069 + flex: 0 0 100%;
1070 + max-width: 100%;
1071 + }
1072 + .order-md-first {
1073 + -ms-flex-order: -1;
1074 + order: -1;
1075 + }
1076 + .order-md-last {
1077 + -ms-flex-order: 13;
1078 + order: 13;
1079 + }
1080 + .order-md-0 {
1081 + -ms-flex-order: 0;
1082 + order: 0;
1083 + }
1084 + .order-md-1 {
1085 + -ms-flex-order: 1;
1086 + order: 1;
1087 + }
1088 + .order-md-2 {
1089 + -ms-flex-order: 2;
1090 + order: 2;
1091 + }
1092 + .order-md-3 {
1093 + -ms-flex-order: 3;
1094 + order: 3;
1095 + }
1096 + .order-md-4 {
1097 + -ms-flex-order: 4;
1098 + order: 4;
1099 + }
1100 + .order-md-5 {
1101 + -ms-flex-order: 5;
1102 + order: 5;
1103 + }
1104 + .order-md-6 {
1105 + -ms-flex-order: 6;
1106 + order: 6;
1107 + }
1108 + .order-md-7 {
1109 + -ms-flex-order: 7;
1110 + order: 7;
1111 + }
1112 + .order-md-8 {
1113 + -ms-flex-order: 8;
1114 + order: 8;
1115 + }
1116 + .order-md-9 {
1117 + -ms-flex-order: 9;
1118 + order: 9;
1119 + }
1120 + .order-md-10 {
1121 + -ms-flex-order: 10;
1122 + order: 10;
1123 + }
1124 + .order-md-11 {
1125 + -ms-flex-order: 11;
1126 + order: 11;
1127 + }
1128 + .order-md-12 {
1129 + -ms-flex-order: 12;
1130 + order: 12;
1131 + }
1132 + .offset-md-0 {
1133 + margin-left: 0;
1134 + }
1135 + .offset-md-1 {
1136 + margin-left: 8.333333%;
1137 + }
1138 + .offset-md-2 {
1139 + margin-left: 16.666667%;
1140 + }
1141 + .offset-md-3 {
1142 + margin-left: 25%;
1143 + }
1144 + .offset-md-4 {
1145 + margin-left: 33.333333%;
1146 + }
1147 + .offset-md-5 {
1148 + margin-left: 41.666667%;
1149 + }
1150 + .offset-md-6 {
1151 + margin-left: 50%;
1152 + }
1153 + .offset-md-7 {
1154 + margin-left: 58.333333%;
1155 + }
1156 + .offset-md-8 {
1157 + margin-left: 66.666667%;
1158 + }
1159 + .offset-md-9 {
1160 + margin-left: 75%;
1161 + }
1162 + .offset-md-10 {
1163 + margin-left: 83.333333%;
1164 + }
1165 + .offset-md-11 {
1166 + margin-left: 91.666667%;
1167 + }
1168 +}
1169 +
1170 +@media (min-width: 992px) {
1171 + .col-lg {
1172 + -ms-flex-preferred-size: 0;
1173 + flex-basis: 0;
1174 + -ms-flex-positive: 1;
1175 + flex-grow: 1;
1176 + max-width: 100%;
1177 + }
1178 + .col-lg-auto {
1179 + -ms-flex: 0 0 auto;
1180 + flex: 0 0 auto;
1181 + width: auto;
1182 + max-width: 100%;
1183 + }
1184 + .col-lg-1 {
1185 + -ms-flex: 0 0 8.333333%;
1186 + flex: 0 0 8.333333%;
1187 + max-width: 8.333333%;
1188 + }
1189 + .col-lg-2 {
1190 + -ms-flex: 0 0 16.666667%;
1191 + flex: 0 0 16.666667%;
1192 + max-width: 16.666667%;
1193 + }
1194 + .col-lg-3 {
1195 + -ms-flex: 0 0 25%;
1196 + flex: 0 0 25%;
1197 + max-width: 25%;
1198 + }
1199 + .col-lg-4 {
1200 + -ms-flex: 0 0 33.333333%;
1201 + flex: 0 0 33.333333%;
1202 + max-width: 33.333333%;
1203 + }
1204 + .col-lg-5 {
1205 + -ms-flex: 0 0 41.666667%;
1206 + flex: 0 0 41.666667%;
1207 + max-width: 41.666667%;
1208 + }
1209 + .col-lg-6 {
1210 + -ms-flex: 0 0 50%;
1211 + flex: 0 0 50%;
1212 + max-width: 50%;
1213 + }
1214 + .col-lg-7 {
1215 + -ms-flex: 0 0 58.333333%;
1216 + flex: 0 0 58.333333%;
1217 + max-width: 58.333333%;
1218 + }
1219 + .col-lg-8 {
1220 + -ms-flex: 0 0 66.666667%;
1221 + flex: 0 0 66.666667%;
1222 + max-width: 66.666667%;
1223 + }
1224 + .col-lg-9 {
1225 + -ms-flex: 0 0 75%;
1226 + flex: 0 0 75%;
1227 + max-width: 75%;
1228 + }
1229 + .col-lg-10 {
1230 + -ms-flex: 0 0 83.333333%;
1231 + flex: 0 0 83.333333%;
1232 + max-width: 83.333333%;
1233 + }
1234 + .col-lg-11 {
1235 + -ms-flex: 0 0 91.666667%;
1236 + flex: 0 0 91.666667%;
1237 + max-width: 91.666667%;
1238 + }
1239 + .col-lg-12 {
1240 + -ms-flex: 0 0 100%;
1241 + flex: 0 0 100%;
1242 + max-width: 100%;
1243 + }
1244 + .order-lg-first {
1245 + -ms-flex-order: -1;
1246 + order: -1;
1247 + }
1248 + .order-lg-last {
1249 + -ms-flex-order: 13;
1250 + order: 13;
1251 + }
1252 + .order-lg-0 {
1253 + -ms-flex-order: 0;
1254 + order: 0;
1255 + }
1256 + .order-lg-1 {
1257 + -ms-flex-order: 1;
1258 + order: 1;
1259 + }
1260 + .order-lg-2 {
1261 + -ms-flex-order: 2;
1262 + order: 2;
1263 + }
1264 + .order-lg-3 {
1265 + -ms-flex-order: 3;
1266 + order: 3;
1267 + }
1268 + .order-lg-4 {
1269 + -ms-flex-order: 4;
1270 + order: 4;
1271 + }
1272 + .order-lg-5 {
1273 + -ms-flex-order: 5;
1274 + order: 5;
1275 + }
1276 + .order-lg-6 {
1277 + -ms-flex-order: 6;
1278 + order: 6;
1279 + }
1280 + .order-lg-7 {
1281 + -ms-flex-order: 7;
1282 + order: 7;
1283 + }
1284 + .order-lg-8 {
1285 + -ms-flex-order: 8;
1286 + order: 8;
1287 + }
1288 + .order-lg-9 {
1289 + -ms-flex-order: 9;
1290 + order: 9;
1291 + }
1292 + .order-lg-10 {
1293 + -ms-flex-order: 10;
1294 + order: 10;
1295 + }
1296 + .order-lg-11 {
1297 + -ms-flex-order: 11;
1298 + order: 11;
1299 + }
1300 + .order-lg-12 {
1301 + -ms-flex-order: 12;
1302 + order: 12;
1303 + }
1304 + .offset-lg-0 {
1305 + margin-left: 0;
1306 + }
1307 + .offset-lg-1 {
1308 + margin-left: 8.333333%;
1309 + }
1310 + .offset-lg-2 {
1311 + margin-left: 16.666667%;
1312 + }
1313 + .offset-lg-3 {
1314 + margin-left: 25%;
1315 + }
1316 + .offset-lg-4 {
1317 + margin-left: 33.333333%;
1318 + }
1319 + .offset-lg-5 {
1320 + margin-left: 41.666667%;
1321 + }
1322 + .offset-lg-6 {
1323 + margin-left: 50%;
1324 + }
1325 + .offset-lg-7 {
1326 + margin-left: 58.333333%;
1327 + }
1328 + .offset-lg-8 {
1329 + margin-left: 66.666667%;
1330 + }
1331 + .offset-lg-9 {
1332 + margin-left: 75%;
1333 + }
1334 + .offset-lg-10 {
1335 + margin-left: 83.333333%;
1336 + }
1337 + .offset-lg-11 {
1338 + margin-left: 91.666667%;
1339 + }
1340 +}
1341 +
1342 +@media (min-width: 1200px) {
1343 + .col-xl {
1344 + -ms-flex-preferred-size: 0;
1345 + flex-basis: 0;
1346 + -ms-flex-positive: 1;
1347 + flex-grow: 1;
1348 + max-width: 100%;
1349 + }
1350 + .col-xl-auto {
1351 + -ms-flex: 0 0 auto;
1352 + flex: 0 0 auto;
1353 + width: auto;
1354 + max-width: 100%;
1355 + }
1356 + .col-xl-1 {
1357 + -ms-flex: 0 0 8.333333%;
1358 + flex: 0 0 8.333333%;
1359 + max-width: 8.333333%;
1360 + }
1361 + .col-xl-2 {
1362 + -ms-flex: 0 0 16.666667%;
1363 + flex: 0 0 16.666667%;
1364 + max-width: 16.666667%;
1365 + }
1366 + .col-xl-3 {
1367 + -ms-flex: 0 0 25%;
1368 + flex: 0 0 25%;
1369 + max-width: 25%;
1370 + }
1371 + .col-xl-4 {
1372 + -ms-flex: 0 0 33.333333%;
1373 + flex: 0 0 33.333333%;
1374 + max-width: 33.333333%;
1375 + }
1376 + .col-xl-5 {
1377 + -ms-flex: 0 0 41.666667%;
1378 + flex: 0 0 41.666667%;
1379 + max-width: 41.666667%;
1380 + }
1381 + .col-xl-6 {
1382 + -ms-flex: 0 0 50%;
1383 + flex: 0 0 50%;
1384 + max-width: 50%;
1385 + }
1386 + .col-xl-7 {
1387 + -ms-flex: 0 0 58.333333%;
1388 + flex: 0 0 58.333333%;
1389 + max-width: 58.333333%;
1390 + }
1391 + .col-xl-8 {
1392 + -ms-flex: 0 0 66.666667%;
1393 + flex: 0 0 66.666667%;
1394 + max-width: 66.666667%;
1395 + }
1396 + .col-xl-9 {
1397 + -ms-flex: 0 0 75%;
1398 + flex: 0 0 75%;
1399 + max-width: 75%;
1400 + }
1401 + .col-xl-10 {
1402 + -ms-flex: 0 0 83.333333%;
1403 + flex: 0 0 83.333333%;
1404 + max-width: 83.333333%;
1405 + }
1406 + .col-xl-11 {
1407 + -ms-flex: 0 0 91.666667%;
1408 + flex: 0 0 91.666667%;
1409 + max-width: 91.666667%;
1410 + }
1411 + .col-xl-12 {
1412 + -ms-flex: 0 0 100%;
1413 + flex: 0 0 100%;
1414 + max-width: 100%;
1415 + }
1416 + .order-xl-first {
1417 + -ms-flex-order: -1;
1418 + order: -1;
1419 + }
1420 + .order-xl-last {
1421 + -ms-flex-order: 13;
1422 + order: 13;
1423 + }
1424 + .order-xl-0 {
1425 + -ms-flex-order: 0;
1426 + order: 0;
1427 + }
1428 + .order-xl-1 {
1429 + -ms-flex-order: 1;
1430 + order: 1;
1431 + }
1432 + .order-xl-2 {
1433 + -ms-flex-order: 2;
1434 + order: 2;
1435 + }
1436 + .order-xl-3 {
1437 + -ms-flex-order: 3;
1438 + order: 3;
1439 + }
1440 + .order-xl-4 {
1441 + -ms-flex-order: 4;
1442 + order: 4;
1443 + }
1444 + .order-xl-5 {
1445 + -ms-flex-order: 5;
1446 + order: 5;
1447 + }
1448 + .order-xl-6 {
1449 + -ms-flex-order: 6;
1450 + order: 6;
1451 + }
1452 + .order-xl-7 {
1453 + -ms-flex-order: 7;
1454 + order: 7;
1455 + }
1456 + .order-xl-8 {
1457 + -ms-flex-order: 8;
1458 + order: 8;
1459 + }
1460 + .order-xl-9 {
1461 + -ms-flex-order: 9;
1462 + order: 9;
1463 + }
1464 + .order-xl-10 {
1465 + -ms-flex-order: 10;
1466 + order: 10;
1467 + }
1468 + .order-xl-11 {
1469 + -ms-flex-order: 11;
1470 + order: 11;
1471 + }
1472 + .order-xl-12 {
1473 + -ms-flex-order: 12;
1474 + order: 12;
1475 + }
1476 + .offset-xl-0 {
1477 + margin-left: 0;
1478 + }
1479 + .offset-xl-1 {
1480 + margin-left: 8.333333%;
1481 + }
1482 + .offset-xl-2 {
1483 + margin-left: 16.666667%;
1484 + }
1485 + .offset-xl-3 {
1486 + margin-left: 25%;
1487 + }
1488 + .offset-xl-4 {
1489 + margin-left: 33.333333%;
1490 + }
1491 + .offset-xl-5 {
1492 + margin-left: 41.666667%;
1493 + }
1494 + .offset-xl-6 {
1495 + margin-left: 50%;
1496 + }
1497 + .offset-xl-7 {
1498 + margin-left: 58.333333%;
1499 + }
1500 + .offset-xl-8 {
1501 + margin-left: 66.666667%;
1502 + }
1503 + .offset-xl-9 {
1504 + margin-left: 75%;
1505 + }
1506 + .offset-xl-10 {
1507 + margin-left: 83.333333%;
1508 + }
1509 + .offset-xl-11 {
1510 + margin-left: 91.666667%;
1511 + }
1512 +}
1513 +
1514 +.table {
1515 + width: 100%;
1516 + margin-bottom: 1rem;
1517 + color: #212529;
1518 +}
1519 +
1520 +.table th,
1521 +.table td {
1522 + padding: 0.75rem;
1523 + vertical-align: top;
1524 + border-top: 1px solid #dee2e6;
1525 +}
1526 +
1527 +.table thead th {
1528 + vertical-align: bottom;
1529 + border-bottom: 2px solid #dee2e6;
1530 +}
1531 +
1532 +.table tbody + tbody {
1533 + border-top: 2px solid #dee2e6;
1534 +}
1535 +
1536 +.table-sm th,
1537 +.table-sm td {
1538 + padding: 0.3rem;
1539 +}
1540 +
1541 +.table-bordered {
1542 + border: 1px solid #dee2e6;
1543 +}
1544 +
1545 +.table-bordered th,
1546 +.table-bordered td {
1547 + border: 1px solid #dee2e6;
1548 +}
1549 +
1550 +.table-bordered thead th,
1551 +.table-bordered thead td {
1552 + border-bottom-width: 2px;
1553 +}
1554 +
1555 +.table-borderless th,
1556 +.table-borderless td,
1557 +.table-borderless thead th,
1558 +.table-borderless tbody + tbody {
1559 + border: 0;
1560 +}
1561 +
1562 +.table-striped tbody tr:nth-of-type(odd) {
1563 + background-color: rgba(0, 0, 0, 0.05);
1564 +}
1565 +
1566 +.table-hover tbody tr:hover {
1567 + color: #212529;
1568 + background-color: rgba(0, 0, 0, 0.075);
1569 +}
1570 +
1571 +.table-primary,
1572 +.table-primary > th,
1573 +.table-primary > td {
1574 + background-color: #b8daff;
1575 +}
1576 +
1577 +.table-primary th,
1578 +.table-primary td,
1579 +.table-primary thead th,
1580 +.table-primary tbody + tbody {
1581 + border-color: #7abaff;
1582 +}
1583 +
1584 +.table-hover .table-primary:hover {
1585 + background-color: #9fcdff;
1586 +}
1587 +
1588 +.table-hover .table-primary:hover > td,
1589 +.table-hover .table-primary:hover > th {
1590 + background-color: #9fcdff;
1591 +}
1592 +
1593 +.table-secondary,
1594 +.table-secondary > th,
1595 +.table-secondary > td {
1596 + background-color: #d6d8db;
1597 +}
1598 +
1599 +.table-secondary th,
1600 +.table-secondary td,
1601 +.table-secondary thead th,
1602 +.table-secondary tbody + tbody {
1603 + border-color: #b3b7bb;
1604 +}
1605 +
1606 +.table-hover .table-secondary:hover {
1607 + background-color: #c8cbcf;
1608 +}
1609 +
1610 +.table-hover .table-secondary:hover > td,
1611 +.table-hover .table-secondary:hover > th {
1612 + background-color: #c8cbcf;
1613 +}
1614 +
1615 +.table-success,
1616 +.table-success > th,
1617 +.table-success > td {
1618 + background-color: #c3e6cb;
1619 +}
1620 +
1621 +.table-success th,
1622 +.table-success td,
1623 +.table-success thead th,
1624 +.table-success tbody + tbody {
1625 + border-color: #8fd19e;
1626 +}
1627 +
1628 +.table-hover .table-success:hover {
1629 + background-color: #b1dfbb;
1630 +}
1631 +
1632 +.table-hover .table-success:hover > td,
1633 +.table-hover .table-success:hover > th {
1634 + background-color: #b1dfbb;
1635 +}
1636 +
1637 +.table-info,
1638 +.table-info > th,
1639 +.table-info > td {
1640 + background-color: #bee5eb;
1641 +}
1642 +
1643 +.table-info th,
1644 +.table-info td,
1645 +.table-info thead th,
1646 +.table-info tbody + tbody {
1647 + border-color: #86cfda;
1648 +}
1649 +
1650 +.table-hover .table-info:hover {
1651 + background-color: #abdde5;
1652 +}
1653 +
1654 +.table-hover .table-info:hover > td,
1655 +.table-hover .table-info:hover > th {
1656 + background-color: #abdde5;
1657 +}
1658 +
1659 +.table-warning,
1660 +.table-warning > th,
1661 +.table-warning > td {
1662 + background-color: #ffeeba;
1663 +}
1664 +
1665 +.table-warning th,
1666 +.table-warning td,
1667 +.table-warning thead th,
1668 +.table-warning tbody + tbody {
1669 + border-color: #ffdf7e;
1670 +}
1671 +
1672 +.table-hover .table-warning:hover {
1673 + background-color: #ffe8a1;
1674 +}
1675 +
1676 +.table-hover .table-warning:hover > td,
1677 +.table-hover .table-warning:hover > th {
1678 + background-color: #ffe8a1;
1679 +}
1680 +
1681 +.table-danger,
1682 +.table-danger > th,
1683 +.table-danger > td {
1684 + background-color: #f5c6cb;
1685 +}
1686 +
1687 +.table-danger th,
1688 +.table-danger td,
1689 +.table-danger thead th,
1690 +.table-danger tbody + tbody {
1691 + border-color: #ed969e;
1692 +}
1693 +
1694 +.table-hover .table-danger:hover {
1695 + background-color: #f1b0b7;
1696 +}
1697 +
1698 +.table-hover .table-danger:hover > td,
1699 +.table-hover .table-danger:hover > th {
1700 + background-color: #f1b0b7;
1701 +}
1702 +
1703 +.table-light,
1704 +.table-light > th,
1705 +.table-light > td {
1706 + background-color: #fdfdfe;
1707 +}
1708 +
1709 +.table-light th,
1710 +.table-light td,
1711 +.table-light thead th,
1712 +.table-light tbody + tbody {
1713 + border-color: #fbfcfc;
1714 +}
1715 +
1716 +.table-hover .table-light:hover {
1717 + background-color: #ececf6;
1718 +}
1719 +
1720 +.table-hover .table-light:hover > td,
1721 +.table-hover .table-light:hover > th {
1722 + background-color: #ececf6;
1723 +}
1724 +
1725 +.table-dark,
1726 +.table-dark > th,
1727 +.table-dark > td {
1728 + background-color: #c6c8ca;
1729 +}
1730 +
1731 +.table-dark th,
1732 +.table-dark td,
1733 +.table-dark thead th,
1734 +.table-dark tbody + tbody {
1735 + border-color: #95999c;
1736 +}
1737 +
1738 +.table-hover .table-dark:hover {
1739 + background-color: #b9bbbe;
1740 +}
1741 +
1742 +.table-hover .table-dark:hover > td,
1743 +.table-hover .table-dark:hover > th {
1744 + background-color: #b9bbbe;
1745 +}
1746 +
1747 +.table-active,
1748 +.table-active > th,
1749 +.table-active > td {
1750 + background-color: rgba(0, 0, 0, 0.075);
1751 +}
1752 +
1753 +.table-hover .table-active:hover {
1754 + background-color: rgba(0, 0, 0, 0.075);
1755 +}
1756 +
1757 +.table-hover .table-active:hover > td,
1758 +.table-hover .table-active:hover > th {
1759 + background-color: rgba(0, 0, 0, 0.075);
1760 +}
1761 +
1762 +.table .thead-dark th {
1763 + color: #fff;
1764 + background-color: #343a40;
1765 + border-color: #454d55;
1766 +}
1767 +
1768 +.table .thead-light th {
1769 + color: #495057;
1770 + background-color: #e9ecef;
1771 + border-color: #dee2e6;
1772 +}
1773 +
1774 +.table-dark {
1775 + color: #fff;
1776 + background-color: #343a40;
1777 +}
1778 +
1779 +.table-dark th,
1780 +.table-dark td,
1781 +.table-dark thead th {
1782 + border-color: #454d55;
1783 +}
1784 +
1785 +.table-dark.table-bordered {
1786 + border: 0;
1787 +}
1788 +
1789 +.table-dark.table-striped tbody tr:nth-of-type(odd) {
1790 + background-color: rgba(255, 255, 255, 0.05);
1791 +}
1792 +
1793 +.table-dark.table-hover tbody tr:hover {
1794 + color: #fff;
1795 + background-color: rgba(255, 255, 255, 0.075);
1796 +}
1797 +
1798 +@media (max-width: 575.98px) {
1799 + .table-responsive-sm {
1800 + display: block;
1801 + width: 100%;
1802 + overflow-x: auto;
1803 + -webkit-overflow-scrolling: touch;
1804 + }
1805 + .table-responsive-sm > .table-bordered {
1806 + border: 0;
1807 + }
1808 +}
1809 +
1810 +@media (max-width: 767.98px) {
1811 + .table-responsive-md {
1812 + display: block;
1813 + width: 100%;
1814 + overflow-x: auto;
1815 + -webkit-overflow-scrolling: touch;
1816 + }
1817 + .table-responsive-md > .table-bordered {
1818 + border: 0;
1819 + }
1820 +}
1821 +
1822 +@media (max-width: 991.98px) {
1823 + .table-responsive-lg {
1824 + display: block;
1825 + width: 100%;
1826 + overflow-x: auto;
1827 + -webkit-overflow-scrolling: touch;
1828 + }
1829 + .table-responsive-lg > .table-bordered {
1830 + border: 0;
1831 + }
1832 +}
1833 +
1834 +@media (max-width: 1199.98px) {
1835 + .table-responsive-xl {
1836 + display: block;
1837 + width: 100%;
1838 + overflow-x: auto;
1839 + -webkit-overflow-scrolling: touch;
1840 + }
1841 + .table-responsive-xl > .table-bordered {
1842 + border: 0;
1843 + }
1844 +}
1845 +
1846 +.table-responsive {
1847 + display: block;
1848 + width: 100%;
1849 + overflow-x: auto;
1850 + -webkit-overflow-scrolling: touch;
1851 +}
1852 +
1853 +.table-responsive > .table-bordered {
1854 + border: 0;
1855 +}
1856 +
1857 +.form-control {
1858 + display: block;
1859 + width: 100%;
1860 + height: calc(1.5em + 0.75rem + 2px);
1861 + padding: 0.375rem 0.75rem;
1862 + font-size: 1rem;
1863 + font-weight: 400;
1864 + line-height: 1.5;
1865 + color: #495057;
1866 + background-color: #fff;
1867 + background-clip: padding-box;
1868 + border: 1px solid #ced4da;
1869 + border-radius: 0.25rem;
1870 + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
1871 +}
1872 +
1873 +@media (prefers-reduced-motion: reduce) {
1874 + .form-control {
1875 + transition: none;
1876 + }
1877 +}
1878 +
1879 +.form-control::-ms-expand {
1880 + background-color: transparent;
1881 + border: 0;
1882 +}
1883 +
1884 +.form-control:focus {
1885 + color: #495057;
1886 + background-color: #fff;
1887 + border-color: #80bdff;
1888 + outline: 0;
1889 + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
1890 +}
1891 +
1892 +.form-control::-webkit-input-placeholder {
1893 + color: #6c757d;
1894 + opacity: 1;
1895 +}
1896 +
1897 +.form-control::-moz-placeholder {
1898 + color: #6c757d;
1899 + opacity: 1;
1900 +}
1901 +
1902 +.form-control:-ms-input-placeholder {
1903 + color: #6c757d;
1904 + opacity: 1;
1905 +}
1906 +
1907 +.form-control::-ms-input-placeholder {
1908 + color: #6c757d;
1909 + opacity: 1;
1910 +}
1911 +
1912 +.form-control::placeholder {
1913 + color: #6c757d;
1914 + opacity: 1;
1915 +}
1916 +
1917 +.form-control:disabled, .form-control[readonly] {
1918 + background-color: #e9ecef;
1919 + opacity: 1;
1920 +}
1921 +
1922 +select.form-control:focus::-ms-value {
1923 + color: #495057;
1924 + background-color: #fff;
1925 +}
1926 +
1927 +.form-control-file,
1928 +.form-control-range {
1929 + display: block;
1930 + width: 100%;
1931 +}
1932 +
1933 +.col-form-label {
1934 + padding-top: calc(0.375rem + 1px);
1935 + padding-bottom: calc(0.375rem + 1px);
1936 + margin-bottom: 0;
1937 + font-size: inherit;
1938 + line-height: 1.5;
1939 +}
1940 +
1941 +.col-form-label-lg {
1942 + padding-top: calc(0.5rem + 1px);
1943 + padding-bottom: calc(0.5rem + 1px);
1944 + font-size: 1.25rem;
1945 + line-height: 1.5;
1946 +}
1947 +
1948 +.col-form-label-sm {
1949 + padding-top: calc(0.25rem + 1px);
1950 + padding-bottom: calc(0.25rem + 1px);
1951 + font-size: 0.875rem;
1952 + line-height: 1.5;
1953 +}
1954 +
1955 +.form-control-plaintext {
1956 + display: block;
1957 + width: 100%;
1958 + padding-top: 0.375rem;
1959 + padding-bottom: 0.375rem;
1960 + margin-bottom: 0;
1961 + line-height: 1.5;
1962 + color: #212529;
1963 + background-color: transparent;
1964 + border: solid transparent;
1965 + border-width: 1px 0;
1966 +}
1967 +
1968 +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
1969 + padding-right: 0;
1970 + padding-left: 0;
1971 +}
1972 +
1973 +.form-control-sm {
1974 + height: calc(1.5em + 0.5rem + 2px);
1975 + padding: 0.25rem 0.5rem;
1976 + font-size: 0.875rem;
1977 + line-height: 1.5;
1978 + border-radius: 0.2rem;
1979 +}
1980 +
1981 +.form-control-lg {
1982 + height: calc(1.5em + 1rem + 2px);
1983 + padding: 0.5rem 1rem;
1984 + font-size: 1.25rem;
1985 + line-height: 1.5;
1986 + border-radius: 0.3rem;
1987 +}
1988 +
1989 +select.form-control[size], select.form-control[multiple] {
1990 + height: auto;
1991 +}
1992 +
1993 +textarea.form-control {
1994 + height: auto;
1995 +}
1996 +
1997 +.form-group {
1998 + margin-bottom: 1rem;
1999 +}
2000 +
2001 +.form-text {
2002 + display: block;
2003 + margin-top: 0.25rem;
2004 +}
2005 +
2006 +.form-row {
2007 + display: -ms-flexbox;
2008 + display: flex;
2009 + -ms-flex-wrap: wrap;
2010 + flex-wrap: wrap;
2011 + margin-right: -5px;
2012 + margin-left: -5px;
2013 +}
2014 +
2015 +.form-row > .col,
2016 +.form-row > [class*="col-"] {
2017 + padding-right: 5px;
2018 + padding-left: 5px;
2019 +}
2020 +
2021 +.form-check {
2022 + position: relative;
2023 + display: block;
2024 + padding-left: 1.25rem;
2025 +}
2026 +
2027 +.form-check-input {
2028 + position: absolute;
2029 + margin-top: 0.3rem;
2030 + margin-left: -1.25rem;
2031 +}
2032 +
2033 +.form-check-input:disabled ~ .form-check-label {
2034 + color: #6c757d;
2035 +}
2036 +
2037 +.form-check-label {
2038 + margin-bottom: 0;
2039 +}
2040 +
2041 +.form-check-inline {
2042 + display: -ms-inline-flexbox;
2043 + display: inline-flex;
2044 + -ms-flex-align: center;
2045 + align-items: center;
2046 + padding-left: 0;
2047 + margin-right: 0.75rem;
2048 +}
2049 +
2050 +.form-check-inline .form-check-input {
2051 + position: static;
2052 + margin-top: 0;
2053 + margin-right: 0.3125rem;
2054 + margin-left: 0;
2055 +}
2056 +
2057 +.valid-feedback {
2058 + display: none;
2059 + width: 100%;
2060 + margin-top: 0.25rem;
2061 + font-size: 80%;
2062 + color: #28a745;
2063 +}
2064 +
2065 +.valid-tooltip {
2066 + position: absolute;
2067 + top: 100%;
2068 + z-index: 5;
2069 + display: none;
2070 + max-width: 100%;
2071 + padding: 0.25rem 0.5rem;
2072 + margin-top: .1rem;
2073 + font-size: 0.875rem;
2074 + line-height: 1.5;
2075 + color: #fff;
2076 + background-color: rgba(40, 167, 69, 0.9);
2077 + border-radius: 0.25rem;
2078 +}
2079 +
2080 +.was-validated .form-control:valid, .form-control.is-valid {
2081 + border-color: #28a745;
2082 + padding-right: calc(1.5em + 0.75rem);
2083 + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
2084 + background-repeat: no-repeat;
2085 + background-position: center right calc(0.375em + 0.1875rem);
2086 + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2087 +}
2088 +
2089 +.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
2090 + border-color: #28a745;
2091 + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
2092 +}
2093 +
2094 +.was-validated .form-control:valid ~ .valid-feedback,
2095 +.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,
2096 +.form-control.is-valid ~ .valid-tooltip {
2097 + display: block;
2098 +}
2099 +
2100 +.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
2101 + padding-right: calc(1.5em + 0.75rem);
2102 + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
2103 +}
2104 +
2105 +.was-validated .custom-select:valid, .custom-select.is-valid {
2106 + border-color: #28a745;
2107 + padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);
2108 + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2109 +}
2110 +
2111 +.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
2112 + border-color: #28a745;
2113 + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
2114 +}
2115 +
2116 +.was-validated .custom-select:valid ~ .valid-feedback,
2117 +.was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback,
2118 +.custom-select.is-valid ~ .valid-tooltip {
2119 + display: block;
2120 +}
2121 +
2122 +.was-validated .form-control-file:valid ~ .valid-feedback,
2123 +.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,
2124 +.form-control-file.is-valid ~ .valid-tooltip {
2125 + display: block;
2126 +}
2127 +
2128 +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
2129 + color: #28a745;
2130 +}
2131 +
2132 +.was-validated .form-check-input:valid ~ .valid-feedback,
2133 +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,
2134 +.form-check-input.is-valid ~ .valid-tooltip {
2135 + display: block;
2136 +}
2137 +
2138 +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {
2139 + color: #28a745;
2140 +}
2141 +
2142 +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {
2143 + border-color: #28a745;
2144 +}
2145 +
2146 +.was-validated .custom-control-input:valid ~ .valid-feedback,
2147 +.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,
2148 +.custom-control-input.is-valid ~ .valid-tooltip {
2149 + display: block;
2150 +}
2151 +
2152 +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {
2153 + border-color: #34ce57;
2154 + background-color: #34ce57;
2155 +}
2156 +
2157 +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {
2158 + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
2159 +}
2160 +
2161 +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {
2162 + border-color: #28a745;
2163 +}
2164 +
2165 +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {
2166 + border-color: #28a745;
2167 +}
2168 +
2169 +.was-validated .custom-file-input:valid ~ .valid-feedback,
2170 +.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,
2171 +.custom-file-input.is-valid ~ .valid-tooltip {
2172 + display: block;
2173 +}
2174 +
2175 +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {
2176 + border-color: #28a745;
2177 + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
2178 +}
2179 +
2180 +.invalid-feedback {
2181 + display: none;
2182 + width: 100%;
2183 + margin-top: 0.25rem;
2184 + font-size: 80%;
2185 + color: #dc3545;
2186 +}
2187 +
2188 +.invalid-tooltip {
2189 + position: absolute;
2190 + top: 100%;
2191 + z-index: 5;
2192 + display: none;
2193 + max-width: 100%;
2194 + padding: 0.25rem 0.5rem;
2195 + margin-top: .1rem;
2196 + font-size: 0.875rem;
2197 + line-height: 1.5;
2198 + color: #fff;
2199 + background-color: rgba(220, 53, 69, 0.9);
2200 + border-radius: 0.25rem;
2201 +}
2202 +
2203 +.was-validated .form-control:invalid, .form-control.is-invalid {
2204 + border-color: #dc3545;
2205 + padding-right: calc(1.5em + 0.75rem);
2206 + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");
2207 + background-repeat: no-repeat;
2208 + background-position: center right calc(0.375em + 0.1875rem);
2209 + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2210 +}
2211 +
2212 +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
2213 + border-color: #dc3545;
2214 + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
2215 +}
2216 +
2217 +.was-validated .form-control:invalid ~ .invalid-feedback,
2218 +.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,
2219 +.form-control.is-invalid ~ .invalid-tooltip {
2220 + display: block;
2221 +}
2222 +
2223 +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
2224 + padding-right: calc(1.5em + 0.75rem);
2225 + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
2226 +}
2227 +
2228 +.was-validated .custom-select:invalid, .custom-select.is-invalid {
2229 + border-color: #dc3545;
2230 + padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);
2231 + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
2232 +}
2233 +
2234 +.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
2235 + border-color: #dc3545;
2236 + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
2237 +}
2238 +
2239 +.was-validated .custom-select:invalid ~ .invalid-feedback,
2240 +.was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback,
2241 +.custom-select.is-invalid ~ .invalid-tooltip {
2242 + display: block;
2243 +}
2244 +
2245 +.was-validated .form-control-file:invalid ~ .invalid-feedback,
2246 +.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,
2247 +.form-control-file.is-invalid ~ .invalid-tooltip {
2248 + display: block;
2249 +}
2250 +
2251 +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
2252 + color: #dc3545;
2253 +}
2254 +
2255 +.was-validated .form-check-input:invalid ~ .invalid-feedback,
2256 +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,
2257 +.form-check-input.is-invalid ~ .invalid-tooltip {
2258 + display: block;
2259 +}
2260 +
2261 +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {
2262 + color: #dc3545;
2263 +}
2264 +
2265 +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {
2266 + border-color: #dc3545;
2267 +}
2268 +
2269 +.was-validated .custom-control-input:invalid ~ .invalid-feedback,
2270 +.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,
2271 +.custom-control-input.is-invalid ~ .invalid-tooltip {
2272 + display: block;
2273 +}
2274 +
2275 +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {
2276 + border-color: #e4606d;
2277 + background-color: #e4606d;
2278 +}
2279 +
2280 +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {
2281 + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
2282 +}
2283 +
2284 +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {
2285 + border-color: #dc3545;
2286 +}
2287 +
2288 +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {
2289 + border-color: #dc3545;
2290 +}
2291 +
2292 +.was-validated .custom-file-input:invalid ~ .invalid-feedback,
2293 +.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,
2294 +.custom-file-input.is-invalid ~ .invalid-tooltip {
2295 + display: block;
2296 +}
2297 +
2298 +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {
2299 + border-color: #dc3545;
2300 + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
2301 +}
2302 +
2303 +.form-inline {
2304 + display: -ms-flexbox;
2305 + display: flex;
2306 + -ms-flex-flow: row wrap;
2307 + flex-flow: row wrap;
2308 + -ms-flex-align: center;
2309 + align-items: center;
2310 +}
2311 +
2312 +.form-inline .form-check {
2313 + width: 100%;
2314 +}
2315 +
2316 +@media (min-width: 576px) {
2317 + .form-inline label {
2318 + display: -ms-flexbox;
2319 + display: flex;
2320 + -ms-flex-align: center;
2321 + align-items: center;
2322 + -ms-flex-pack: center;
2323 + justify-content: center;
2324 + margin-bottom: 0;
2325 + }
2326 + .form-inline .form-group {
2327 + display: -ms-flexbox;
2328 + display: flex;
2329 + -ms-flex: 0 0 auto;
2330 + flex: 0 0 auto;
2331 + -ms-flex-flow: row wrap;
2332 + flex-flow: row wrap;
2333 + -ms-flex-align: center;
2334 + align-items: center;
2335 + margin-bottom: 0;
2336 + }
2337 + .form-inline .form-control {
2338 + display: inline-block;
2339 + width: auto;
2340 + vertical-align: middle;
2341 + }
2342 + .form-inline .form-control-plaintext {
2343 + display: inline-block;
2344 + }
2345 + .form-inline .input-group,
2346 + .form-inline .custom-select {
2347 + width: auto;
2348 + }
2349 + .form-inline .form-check {
2350 + display: -ms-flexbox;
2351 + display: flex;
2352 + -ms-flex-align: center;
2353 + align-items: center;
2354 + -ms-flex-pack: center;
2355 + justify-content: center;
2356 + width: auto;
2357 + padding-left: 0;
2358 + }
2359 + .form-inline .form-check-input {
2360 + position: relative;
2361 + -ms-flex-negative: 0;
2362 + flex-shrink: 0;
2363 + margin-top: 0;
2364 + margin-right: 0.25rem;
2365 + margin-left: 0;
2366 + }
2367 + .form-inline .custom-control {
2368 + -ms-flex-align: center;
2369 + align-items: center;
2370 + -ms-flex-pack: center;
2371 + justify-content: center;
2372 + }
2373 + .form-inline .custom-control-label {
2374 + margin-bottom: 0;
2375 + }
2376 +}
2377 +
2378 +.btn {
2379 + display: inline-block;
2380 + font-weight: 400;
2381 + color: #212529;
2382 + text-align: center;
2383 + vertical-align: middle;
2384 + -webkit-user-select: none;
2385 + -moz-user-select: none;
2386 + -ms-user-select: none;
2387 + user-select: none;
2388 + background-color: transparent;
2389 + border: 1px solid transparent;
2390 + padding: 0.375rem 0.75rem;
2391 + font-size: 1rem;
2392 + line-height: 1.5;
2393 + border-radius: 0.25rem;
2394 + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
2395 +}
2396 +
2397 +@media (prefers-reduced-motion: reduce) {
2398 + .btn {
2399 + transition: none;
2400 + }
2401 +}
2402 +
2403 +.btn:hover {
2404 + color: #212529;
2405 + text-decoration: none;
2406 +}
2407 +
2408 +.btn:focus, .btn.focus {
2409 + outline: 0;
2410 + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
2411 +}
2412 +
2413 +.btn.disabled, .btn:disabled {
2414 + opacity: 0.65;
2415 +}
2416 +
2417 +a.btn.disabled,
2418 +fieldset:disabled a.btn {
2419 + pointer-events: none;
2420 +}
2421 +
2422 +.btn-primary {
2423 + color: #fff;
2424 + background-color: #007bff;
2425 + border-color: #007bff;
2426 +}
2427 +
2428 +.btn-primary:hover {
2429 + color: #fff;
2430 + background-color: #0069d9;
2431 + border-color: #0062cc;
2432 +}
2433 +
2434 +.btn-primary:focus, .btn-primary.focus {
2435 + box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
2436 +}
2437 +
2438 +.btn-primary.disabled, .btn-primary:disabled {
2439 + color: #fff;
2440 + background-color: #007bff;
2441 + border-color: #007bff;
2442 +}
2443 +
2444 +.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,
2445 +.show > .btn-primary.dropdown-toggle {
2446 + color: #fff;
2447 + background-color: #0062cc;
2448 + border-color: #005cbf;
2449 +}
2450 +
2451 +.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,
2452 +.show > .btn-primary.dropdown-toggle:focus {
2453 + box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
2454 +}
2455 +
2456 +.btn-secondary {
2457 + color: #fff;
2458 + background-color: #6c757d;
2459 + border-color: #6c757d;
2460 +}
2461 +
2462 +.btn-secondary:hover {
2463 + color: #fff;
2464 + background-color: #5a6268;
2465 + border-color: #545b62;
2466 +}
2467 +
2468 +.btn-secondary:focus, .btn-secondary.focus {
2469 + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
2470 +}
2471 +
2472 +.btn-secondary.disabled, .btn-secondary:disabled {
2473 + color: #fff;
2474 + background-color: #6c757d;
2475 + border-color: #6c757d;
2476 +}
2477 +
2478 +.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,
2479 +.show > .btn-secondary.dropdown-toggle {
2480 + color: #fff;
2481 + background-color: #545b62;
2482 + border-color: #4e555b;
2483 +}
2484 +
2485 +.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,
2486 +.show > .btn-secondary.dropdown-toggle:focus {
2487 + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5);
2488 +}
2489 +
2490 +.btn-success {
2491 + color: #fff;
2492 + background-color: #28a745;
2493 + border-color: #28a745;
2494 +}
2495 +
2496 +.btn-success:hover {
2497 + color: #fff;
2498 + background-color: #218838;
2499 + border-color: #1e7e34;
2500 +}
2501 +
2502 +.btn-success:focus, .btn-success.focus {
2503 + box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);
2504 +}
2505 +
2506 +.btn-success.disabled, .btn-success:disabled {
2507 + color: #fff;
2508 + background-color: #28a745;
2509 + border-color: #28a745;
2510 +}
2511 +
2512 +.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,
2513 +.show > .btn-success.dropdown-toggle {
2514 + color: #fff;
2515 + background-color: #1e7e34;
2516 + border-color: #1c7430;
2517 +}
2518 +
2519 +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,
2520 +.show > .btn-success.dropdown-toggle:focus {
2521 + box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5);
2522 +}
2523 +
2524 +.btn-info {
2525 + color: #fff;
2526 + background-color: #17a2b8;
2527 + border-color: #17a2b8;
2528 +}
2529 +
2530 +.btn-info:hover {
2531 + color: #fff;
2532 + background-color: #138496;
2533 + border-color: #117a8b;
2534 +}
2535 +
2536 +.btn-info:focus, .btn-info.focus {
2537 + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
2538 +}
2539 +
2540 +.btn-info.disabled, .btn-info:disabled {
2541 + color: #fff;
2542 + background-color: #17a2b8;
2543 + border-color: #17a2b8;
2544 +}
2545 +
2546 +.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,
2547 +.show > .btn-info.dropdown-toggle {
2548 + color: #fff;
2549 + background-color: #117a8b;
2550 + border-color: #10707f;
2551 +}
2552 +
2553 +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,
2554 +.show > .btn-info.dropdown-toggle:focus {
2555 + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5);
2556 +}
2557 +
2558 +.btn-warning {
2559 + color: #212529;
2560 + background-color: #ffc107;
2561 + border-color: #ffc107;
2562 +}
2563 +
2564 +.btn-warning:hover {
2565 + color: #212529;
2566 + background-color: #e0a800;
2567 + border-color: #d39e00;
2568 +}
2569 +
2570 +.btn-warning:focus, .btn-warning.focus {
2571 + box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);
2572 +}
2573 +
2574 +.btn-warning.disabled, .btn-warning:disabled {
2575 + color: #212529;
2576 + background-color: #ffc107;
2577 + border-color: #ffc107;
2578 +}
2579 +
2580 +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,
2581 +.show > .btn-warning.dropdown-toggle {
2582 + color: #212529;
2583 + background-color: #d39e00;
2584 + border-color: #c69500;
2585 +}
2586 +
2587 +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,
2588 +.show > .btn-warning.dropdown-toggle:focus {
2589 + box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5);
2590 +}
2591 +
2592 +.btn-danger {
2593 + color: #fff;
2594 + background-color: #dc3545;
2595 + border-color: #dc3545;
2596 +}
2597 +
2598 +.btn-danger:hover {
2599 + color: #fff;
2600 + background-color: #c82333;
2601 + border-color: #bd2130;
2602 +}
2603 +
2604 +.btn-danger:focus, .btn-danger.focus {
2605 + box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
2606 +}
2607 +
2608 +.btn-danger.disabled, .btn-danger:disabled {
2609 + color: #fff;
2610 + background-color: #dc3545;
2611 + border-color: #dc3545;
2612 +}
2613 +
2614 +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,
2615 +.show > .btn-danger.dropdown-toggle {
2616 + color: #fff;
2617 + background-color: #bd2130;
2618 + border-color: #b21f2d;
2619 +}
2620 +
2621 +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,
2622 +.show > .btn-danger.dropdown-toggle:focus {
2623 + box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5);
2624 +}
2625 +
2626 +.btn-light {
2627 + color: #212529;
2628 + background-color: #f8f9fa;
2629 + border-color: #f8f9fa;
2630 +}
2631 +
2632 +.btn-light:hover {
2633 + color: #212529;
2634 + background-color: #e2e6ea;
2635 + border-color: #dae0e5;
2636 +}
2637 +
2638 +.btn-light:focus, .btn-light.focus {
2639 + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);
2640 +}
2641 +
2642 +.btn-light.disabled, .btn-light:disabled {
2643 + color: #212529;
2644 + background-color: #f8f9fa;
2645 + border-color: #f8f9fa;
2646 +}
2647 +
2648 +.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,
2649 +.show > .btn-light.dropdown-toggle {
2650 + color: #212529;
2651 + background-color: #dae0e5;
2652 + border-color: #d3d9df;
2653 +}
2654 +
2655 +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,
2656 +.show > .btn-light.dropdown-toggle:focus {
2657 + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5);
2658 +}
2659 +
2660 +.btn-dark {
2661 + color: #fff;
2662 + background-color: #343a40;
2663 + border-color: #343a40;
2664 +}
2665 +
2666 +.btn-dark:hover {
2667 + color: #fff;
2668 + background-color: #23272b;
2669 + border-color: #1d2124;
2670 +}
2671 +
2672 +.btn-dark:focus, .btn-dark.focus {
2673 + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);
2674 +}
2675 +
2676 +.btn-dark.disabled, .btn-dark:disabled {
2677 + color: #fff;
2678 + background-color: #343a40;
2679 + border-color: #343a40;
2680 +}
2681 +
2682 +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,
2683 +.show > .btn-dark.dropdown-toggle {
2684 + color: #fff;
2685 + background-color: #1d2124;
2686 + border-color: #171a1d;
2687 +}
2688 +
2689 +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,
2690 +.show > .btn-dark.dropdown-toggle:focus {
2691 + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5);
2692 +}
2693 +
2694 +.btn-outline-primary {
2695 + color: #007bff;
2696 + border-color: #007bff;
2697 +}
2698 +
2699 +.btn-outline-primary:hover {
2700 + color: #fff;
2701 + background-color: #007bff;
2702 + border-color: #007bff;
2703 +}
2704 +
2705 +.btn-outline-primary:focus, .btn-outline-primary.focus {
2706 + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
2707 +}
2708 +
2709 +.btn-outline-primary.disabled, .btn-outline-primary:disabled {
2710 + color: #007bff;
2711 + background-color: transparent;
2712 +}
2713 +
2714 +.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,
2715 +.show > .btn-outline-primary.dropdown-toggle {
2716 + color: #fff;
2717 + background-color: #007bff;
2718 + border-color: #007bff;
2719 +}
2720 +
2721 +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,
2722 +.show > .btn-outline-primary.dropdown-toggle:focus {
2723 + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
2724 +}
2725 +
2726 +.btn-outline-secondary {
2727 + color: #6c757d;
2728 + border-color: #6c757d;
2729 +}
2730 +
2731 +.btn-outline-secondary:hover {
2732 + color: #fff;
2733 + background-color: #6c757d;
2734 + border-color: #6c757d;
2735 +}
2736 +
2737 +.btn-outline-secondary:focus, .btn-outline-secondary.focus {
2738 + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
2739 +}
2740 +
2741 +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {
2742 + color: #6c757d;
2743 + background-color: transparent;
2744 +}
2745 +
2746 +.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,
2747 +.show > .btn-outline-secondary.dropdown-toggle {
2748 + color: #fff;
2749 + background-color: #6c757d;
2750 + border-color: #6c757d;
2751 +}
2752 +
2753 +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
2754 +.show > .btn-outline-secondary.dropdown-toggle:focus {
2755 + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
2756 +}
2757 +
2758 +.btn-outline-success {
2759 + color: #28a745;
2760 + border-color: #28a745;
2761 +}
2762 +
2763 +.btn-outline-success:hover {
2764 + color: #fff;
2765 + background-color: #28a745;
2766 + border-color: #28a745;
2767 +}
2768 +
2769 +.btn-outline-success:focus, .btn-outline-success.focus {
2770 + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
2771 +}
2772 +
2773 +.btn-outline-success.disabled, .btn-outline-success:disabled {
2774 + color: #28a745;
2775 + background-color: transparent;
2776 +}
2777 +
2778 +.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,
2779 +.show > .btn-outline-success.dropdown-toggle {
2780 + color: #fff;
2781 + background-color: #28a745;
2782 + border-color: #28a745;
2783 +}
2784 +
2785 +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,
2786 +.show > .btn-outline-success.dropdown-toggle:focus {
2787 + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
2788 +}
2789 +
2790 +.btn-outline-info {
2791 + color: #17a2b8;
2792 + border-color: #17a2b8;
2793 +}
2794 +
2795 +.btn-outline-info:hover {
2796 + color: #fff;
2797 + background-color: #17a2b8;
2798 + border-color: #17a2b8;
2799 +}
2800 +
2801 +.btn-outline-info:focus, .btn-outline-info.focus {
2802 + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
2803 +}
2804 +
2805 +.btn-outline-info.disabled, .btn-outline-info:disabled {
2806 + color: #17a2b8;
2807 + background-color: transparent;
2808 +}
2809 +
2810 +.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,
2811 +.show > .btn-outline-info.dropdown-toggle {
2812 + color: #fff;
2813 + background-color: #17a2b8;
2814 + border-color: #17a2b8;
2815 +}
2816 +
2817 +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,
2818 +.show > .btn-outline-info.dropdown-toggle:focus {
2819 + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
2820 +}
2821 +
2822 +.btn-outline-warning {
2823 + color: #ffc107;
2824 + border-color: #ffc107;
2825 +}
2826 +
2827 +.btn-outline-warning:hover {
2828 + color: #212529;
2829 + background-color: #ffc107;
2830 + border-color: #ffc107;
2831 +}
2832 +
2833 +.btn-outline-warning:focus, .btn-outline-warning.focus {
2834 + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
2835 +}
2836 +
2837 +.btn-outline-warning.disabled, .btn-outline-warning:disabled {
2838 + color: #ffc107;
2839 + background-color: transparent;
2840 +}
2841 +
2842 +.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,
2843 +.show > .btn-outline-warning.dropdown-toggle {
2844 + color: #212529;
2845 + background-color: #ffc107;
2846 + border-color: #ffc107;
2847 +}
2848 +
2849 +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,
2850 +.show > .btn-outline-warning.dropdown-toggle:focus {
2851 + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
2852 +}
2853 +
2854 +.btn-outline-danger {
2855 + color: #dc3545;
2856 + border-color: #dc3545;
2857 +}
2858 +
2859 +.btn-outline-danger:hover {
2860 + color: #fff;
2861 + background-color: #dc3545;
2862 + border-color: #dc3545;
2863 +}
2864 +
2865 +.btn-outline-danger:focus, .btn-outline-danger.focus {
2866 + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
2867 +}
2868 +
2869 +.btn-outline-danger.disabled, .btn-outline-danger:disabled {
2870 + color: #dc3545;
2871 + background-color: transparent;
2872 +}
2873 +
2874 +.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,
2875 +.show > .btn-outline-danger.dropdown-toggle {
2876 + color: #fff;
2877 + background-color: #dc3545;
2878 + border-color: #dc3545;
2879 +}
2880 +
2881 +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,
2882 +.show > .btn-outline-danger.dropdown-toggle:focus {
2883 + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
2884 +}
2885 +
2886 +.btn-outline-light {
2887 + color: #f8f9fa;
2888 + border-color: #f8f9fa;
2889 +}
2890 +
2891 +.btn-outline-light:hover {
2892 + color: #212529;
2893 + background-color: #f8f9fa;
2894 + border-color: #f8f9fa;
2895 +}
2896 +
2897 +.btn-outline-light:focus, .btn-outline-light.focus {
2898 + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
2899 +}
2900 +
2901 +.btn-outline-light.disabled, .btn-outline-light:disabled {
2902 + color: #f8f9fa;
2903 + background-color: transparent;
2904 +}
2905 +
2906 +.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,
2907 +.show > .btn-outline-light.dropdown-toggle {
2908 + color: #212529;
2909 + background-color: #f8f9fa;
2910 + border-color: #f8f9fa;
2911 +}
2912 +
2913 +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,
2914 +.show > .btn-outline-light.dropdown-toggle:focus {
2915 + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
2916 +}
2917 +
2918 +.btn-outline-dark {
2919 + color: #343a40;
2920 + border-color: #343a40;
2921 +}
2922 +
2923 +.btn-outline-dark:hover {
2924 + color: #fff;
2925 + background-color: #343a40;
2926 + border-color: #343a40;
2927 +}
2928 +
2929 +.btn-outline-dark:focus, .btn-outline-dark.focus {
2930 + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
2931 +}
2932 +
2933 +.btn-outline-dark.disabled, .btn-outline-dark:disabled {
2934 + color: #343a40;
2935 + background-color: transparent;
2936 +}
2937 +
2938 +.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,
2939 +.show > .btn-outline-dark.dropdown-toggle {
2940 + color: #fff;
2941 + background-color: #343a40;
2942 + border-color: #343a40;
2943 +}
2944 +
2945 +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,
2946 +.show > .btn-outline-dark.dropdown-toggle:focus {
2947 + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
2948 +}
2949 +
2950 +.btn-link {
2951 + font-weight: 400;
2952 + color: #007bff;
2953 + text-decoration: none;
2954 +}
2955 +
2956 +.btn-link:hover {
2957 + color: #0056b3;
2958 + text-decoration: underline;
2959 +}
2960 +
2961 +.btn-link:focus, .btn-link.focus {
2962 + text-decoration: underline;
2963 + box-shadow: none;
2964 +}
2965 +
2966 +.btn-link:disabled, .btn-link.disabled {
2967 + color: #6c757d;
2968 + pointer-events: none;
2969 +}
2970 +
2971 +.btn-lg, .btn-group-lg > .btn {
2972 + padding: 0.5rem 1rem;
2973 + font-size: 1.25rem;
2974 + line-height: 1.5;
2975 + border-radius: 0.3rem;
2976 +}
2977 +
2978 +.btn-sm, .btn-group-sm > .btn {
2979 + padding: 0.25rem 0.5rem;
2980 + font-size: 0.875rem;
2981 + line-height: 1.5;
2982 + border-radius: 0.2rem;
2983 +}
2984 +
2985 +.btn-block {
2986 + display: block;
2987 + width: 100%;
2988 +}
2989 +
2990 +.btn-block + .btn-block {
2991 + margin-top: 0.5rem;
2992 +}
2993 +
2994 +input[type="submit"].btn-block,
2995 +input[type="reset"].btn-block,
2996 +input[type="button"].btn-block {
2997 + width: 100%;
2998 +}
2999 +
3000 +.fade {
3001 + transition: opacity 0.15s linear;
3002 +}
3003 +
3004 +@media (prefers-reduced-motion: reduce) {
3005 + .fade {
3006 + transition: none;
3007 + }
3008 +}
3009 +
3010 +.fade:not(.show) {
3011 + opacity: 0;
3012 +}
3013 +
3014 +.collapse:not(.show) {
3015 + display: none;
3016 +}
3017 +
3018 +.collapsing {
3019 + position: relative;
3020 + height: 0;
3021 + overflow: hidden;
3022 + transition: height 0.35s ease;
3023 +}
3024 +
3025 +@media (prefers-reduced-motion: reduce) {
3026 + .collapsing {
3027 + transition: none;
3028 + }
3029 +}
3030 +
3031 +.dropup,
3032 +.dropright,
3033 +.dropdown,
3034 +.dropleft {
3035 + position: relative;
3036 +}
3037 +
3038 +.dropdown-toggle {
3039 + white-space: nowrap;
3040 +}
3041 +
3042 +.dropdown-toggle::after {
3043 + display: inline-block;
3044 + margin-left: 0.255em;
3045 + vertical-align: 0.255em;
3046 + content: "";
3047 + border-top: 0.3em solid;
3048 + border-right: 0.3em solid transparent;
3049 + border-bottom: 0;
3050 + border-left: 0.3em solid transparent;
3051 +}
3052 +
3053 +.dropdown-toggle:empty::after {
3054 + margin-left: 0;
3055 +}
3056 +
3057 +.dropdown-menu {
3058 + position: absolute;
3059 + top: 100%;
3060 + left: 0;
3061 + z-index: 1000;
3062 + display: none;
3063 + float: left;
3064 + min-width: 10rem;
3065 + padding: 0.5rem 0;
3066 + margin: 0.125rem 0 0;
3067 + font-size: 1rem;
3068 + color: #212529;
3069 + text-align: left;
3070 + list-style: none;
3071 + background-color: #fff;
3072 + background-clip: padding-box;
3073 + border: 1px solid rgba(0, 0, 0, 0.15);
3074 + border-radius: 0.25rem;
3075 +}
3076 +
3077 +.dropdown-menu-left {
3078 + right: auto;
3079 + left: 0;
3080 +}
3081 +
3082 +.dropdown-menu-right {
3083 + right: 0;
3084 + left: auto;
3085 +}
3086 +
3087 +@media (min-width: 576px) {
3088 + .dropdown-menu-sm-left {
3089 + right: auto;
3090 + left: 0;
3091 + }
3092 + .dropdown-menu-sm-right {
3093 + right: 0;
3094 + left: auto;
3095 + }
3096 +}
3097 +
3098 +@media (min-width: 768px) {
3099 + .dropdown-menu-md-left {
3100 + right: auto;
3101 + left: 0;
3102 + }
3103 + .dropdown-menu-md-right {
3104 + right: 0;
3105 + left: auto;
3106 + }
3107 +}
3108 +
3109 +@media (min-width: 992px) {
3110 + .dropdown-menu-lg-left {
3111 + right: auto;
3112 + left: 0;
3113 + }
3114 + .dropdown-menu-lg-right {
3115 + right: 0;
3116 + left: auto;
3117 + }
3118 +}
3119 +
3120 +@media (min-width: 1200px) {
3121 + .dropdown-menu-xl-left {
3122 + right: auto;
3123 + left: 0;
3124 + }
3125 + .dropdown-menu-xl-right {
3126 + right: 0;
3127 + left: auto;
3128 + }
3129 +}
3130 +
3131 +.dropup .dropdown-menu {
3132 + top: auto;
3133 + bottom: 100%;
3134 + margin-top: 0;
3135 + margin-bottom: 0.125rem;
3136 +}
3137 +
3138 +.dropup .dropdown-toggle::after {
3139 + display: inline-block;
3140 + margin-left: 0.255em;
3141 + vertical-align: 0.255em;
3142 + content: "";
3143 + border-top: 0;
3144 + border-right: 0.3em solid transparent;
3145 + border-bottom: 0.3em solid;
3146 + border-left: 0.3em solid transparent;
3147 +}
3148 +
3149 +.dropup .dropdown-toggle:empty::after {
3150 + margin-left: 0;
3151 +}
3152 +
3153 +.dropright .dropdown-menu {
3154 + top: 0;
3155 + right: auto;
3156 + left: 100%;
3157 + margin-top: 0;
3158 + margin-left: 0.125rem;
3159 +}
3160 +
3161 +.dropright .dropdown-toggle::after {
3162 + display: inline-block;
3163 + margin-left: 0.255em;
3164 + vertical-align: 0.255em;
3165 + content: "";
3166 + border-top: 0.3em solid transparent;
3167 + border-right: 0;
3168 + border-bottom: 0.3em solid transparent;
3169 + border-left: 0.3em solid;
3170 +}
3171 +
3172 +.dropright .dropdown-toggle:empty::after {
3173 + margin-left: 0;
3174 +}
3175 +
3176 +.dropright .dropdown-toggle::after {
3177 + vertical-align: 0;
3178 +}
3179 +
3180 +.dropleft .dropdown-menu {
3181 + top: 0;
3182 + right: 100%;
3183 + left: auto;
3184 + margin-top: 0;
3185 + margin-right: 0.125rem;
3186 +}
3187 +
3188 +.dropleft .dropdown-toggle::after {
3189 + display: inline-block;
3190 + margin-left: 0.255em;
3191 + vertical-align: 0.255em;
3192 + content: "";
3193 +}
3194 +
3195 +.dropleft .dropdown-toggle::after {
3196 + display: none;
3197 +}
3198 +
3199 +.dropleft .dropdown-toggle::before {
3200 + display: inline-block;
3201 + margin-right: 0.255em;
3202 + vertical-align: 0.255em;
3203 + content: "";
3204 + border-top: 0.3em solid transparent;
3205 + border-right: 0.3em solid;
3206 + border-bottom: 0.3em solid transparent;
3207 +}
3208 +
3209 +.dropleft .dropdown-toggle:empty::after {
3210 + margin-left: 0;
3211 +}
3212 +
3213 +.dropleft .dropdown-toggle::before {
3214 + vertical-align: 0;
3215 +}
3216 +
3217 +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] {
3218 + right: auto;
3219 + bottom: auto;
3220 +}
3221 +
3222 +.dropdown-divider {
3223 + height: 0;
3224 + margin: 0.5rem 0;
3225 + overflow: hidden;
3226 + border-top: 1px solid #e9ecef;
3227 +}
3228 +
3229 +.dropdown-item {
3230 + display: block;
3231 + width: 100%;
3232 + padding: 0.25rem 1.5rem;
3233 + clear: both;
3234 + font-weight: 400;
3235 + color: #212529;
3236 + text-align: inherit;
3237 + white-space: nowrap;
3238 + background-color: transparent;
3239 + border: 0;
3240 +}
3241 +
3242 +.dropdown-item:hover, .dropdown-item:focus {
3243 + color: #16181b;
3244 + text-decoration: none;
3245 + background-color: #f8f9fa;
3246 +}
3247 +
3248 +.dropdown-item.active, .dropdown-item:active {
3249 + color: #fff;
3250 + text-decoration: none;
3251 + background-color: #007bff;
3252 +}
3253 +
3254 +.dropdown-item.disabled, .dropdown-item:disabled {
3255 + color: #6c757d;
3256 + pointer-events: none;
3257 + background-color: transparent;
3258 +}
3259 +
3260 +.dropdown-menu.show {
3261 + display: block;
3262 +}
3263 +
3264 +.dropdown-header {
3265 + display: block;
3266 + padding: 0.5rem 1.5rem;
3267 + margin-bottom: 0;
3268 + font-size: 0.875rem;
3269 + color: #6c757d;
3270 + white-space: nowrap;
3271 +}
3272 +
3273 +.dropdown-item-text {
3274 + display: block;
3275 + padding: 0.25rem 1.5rem;
3276 + color: #212529;
3277 +}
3278 +
3279 +.btn-group,
3280 +.btn-group-vertical {
3281 + position: relative;
3282 + display: -ms-inline-flexbox;
3283 + display: inline-flex;
3284 + vertical-align: middle;
3285 +}
3286 +
3287 +.btn-group > .btn,
3288 +.btn-group-vertical > .btn {
3289 + position: relative;
3290 + -ms-flex: 1 1 auto;
3291 + flex: 1 1 auto;
3292 +}
3293 +
3294 +.btn-group > .btn:hover,
3295 +.btn-group-vertical > .btn:hover {
3296 + z-index: 1;
3297 +}
3298 +
3299 +.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,
3300 +.btn-group-vertical > .btn:focus,
3301 +.btn-group-vertical > .btn:active,
3302 +.btn-group-vertical > .btn.active {
3303 + z-index: 1;
3304 +}
3305 +
3306 +.btn-toolbar {
3307 + display: -ms-flexbox;
3308 + display: flex;
3309 + -ms-flex-wrap: wrap;
3310 + flex-wrap: wrap;
3311 + -ms-flex-pack: start;
3312 + justify-content: flex-start;
3313 +}
3314 +
3315 +.btn-toolbar .input-group {
3316 + width: auto;
3317 +}
3318 +
3319 +.btn-group > .btn:not(:first-child),
3320 +.btn-group > .btn-group:not(:first-child) {
3321 + margin-left: -1px;
3322 +}
3323 +
3324 +.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
3325 +.btn-group > .btn-group:not(:last-child) > .btn {
3326 + border-top-right-radius: 0;
3327 + border-bottom-right-radius: 0;
3328 +}
3329 +
3330 +.btn-group > .btn:not(:first-child),
3331 +.btn-group > .btn-group:not(:first-child) > .btn {
3332 + border-top-left-radius: 0;
3333 + border-bottom-left-radius: 0;
3334 +}
3335 +
3336 +.dropdown-toggle-split {
3337 + padding-right: 0.5625rem;
3338 + padding-left: 0.5625rem;
3339 +}
3340 +
3341 +.dropdown-toggle-split::after,
3342 +.dropup .dropdown-toggle-split::after,
3343 +.dropright .dropdown-toggle-split::after {
3344 + margin-left: 0;
3345 +}
3346 +
3347 +.dropleft .dropdown-toggle-split::before {
3348 + margin-right: 0;
3349 +}
3350 +
3351 +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
3352 + padding-right: 0.375rem;
3353 + padding-left: 0.375rem;
3354 +}
3355 +
3356 +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
3357 + padding-right: 0.75rem;
3358 + padding-left: 0.75rem;
3359 +}
3360 +
3361 +.btn-group-vertical {
3362 + -ms-flex-direction: column;
3363 + flex-direction: column;
3364 + -ms-flex-align: start;
3365 + align-items: flex-start;
3366 + -ms-flex-pack: center;
3367 + justify-content: center;
3368 +}
3369 +
3370 +.btn-group-vertical > .btn,
3371 +.btn-group-vertical > .btn-group {
3372 + width: 100%;
3373 +}
3374 +
3375 +.btn-group-vertical > .btn:not(:first-child),
3376 +.btn-group-vertical > .btn-group:not(:first-child) {
3377 + margin-top: -1px;
3378 +}
3379 +
3380 +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
3381 +.btn-group-vertical > .btn-group:not(:last-child) > .btn {
3382 + border-bottom-right-radius: 0;
3383 + border-bottom-left-radius: 0;
3384 +}
3385 +
3386 +.btn-group-vertical > .btn:not(:first-child),
3387 +.btn-group-vertical > .btn-group:not(:first-child) > .btn {
3388 + border-top-left-radius: 0;
3389 + border-top-right-radius: 0;
3390 +}
3391 +
3392 +.btn-group-toggle > .btn,
3393 +.btn-group-toggle > .btn-group > .btn {
3394 + margin-bottom: 0;
3395 +}
3396 +
3397 +.btn-group-toggle > .btn input[type="radio"],
3398 +.btn-group-toggle > .btn input[type="checkbox"],
3399 +.btn-group-toggle > .btn-group > .btn input[type="radio"],
3400 +.btn-group-toggle > .btn-group > .btn input[type="checkbox"] {
3401 + position: absolute;
3402 + clip: rect(0, 0, 0, 0);
3403 + pointer-events: none;
3404 +}
3405 +
3406 +.input-group {
3407 + position: relative;
3408 + display: -ms-flexbox;
3409 + display: flex;
3410 + -ms-flex-wrap: wrap;
3411 + flex-wrap: wrap;
3412 + -ms-flex-align: stretch;
3413 + align-items: stretch;
3414 + width: 100%;
3415 +}
3416 +
3417 +.input-group > .form-control,
3418 +.input-group > .form-control-plaintext,
3419 +.input-group > .custom-select,
3420 +.input-group > .custom-file {
3421 + position: relative;
3422 + -ms-flex: 1 1 auto;
3423 + flex: 1 1 auto;
3424 + width: 1%;
3425 + margin-bottom: 0;
3426 +}
3427 +
3428 +.input-group > .form-control + .form-control,
3429 +.input-group > .form-control + .custom-select,
3430 +.input-group > .form-control + .custom-file,
3431 +.input-group > .form-control-plaintext + .form-control,
3432 +.input-group > .form-control-plaintext + .custom-select,
3433 +.input-group > .form-control-plaintext + .custom-file,
3434 +.input-group > .custom-select + .form-control,
3435 +.input-group > .custom-select + .custom-select,
3436 +.input-group > .custom-select + .custom-file,
3437 +.input-group > .custom-file + .form-control,
3438 +.input-group > .custom-file + .custom-select,
3439 +.input-group > .custom-file + .custom-file {
3440 + margin-left: -1px;
3441 +}
3442 +
3443 +.input-group > .form-control:focus,
3444 +.input-group > .custom-select:focus,
3445 +.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {
3446 + z-index: 3;
3447 +}
3448 +
3449 +.input-group > .custom-file .custom-file-input:focus {
3450 + z-index: 4;
3451 +}
3452 +
3453 +.input-group > .form-control:not(:last-child),
3454 +.input-group > .custom-select:not(:last-child) {
3455 + border-top-right-radius: 0;
3456 + border-bottom-right-radius: 0;
3457 +}
3458 +
3459 +.input-group > .form-control:not(:first-child),
3460 +.input-group > .custom-select:not(:first-child) {
3461 + border-top-left-radius: 0;
3462 + border-bottom-left-radius: 0;
3463 +}
3464 +
3465 +.input-group > .custom-file {
3466 + display: -ms-flexbox;
3467 + display: flex;
3468 + -ms-flex-align: center;
3469 + align-items: center;
3470 +}
3471 +
3472 +.input-group > .custom-file:not(:last-child) .custom-file-label,
3473 +.input-group > .custom-file:not(:last-child) .custom-file-label::after {
3474 + border-top-right-radius: 0;
3475 + border-bottom-right-radius: 0;
3476 +}
3477 +
3478 +.input-group > .custom-file:not(:first-child) .custom-file-label {
3479 + border-top-left-radius: 0;
3480 + border-bottom-left-radius: 0;
3481 +}
3482 +
3483 +.input-group-prepend,
3484 +.input-group-append {
3485 + display: -ms-flexbox;
3486 + display: flex;
3487 +}
3488 +
3489 +.input-group-prepend .btn,
3490 +.input-group-append .btn {
3491 + position: relative;
3492 + z-index: 2;
3493 +}
3494 +
3495 +.input-group-prepend .btn:focus,
3496 +.input-group-append .btn:focus {
3497 + z-index: 3;
3498 +}
3499 +
3500 +.input-group-prepend .btn + .btn,
3501 +.input-group-prepend .btn + .input-group-text,
3502 +.input-group-prepend .input-group-text + .input-group-text,
3503 +.input-group-prepend .input-group-text + .btn,
3504 +.input-group-append .btn + .btn,
3505 +.input-group-append .btn + .input-group-text,
3506 +.input-group-append .input-group-text + .input-group-text,
3507 +.input-group-append .input-group-text + .btn {
3508 + margin-left: -1px;
3509 +}
3510 +
3511 +.input-group-prepend {
3512 + margin-right: -1px;
3513 +}
3514 +
3515 +.input-group-append {
3516 + margin-left: -1px;
3517 +}
3518 +
3519 +.input-group-text {
3520 + display: -ms-flexbox;
3521 + display: flex;
3522 + -ms-flex-align: center;
3523 + align-items: center;
3524 + padding: 0.375rem 0.75rem;
3525 + margin-bottom: 0;
3526 + font-size: 1rem;
3527 + font-weight: 400;
3528 + line-height: 1.5;
3529 + color: #495057;
3530 + text-align: center;
3531 + white-space: nowrap;
3532 + background-color: #e9ecef;
3533 + border: 1px solid #ced4da;
3534 + border-radius: 0.25rem;
3535 +}
3536 +
3537 +.input-group-text input[type="radio"],
3538 +.input-group-text input[type="checkbox"] {
3539 + margin-top: 0;
3540 +}
3541 +
3542 +.input-group-lg > .form-control:not(textarea),
3543 +.input-group-lg > .custom-select {
3544 + height: calc(1.5em + 1rem + 2px);
3545 +}
3546 +
3547 +.input-group-lg > .form-control,
3548 +.input-group-lg > .custom-select,
3549 +.input-group-lg > .input-group-prepend > .input-group-text,
3550 +.input-group-lg > .input-group-append > .input-group-text,
3551 +.input-group-lg > .input-group-prepend > .btn,
3552 +.input-group-lg > .input-group-append > .btn {
3553 + padding: 0.5rem 1rem;
3554 + font-size: 1.25rem;
3555 + line-height: 1.5;
3556 + border-radius: 0.3rem;
3557 +}
3558 +
3559 +.input-group-sm > .form-control:not(textarea),
3560 +.input-group-sm > .custom-select {
3561 + height: calc(1.5em + 0.5rem + 2px);
3562 +}
3563 +
3564 +.input-group-sm > .form-control,
3565 +.input-group-sm > .custom-select,
3566 +.input-group-sm > .input-group-prepend > .input-group-text,
3567 +.input-group-sm > .input-group-append > .input-group-text,
3568 +.input-group-sm > .input-group-prepend > .btn,
3569 +.input-group-sm > .input-group-append > .btn {
3570 + padding: 0.25rem 0.5rem;
3571 + font-size: 0.875rem;
3572 + line-height: 1.5;
3573 + border-radius: 0.2rem;
3574 +}
3575 +
3576 +.input-group-lg > .custom-select,
3577 +.input-group-sm > .custom-select {
3578 + padding-right: 1.75rem;
3579 +}
3580 +
3581 +.input-group > .input-group-prepend > .btn,
3582 +.input-group > .input-group-prepend > .input-group-text,
3583 +.input-group > .input-group-append:not(:last-child) > .btn,
3584 +.input-group > .input-group-append:not(:last-child) > .input-group-text,
3585 +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3586 +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
3587 + border-top-right-radius: 0;
3588 + border-bottom-right-radius: 0;
3589 +}
3590 +
3591 +.input-group > .input-group-append > .btn,
3592 +.input-group > .input-group-append > .input-group-text,
3593 +.input-group > .input-group-prepend:not(:first-child) > .btn,
3594 +.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
3595 +.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
3596 +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
3597 + border-top-left-radius: 0;
3598 + border-bottom-left-radius: 0;
3599 +}
3600 +
3601 +.custom-control {
3602 + position: relative;
3603 + display: block;
3604 + min-height: 1.5rem;
3605 + padding-left: 1.5rem;
3606 +}
3607 +
3608 +.custom-control-inline {
3609 + display: -ms-inline-flexbox;
3610 + display: inline-flex;
3611 + margin-right: 1rem;
3612 +}
3613 +
3614 +.custom-control-input {
3615 + position: absolute;
3616 + z-index: -1;
3617 + opacity: 0;
3618 +}
3619 +
3620 +.custom-control-input:checked ~ .custom-control-label::before {
3621 + color: #fff;
3622 + border-color: #007bff;
3623 + background-color: #007bff;
3624 +}
3625 +
3626 +.custom-control-input:focus ~ .custom-control-label::before {
3627 + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3628 +}
3629 +
3630 +.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {
3631 + border-color: #80bdff;
3632 +}
3633 +
3634 +.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
3635 + color: #fff;
3636 + background-color: #b3d7ff;
3637 + border-color: #b3d7ff;
3638 +}
3639 +
3640 +.custom-control-input:disabled ~ .custom-control-label {
3641 + color: #6c757d;
3642 +}
3643 +
3644 +.custom-control-input:disabled ~ .custom-control-label::before {
3645 + background-color: #e9ecef;
3646 +}
3647 +
3648 +.custom-control-label {
3649 + position: relative;
3650 + margin-bottom: 0;
3651 + vertical-align: top;
3652 +}
3653 +
3654 +.custom-control-label::before {
3655 + position: absolute;
3656 + top: 0.25rem;
3657 + left: -1.5rem;
3658 + display: block;
3659 + width: 1rem;
3660 + height: 1rem;
3661 + pointer-events: none;
3662 + content: "";
3663 + background-color: #fff;
3664 + border: #adb5bd solid 1px;
3665 +}
3666 +
3667 +.custom-control-label::after {
3668 + position: absolute;
3669 + top: 0.25rem;
3670 + left: -1.5rem;
3671 + display: block;
3672 + width: 1rem;
3673 + height: 1rem;
3674 + content: "";
3675 + background: no-repeat 50% / 50% 50%;
3676 +}
3677 +
3678 +.custom-checkbox .custom-control-label::before {
3679 + border-radius: 0.25rem;
3680 +}
3681 +
3682 +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {
3683 + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e");
3684 +}
3685 +
3686 +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
3687 + border-color: #007bff;
3688 + background-color: #007bff;
3689 +}
3690 +
3691 +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {
3692 + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e");
3693 +}
3694 +
3695 +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {
3696 + background-color: rgba(0, 123, 255, 0.5);
3697 +}
3698 +
3699 +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {
3700 + background-color: rgba(0, 123, 255, 0.5);
3701 +}
3702 +
3703 +.custom-radio .custom-control-label::before {
3704 + border-radius: 50%;
3705 +}
3706 +
3707 +.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
3708 + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
3709 +}
3710 +
3711 +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {
3712 + background-color: rgba(0, 123, 255, 0.5);
3713 +}
3714 +
3715 +.custom-switch {
3716 + padding-left: 2.25rem;
3717 +}
3718 +
3719 +.custom-switch .custom-control-label::before {
3720 + left: -2.25rem;
3721 + width: 1.75rem;
3722 + pointer-events: all;
3723 + border-radius: 0.5rem;
3724 +}
3725 +
3726 +.custom-switch .custom-control-label::after {
3727 + top: calc(0.25rem + 2px);
3728 + left: calc(-2.25rem + 2px);
3729 + width: calc(1rem - 4px);
3730 + height: calc(1rem - 4px);
3731 + background-color: #adb5bd;
3732 + border-radius: 0.5rem;
3733 + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;
3734 + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
3735 + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;
3736 +}
3737 +
3738 +@media (prefers-reduced-motion: reduce) {
3739 + .custom-switch .custom-control-label::after {
3740 + transition: none;
3741 + }
3742 +}
3743 +
3744 +.custom-switch .custom-control-input:checked ~ .custom-control-label::after {
3745 + background-color: #fff;
3746 + -webkit-transform: translateX(0.75rem);
3747 + transform: translateX(0.75rem);
3748 +}
3749 +
3750 +.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {
3751 + background-color: rgba(0, 123, 255, 0.5);
3752 +}
3753 +
3754 +.custom-select {
3755 + display: inline-block;
3756 + width: 100%;
3757 + height: calc(1.5em + 0.75rem + 2px);
3758 + padding: 0.375rem 1.75rem 0.375rem 0.75rem;
3759 + font-size: 1rem;
3760 + font-weight: 400;
3761 + line-height: 1.5;
3762 + color: #495057;
3763 + vertical-align: middle;
3764 + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;
3765 + background-color: #fff;
3766 + border: 1px solid #ced4da;
3767 + border-radius: 0.25rem;
3768 + -webkit-appearance: none;
3769 + -moz-appearance: none;
3770 + appearance: none;
3771 +}
3772 +
3773 +.custom-select:focus {
3774 + border-color: #80bdff;
3775 + outline: 0;
3776 + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3777 +}
3778 +
3779 +.custom-select:focus::-ms-value {
3780 + color: #495057;
3781 + background-color: #fff;
3782 +}
3783 +
3784 +.custom-select[multiple], .custom-select[size]:not([size="1"]) {
3785 + height: auto;
3786 + padding-right: 0.75rem;
3787 + background-image: none;
3788 +}
3789 +
3790 +.custom-select:disabled {
3791 + color: #6c757d;
3792 + background-color: #e9ecef;
3793 +}
3794 +
3795 +.custom-select::-ms-expand {
3796 + display: none;
3797 +}
3798 +
3799 +.custom-select-sm {
3800 + height: calc(1.5em + 0.5rem + 2px);
3801 + padding-top: 0.25rem;
3802 + padding-bottom: 0.25rem;
3803 + padding-left: 0.5rem;
3804 + font-size: 0.875rem;
3805 +}
3806 +
3807 +.custom-select-lg {
3808 + height: calc(1.5em + 1rem + 2px);
3809 + padding-top: 0.5rem;
3810 + padding-bottom: 0.5rem;
3811 + padding-left: 1rem;
3812 + font-size: 1.25rem;
3813 +}
3814 +
3815 +.custom-file {
3816 + position: relative;
3817 + display: inline-block;
3818 + width: 100%;
3819 + height: calc(1.5em + 0.75rem + 2px);
3820 + margin-bottom: 0;
3821 +}
3822 +
3823 +.custom-file-input {
3824 + position: relative;
3825 + z-index: 2;
3826 + width: 100%;
3827 + height: calc(1.5em + 0.75rem + 2px);
3828 + margin: 0;
3829 + opacity: 0;
3830 +}
3831 +
3832 +.custom-file-input:focus ~ .custom-file-label {
3833 + border-color: #80bdff;
3834 + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3835 +}
3836 +
3837 +.custom-file-input:disabled ~ .custom-file-label {
3838 + background-color: #e9ecef;
3839 +}
3840 +
3841 +.custom-file-input:lang(en) ~ .custom-file-label::after {
3842 + content: "Browse";
3843 +}
3844 +
3845 +.custom-file-input ~ .custom-file-label[data-browse]::after {
3846 + content: attr(data-browse);
3847 +}
3848 +
3849 +.custom-file-label {
3850 + position: absolute;
3851 + top: 0;
3852 + right: 0;
3853 + left: 0;
3854 + z-index: 1;
3855 + height: calc(1.5em + 0.75rem + 2px);
3856 + padding: 0.375rem 0.75rem;
3857 + font-weight: 400;
3858 + line-height: 1.5;
3859 + color: #495057;
3860 + background-color: #fff;
3861 + border: 1px solid #ced4da;
3862 + border-radius: 0.25rem;
3863 +}
3864 +
3865 +.custom-file-label::after {
3866 + position: absolute;
3867 + top: 0;
3868 + right: 0;
3869 + bottom: 0;
3870 + z-index: 3;
3871 + display: block;
3872 + height: calc(1.5em + 0.75rem);
3873 + padding: 0.375rem 0.75rem;
3874 + line-height: 1.5;
3875 + color: #495057;
3876 + content: "Browse";
3877 + background-color: #e9ecef;
3878 + border-left: inherit;
3879 + border-radius: 0 0.25rem 0.25rem 0;
3880 +}
3881 +
3882 +.custom-range {
3883 + width: 100%;
3884 + height: calc(1rem + 0.4rem);
3885 + padding: 0;
3886 + background-color: transparent;
3887 + -webkit-appearance: none;
3888 + -moz-appearance: none;
3889 + appearance: none;
3890 +}
3891 +
3892 +.custom-range:focus {
3893 + outline: none;
3894 +}
3895 +
3896 +.custom-range:focus::-webkit-slider-thumb {
3897 + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3898 +}
3899 +
3900 +.custom-range:focus::-moz-range-thumb {
3901 + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3902 +}
3903 +
3904 +.custom-range:focus::-ms-thumb {
3905 + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
3906 +}
3907 +
3908 +.custom-range::-moz-focus-outer {
3909 + border: 0;
3910 +}
3911 +
3912 +.custom-range::-webkit-slider-thumb {
3913 + width: 1rem;
3914 + height: 1rem;
3915 + margin-top: -0.25rem;
3916 + background-color: #007bff;
3917 + border: 0;
3918 + border-radius: 1rem;
3919 + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
3920 + -webkit-appearance: none;
3921 + appearance: none;
3922 +}
3923 +
3924 +@media (prefers-reduced-motion: reduce) {
3925 + .custom-range::-webkit-slider-thumb {
3926 + transition: none;
3927 + }
3928 +}
3929 +
3930 +.custom-range::-webkit-slider-thumb:active {
3931 + background-color: #b3d7ff;
3932 +}
3933 +
3934 +.custom-range::-webkit-slider-runnable-track {
3935 + width: 100%;
3936 + height: 0.5rem;
3937 + color: transparent;
3938 + cursor: pointer;
3939 + background-color: #dee2e6;
3940 + border-color: transparent;
3941 + border-radius: 1rem;
3942 +}
3943 +
3944 +.custom-range::-moz-range-thumb {
3945 + width: 1rem;
3946 + height: 1rem;
3947 + background-color: #007bff;
3948 + border: 0;
3949 + border-radius: 1rem;
3950 + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
3951 + -moz-appearance: none;
3952 + appearance: none;
3953 +}
3954 +
3955 +@media (prefers-reduced-motion: reduce) {
3956 + .custom-range::-moz-range-thumb {
3957 + transition: none;
3958 + }
3959 +}
3960 +
3961 +.custom-range::-moz-range-thumb:active {
3962 + background-color: #b3d7ff;
3963 +}
3964 +
3965 +.custom-range::-moz-range-track {
3966 + width: 100%;
3967 + height: 0.5rem;
3968 + color: transparent;
3969 + cursor: pointer;
3970 + background-color: #dee2e6;
3971 + border-color: transparent;
3972 + border-radius: 1rem;
3973 +}
3974 +
3975 +.custom-range::-ms-thumb {
3976 + width: 1rem;
3977 + height: 1rem;
3978 + margin-top: 0;
3979 + margin-right: 0.2rem;
3980 + margin-left: 0.2rem;
3981 + background-color: #007bff;
3982 + border: 0;
3983 + border-radius: 1rem;
3984 + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
3985 + appearance: none;
3986 +}
3987 +
3988 +@media (prefers-reduced-motion: reduce) {
3989 + .custom-range::-ms-thumb {
3990 + transition: none;
3991 + }
3992 +}
3993 +
3994 +.custom-range::-ms-thumb:active {
3995 + background-color: #b3d7ff;
3996 +}
3997 +
3998 +.custom-range::-ms-track {
3999 + width: 100%;
4000 + height: 0.5rem;
4001 + color: transparent;
4002 + cursor: pointer;
4003 + background-color: transparent;
4004 + border-color: transparent;
4005 + border-width: 0.5rem;
4006 +}
4007 +
4008 +.custom-range::-ms-fill-lower {
4009 + background-color: #dee2e6;
4010 + border-radius: 1rem;
4011 +}
4012 +
4013 +.custom-range::-ms-fill-upper {
4014 + margin-right: 15px;
4015 + background-color: #dee2e6;
4016 + border-radius: 1rem;
4017 +}
4018 +
4019 +.custom-range:disabled::-webkit-slider-thumb {
4020 + background-color: #adb5bd;
4021 +}
4022 +
4023 +.custom-range:disabled::-webkit-slider-runnable-track {
4024 + cursor: default;
4025 +}
4026 +
4027 +.custom-range:disabled::-moz-range-thumb {
4028 + background-color: #adb5bd;
4029 +}
4030 +
4031 +.custom-range:disabled::-moz-range-track {
4032 + cursor: default;
4033 +}
4034 +
4035 +.custom-range:disabled::-ms-thumb {
4036 + background-color: #adb5bd;
4037 +}
4038 +
4039 +.custom-control-label::before,
4040 +.custom-file-label,
4041 +.custom-select {
4042 + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
4043 +}
4044 +
4045 +@media (prefers-reduced-motion: reduce) {
4046 + .custom-control-label::before,
4047 + .custom-file-label,
4048 + .custom-select {
4049 + transition: none;
4050 + }
4051 +}
4052 +
4053 +.nav {
4054 + display: -ms-flexbox;
4055 + display: flex;
4056 + -ms-flex-wrap: wrap;
4057 + flex-wrap: wrap;
4058 + padding-left: 0;
4059 + margin-bottom: 0;
4060 + list-style: none;
4061 +}
4062 +
4063 +.nav-link {
4064 + display: block;
4065 + padding: 0.5rem 1rem;
4066 +}
4067 +
4068 +.nav-link:hover, .nav-link:focus {
4069 + text-decoration: none;
4070 +}
4071 +
4072 +.nav-link.disabled {
4073 + color: #6c757d;
4074 + pointer-events: none;
4075 + cursor: default;
4076 +}
4077 +
4078 +.nav-tabs {
4079 + border-bottom: 1px solid #dee2e6;
4080 +}
4081 +
4082 +.nav-tabs .nav-item {
4083 + margin-bottom: -1px;
4084 +}
4085 +
4086 +.nav-tabs .nav-link {
4087 + border: 1px solid transparent;
4088 + border-top-left-radius: 0.25rem;
4089 + border-top-right-radius: 0.25rem;
4090 +}
4091 +
4092 +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
4093 + border-color: #e9ecef #e9ecef #dee2e6;
4094 +}
4095 +
4096 +.nav-tabs .nav-link.disabled {
4097 + color: #6c757d;
4098 + background-color: transparent;
4099 + border-color: transparent;
4100 +}
4101 +
4102 +.nav-tabs .nav-link.active,
4103 +.nav-tabs .nav-item.show .nav-link {
4104 + color: #495057;
4105 + background-color: #fff;
4106 + border-color: #dee2e6 #dee2e6 #fff;
4107 +}
4108 +
4109 +.nav-tabs .dropdown-menu {
4110 + margin-top: -1px;
4111 + border-top-left-radius: 0;
4112 + border-top-right-radius: 0;
4113 +}
4114 +
4115 +.nav-pills .nav-link {
4116 + border-radius: 0.25rem;
4117 +}
4118 +
4119 +.nav-pills .nav-link.active,
4120 +.nav-pills .show > .nav-link {
4121 + color: #fff;
4122 + background-color: #007bff;
4123 +}
4124 +
4125 +.nav-fill .nav-item {
4126 + -ms-flex: 1 1 auto;
4127 + flex: 1 1 auto;
4128 + text-align: center;
4129 +}
4130 +
4131 +.nav-justified .nav-item {
4132 + -ms-flex-preferred-size: 0;
4133 + flex-basis: 0;
4134 + -ms-flex-positive: 1;
4135 + flex-grow: 1;
4136 + text-align: center;
4137 +}
4138 +
4139 +.tab-content > .tab-pane {
4140 + display: none;
4141 +}
4142 +
4143 +.tab-content > .active {
4144 + display: block;
4145 +}
4146 +
4147 +.navbar {
4148 + position: relative;
4149 + display: -ms-flexbox;
4150 + display: flex;
4151 + -ms-flex-wrap: wrap;
4152 + flex-wrap: wrap;
4153 + -ms-flex-align: center;
4154 + align-items: center;
4155 + -ms-flex-pack: justify;
4156 + justify-content: space-between;
4157 + padding: 0.5rem 1rem;
4158 +}
4159 +
4160 +.navbar > .container,
4161 +.navbar > .container-fluid {
4162 + display: -ms-flexbox;
4163 + display: flex;
4164 + -ms-flex-wrap: wrap;
4165 + flex-wrap: wrap;
4166 + -ms-flex-align: center;
4167 + align-items: center;
4168 + -ms-flex-pack: justify;
4169 + justify-content: space-between;
4170 +}
4171 +
4172 +.navbar-brand {
4173 + display: inline-block;
4174 + padding-top: 0.3125rem;
4175 + padding-bottom: 0.3125rem;
4176 + margin-right: 1rem;
4177 + font-size: 1.25rem;
4178 + line-height: inherit;
4179 + white-space: nowrap;
4180 +}
4181 +
4182 +.navbar-brand:hover, .navbar-brand:focus {
4183 + text-decoration: none;
4184 +}
4185 +
4186 +.navbar-nav {
4187 + display: -ms-flexbox;
4188 + display: flex;
4189 + -ms-flex-direction: column;
4190 + flex-direction: column;
4191 + padding-left: 0;
4192 + margin-bottom: 0;
4193 + list-style: none;
4194 +}
4195 +
4196 +.navbar-nav .nav-link {
4197 + padding-right: 0;
4198 + padding-left: 0;
4199 +}
4200 +
4201 +.navbar-nav .dropdown-menu {
4202 + position: static;
4203 + float: none;
4204 +}
4205 +
4206 +.navbar-text {
4207 + display: inline-block;
4208 + padding-top: 0.5rem;
4209 + padding-bottom: 0.5rem;
4210 +}
4211 +
4212 +.navbar-collapse {
4213 + -ms-flex-preferred-size: 100%;
4214 + flex-basis: 100%;
4215 + -ms-flex-positive: 1;
4216 + flex-grow: 1;
4217 + -ms-flex-align: center;
4218 + align-items: center;
4219 +}
4220 +
4221 +.navbar-toggler {
4222 + padding: 0.25rem 0.75rem;
4223 + font-size: 1.25rem;
4224 + line-height: 1;
4225 + background-color: transparent;
4226 + border: 1px solid transparent;
4227 + border-radius: 0.25rem;
4228 +}
4229 +
4230 +.navbar-toggler:hover, .navbar-toggler:focus {
4231 + text-decoration: none;
4232 +}
4233 +
4234 +.navbar-toggler-icon {
4235 + display: inline-block;
4236 + width: 1.5em;
4237 + height: 1.5em;
4238 + vertical-align: middle;
4239 + content: "";
4240 + background: no-repeat center center;
4241 + background-size: 100% 100%;
4242 +}
4243 +
4244 +@media (max-width: 575.98px) {
4245 + .navbar-expand-sm > .container,
4246 + .navbar-expand-sm > .container-fluid {
4247 + padding-right: 0;
4248 + padding-left: 0;
4249 + }
4250 +}
4251 +
4252 +@media (min-width: 576px) {
4253 + .navbar-expand-sm {
4254 + -ms-flex-flow: row nowrap;
4255 + flex-flow: row nowrap;
4256 + -ms-flex-pack: start;
4257 + justify-content: flex-start;
4258 + }
4259 + .navbar-expand-sm .navbar-nav {
4260 + -ms-flex-direction: row;
4261 + flex-direction: row;
4262 + }
4263 + .navbar-expand-sm .navbar-nav .dropdown-menu {
4264 + position: absolute;
4265 + }
4266 + .navbar-expand-sm .navbar-nav .nav-link {
4267 + padding-right: 0.5rem;
4268 + padding-left: 0.5rem;
4269 + }
4270 + .navbar-expand-sm > .container,
4271 + .navbar-expand-sm > .container-fluid {
4272 + -ms-flex-wrap: nowrap;
4273 + flex-wrap: nowrap;
4274 + }
4275 + .navbar-expand-sm .navbar-collapse {
4276 + display: -ms-flexbox !important;
4277 + display: flex !important;
4278 + -ms-flex-preferred-size: auto;
4279 + flex-basis: auto;
4280 + }
4281 + .navbar-expand-sm .navbar-toggler {
4282 + display: none;
4283 + }
4284 +}
4285 +
4286 +@media (max-width: 767.98px) {
4287 + .navbar-expand-md > .container,
4288 + .navbar-expand-md > .container-fluid {
4289 + padding-right: 0;
4290 + padding-left: 0;
4291 + }
4292 +}
4293 +
4294 +@media (min-width: 768px) {
4295 + .navbar-expand-md {
4296 + -ms-flex-flow: row nowrap;
4297 + flex-flow: row nowrap;
4298 + -ms-flex-pack: start;
4299 + justify-content: flex-start;
4300 + }
4301 + .navbar-expand-md .navbar-nav {
4302 + -ms-flex-direction: row;
4303 + flex-direction: row;
4304 + }
4305 + .navbar-expand-md .navbar-nav .dropdown-menu {
4306 + position: absolute;
4307 + }
4308 + .navbar-expand-md .navbar-nav .nav-link {
4309 + padding-right: 0.5rem;
4310 + padding-left: 0.5rem;
4311 + }
4312 + .navbar-expand-md > .container,
4313 + .navbar-expand-md > .container-fluid {
4314 + -ms-flex-wrap: nowrap;
4315 + flex-wrap: nowrap;
4316 + }
4317 + .navbar-expand-md .navbar-collapse {
4318 + display: -ms-flexbox !important;
4319 + display: flex !important;
4320 + -ms-flex-preferred-size: auto;
4321 + flex-basis: auto;
4322 + }
4323 + .navbar-expand-md .navbar-toggler {
4324 + display: none;
4325 + }
4326 +}
4327 +
4328 +@media (max-width: 991.98px) {
4329 + .navbar-expand-lg > .container,
4330 + .navbar-expand-lg > .container-fluid {
4331 + padding-right: 0;
4332 + padding-left: 0;
4333 + }
4334 +}
4335 +
4336 +@media (min-width: 992px) {
4337 + .navbar-expand-lg {
4338 + -ms-flex-flow: row nowrap;
4339 + flex-flow: row nowrap;
4340 + -ms-flex-pack: start;
4341 + justify-content: flex-start;
4342 + }
4343 + .navbar-expand-lg .navbar-nav {
4344 + -ms-flex-direction: row;
4345 + flex-direction: row;
4346 + }
4347 + .navbar-expand-lg .navbar-nav .dropdown-menu {
4348 + position: absolute;
4349 + }
4350 + .navbar-expand-lg .navbar-nav .nav-link {
4351 + padding-right: 0.5rem;
4352 + padding-left: 0.5rem;
4353 + }
4354 + .navbar-expand-lg > .container,
4355 + .navbar-expand-lg > .container-fluid {
4356 + -ms-flex-wrap: nowrap;
4357 + flex-wrap: nowrap;
4358 + }
4359 + .navbar-expand-lg .navbar-collapse {
4360 + display: -ms-flexbox !important;
4361 + display: flex !important;
4362 + -ms-flex-preferred-size: auto;
4363 + flex-basis: auto;
4364 + }
4365 + .navbar-expand-lg .navbar-toggler {
4366 + display: none;
4367 + }
4368 +}
4369 +
4370 +@media (max-width: 1199.98px) {
4371 + .navbar-expand-xl > .container,
4372 + .navbar-expand-xl > .container-fluid {
4373 + padding-right: 0;
4374 + padding-left: 0;
4375 + }
4376 +}
4377 +
4378 +@media (min-width: 1200px) {
4379 + .navbar-expand-xl {
4380 + -ms-flex-flow: row nowrap;
4381 + flex-flow: row nowrap;
4382 + -ms-flex-pack: start;
4383 + justify-content: flex-start;
4384 + }
4385 + .navbar-expand-xl .navbar-nav {
4386 + -ms-flex-direction: row;
4387 + flex-direction: row;
4388 + }
4389 + .navbar-expand-xl .navbar-nav .dropdown-menu {
4390 + position: absolute;
4391 + }
4392 + .navbar-expand-xl .navbar-nav .nav-link {
4393 + padding-right: 0.5rem;
4394 + padding-left: 0.5rem;
4395 + }
4396 + .navbar-expand-xl > .container,
4397 + .navbar-expand-xl > .container-fluid {
4398 + -ms-flex-wrap: nowrap;
4399 + flex-wrap: nowrap;
4400 + }
4401 + .navbar-expand-xl .navbar-collapse {
4402 + display: -ms-flexbox !important;
4403 + display: flex !important;
4404 + -ms-flex-preferred-size: auto;
4405 + flex-basis: auto;
4406 + }
4407 + .navbar-expand-xl .navbar-toggler {
4408 + display: none;
4409 + }
4410 +}
4411 +
4412 +.navbar-expand {
4413 + -ms-flex-flow: row nowrap;
4414 + flex-flow: row nowrap;
4415 + -ms-flex-pack: start;
4416 + justify-content: flex-start;
4417 +}
4418 +
4419 +.navbar-expand > .container,
4420 +.navbar-expand > .container-fluid {
4421 + padding-right: 0;
4422 + padding-left: 0;
4423 +}
4424 +
4425 +.navbar-expand .navbar-nav {
4426 + -ms-flex-direction: row;
4427 + flex-direction: row;
4428 +}
4429 +
4430 +.navbar-expand .navbar-nav .dropdown-menu {
4431 + position: absolute;
4432 +}
4433 +
4434 +.navbar-expand .navbar-nav .nav-link {
4435 + padding-right: 0.5rem;
4436 + padding-left: 0.5rem;
4437 +}
4438 +
4439 +.navbar-expand > .container,
4440 +.navbar-expand > .container-fluid {
4441 + -ms-flex-wrap: nowrap;
4442 + flex-wrap: nowrap;
4443 +}
4444 +
4445 +.navbar-expand .navbar-collapse {
4446 + display: -ms-flexbox !important;
4447 + display: flex !important;
4448 + -ms-flex-preferred-size: auto;
4449 + flex-basis: auto;
4450 +}
4451 +
4452 +.navbar-expand .navbar-toggler {
4453 + display: none;
4454 +}
4455 +
4456 +.navbar-light .navbar-brand {
4457 + color: rgba(0, 0, 0, 0.9);
4458 +}
4459 +
4460 +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {
4461 + color: rgba(0, 0, 0, 0.9);
4462 +}
4463 +
4464 +.navbar-light .navbar-nav .nav-link {
4465 + color: rgba(0, 0, 0, 0.5);
4466 +}
4467 +
4468 +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {
4469 + color: rgba(0, 0, 0, 0.7);
4470 +}
4471 +
4472 +.navbar-light .navbar-nav .nav-link.disabled {
4473 + color: rgba(0, 0, 0, 0.3);
4474 +}
4475 +
4476 +.navbar-light .navbar-nav .show > .nav-link,
4477 +.navbar-light .navbar-nav .active > .nav-link,
4478 +.navbar-light .navbar-nav .nav-link.show,
4479 +.navbar-light .navbar-nav .nav-link.active {
4480 + color: rgba(0, 0, 0, 0.9);
4481 +}
4482 +
4483 +.navbar-light .navbar-toggler {
4484 + color: rgba(0, 0, 0, 0.5);
4485 + border-color: rgba(0, 0, 0, 0.1);
4486 +}
4487 +
4488 +.navbar-light .navbar-toggler-icon {
4489 + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
4490 +}
4491 +
4492 +.navbar-light .navbar-text {
4493 + color: rgba(0, 0, 0, 0.5);
4494 +}
4495 +
4496 +.navbar-light .navbar-text a {
4497 + color: rgba(0, 0, 0, 0.9);
4498 +}
4499 +
4500 +.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {
4501 + color: rgba(0, 0, 0, 0.9);
4502 +}
4503 +
4504 +.navbar-dark .navbar-brand {
4505 + color: #fff;
4506 +}
4507 +
4508 +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {
4509 + color: #fff;
4510 +}
4511 +
4512 +.navbar-dark .navbar-nav .nav-link {
4513 + color: rgba(255, 255, 255, 0.5);
4514 +}
4515 +
4516 +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {
4517 + color: rgba(255, 255, 255, 0.75);
4518 +}
4519 +
4520 +.navbar-dark .navbar-nav .nav-link.disabled {
4521 + color: rgba(255, 255, 255, 0.25);
4522 +}
4523 +
4524 +.navbar-dark .navbar-nav .show > .nav-link,
4525 +.navbar-dark .navbar-nav .active > .nav-link,
4526 +.navbar-dark .navbar-nav .nav-link.show,
4527 +.navbar-dark .navbar-nav .nav-link.active {
4528 + color: #fff;
4529 +}
4530 +
4531 +.navbar-dark .navbar-toggler {
4532 + color: rgba(255, 255, 255, 0.5);
4533 + border-color: rgba(255, 255, 255, 0.1);
4534 +}
4535 +
4536 +.navbar-dark .navbar-toggler-icon {
4537 + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
4538 +}
4539 +
4540 +.navbar-dark .navbar-text {
4541 + color: rgba(255, 255, 255, 0.5);
4542 +}
4543 +
4544 +.navbar-dark .navbar-text a {
4545 + color: #fff;
4546 +}
4547 +
4548 +.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {
4549 + color: #fff;
4550 +}
4551 +
4552 +.card {
4553 + position: relative;
4554 + display: -ms-flexbox;
4555 + display: flex;
4556 + -ms-flex-direction: column;
4557 + flex-direction: column;
4558 + min-width: 0;
4559 + word-wrap: break-word;
4560 + background-color: #fff;
4561 + background-clip: border-box;
4562 + border: 1px solid rgba(0, 0, 0, 0.125);
4563 + border-radius: 0.25rem;
4564 +}
4565 +
4566 +.card > hr {
4567 + margin-right: 0;
4568 + margin-left: 0;
4569 +}
4570 +
4571 +.card > .list-group:first-child .list-group-item:first-child {
4572 + border-top-left-radius: 0.25rem;
4573 + border-top-right-radius: 0.25rem;
4574 +}
4575 +
4576 +.card > .list-group:last-child .list-group-item:last-child {
4577 + border-bottom-right-radius: 0.25rem;
4578 + border-bottom-left-radius: 0.25rem;
4579 +}
4580 +
4581 +.card-body {
4582 + -ms-flex: 1 1 auto;
4583 + flex: 1 1 auto;
4584 + padding: 1.25rem;
4585 +}
4586 +
4587 +.card-title {
4588 + margin-bottom: 0.75rem;
4589 +}
4590 +
4591 +.card-subtitle {
4592 + margin-top: -0.375rem;
4593 + margin-bottom: 0;
4594 +}
4595 +
4596 +.card-text:last-child {
4597 + margin-bottom: 0;
4598 +}
4599 +
4600 +.card-link:hover {
4601 + text-decoration: none;
4602 +}
4603 +
4604 +.card-link + .card-link {
4605 + margin-left: 1.25rem;
4606 +}
4607 +
4608 +.card-header {
4609 + padding: 0.75rem 1.25rem;
4610 + margin-bottom: 0;
4611 + background-color: rgba(0, 0, 0, 0.03);
4612 + border-bottom: 1px solid rgba(0, 0, 0, 0.125);
4613 +}
4614 +
4615 +.card-header:first-child {
4616 + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
4617 +}
4618 +
4619 +.card-header + .list-group .list-group-item:first-child {
4620 + border-top: 0;
4621 +}
4622 +
4623 +.card-footer {
4624 + padding: 0.75rem 1.25rem;
4625 + background-color: rgba(0, 0, 0, 0.03);
4626 + border-top: 1px solid rgba(0, 0, 0, 0.125);
4627 +}
4628 +
4629 +.card-footer:last-child {
4630 + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);
4631 +}
4632 +
4633 +.card-header-tabs {
4634 + margin-right: -0.625rem;
4635 + margin-bottom: -0.75rem;
4636 + margin-left: -0.625rem;
4637 + border-bottom: 0;
4638 +}
4639 +
4640 +.card-header-pills {
4641 + margin-right: -0.625rem;
4642 + margin-left: -0.625rem;
4643 +}
4644 +
4645 +.card-img-overlay {
4646 + position: absolute;
4647 + top: 0;
4648 + right: 0;
4649 + bottom: 0;
4650 + left: 0;
4651 + padding: 1.25rem;
4652 +}
4653 +
4654 +.card-img {
4655 + width: 100%;
4656 + border-radius: calc(0.25rem - 1px);
4657 +}
4658 +
4659 +.card-img-top {
4660 + width: 100%;
4661 + border-top-left-radius: calc(0.25rem - 1px);
4662 + border-top-right-radius: calc(0.25rem - 1px);
4663 +}
4664 +
4665 +.card-img-bottom {
4666 + width: 100%;
4667 + border-bottom-right-radius: calc(0.25rem - 1px);
4668 + border-bottom-left-radius: calc(0.25rem - 1px);
4669 +}
4670 +
4671 +.card-deck {
4672 + display: -ms-flexbox;
4673 + display: flex;
4674 + -ms-flex-direction: column;
4675 + flex-direction: column;
4676 +}
4677 +
4678 +.card-deck .card {
4679 + margin-bottom: 15px;
4680 +}
4681 +
4682 +@media (min-width: 576px) {
4683 + .card-deck {
4684 + -ms-flex-flow: row wrap;
4685 + flex-flow: row wrap;
4686 + margin-right: -15px;
4687 + margin-left: -15px;
4688 + }
4689 + .card-deck .card {
4690 + display: -ms-flexbox;
4691 + display: flex;
4692 + -ms-flex: 1 0 0%;
4693 + flex: 1 0 0%;
4694 + -ms-flex-direction: column;
4695 + flex-direction: column;
4696 + margin-right: 15px;
4697 + margin-bottom: 0;
4698 + margin-left: 15px;
4699 + }
4700 +}
4701 +
4702 +.card-group {
4703 + display: -ms-flexbox;
4704 + display: flex;
4705 + -ms-flex-direction: column;
4706 + flex-direction: column;
4707 +}
4708 +
4709 +.card-group > .card {
4710 + margin-bottom: 15px;
4711 +}
4712 +
4713 +@media (min-width: 576px) {
4714 + .card-group {
4715 + -ms-flex-flow: row wrap;
4716 + flex-flow: row wrap;
4717 + }
4718 + .card-group > .card {
4719 + -ms-flex: 1 0 0%;
4720 + flex: 1 0 0%;
4721 + margin-bottom: 0;
4722 + }
4723 + .card-group > .card + .card {
4724 + margin-left: 0;
4725 + border-left: 0;
4726 + }
4727 + .card-group > .card:not(:last-child) {
4728 + border-top-right-radius: 0;
4729 + border-bottom-right-radius: 0;
4730 + }
4731 + .card-group > .card:not(:last-child) .card-img-top,
4732 + .card-group > .card:not(:last-child) .card-header {
4733 + border-top-right-radius: 0;
4734 + }
4735 + .card-group > .card:not(:last-child) .card-img-bottom,
4736 + .card-group > .card:not(:last-child) .card-footer {
4737 + border-bottom-right-radius: 0;
4738 + }
4739 + .card-group > .card:not(:first-child) {
4740 + border-top-left-radius: 0;
4741 + border-bottom-left-radius: 0;
4742 + }
4743 + .card-group > .card:not(:first-child) .card-img-top,
4744 + .card-group > .card:not(:first-child) .card-header {
4745 + border-top-left-radius: 0;
4746 + }
4747 + .card-group > .card:not(:first-child) .card-img-bottom,
4748 + .card-group > .card:not(:first-child) .card-footer {
4749 + border-bottom-left-radius: 0;
4750 + }
4751 +}
4752 +
4753 +.card-columns .card {
4754 + margin-bottom: 0.75rem;
4755 +}
4756 +
4757 +@media (min-width: 576px) {
4758 + .card-columns {
4759 + -webkit-column-count: 3;
4760 + -moz-column-count: 3;
4761 + column-count: 3;
4762 + -webkit-column-gap: 1.25rem;
4763 + -moz-column-gap: 1.25rem;
4764 + column-gap: 1.25rem;
4765 + orphans: 1;
4766 + widows: 1;
4767 + }
4768 + .card-columns .card {
4769 + display: inline-block;
4770 + width: 100%;
4771 + }
4772 +}
4773 +
4774 +.accordion > .card {
4775 + overflow: hidden;
4776 +}
4777 +
4778 +.accordion > .card:not(:first-of-type) .card-header:first-child {
4779 + border-radius: 0;
4780 +}
4781 +
4782 +.accordion > .card:not(:first-of-type):not(:last-of-type) {
4783 + border-bottom: 0;
4784 + border-radius: 0;
4785 +}
4786 +
4787 +.accordion > .card:first-of-type {
4788 + border-bottom: 0;
4789 + border-bottom-right-radius: 0;
4790 + border-bottom-left-radius: 0;
4791 +}
4792 +
4793 +.accordion > .card:last-of-type {
4794 + border-top-left-radius: 0;
4795 + border-top-right-radius: 0;
4796 +}
4797 +
4798 +.accordion > .card .card-header {
4799 + margin-bottom: -1px;
4800 +}
4801 +
4802 +.breadcrumb {
4803 + display: -ms-flexbox;
4804 + display: flex;
4805 + -ms-flex-wrap: wrap;
4806 + flex-wrap: wrap;
4807 + padding: 0.75rem 1rem;
4808 + margin-bottom: 1rem;
4809 + list-style: none;
4810 + background-color: #e9ecef;
4811 + border-radius: 0.25rem;
4812 +}
4813 +
4814 +.breadcrumb-item + .breadcrumb-item {
4815 + padding-left: 0.5rem;
4816 +}
4817 +
4818 +.breadcrumb-item + .breadcrumb-item::before {
4819 + display: inline-block;
4820 + padding-right: 0.5rem;
4821 + color: #6c757d;
4822 + content: "/";
4823 +}
4824 +
4825 +.breadcrumb-item + .breadcrumb-item:hover::before {
4826 + text-decoration: underline;
4827 +}
4828 +
4829 +.breadcrumb-item + .breadcrumb-item:hover::before {
4830 + text-decoration: none;
4831 +}
4832 +
4833 +.breadcrumb-item.active {
4834 + color: #6c757d;
4835 +}
4836 +
4837 +.pagination {
4838 + display: -ms-flexbox;
4839 + display: flex;
4840 + padding-left: 0;
4841 + list-style: none;
4842 + border-radius: 0.25rem;
4843 +}
4844 +
4845 +.page-link {
4846 + position: relative;
4847 + display: block;
4848 + padding: 0.5rem 0.75rem;
4849 + margin-left: -1px;
4850 + line-height: 1.25;
4851 + color: #007bff;
4852 + background-color: #fff;
4853 + border: 1px solid #dee2e6;
4854 +}
4855 +
4856 +.page-link:hover {
4857 + z-index: 2;
4858 + color: #0056b3;
4859 + text-decoration: none;
4860 + background-color: #e9ecef;
4861 + border-color: #dee2e6;
4862 +}
4863 +
4864 +.page-link:focus {
4865 + z-index: 2;
4866 + outline: 0;
4867 + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
4868 +}
4869 +
4870 +.page-item:first-child .page-link {
4871 + margin-left: 0;
4872 + border-top-left-radius: 0.25rem;
4873 + border-bottom-left-radius: 0.25rem;
4874 +}
4875 +
4876 +.page-item:last-child .page-link {
4877 + border-top-right-radius: 0.25rem;
4878 + border-bottom-right-radius: 0.25rem;
4879 +}
4880 +
4881 +.page-item.active .page-link {
4882 + z-index: 1;
4883 + color: #fff;
4884 + background-color: #007bff;
4885 + border-color: #007bff;
4886 +}
4887 +
4888 +.page-item.disabled .page-link {
4889 + color: #6c757d;
4890 + pointer-events: none;
4891 + cursor: auto;
4892 + background-color: #fff;
4893 + border-color: #dee2e6;
4894 +}
4895 +
4896 +.pagination-lg .page-link {
4897 + padding: 0.75rem 1.5rem;
4898 + font-size: 1.25rem;
4899 + line-height: 1.5;
4900 +}
4901 +
4902 +.pagination-lg .page-item:first-child .page-link {
4903 + border-top-left-radius: 0.3rem;
4904 + border-bottom-left-radius: 0.3rem;
4905 +}
4906 +
4907 +.pagination-lg .page-item:last-child .page-link {
4908 + border-top-right-radius: 0.3rem;
4909 + border-bottom-right-radius: 0.3rem;
4910 +}
4911 +
4912 +.pagination-sm .page-link {
4913 + padding: 0.25rem 0.5rem;
4914 + font-size: 0.875rem;
4915 + line-height: 1.5;
4916 +}
4917 +
4918 +.pagination-sm .page-item:first-child .page-link {
4919 + border-top-left-radius: 0.2rem;
4920 + border-bottom-left-radius: 0.2rem;
4921 +}
4922 +
4923 +.pagination-sm .page-item:last-child .page-link {
4924 + border-top-right-radius: 0.2rem;
4925 + border-bottom-right-radius: 0.2rem;
4926 +}
4927 +
4928 +.badge {
4929 + display: inline-block;
4930 + padding: 0.25em 0.4em;
4931 + font-size: 75%;
4932 + font-weight: 700;
4933 + line-height: 1;
4934 + text-align: center;
4935 + white-space: nowrap;
4936 + vertical-align: baseline;
4937 + border-radius: 0.25rem;
4938 + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
4939 +}
4940 +
4941 +@media (prefers-reduced-motion: reduce) {
4942 + .badge {
4943 + transition: none;
4944 + }
4945 +}
4946 +
4947 +a.badge:hover, a.badge:focus {
4948 + text-decoration: none;
4949 +}
4950 +
4951 +.badge:empty {
4952 + display: none;
4953 +}
4954 +
4955 +.btn .badge {
4956 + position: relative;
4957 + top: -1px;
4958 +}
4959 +
4960 +.badge-pill {
4961 + padding-right: 0.6em;
4962 + padding-left: 0.6em;
4963 + border-radius: 10rem;
4964 +}
4965 +
4966 +.badge-primary {
4967 + color: #fff;
4968 + background-color: #007bff;
4969 +}
4970 +
4971 +a.badge-primary:hover, a.badge-primary:focus {
4972 + color: #fff;
4973 + background-color: #0062cc;
4974 +}
4975 +
4976 +a.badge-primary:focus, a.badge-primary.focus {
4977 + outline: 0;
4978 + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
4979 +}
4980 +
4981 +.badge-secondary {
4982 + color: #fff;
4983 + background-color: #6c757d;
4984 +}
4985 +
4986 +a.badge-secondary:hover, a.badge-secondary:focus {
4987 + color: #fff;
4988 + background-color: #545b62;
4989 +}
4990 +
4991 +a.badge-secondary:focus, a.badge-secondary.focus {
4992 + outline: 0;
4993 + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
4994 +}
4995 +
4996 +.badge-success {
4997 + color: #fff;
4998 + background-color: #28a745;
4999 +}

This file is too large to show in full.

src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/bootstrap/dist/js/bootstrap.js new
+4435
@@ -0,0 +1,4435 @@
1 +/*!
2 + * Bootstrap v4.3.1 (https://getbootstrap.com/)
3 + * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 + */
6 +(function (global, factory) {
7 + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
8 + typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
9 + (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));
10 +}(this, function (exports, $, Popper) { 'use strict';
11 +
12 + $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13 + Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14 +
15 + function _defineProperties(target, props) {
16 + for (var i = 0; i < props.length; i++) {
17 + var descriptor = props[i];
18 + descriptor.enumerable = descriptor.enumerable || false;
19 + descriptor.configurable = true;
20 + if ("value" in descriptor) descriptor.writable = true;
21 + Object.defineProperty(target, descriptor.key, descriptor);
22 + }
23 + }
24 +
25 + function _createClass(Constructor, protoProps, staticProps) {
26 + if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27 + if (staticProps) _defineProperties(Constructor, staticProps);
28 + return Constructor;
29 + }
30 +
31 + function _defineProperty(obj, key, value) {
32 + if (key in obj) {
33 + Object.defineProperty(obj, key, {
34 + value: value,
35 + enumerable: true,
36 + configurable: true,
37 + writable: true
38 + });
39 + } else {
40 + obj[key] = value;
41 + }
42 +
43 + return obj;
44 + }
45 +
46 + function _objectSpread(target) {
47 + for (var i = 1; i < arguments.length; i++) {
48 + var source = arguments[i] != null ? arguments[i] : {};
49 + var ownKeys = Object.keys(source);
50 +
51 + if (typeof Object.getOwnPropertySymbols === 'function') {
52 + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53 + return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54 + }));
55 + }
56 +
57 + ownKeys.forEach(function (key) {
58 + _defineProperty(target, key, source[key]);
59 + });
60 + }
61 +
62 + return target;
63 + }
64 +
65 + function _inheritsLoose(subClass, superClass) {
66 + subClass.prototype = Object.create(superClass.prototype);
67 + subClass.prototype.constructor = subClass;
68 + subClass.__proto__ = superClass;
69 + }
70 +
71 + /**
72 + * --------------------------------------------------------------------------
73 + * Bootstrap (v4.3.1): util.js
74 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
75 + * --------------------------------------------------------------------------
76 + */
77 + /**
78 + * ------------------------------------------------------------------------
79 + * Private TransitionEnd Helpers
80 + * ------------------------------------------------------------------------
81 + */
82 +
83 + var TRANSITION_END = 'transitionend';
84 + var MAX_UID = 1000000;
85 + var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
86 +
87 + function toType(obj) {
88 + return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
89 + }
90 +
91 + function getSpecialTransitionEndEvent() {
92 + return {
93 + bindType: TRANSITION_END,
94 + delegateType: TRANSITION_END,
95 + handle: function handle(event) {
96 + if ($(event.target).is(this)) {
97 + return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
98 + }
99 +
100 + return undefined; // eslint-disable-line no-undefined
101 + }
102 + };
103 + }
104 +
105 + function transitionEndEmulator(duration) {
106 + var _this = this;
107 +
108 + var called = false;
109 + $(this).one(Util.TRANSITION_END, function () {
110 + called = true;
111 + });
112 + setTimeout(function () {
113 + if (!called) {
114 + Util.triggerTransitionEnd(_this);
115 + }
116 + }, duration);
117 + return this;
118 + }
119 +
120 + function setTransitionEndSupport() {
121 + $.fn.emulateTransitionEnd = transitionEndEmulator;
122 + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
123 + }
124 + /**
125 + * --------------------------------------------------------------------------
126 + * Public Util Api
127 + * --------------------------------------------------------------------------
128 + */
129 +
130 +
131 + var Util = {
132 + TRANSITION_END: 'bsTransitionEnd',
133 + getUID: function getUID(prefix) {
134 + do {
135 + // eslint-disable-next-line no-bitwise
136 + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
137 + } while (document.getElementById(prefix));
138 +
139 + return prefix;
140 + },
141 + getSelectorFromElement: function getSelectorFromElement(element) {
142 + var selector = element.getAttribute('data-target');
143 +
144 + if (!selector || selector === '#') {
145 + var hrefAttr = element.getAttribute('href');
146 + selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
147 + }
148 +
149 + try {
150 + return document.querySelector(selector) ? selector : null;
151 + } catch (err) {
152 + return null;
153 + }
154 + },
155 + getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
156 + if (!element) {
157 + return 0;
158 + } // Get transition-duration of the element
159 +
160 +
161 + var transitionDuration = $(element).css('transition-duration');
162 + var transitionDelay = $(element).css('transition-delay');
163 + var floatTransitionDuration = parseFloat(transitionDuration);
164 + var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
165 +
166 + if (!floatTransitionDuration && !floatTransitionDelay) {
167 + return 0;
168 + } // If multiple durations are defined, take the first
169 +
170 +
171 + transitionDuration = transitionDuration.split(',')[0];
172 + transitionDelay = transitionDelay.split(',')[0];
173 + return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
174 + },
175 + reflow: function reflow(element) {
176 + return element.offsetHeight;
177 + },
178 + triggerTransitionEnd: function triggerTransitionEnd(element) {
179 + $(element).trigger(TRANSITION_END);
180 + },
181 + // TODO: Remove in v5
182 + supportsTransitionEnd: function supportsTransitionEnd() {
183 + return Boolean(TRANSITION_END);
184 + },
185 + isElement: function isElement(obj) {
186 + return (obj[0] || obj).nodeType;
187 + },
188 + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
189 + for (var property in configTypes) {
190 + if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
191 + var expectedTypes = configTypes[property];
192 + var value = config[property];
193 + var valueType = value && Util.isElement(value) ? 'element' : toType(value);
194 +
195 + if (!new RegExp(expectedTypes).test(valueType)) {
196 + throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
197 + }
198 + }
199 + }
200 + },
201 + findShadowRoot: function findShadowRoot(element) {
202 + if (!document.documentElement.attachShadow) {
203 + return null;
204 + } // Can find the shadow root otherwise it'll return the document
205 +
206 +
207 + if (typeof element.getRootNode === 'function') {
208 + var root = element.getRootNode();
209 + return root instanceof ShadowRoot ? root : null;
210 + }
211 +
212 + if (element instanceof ShadowRoot) {
213 + return element;
214 + } // when we don't find a shadow root
215 +
216 +
217 + if (!element.parentNode) {
218 + return null;
219 + }
220 +
221 + return Util.findShadowRoot(element.parentNode);
222 + }
223 + };
224 + setTransitionEndSupport();
225 +
226 + /**
227 + * ------------------------------------------------------------------------
228 + * Constants
229 + * ------------------------------------------------------------------------
230 + */
231 +
232 + var NAME = 'alert';
233 + var VERSION = '4.3.1';
234 + var DATA_KEY = 'bs.alert';
235 + var EVENT_KEY = "." + DATA_KEY;
236 + var DATA_API_KEY = '.data-api';
237 + var JQUERY_NO_CONFLICT = $.fn[NAME];
238 + var Selector = {
239 + DISMISS: '[data-dismiss="alert"]'
240 + };
241 + var Event = {
242 + CLOSE: "close" + EVENT_KEY,
243 + CLOSED: "closed" + EVENT_KEY,
244 + CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
245 + };
246 + var ClassName = {
247 + ALERT: 'alert',
248 + FADE: 'fade',
249 + SHOW: 'show'
250 + /**
251 + * ------------------------------------------------------------------------
252 + * Class Definition
253 + * ------------------------------------------------------------------------
254 + */
255 +
256 + };
257 +
258 + var Alert =
259 + /*#__PURE__*/
260 + function () {
261 + function Alert(element) {
262 + this._element = element;
263 + } // Getters
264 +
265 +
266 + var _proto = Alert.prototype;
267 +
268 + // Public
269 + _proto.close = function close(element) {
270 + var rootElement = this._element;
271 +
272 + if (element) {
273 + rootElement = this._getRootElement(element);
274 + }
275 +
276 + var customEvent = this._triggerCloseEvent(rootElement);
277 +
278 + if (customEvent.isDefaultPrevented()) {
279 + return;
280 + }
281 +
282 + this._removeElement(rootElement);
283 + };
284 +
285 + _proto.dispose = function dispose() {
286 + $.removeData(this._element, DATA_KEY);
287 + this._element = null;
288 + } // Private
289 + ;
290 +
291 + _proto._getRootElement = function _getRootElement(element) {
292 + var selector = Util.getSelectorFromElement(element);
293 + var parent = false;
294 +
295 + if (selector) {
296 + parent = document.querySelector(selector);
297 + }
298 +
299 + if (!parent) {
300 + parent = $(element).closest("." + ClassName.ALERT)[0];
301 + }
302 +
303 + return parent;
304 + };
305 +
306 + _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
307 + var closeEvent = $.Event(Event.CLOSE);
308 + $(element).trigger(closeEvent);
309 + return closeEvent;
310 + };
311 +
312 + _proto._removeElement = function _removeElement(element) {
313 + var _this = this;
314 +
315 + $(element).removeClass(ClassName.SHOW);
316 +
317 + if (!$(element).hasClass(ClassName.FADE)) {
318 + this._destroyElement(element);
319 +
320 + return;
321 + }
322 +
323 + var transitionDuration = Util.getTransitionDurationFromElement(element);
324 + $(element).one(Util.TRANSITION_END, function (event) {
325 + return _this._destroyElement(element, event);
326 + }).emulateTransitionEnd(transitionDuration);
327 + };
328 +
329 + _proto._destroyElement = function _destroyElement(element) {
330 + $(element).detach().trigger(Event.CLOSED).remove();
331 + } // Static
332 + ;
333 +
334 + Alert._jQueryInterface = function _jQueryInterface(config) {
335 + return this.each(function () {
336 + var $element = $(this);
337 + var data = $element.data(DATA_KEY);
338 +
339 + if (!data) {
340 + data = new Alert(this);
341 + $element.data(DATA_KEY, data);
342 + }
343 +
344 + if (config === 'close') {
345 + data[config](this);
346 + }
347 + });
348 + };
349 +
350 + Alert._handleDismiss = function _handleDismiss(alertInstance) {
351 + return function (event) {
352 + if (event) {
353 + event.preventDefault();
354 + }
355 +
356 + alertInstance.close(this);
357 + };
358 + };
359 +
360 + _createClass(Alert, null, [{
361 + key: "VERSION",
362 + get: function get() {
363 + return VERSION;
364 + }
365 + }]);
366 +
367 + return Alert;
368 + }();
369 + /**
370 + * ------------------------------------------------------------------------
371 + * Data Api implementation
372 + * ------------------------------------------------------------------------
373 + */
374 +
375 +
376 + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
377 + /**
378 + * ------------------------------------------------------------------------
379 + * jQuery
380 + * ------------------------------------------------------------------------
381 + */
382 +
383 + $.fn[NAME] = Alert._jQueryInterface;
384 + $.fn[NAME].Constructor = Alert;
385 +
386 + $.fn[NAME].noConflict = function () {
387 + $.fn[NAME] = JQUERY_NO_CONFLICT;
388 + return Alert._jQueryInterface;
389 + };
390 +
391 + /**
392 + * ------------------------------------------------------------------------
393 + * Constants
394 + * ------------------------------------------------------------------------
395 + */
396 +
397 + var NAME$1 = 'button';
398 + var VERSION$1 = '4.3.1';
399 + var DATA_KEY$1 = 'bs.button';
400 + var EVENT_KEY$1 = "." + DATA_KEY$1;
401 + var DATA_API_KEY$1 = '.data-api';
402 + var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];
403 + var ClassName$1 = {
404 + ACTIVE: 'active',
405 + BUTTON: 'btn',
406 + FOCUS: 'focus'
407 + };
408 + var Selector$1 = {
409 + DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
410 + DATA_TOGGLE: '[data-toggle="buttons"]',
411 + INPUT: 'input:not([type="hidden"])',
412 + ACTIVE: '.active',
413 + BUTTON: '.btn'
414 + };
415 + var Event$1 = {
416 + CLICK_DATA_API: "click" + EVENT_KEY$1 + DATA_API_KEY$1,
417 + FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1)
418 + /**
419 + * ------------------------------------------------------------------------
420 + * Class Definition
421 + * ------------------------------------------------------------------------
422 + */
423 +
424 + };
425 +
426 + var Button =
427 + /*#__PURE__*/
428 + function () {
429 + function Button(element) {
430 + this._element = element;
431 + } // Getters
432 +
433 +
434 + var _proto = Button.prototype;
435 +
436 + // Public
437 + _proto.toggle = function toggle() {
438 + var triggerChangeEvent = true;
439 + var addAriaPressed = true;
440 + var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];
441 +
442 + if (rootElement) {
443 + var input = this._element.querySelector(Selector$1.INPUT);
444 +
445 + if (input) {
446 + if (input.type === 'radio') {
447 + if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {
448 + triggerChangeEvent = false;
449 + } else {
450 + var activeElement = rootElement.querySelector(Selector$1.ACTIVE);
451 +
452 + if (activeElement) {
453 + $(activeElement).removeClass(ClassName$1.ACTIVE);
454 + }
455 + }
456 + }
457 +
458 + if (triggerChangeEvent) {
459 + if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
460 + return;
461 + }
462 +
463 + input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);
464 + $(input).trigger('change');
465 + }
466 +
467 + input.focus();
468 + addAriaPressed = false;
469 + }
470 + }
471 +
472 + if (addAriaPressed) {
473 + this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));
474 + }
475 +
476 + if (triggerChangeEvent) {
477 + $(this._element).toggleClass(ClassName$1.ACTIVE);
478 + }
479 + };
480 +
481 + _proto.dispose = function dispose() {
482 + $.removeData(this._element, DATA_KEY$1);
483 + this._element = null;
484 + } // Static
485 + ;
486 +
487 + Button._jQueryInterface = function _jQueryInterface(config) {
488 + return this.each(function () {
489 + var data = $(this).data(DATA_KEY$1);
490 +
491 + if (!data) {
492 + data = new Button(this);
493 + $(this).data(DATA_KEY$1, data);
494 + }
495 +
496 + if (config === 'toggle') {
497 + data[config]();
498 + }
499 + });
500 + };
501 +
502 + _createClass(Button, null, [{
503 + key: "VERSION",
504 + get: function get() {
505 + return VERSION$1;
506 + }
507 + }]);
508 +
509 + return Button;
510 + }();
511 + /**
512 + * ------------------------------------------------------------------------
513 + * Data Api implementation
514 + * ------------------------------------------------------------------------
515 + */
516 +
517 +
518 + $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
519 + event.preventDefault();
520 + var button = event.target;
521 +
522 + if (!$(button).hasClass(ClassName$1.BUTTON)) {
523 + button = $(button).closest(Selector$1.BUTTON);
524 + }
525 +
526 + Button._jQueryInterface.call($(button), 'toggle');
527 + }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
528 + var button = $(event.target).closest(Selector$1.BUTTON)[0];
529 + $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));
530 + });
531 + /**
532 + * ------------------------------------------------------------------------
533 + * jQuery
534 + * ------------------------------------------------------------------------
535 + */
536 +
537 + $.fn[NAME$1] = Button._jQueryInterface;
538 + $.fn[NAME$1].Constructor = Button;
539 +
540 + $.fn[NAME$1].noConflict = function () {
541 + $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;
542 + return Button._jQueryInterface;
543 + };
544 +
545 + /**
546 + * ------------------------------------------------------------------------
547 + * Constants
548 + * ------------------------------------------------------------------------
549 + */
550 +
551 + var NAME$2 = 'carousel';
552 + var VERSION$2 = '4.3.1';
553 + var DATA_KEY$2 = 'bs.carousel';
554 + var EVENT_KEY$2 = "." + DATA_KEY$2;
555 + var DATA_API_KEY$2 = '.data-api';
556 + var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];
557 + var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
558 +
559 + var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
560 +
561 + var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
562 +
563 + var SWIPE_THRESHOLD = 40;
564 + var Default = {
565 + interval: 5000,
566 + keyboard: true,
567 + slide: false,
568 + pause: 'hover',
569 + wrap: true,
570 + touch: true
571 + };
572 + var DefaultType = {
573 + interval: '(number|boolean)',
574 + keyboard: 'boolean',
575 + slide: '(boolean|string)',
576 + pause: '(string|boolean)',
577 + wrap: 'boolean',
578 + touch: 'boolean'
579 + };
580 + var Direction = {
581 + NEXT: 'next',
582 + PREV: 'prev',
583 + LEFT: 'left',
584 + RIGHT: 'right'
585 + };
586 + var Event$2 = {
587 + SLIDE: "slide" + EVENT_KEY$2,
588 + SLID: "slid" + EVENT_KEY$2,
589 + KEYDOWN: "keydown" + EVENT_KEY$2,
590 + MOUSEENTER: "mouseenter" + EVENT_KEY$2,
591 + MOUSELEAVE: "mouseleave" + EVENT_KEY$2,
592 + TOUCHSTART: "touchstart" + EVENT_KEY$2,
593 + TOUCHMOVE: "touchmove" + EVENT_KEY$2,
594 + TOUCHEND: "touchend" + EVENT_KEY$2,
595 + POINTERDOWN: "pointerdown" + EVENT_KEY$2,
596 + POINTERUP: "pointerup" + EVENT_KEY$2,
597 + DRAG_START: "dragstart" + EVENT_KEY$2,
598 + LOAD_DATA_API: "load" + EVENT_KEY$2 + DATA_API_KEY$2,
599 + CLICK_DATA_API: "click" + EVENT_KEY$2 + DATA_API_KEY$2
600 + };
601 + var ClassName$2 = {
602 + CAROUSEL: 'carousel',
603 + ACTIVE: 'active',
604 + SLIDE: 'slide',
605 + RIGHT: 'carousel-item-right',
606 + LEFT: 'carousel-item-left',
607 + NEXT: 'carousel-item-next',
608 + PREV: 'carousel-item-prev',
609 + ITEM: 'carousel-item',
610 + POINTER_EVENT: 'pointer-event'
611 + };
612 + var Selector$2 = {
613 + ACTIVE: '.active',
614 + ACTIVE_ITEM: '.active.carousel-item',
615 + ITEM: '.carousel-item',
616 + ITEM_IMG: '.carousel-item img',
617 + NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
618 + INDICATORS: '.carousel-indicators',
619 + DATA_SLIDE: '[data-slide], [data-slide-to]',
620 + DATA_RIDE: '[data-ride="carousel"]'
621 + };
622 + var PointerType = {
623 + TOUCH: 'touch',
624 + PEN: 'pen'
625 + /**
626 + * ------------------------------------------------------------------------
627 + * Class Definition
628 + * ------------------------------------------------------------------------
629 + */
630 +
631 + };
632 +
633 + var Carousel =
634 + /*#__PURE__*/
635 + function () {
636 + function Carousel(element, config) {
637 + this._items = null;
638 + this._interval = null;
639 + this._activeElement = null;
640 + this._isPaused = false;
641 + this._isSliding = false;
642 + this.touchTimeout = null;
643 + this.touchStartX = 0;
644 + this.touchDeltaX = 0;
645 + this._config = this._getConfig(config);
646 + this._element = element;
647 + this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);
648 + this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
649 + this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
650 +
651 + this._addEventListeners();
652 + } // Getters
653 +
654 +
655 + var _proto = Carousel.prototype;
656 +
657 + // Public
658 + _proto.next = function next() {
659 + if (!this._isSliding) {
660 + this._slide(Direction.NEXT);
661 + }
662 + };
663 +
664 + _proto.nextWhenVisible = function nextWhenVisible() {
665 + // Don't call next when the page isn't visible
666 + // or the carousel or its parent isn't visible
667 + if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
668 + this.next();
669 + }
670 + };
671 +
672 + _proto.prev = function prev() {
673 + if (!this._isSliding) {
674 + this._slide(Direction.PREV);
675 + }
676 + };
677 +
678 + _proto.pause = function pause(event) {
679 + if (!event) {
680 + this._isPaused = true;
681 + }
682 +
683 + if (this._element.querySelector(Selector$2.NEXT_PREV)) {
684 + Util.triggerTransitionEnd(this._element);
685 + this.cycle(true);
686 + }
687 +
688 + clearInterval(this._interval);
689 + this._interval = null;
690 + };
691 +
692 + _proto.cycle = function cycle(event) {
693 + if (!event) {
694 + this._isPaused = false;
695 + }
696 +
697 + if (this._interval) {
698 + clearInterval(this._interval);
699 + this._interval = null;
700 + }
701 +
702 + if (this._config.interval && !this._isPaused) {
703 + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
704 + }
705 + };
706 +
707 + _proto.to = function to(index) {
708 + var _this = this;
709 +
710 + this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
711 +
712 + var activeIndex = this._getItemIndex(this._activeElement);
713 +
714 + if (index > this._items.length - 1 || index < 0) {
715 + return;
716 + }
717 +
718 + if (this._isSliding) {
719 + $(this._element).one(Event$2.SLID, function () {
720 + return _this.to(index);
721 + });
722 + return;
723 + }
724 +
725 + if (activeIndex === index) {
726 + this.pause();
727 + this.cycle();
728 + return;
729 + }
730 +
731 + var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
732 +
733 + this._slide(direction, this._items[index]);
734 + };
735 +
736 + _proto.dispose = function dispose() {
737 + $(this._element).off(EVENT_KEY$2);
738 + $.removeData(this._element, DATA_KEY$2);
739 + this._items = null;
740 + this._config = null;
741 + this._element = null;
742 + this._interval = null;
743 + this._isPaused = null;
744 + this._isSliding = null;
745 + this._activeElement = null;
746 + this._indicatorsElement = null;
747 + } // Private
748 + ;
749 +
750 + _proto._getConfig = function _getConfig(config) {
751 + config = _objectSpread({}, Default, config);
752 + Util.typeCheckConfig(NAME$2, config, DefaultType);
753 + return config;
754 + };
755 +
756 + _proto._handleSwipe = function _handleSwipe() {
757 + var absDeltax = Math.abs(this.touchDeltaX);
758 +
759 + if (absDeltax <= SWIPE_THRESHOLD) {
760 + return;
761 + }
762 +
763 + var direction = absDeltax / this.touchDeltaX; // swipe left
764 +
765 + if (direction > 0) {
766 + this.prev();
767 + } // swipe right
768 +
769 +
770 + if (direction < 0) {
771 + this.next();
772 + }
773 + };
774 +
775 + _proto._addEventListeners = function _addEventListeners() {
776 + var _this2 = this;
777 +
778 + if (this._config.keyboard) {
779 + $(this._element).on(Event$2.KEYDOWN, function (event) {
780 + return _this2._keydown(event);
781 + });
782 + }
783 +
784 + if (this._config.pause === 'hover') {
785 + $(this._element).on(Event$2.MOUSEENTER, function (event) {
786 + return _this2.pause(event);
787 + }).on(Event$2.MOUSELEAVE, function (event) {
788 + return _this2.cycle(event);
789 + });
790 + }
791 +
792 + if (this._config.touch) {
793 + this._addTouchEventListeners();
794 + }
795 + };
796 +
797 + _proto._addTouchEventListeners = function _addTouchEventListeners() {
798 + var _this3 = this;
799 +
800 + if (!this._touchSupported) {
801 + return;
802 + }
803 +
804 + var start = function start(event) {
805 + if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
806 + _this3.touchStartX = event.originalEvent.clientX;
807 + } else if (!_this3._pointerEvent) {
808 + _this3.touchStartX = event.originalEvent.touches[0].clientX;
809 + }
810 + };
811 +
812 + var move = function move(event) {
813 + // ensure swiping with one touch and not pinching
814 + if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
815 + _this3.touchDeltaX = 0;
816 + } else {
817 + _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
818 + }
819 + };
820 +
821 + var end = function end(event) {
822 + if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
823 + _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
824 + }
825 +
826 + _this3._handleSwipe();
827 +
828 + if (_this3._config.pause === 'hover') {
829 + // If it's a touch-enabled device, mouseenter/leave are fired as
830 + // part of the mouse compatibility events on first tap - the carousel
831 + // would stop cycling until user tapped out of it;
832 + // here, we listen for touchend, explicitly pause the carousel
833 + // (as if it's the second time we tap on it, mouseenter compat event
834 + // is NOT fired) and after a timeout (to allow for mouse compatibility
835 + // events to fire) we explicitly restart cycling
836 + _this3.pause();
837 +
838 + if (_this3.touchTimeout) {
839 + clearTimeout(_this3.touchTimeout);
840 + }
841 +
842 + _this3.touchTimeout = setTimeout(function (event) {
843 + return _this3.cycle(event);
844 + }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
845 + }
846 + };
847 +
848 + $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {
849 + return e.preventDefault();
850 + });
851 +
852 + if (this._pointerEvent) {
853 + $(this._element).on(Event$2.POINTERDOWN, function (event) {
854 + return start(event);
855 + });
856 + $(this._element).on(Event$2.POINTERUP, function (event) {
857 + return end(event);
858 + });
859 +
860 + this._element.classList.add(ClassName$2.POINTER_EVENT);
861 + } else {
862 + $(this._element).on(Event$2.TOUCHSTART, function (event) {
863 + return start(event);
864 + });
865 + $(this._element).on(Event$2.TOUCHMOVE, function (event) {
866 + return move(event);
867 + });
868 + $(this._element).on(Event$2.TOUCHEND, function (event) {
869 + return end(event);
870 + });
871 + }
872 + };
873 +
874 + _proto._keydown = function _keydown(event) {
875 + if (/input|textarea/i.test(event.target.tagName)) {
876 + return;
877 + }
878 +
879 + switch (event.which) {
880 + case ARROW_LEFT_KEYCODE:
881 + event.preventDefault();
882 + this.prev();
883 + break;
884 +
885 + case ARROW_RIGHT_KEYCODE:
886 + event.preventDefault();
887 + this.next();
888 + break;
889 +
890 + default:
891 + }
892 + };
893 +
894 + _proto._getItemIndex = function _getItemIndex(element) {
895 + this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];
896 + return this._items.indexOf(element);
897 + };
898 +
899 + _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
900 + var isNextDirection = direction === Direction.NEXT;
901 + var isPrevDirection = direction === Direction.PREV;
902 +
903 + var activeIndex = this._getItemIndex(activeElement);
904 +
905 + var lastItemIndex = this._items.length - 1;
906 + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
907 +
908 + if (isGoingToWrap && !this._config.wrap) {
909 + return activeElement;
910 + }
911 +
912 + var delta = direction === Direction.PREV ? -1 : 1;
913 + var itemIndex = (activeIndex + delta) % this._items.length;
914 + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
915 + };
916 +
917 + _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
918 + var targetIndex = this._getItemIndex(relatedTarget);
919 +
920 + var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));
921 +
922 + var slideEvent = $.Event(Event$2.SLIDE, {
923 + relatedTarget: relatedTarget,
924 + direction: eventDirectionName,
925 + from: fromIndex,
926 + to: targetIndex
927 + });
928 + $(this._element).trigger(slideEvent);
929 + return slideEvent;
930 + };
931 +
932 + _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
933 + if (this._indicatorsElement) {
934 + var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));
935 + $(indicators).removeClass(ClassName$2.ACTIVE);
936 +
937 + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
938 +
939 + if (nextIndicator) {
940 + $(nextIndicator).addClass(ClassName$2.ACTIVE);
941 + }
942 + }
943 + };
944 +
945 + _proto._slide = function _slide(direction, element) {
946 + var _this4 = this;
947 +
948 + var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
949 +
950 + var activeElementIndex = this._getItemIndex(activeElement);
951 +
952 + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
953 +
954 + var nextElementIndex = this._getItemIndex(nextElement);
955 +
956 + var isCycling = Boolean(this._interval);
957 + var directionalClassName;
958 + var orderClassName;
959 + var eventDirectionName;
960 +
961 + if (direction === Direction.NEXT) {
962 + directionalClassName = ClassName$2.LEFT;
963 + orderClassName = ClassName$2.NEXT;
964 + eventDirectionName = Direction.LEFT;
965 + } else {
966 + directionalClassName = ClassName$2.RIGHT;
967 + orderClassName = ClassName$2.PREV;
968 + eventDirectionName = Direction.RIGHT;
969 + }
970 +
971 + if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {
972 + this._isSliding = false;
973 + return;
974 + }
975 +
976 + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
977 +
978 + if (slideEvent.isDefaultPrevented()) {
979 + return;
980 + }
981 +
982 + if (!activeElement || !nextElement) {
983 + // Some weirdness is happening, so we bail
984 + return;
985 + }
986 +
987 + this._isSliding = true;
988 +
989 + if (isCycling) {
990 + this.pause();
991 + }
992 +
993 + this._setActiveIndicatorElement(nextElement);
994 +
995 + var slidEvent = $.Event(Event$2.SLID, {
996 + relatedTarget: nextElement,
997 + direction: eventDirectionName,
998 + from: activeElementIndex,
999 + to: nextElementIndex
1000 + });
1001 +
1002 + if ($(this._element).hasClass(ClassName$2.SLIDE)) {
1003 + $(nextElement).addClass(orderClassName);
1004 + Util.reflow(nextElement);
1005 + $(activeElement).addClass(directionalClassName);
1006 + $(nextElement).addClass(directionalClassName);
1007 + var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
1008 +
1009 + if (nextElementInterval) {
1010 + this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
1011 + this._config.interval = nextElementInterval;
1012 + } else {
1013 + this._config.interval = this._config.defaultInterval || this._config.interval;
1014 + }
1015 +
1016 + var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
1017 + $(activeElement).one(Util.TRANSITION_END, function () {
1018 + $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName$2.ACTIVE);
1019 + $(activeElement).removeClass(ClassName$2.ACTIVE + " " + orderClassName + " " + directionalClassName);
1020 + _this4._isSliding = false;
1021 + setTimeout(function () {
1022 + return $(_this4._element).trigger(slidEvent);
1023 + }, 0);
1024 + }).emulateTransitionEnd(transitionDuration);
1025 + } else {
1026 + $(activeElement).removeClass(ClassName$2.ACTIVE);
1027 + $(nextElement).addClass(ClassName$2.ACTIVE);
1028 + this._isSliding = false;
1029 + $(this._element).trigger(slidEvent);
1030 + }
1031 +
1032 + if (isCycling) {
1033 + this.cycle();
1034 + }
1035 + } // Static
1036 + ;
1037 +
1038 + Carousel._jQueryInterface = function _jQueryInterface(config) {
1039 + return this.each(function () {
1040 + var data = $(this).data(DATA_KEY$2);
1041 +
1042 + var _config = _objectSpread({}, Default, $(this).data());
1043 +
1044 + if (typeof config === 'object') {
1045 + _config = _objectSpread({}, _config, config);
1046 + }
1047 +
1048 + var action = typeof config === 'string' ? config : _config.slide;
1049 +
1050 + if (!data) {
1051 + data = new Carousel(this, _config);
1052 + $(this).data(DATA_KEY$2, data);
1053 + }
1054 +
1055 + if (typeof config === 'number') {
1056 + data.to(config);
1057 + } else if (typeof action === 'string') {
1058 + if (typeof data[action] === 'undefined') {
1059 + throw new TypeError("No method named \"" + action + "\"");
1060 + }
1061 +
1062 + data[action]();
1063 + } else if (_config.interval && _config.ride) {
1064 + data.pause();
1065 + data.cycle();
1066 + }
1067 + });
1068 + };
1069 +
1070 + Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
1071 + var selector = Util.getSelectorFromElement(this);
1072 +
1073 + if (!selector) {
1074 + return;
1075 + }
1076 +
1077 + var target = $(selector)[0];
1078 +
1079 + if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {
1080 + return;
1081 + }
1082 +
1083 + var config = _objectSpread({}, $(target).data(), $(this).data());
1084 +
1085 + var slideIndex = this.getAttribute('data-slide-to');
1086 +
1087 + if (slideIndex) {
1088 + config.interval = false;
1089 + }
1090 +
1091 + Carousel._jQueryInterface.call($(target), config);
1092 +
1093 + if (slideIndex) {
1094 + $(target).data(DATA_KEY$2).to(slideIndex);
1095 + }
1096 +
1097 + event.preventDefault();
1098 + };
1099 +
1100 + _createClass(Carousel, null, [{
1101 + key: "VERSION",
1102 + get: function get() {
1103 + return VERSION$2;
1104 + }
1105 + }, {
1106 + key: "Default",
1107 + get: function get() {
1108 + return Default;
1109 + }
1110 + }]);
1111 +
1112 + return Carousel;
1113 + }();
1114 + /**
1115 + * ------------------------------------------------------------------------
1116 + * Data Api implementation
1117 + * ------------------------------------------------------------------------
1118 + */
1119 +
1120 +
1121 + $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);
1122 + $(window).on(Event$2.LOAD_DATA_API, function () {
1123 + var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));
1124 +
1125 + for (var i = 0, len = carousels.length; i < len; i++) {
1126 + var $carousel = $(carousels[i]);
1127 +
1128 + Carousel._jQueryInterface.call($carousel, $carousel.data());
1129 + }
1130 + });
1131 + /**
1132 + * ------------------------------------------------------------------------
1133 + * jQuery
1134 + * ------------------------------------------------------------------------
1135 + */
1136 +
1137 + $.fn[NAME$2] = Carousel._jQueryInterface;
1138 + $.fn[NAME$2].Constructor = Carousel;
1139 +
1140 + $.fn[NAME$2].noConflict = function () {
1141 + $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;
1142 + return Carousel._jQueryInterface;
1143 + };
1144 +
1145 + /**
1146 + * ------------------------------------------------------------------------
1147 + * Constants
1148 + * ------------------------------------------------------------------------
1149 + */
1150 +
1151 + var NAME$3 = 'collapse';
1152 + var VERSION$3 = '4.3.1';
1153 + var DATA_KEY$3 = 'bs.collapse';
1154 + var EVENT_KEY$3 = "." + DATA_KEY$3;
1155 + var DATA_API_KEY$3 = '.data-api';
1156 + var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];
1157 + var Default$1 = {
1158 + toggle: true,
1159 + parent: ''
1160 + };
1161 + var DefaultType$1 = {
1162 + toggle: 'boolean',
1163 + parent: '(string|element)'
1164 + };
1165 + var Event$3 = {
1166 + SHOW: "show" + EVENT_KEY$3,
1167 + SHOWN: "shown" + EVENT_KEY$3,
1168 + HIDE: "hide" + EVENT_KEY$3,
1169 + HIDDEN: "hidden" + EVENT_KEY$3,
1170 + CLICK_DATA_API: "click" + EVENT_KEY$3 + DATA_API_KEY$3
1171 + };
1172 + var ClassName$3 = {
1173 + SHOW: 'show',
1174 + COLLAPSE: 'collapse',
1175 + COLLAPSING: 'collapsing',
1176 + COLLAPSED: 'collapsed'
1177 + };
1178 + var Dimension = {
1179 + WIDTH: 'width',
1180 + HEIGHT: 'height'
1181 + };
1182 + var Selector$3 = {
1183 + ACTIVES: '.show, .collapsing',
1184 + DATA_TOGGLE: '[data-toggle="collapse"]'
1185 + /**
1186 + * ------------------------------------------------------------------------
1187 + * Class Definition
1188 + * ------------------------------------------------------------------------
1189 + */
1190 +
1191 + };
1192 +
1193 + var Collapse =
1194 + /*#__PURE__*/
1195 + function () {
1196 + function Collapse(element, config) {
1197 + this._isTransitioning = false;
1198 + this._element = element;
1199 + this._config = this._getConfig(config);
1200 + this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1201 + var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));
1202 +
1203 + for (var i = 0, len = toggleList.length; i < len; i++) {
1204 + var elem = toggleList[i];
1205 + var selector = Util.getSelectorFromElement(elem);
1206 + var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
1207 + return foundElem === element;
1208 + });
1209 +
1210 + if (selector !== null && filterElement.length > 0) {
1211 + this._selector = selector;
1212 +
1213 + this._triggerArray.push(elem);
1214 + }
1215 + }
1216 +
1217 + this._parent = this._config.parent ? this._getParent() : null;
1218 +
1219 + if (!this._config.parent) {
1220 + this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1221 + }
1222 +
1223 + if (this._config.toggle) {
1224 + this.toggle();
1225 + }
1226 + } // Getters
1227 +
1228 +
1229 + var _proto = Collapse.prototype;
1230 +
1231 + // Public
1232 + _proto.toggle = function toggle() {
1233 + if ($(this._element).hasClass(ClassName$3.SHOW)) {
1234 + this.hide();
1235 + } else {
1236 + this.show();
1237 + }
1238 + };
1239 +
1240 + _proto.show = function show() {
1241 + var _this = this;
1242 +
1243 + if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {
1244 + return;
1245 + }
1246 +
1247 + var actives;
1248 + var activesData;
1249 +
1250 + if (this._parent) {
1251 + actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {
1252 + if (typeof _this._config.parent === 'string') {
1253 + return elem.getAttribute('data-parent') === _this._config.parent;
1254 + }
1255 +
1256 + return elem.classList.contains(ClassName$3.COLLAPSE);
1257 + });
1258 +
1259 + if (actives.length === 0) {
1260 + actives = null;
1261 + }
1262 + }
1263 +
1264 + if (actives) {
1265 + activesData = $(actives).not(this._selector).data(DATA_KEY$3);
1266 +
1267 + if (activesData && activesData._isTransitioning) {
1268 + return;
1269 + }
1270 + }
1271 +
1272 + var startEvent = $.Event(Event$3.SHOW);
1273 + $(this._element).trigger(startEvent);
1274 +
1275 + if (startEvent.isDefaultPrevented()) {
1276 + return;
1277 + }
1278 +
1279 + if (actives) {
1280 + Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
1281 +
1282 + if (!activesData) {
1283 + $(actives).data(DATA_KEY$3, null);
1284 + }
1285 + }
1286 +
1287 + var dimension = this._getDimension();
1288 +
1289 + $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);
1290 + this._element.style[dimension] = 0;
1291 +
1292 + if (this._triggerArray.length) {
1293 + $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);
1294 + }
1295 +
1296 + this.setTransitioning(true);
1297 +
1298 + var complete = function complete() {
1299 + $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);
1300 + _this._element.style[dimension] = '';
1301 +
1302 + _this.setTransitioning(false);
1303 +
1304 + $(_this._element).trigger(Event$3.SHOWN);
1305 + };
1306 +
1307 + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1308 + var scrollSize = "scroll" + capitalizedDimension;
1309 + var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1310 + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1311 + this._element.style[dimension] = this._element[scrollSize] + "px";
1312 + };
1313 +
1314 + _proto.hide = function hide() {
1315 + var _this2 = this;
1316 +
1317 + if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {
1318 + return;
1319 + }
1320 +
1321 + var startEvent = $.Event(Event$3.HIDE);
1322 + $(this._element).trigger(startEvent);
1323 +
1324 + if (startEvent.isDefaultPrevented()) {
1325 + return;
1326 + }
1327 +
1328 + var dimension = this._getDimension();
1329 +
1330 + this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1331 + Util.reflow(this._element);
1332 + $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);
1333 + var triggerArrayLength = this._triggerArray.length;
1334 +
1335 + if (triggerArrayLength > 0) {
1336 + for (var i = 0; i < triggerArrayLength; i++) {
1337 + var trigger = this._triggerArray[i];
1338 + var selector = Util.getSelectorFromElement(trigger);
1339 +
1340 + if (selector !== null) {
1341 + var $elem = $([].slice.call(document.querySelectorAll(selector)));
1342 +
1343 + if (!$elem.hasClass(ClassName$3.SHOW)) {
1344 + $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);
1345 + }
1346 + }
1347 + }
1348 + }
1349 +
1350 + this.setTransitioning(true);
1351 +
1352 + var complete = function complete() {
1353 + _this2.setTransitioning(false);
1354 +
1355 + $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);
1356 + };
1357 +
1358 + this._element.style[dimension] = '';
1359 + var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1360 + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1361 + };
1362 +
1363 + _proto.setTransitioning = function setTransitioning(isTransitioning) {
1364 + this._isTransitioning = isTransitioning;
1365 + };
1366 +
1367 + _proto.dispose = function dispose() {
1368 + $.removeData(this._element, DATA_KEY$3);
1369 + this._config = null;
1370 + this._parent = null;
1371 + this._element = null;
1372 + this._triggerArray = null;
1373 + this._isTransitioning = null;
1374 + } // Private
1375 + ;
1376 +
1377 + _proto._getConfig = function _getConfig(config) {
1378 + config = _objectSpread({}, Default$1, config);
1379 + config.toggle = Boolean(config.toggle); // Coerce string values
1380 +
1381 + Util.typeCheckConfig(NAME$3, config, DefaultType$1);
1382 + return config;
1383 + };
1384 +
1385 + _proto._getDimension = function _getDimension() {
1386 + var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
1387 + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1388 + };
1389 +
1390 + _proto._getParent = function _getParent() {
1391 + var _this3 = this;
1392 +
1393 + var parent;
1394 +
1395 + if (Util.isElement(this._config.parent)) {
1396 + parent = this._config.parent; // It's a jQuery object
1397 +
1398 + if (typeof this._config.parent.jquery !== 'undefined') {
1399 + parent = this._config.parent[0];
1400 + }
1401 + } else {
1402 + parent = document.querySelector(this._config.parent);
1403 + }
1404 +
1405 + var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
1406 + var children = [].slice.call(parent.querySelectorAll(selector));
1407 + $(children).each(function (i, element) {
1408 + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
1409 + });
1410 + return parent;
1411 + };
1412 +
1413 + _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1414 + var isOpen = $(element).hasClass(ClassName$3.SHOW);
1415 +
1416 + if (triggerArray.length) {
1417 + $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1418 + }
1419 + } // Static
1420 + ;
1421 +
1422 + Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1423 + var selector = Util.getSelectorFromElement(element);
1424 + return selector ? document.querySelector(selector) : null;
1425 + };
1426 +
1427 + Collapse._jQueryInterface = function _jQueryInterface(config) {
1428 + return this.each(function () {
1429 + var $this = $(this);
1430 + var data = $this.data(DATA_KEY$3);
1431 +
1432 + var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});
1433 +
1434 + if (!data && _config.toggle && /show|hide/.test(config)) {
1435 + _config.toggle = false;
1436 + }
1437 +
1438 + if (!data) {
1439 + data = new Collapse(this, _config);
1440 + $this.data(DATA_KEY$3, data);
1441 + }
1442 +
1443 + if (typeof config === 'string') {
1444 + if (typeof data[config] === 'undefined') {
1445 + throw new TypeError("No method named \"" + config + "\"");
1446 + }
1447 +
1448 + data[config]();
1449 + }
1450 + });
1451 + };
1452 +
1453 + _createClass(Collapse, null, [{
1454 + key: "VERSION",
1455 + get: function get() {
1456 + return VERSION$3;
1457 + }
1458 + }, {
1459 + key: "Default",
1460 + get: function get() {
1461 + return Default$1;
1462 + }
1463 + }]);
1464 +
1465 + return Collapse;
1466 + }();
1467 + /**
1468 + * ------------------------------------------------------------------------
1469 + * Data Api implementation
1470 + * ------------------------------------------------------------------------
1471 + */
1472 +
1473 +
1474 + $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {
1475 + // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1476 + if (event.currentTarget.tagName === 'A') {
1477 + event.preventDefault();
1478 + }
1479 +
1480 + var $trigger = $(this);
1481 + var selector = Util.getSelectorFromElement(this);
1482 + var selectors = [].slice.call(document.querySelectorAll(selector));
1483 + $(selectors).each(function () {
1484 + var $target = $(this);
1485 + var data = $target.data(DATA_KEY$3);
1486 + var config = data ? 'toggle' : $trigger.data();
1487 +
1488 + Collapse._jQueryInterface.call($target, config);
1489 + });
1490 + });
1491 + /**
1492 + * ------------------------------------------------------------------------
1493 + * jQuery
1494 + * ------------------------------------------------------------------------
1495 + */
1496 +
1497 + $.fn[NAME$3] = Collapse._jQueryInterface;
1498 + $.fn[NAME$3].Constructor = Collapse;
1499 +
1500 + $.fn[NAME$3].noConflict = function () {
1501 + $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;
1502 + return Collapse._jQueryInterface;
1503 + };
1504 +
1505 + /**
1506 + * ------------------------------------------------------------------------
1507 + * Constants
1508 + * ------------------------------------------------------------------------
1509 + */
1510 +
1511 + var NAME$4 = 'dropdown';
1512 + var VERSION$4 = '4.3.1';
1513 + var DATA_KEY$4 = 'bs.dropdown';
1514 + var EVENT_KEY$4 = "." + DATA_KEY$4;
1515 + var DATA_API_KEY$4 = '.data-api';
1516 + var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];
1517 + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1518 +
1519 + var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
1520 +
1521 + var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
1522 +
1523 + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
1524 +
1525 + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
1526 +
1527 + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1528 +
1529 + var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1530 + var Event$4 = {
1531 + HIDE: "hide" + EVENT_KEY$4,
1532 + HIDDEN: "hidden" + EVENT_KEY$4,
1533 + SHOW: "show" + EVENT_KEY$4,
1534 + SHOWN: "shown" + EVENT_KEY$4,
1535 + CLICK: "click" + EVENT_KEY$4,
1536 + CLICK_DATA_API: "click" + EVENT_KEY$4 + DATA_API_KEY$4,
1537 + KEYDOWN_DATA_API: "keydown" + EVENT_KEY$4 + DATA_API_KEY$4,
1538 + KEYUP_DATA_API: "keyup" + EVENT_KEY$4 + DATA_API_KEY$4
1539 + };
1540 + var ClassName$4 = {
1541 + DISABLED: 'disabled',
1542 + SHOW: 'show',
1543 + DROPUP: 'dropup',
1544 + DROPRIGHT: 'dropright',
1545 + DROPLEFT: 'dropleft',
1546 + MENURIGHT: 'dropdown-menu-right',
1547 + MENULEFT: 'dropdown-menu-left',
1548 + POSITION_STATIC: 'position-static'
1549 + };
1550 + var Selector$4 = {
1551 + DATA_TOGGLE: '[data-toggle="dropdown"]',
1552 + FORM_CHILD: '.dropdown form',
1553 + MENU: '.dropdown-menu',
1554 + NAVBAR_NAV: '.navbar-nav',
1555 + VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
1556 + };
1557 + var AttachmentMap = {
1558 + TOP: 'top-start',
1559 + TOPEND: 'top-end',
1560 + BOTTOM: 'bottom-start',
1561 + BOTTOMEND: 'bottom-end',
1562 + RIGHT: 'right-start',
1563 + RIGHTEND: 'right-end',
1564 + LEFT: 'left-start',
1565 + LEFTEND: 'left-end'
1566 + };
1567 + var Default$2 = {
1568 + offset: 0,
1569 + flip: true,
1570 + boundary: 'scrollParent',
1571 + reference: 'toggle',
1572 + display: 'dynamic'
1573 + };
1574 + var DefaultType$2 = {
1575 + offset: '(number|string|function)',
1576 + flip: 'boolean',
1577 + boundary: '(string|element)',
1578 + reference: '(string|element)',
1579 + display: 'string'
1580 + /**
1581 + * ------------------------------------------------------------------------
1582 + * Class Definition
1583 + * ------------------------------------------------------------------------
1584 + */
1585 +
1586 + };
1587 +
1588 + var Dropdown =
1589 + /*#__PURE__*/
1590 + function () {
1591 + function Dropdown(element, config) {
1592 + this._element = element;
1593 + this._popper = null;
1594 + this._config = this._getConfig(config);
1595 + this._menu = this._getMenuElement();
1596 + this._inNavbar = this._detectNavbar();
1597 +
1598 + this._addEventListeners();
1599 + } // Getters
1600 +
1601 +
1602 + var _proto = Dropdown.prototype;
1603 +
1604 + // Public
1605 + _proto.toggle = function toggle() {
1606 + if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {
1607 + return;
1608 + }
1609 +
1610 + var parent = Dropdown._getParentFromElement(this._element);
1611 +
1612 + var isActive = $(this._menu).hasClass(ClassName$4.SHOW);
1613 +
1614 + Dropdown._clearMenus();
1615 +
1616 + if (isActive) {
1617 + return;
1618 + }
1619 +
1620 + var relatedTarget = {
1621 + relatedTarget: this._element
1622 + };
1623 + var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1624 + $(parent).trigger(showEvent);
1625 +
1626 + if (showEvent.isDefaultPrevented()) {
1627 + return;
1628 + } // Disable totally Popper.js for Dropdown in Navbar
1629 +
1630 +
1631 + if (!this._inNavbar) {
1632 + /**
1633 + * Check for Popper dependency
1634 + * Popper - https://popper.js.org
1635 + */
1636 + if (typeof Popper === 'undefined') {
1637 + throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
1638 + }
1639 +
1640 + var referenceElement = this._element;
1641 +
1642 + if (this._config.reference === 'parent') {
1643 + referenceElement = parent;
1644 + } else if (Util.isElement(this._config.reference)) {
1645 + referenceElement = this._config.reference; // Check if it's jQuery element
1646 +
1647 + if (typeof this._config.reference.jquery !== 'undefined') {
1648 + referenceElement = this._config.reference[0];
1649 + }
1650 + } // If boundary is not `scrollParent`, then set position to `static`
1651 + // to allow the menu to "escape" the scroll parent's boundaries
1652 + // https://github.com/twbs/bootstrap/issues/24251
1653 +
1654 +
1655 + if (this._config.boundary !== 'scrollParent') {
1656 + $(parent).addClass(ClassName$4.POSITION_STATIC);
1657 + }
1658 +
1659 + this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
1660 + } // If this is a touch-enabled device we add extra
1661 + // empty mouseover listeners to the body's immediate children;
1662 + // only needed because of broken event delegation on iOS
1663 + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1664 +
1665 +
1666 + if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {
1667 + $(document.body).children().on('mouseover', null, $.noop);
1668 + }
1669 +
1670 + this._element.focus();
1671 +
1672 + this._element.setAttribute('aria-expanded', true);
1673 +
1674 + $(this._menu).toggleClass(ClassName$4.SHOW);
1675 + $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1676 + };
1677 +
1678 + _proto.show = function show() {
1679 + if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {
1680 + return;
1681 + }
1682 +
1683 + var relatedTarget = {
1684 + relatedTarget: this._element
1685 + };
1686 + var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1687 +
1688 + var parent = Dropdown._getParentFromElement(this._element);
1689 +
1690 + $(parent).trigger(showEvent);
1691 +
1692 + if (showEvent.isDefaultPrevented()) {
1693 + return;
1694 + }
1695 +
1696 + $(this._menu).toggleClass(ClassName$4.SHOW);
1697 + $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1698 + };
1699 +
1700 + _proto.hide = function hide() {
1701 + if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {
1702 + return;
1703 + }
1704 +
1705 + var relatedTarget = {
1706 + relatedTarget: this._element
1707 + };
1708 + var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1709 +
1710 + var parent = Dropdown._getParentFromElement(this._element);
1711 +
1712 + $(parent).trigger(hideEvent);
1713 +
1714 + if (hideEvent.isDefaultPrevented()) {
1715 + return;
1716 + }
1717 +
1718 + $(this._menu).toggleClass(ClassName$4.SHOW);
1719 + $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1720 + };
1721 +
1722 + _proto.dispose = function dispose() {
1723 + $.removeData(this._element, DATA_KEY$4);
1724 + $(this._element).off(EVENT_KEY$4);
1725 + this._element = null;
1726 + this._menu = null;
1727 +
1728 + if (this._popper !== null) {
1729 + this._popper.destroy();
1730 +
1731 + this._popper = null;
1732 + }
1733 + };
1734 +
1735 + _proto.update = function update() {
1736 + this._inNavbar = this._detectNavbar();
1737 +
1738 + if (this._popper !== null) {
1739 + this._popper.scheduleUpdate();
1740 + }
1741 + } // Private
1742 + ;
1743 +
1744 + _proto._addEventListeners = function _addEventListeners() {
1745 + var _this = this;
1746 +
1747 + $(this._element).on(Event$4.CLICK, function (event) {
1748 + event.preventDefault();
1749 + event.stopPropagation();
1750 +
1751 + _this.toggle();
1752 + });
1753 + };
1754 +
1755 + _proto._getConfig = function _getConfig(config) {
1756 + config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
1757 + Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
1758 + return config;
1759 + };
1760 +
1761 + _proto._getMenuElement = function _getMenuElement() {
1762 + if (!this._menu) {
1763 + var parent = Dropdown._getParentFromElement(this._element);
1764 +
1765 + if (parent) {
1766 + this._menu = parent.querySelector(Selector$4.MENU);
1767 + }
1768 + }
1769 +
1770 + return this._menu;
1771 + };
1772 +
1773 + _proto._getPlacement = function _getPlacement() {
1774 + var $parentDropdown = $(this._element.parentNode);
1775 + var placement = AttachmentMap.BOTTOM; // Handle dropup
1776 +
1777 + if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {
1778 + placement = AttachmentMap.TOP;
1779 +
1780 + if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1781 + placement = AttachmentMap.TOPEND;
1782 + }
1783 + } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {
1784 + placement = AttachmentMap.RIGHT;
1785 + } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {
1786 + placement = AttachmentMap.LEFT;
1787 + } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1788 + placement = AttachmentMap.BOTTOMEND;
1789 + }
1790 +
1791 + return placement;
1792 + };
1793 +
1794 + _proto._detectNavbar = function _detectNavbar() {
1795 + return $(this._element).closest('.navbar').length > 0;
1796 + };
1797 +
1798 + _proto._getOffset = function _getOffset() {
1799 + var _this2 = this;
1800 +
1801 + var offset = {};
1802 +
1803 + if (typeof this._config.offset === 'function') {
1804 + offset.fn = function (data) {
1805 + data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
1806 + return data;
1807 + };
1808 + } else {
1809 + offset.offset = this._config.offset;
1810 + }
1811 +
1812 + return offset;
1813 + };
1814 +
1815 + _proto._getPopperConfig = function _getPopperConfig() {
1816 + var popperConfig = {
1817 + placement: this._getPlacement(),
1818 + modifiers: {
1819 + offset: this._getOffset(),
1820 + flip: {
1821 + enabled: this._config.flip
1822 + },
1823 + preventOverflow: {
1824 + boundariesElement: this._config.boundary
1825 + }
1826 + } // Disable Popper.js if we have a static display
1827 +
1828 + };
1829 +
1830 + if (this._config.display === 'static') {
1831 + popperConfig.modifiers.applyStyle = {
1832 + enabled: false
1833 + };
1834 + }
1835 +
1836 + return popperConfig;
1837 + } // Static
1838 + ;
1839 +
1840 + Dropdown._jQueryInterface = function _jQueryInterface(config) {
1841 + return this.each(function () {
1842 + var data = $(this).data(DATA_KEY$4);
1843 +
1844 + var _config = typeof config === 'object' ? config : null;
1845 +
1846 + if (!data) {
1847 + data = new Dropdown(this, _config);
1848 + $(this).data(DATA_KEY$4, data);
1849 + }
1850 +
1851 + if (typeof config === 'string') {
1852 + if (typeof data[config] === 'undefined') {
1853 + throw new TypeError("No method named \"" + config + "\"");
1854 + }
1855 +
1856 + data[config]();
1857 + }
1858 + });
1859 + };
1860 +
1861 + Dropdown._clearMenus = function _clearMenus(event) {
1862 + if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
1863 + return;
1864 + }
1865 +
1866 + var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));
1867 +
1868 + for (var i = 0, len = toggles.length; i < len; i++) {
1869 + var parent = Dropdown._getParentFromElement(toggles[i]);
1870 +
1871 + var context = $(toggles[i]).data(DATA_KEY$4);
1872 + var relatedTarget = {
1873 + relatedTarget: toggles[i]
1874 + };
1875 +
1876 + if (event && event.type === 'click') {
1877 + relatedTarget.clickEvent = event;
1878 + }
1879 +
1880 + if (!context) {
1881 + continue;
1882 + }
1883 +
1884 + var dropdownMenu = context._menu;
1885 +
1886 + if (!$(parent).hasClass(ClassName$4.SHOW)) {
1887 + continue;
1888 + }
1889 +
1890 + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
1891 + continue;
1892 + }
1893 +
1894 + var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1895 + $(parent).trigger(hideEvent);
1896 +
1897 + if (hideEvent.isDefaultPrevented()) {
1898 + continue;
1899 + } // If this is a touch-enabled device we remove the extra
1900 + // empty mouseover listeners we added for iOS support
1901 +
1902 +
1903 + if ('ontouchstart' in document.documentElement) {
1904 + $(document.body).children().off('mouseover', null, $.noop);
1905 + }
1906 +
1907 + toggles[i].setAttribute('aria-expanded', 'false');
1908 + $(dropdownMenu).removeClass(ClassName$4.SHOW);
1909 + $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1910 + }
1911 + };
1912 +
1913 + Dropdown._getParentFromElement = function _getParentFromElement(element) {
1914 + var parent;
1915 + var selector = Util.getSelectorFromElement(element);
1916 +
1917 + if (selector) {
1918 + parent = document.querySelector(selector);
1919 + }
1920 +
1921 + return parent || element.parentNode;
1922 + } // eslint-disable-next-line complexity
1923 + ;
1924 +
1925 + Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
1926 + // If not input/textarea:
1927 + // - And not a key in REGEXP_KEYDOWN => not a dropdown command
1928 + // If input/textarea:
1929 + // - If space key => not a dropdown command
1930 + // - If key is other than escape
1931 + // - If key is not up or down => not a dropdown command
1932 + // - If trigger inside the menu => not a dropdown command
1933 + if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
1934 + return;
1935 + }
1936 +
1937 + event.preventDefault();
1938 + event.stopPropagation();
1939 +
1940 + if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {
1941 + return;
1942 + }
1943 +
1944 + var parent = Dropdown._getParentFromElement(this);
1945 +
1946 + var isActive = $(parent).hasClass(ClassName$4.SHOW);
1947 +
1948 + if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
1949 + if (event.which === ESCAPE_KEYCODE) {
1950 + var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);
1951 + $(toggle).trigger('focus');
1952 + }
1953 +
1954 + $(this).trigger('click');
1955 + return;
1956 + }
1957 +
1958 + var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));
1959 +
1960 + if (items.length === 0) {
1961 + return;
1962 + }
1963 +
1964 + var index = items.indexOf(event.target);
1965 +
1966 + if (event.which === ARROW_UP_KEYCODE && index > 0) {
1967 + // Up
1968 + index--;
1969 + }
1970 +
1971 + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
1972 + // Down
1973 + index++;
1974 + }
1975 +
1976 + if (index < 0) {
1977 + index = 0;
1978 + }
1979 +
1980 + items[index].focus();
1981 + };
1982 +
1983 + _createClass(Dropdown, null, [{
1984 + key: "VERSION",
1985 + get: function get() {
1986 + return VERSION$4;
1987 + }
1988 + }, {
1989 + key: "Default",
1990 + get: function get() {
1991 + return Default$2;
1992 + }
1993 + }, {
1994 + key: "DefaultType",
1995 + get: function get() {
1996 + return DefaultType$2;
1997 + }
1998 + }]);
1999 +
2000 + return Dropdown;
2001 + }();
2002 + /**
2003 + * ------------------------------------------------------------------------
2004 + * Data Api implementation
2005 + * ------------------------------------------------------------------------
2006 + */
2007 +
2008 +
2009 + $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + " " + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {
2010 + event.preventDefault();
2011 + event.stopPropagation();
2012 +
2013 + Dropdown._jQueryInterface.call($(this), 'toggle');
2014 + }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {
2015 + e.stopPropagation();
2016 + });
2017 + /**
2018 + * ------------------------------------------------------------------------
2019 + * jQuery
2020 + * ------------------------------------------------------------------------
2021 + */
2022 +
2023 + $.fn[NAME$4] = Dropdown._jQueryInterface;
2024 + $.fn[NAME$4].Constructor = Dropdown;
2025 +
2026 + $.fn[NAME$4].noConflict = function () {
2027 + $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
2028 + return Dropdown._jQueryInterface;
2029 + };
2030 +
2031 + /**
2032 + * ------------------------------------------------------------------------
2033 + * Constants
2034 + * ------------------------------------------------------------------------
2035 + */
2036 +
2037 + var NAME$5 = 'modal';
2038 + var VERSION$5 = '4.3.1';
2039 + var DATA_KEY$5 = 'bs.modal';
2040 + var EVENT_KEY$5 = "." + DATA_KEY$5;
2041 + var DATA_API_KEY$5 = '.data-api';
2042 + var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];
2043 + var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key
2044 +
2045 + var Default$3 = {
2046 + backdrop: true,
2047 + keyboard: true,
2048 + focus: true,
2049 + show: true
2050 + };
2051 + var DefaultType$3 = {
2052 + backdrop: '(boolean|string)',
2053 + keyboard: 'boolean',
2054 + focus: 'boolean',
2055 + show: 'boolean'
2056 + };
2057 + var Event$5 = {
2058 + HIDE: "hide" + EVENT_KEY$5,
2059 + HIDDEN: "hidden" + EVENT_KEY$5,
2060 + SHOW: "show" + EVENT_KEY$5,
2061 + SHOWN: "shown" + EVENT_KEY$5,
2062 + FOCUSIN: "focusin" + EVENT_KEY$5,
2063 + RESIZE: "resize" + EVENT_KEY$5,
2064 + CLICK_DISMISS: "click.dismiss" + EVENT_KEY$5,
2065 + KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY$5,
2066 + MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY$5,
2067 + MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY$5,
2068 + CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
2069 + };
2070 + var ClassName$5 = {
2071 + SCROLLABLE: 'modal-dialog-scrollable',
2072 + SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
2073 + BACKDROP: 'modal-backdrop',
2074 + OPEN: 'modal-open',
2075 + FADE: 'fade',
2076 + SHOW: 'show'
2077 + };
2078 + var Selector$5 = {
2079 + DIALOG: '.modal-dialog',
2080 + MODAL_BODY: '.modal-body',
2081 + DATA_TOGGLE: '[data-toggle="modal"]',
2082 + DATA_DISMISS: '[data-dismiss="modal"]',
2083 + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
2084 + STICKY_CONTENT: '.sticky-top'
2085 + /**
2086 + * ------------------------------------------------------------------------
2087 + * Class Definition
2088 + * ------------------------------------------------------------------------
2089 + */
2090 +
2091 + };
2092 +
2093 + var Modal =
2094 + /*#__PURE__*/
2095 + function () {
2096 + function Modal(element, config) {
2097 + this._config = this._getConfig(config);
2098 + this._element = element;
2099 + this._dialog = element.querySelector(Selector$5.DIALOG);
2100 + this._backdrop = null;
2101 + this._isShown = false;
2102 + this._isBodyOverflowing = false;
2103 + this._ignoreBackdropClick = false;
2104 + this._isTransitioning = false;
2105 + this._scrollbarWidth = 0;
2106 + } // Getters
2107 +
2108 +
2109 + var _proto = Modal.prototype;
2110 +
2111 + // Public
2112 + _proto.toggle = function toggle(relatedTarget) {
2113 + return this._isShown ? this.hide() : this.show(relatedTarget);
2114 + };
2115 +
2116 + _proto.show = function show(relatedTarget) {
2117 + var _this = this;
2118 +
2119 + if (this._isShown || this._isTransitioning) {
2120 + return;
2121 + }
2122 +
2123 + if ($(this._element).hasClass(ClassName$5.FADE)) {
2124 + this._isTransitioning = true;
2125 + }
2126 +
2127 + var showEvent = $.Event(Event$5.SHOW, {
2128 + relatedTarget: relatedTarget
2129 + });
2130 + $(this._element).trigger(showEvent);
2131 +
2132 + if (this._isShown || showEvent.isDefaultPrevented()) {
2133 + return;
2134 + }
2135 +
2136 + this._isShown = true;
2137 +
2138 + this._checkScrollbar();
2139 +
2140 + this._setScrollbar();
2141 +
2142 + this._adjustDialog();
2143 +
2144 + this._setEscapeEvent();
2145 +
2146 + this._setResizeEvent();
2147 +
2148 + $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
2149 + return _this.hide(event);
2150 + });
2151 + $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {
2152 + $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {
2153 + if ($(event.target).is(_this._element)) {
2154 + _this._ignoreBackdropClick = true;
2155 + }
2156 + });
2157 + });
2158 +
2159 + this._showBackdrop(function () {
2160 + return _this._showElement(relatedTarget);
2161 + });
2162 + };
2163 +
2164 + _proto.hide = function hide(event) {
2165 + var _this2 = this;
2166 +
2167 + if (event) {
2168 + event.preventDefault();
2169 + }
2170 +
2171 + if (!this._isShown || this._isTransitioning) {
2172 + return;
2173 + }
2174 +
2175 + var hideEvent = $.Event(Event$5.HIDE);
2176 + $(this._element).trigger(hideEvent);
2177 +
2178 + if (!this._isShown || hideEvent.isDefaultPrevented()) {
2179 + return;
2180 + }
2181 +
2182 + this._isShown = false;
2183 + var transition = $(this._element).hasClass(ClassName$5.FADE);
2184 +
2185 + if (transition) {
2186 + this._isTransitioning = true;
2187 + }
2188 +
2189 + this._setEscapeEvent();
2190 +
2191 + this._setResizeEvent();
2192 +
2193 + $(document).off(Event$5.FOCUSIN);
2194 + $(this._element).removeClass(ClassName$5.SHOW);
2195 + $(this._element).off(Event$5.CLICK_DISMISS);
2196 + $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);
2197 +
2198 + if (transition) {
2199 + var transitionDuration = Util.getTransitionDurationFromElement(this._element);
2200 + $(this._element).one(Util.TRANSITION_END, function (event) {
2201 + return _this2._hideModal(event);
2202 + }).emulateTransitionEnd(transitionDuration);
2203 + } else {
2204 + this._hideModal();
2205 + }
2206 + };
2207 +
2208 + _proto.dispose = function dispose() {
2209 + [window, this._element, this._dialog].forEach(function (htmlElement) {
2210 + return $(htmlElement).off(EVENT_KEY$5);
2211 + });
2212 + /**
2213 + * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
2214 + * Do not move `document` in `htmlElements` array
2215 + * It will remove `Event.CLICK_DATA_API` event that should remain
2216 + */
2217 +
2218 + $(document).off(Event$5.FOCUSIN);
2219 + $.removeData(this._element, DATA_KEY$5);
2220 + this._config = null;
2221 + this._element = null;
2222 + this._dialog = null;
2223 + this._backdrop = null;
2224 + this._isShown = null;
2225 + this._isBodyOverflowing = null;
2226 + this._ignoreBackdropClick = null;
2227 + this._isTransitioning = null;
2228 + this._scrollbarWidth = null;
2229 + };
2230 +
2231 + _proto.handleUpdate = function handleUpdate() {
2232 + this._adjustDialog();
2233 + } // Private
2234 + ;
2235 +
2236 + _proto._getConfig = function _getConfig(config) {
2237 + config = _objectSpread({}, Default$3, config);
2238 + Util.typeCheckConfig(NAME$5, config, DefaultType$3);
2239 + return config;
2240 + };
2241 +
2242 + _proto._showElement = function _showElement(relatedTarget) {
2243 + var _this3 = this;
2244 +
2245 + var transition = $(this._element).hasClass(ClassName$5.FADE);
2246 +
2247 + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2248 + // Don't move modal's DOM position
2249 + document.body.appendChild(this._element);
2250 + }
2251 +
2252 + this._element.style.display = 'block';
2253 +
2254 + this._element.removeAttribute('aria-hidden');
2255 +
2256 + this._element.setAttribute('aria-modal', true);
2257 +
2258 + if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {
2259 + this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;
2260 + } else {
2261 + this._element.scrollTop = 0;
2262 + }
2263 +
2264 + if (transition) {
2265 + Util.reflow(this._element);
2266 + }
2267 +
2268 + $(this._element).addClass(ClassName$5.SHOW);
2269 +
2270 + if (this._config.focus) {
2271 + this._enforceFocus();
2272 + }
2273 +
2274 + var shownEvent = $.Event(Event$5.SHOWN, {
2275 + relatedTarget: relatedTarget
2276 + });
2277 +
2278 + var transitionComplete = function transitionComplete() {
2279 + if (_this3._config.focus) {
2280 + _this3._element.focus();
2281 + }
2282 +
2283 + _this3._isTransitioning = false;
2284 + $(_this3._element).trigger(shownEvent);
2285 + };
2286 +
2287 + if (transition) {
2288 + var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
2289 + $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
2290 + } else {
2291 + transitionComplete();
2292 + }
2293 + };
2294 +
2295 + _proto._enforceFocus = function _enforceFocus() {
2296 + var _this4 = this;
2297 +
2298 + $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop
2299 + .on(Event$5.FOCUSIN, function (event) {
2300 + if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
2301 + _this4._element.focus();
2302 + }
2303 + });
2304 + };
2305 +
2306 + _proto._setEscapeEvent = function _setEscapeEvent() {
2307 + var _this5 = this;
2308 +
2309 + if (this._isShown && this._config.keyboard) {
2310 + $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {
2311 + if (event.which === ESCAPE_KEYCODE$1) {
2312 + event.preventDefault();
2313 +
2314 + _this5.hide();
2315 + }
2316 + });
2317 + } else if (!this._isShown) {
2318 + $(this._element).off(Event$5.KEYDOWN_DISMISS);
2319 + }
2320 + };
2321 +
2322 + _proto._setResizeEvent = function _setResizeEvent() {
2323 + var _this6 = this;
2324 +
2325 + if (this._isShown) {
2326 + $(window).on(Event$5.RESIZE, function (event) {
2327 + return _this6.handleUpdate(event);
2328 + });
2329 + } else {
2330 + $(window).off(Event$5.RESIZE);
2331 + }
2332 + };
2333 +
2334 + _proto._hideModal = function _hideModal() {
2335 + var _this7 = this;
2336 +
2337 + this._element.style.display = 'none';
2338 +
2339 + this._element.setAttribute('aria-hidden', true);
2340 +
2341 + this._element.removeAttribute('aria-modal');
2342 +
2343 + this._isTransitioning = false;
2344 +
2345 + this._showBackdrop(function () {
2346 + $(document.body).removeClass(ClassName$5.OPEN);
2347 +
2348 + _this7._resetAdjustments();
2349 +
2350 + _this7._resetScrollbar();
2351 +
2352 + $(_this7._element).trigger(Event$5.HIDDEN);
2353 + });
2354 + };
2355 +
2356 + _proto._removeBackdrop = function _removeBackdrop() {
2357 + if (this._backdrop) {
2358 + $(this._backdrop).remove();
2359 + this._backdrop = null;
2360 + }
2361 + };
2362 +
2363 + _proto._showBackdrop = function _showBackdrop(callback) {
2364 + var _this8 = this;
2365 +
2366 + var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';
2367 +
2368 + if (this._isShown && this._config.backdrop) {
2369 + this._backdrop = document.createElement('div');
2370 + this._backdrop.className = ClassName$5.BACKDROP;
2371 +
2372 + if (animate) {
2373 + this._backdrop.classList.add(animate);
2374 + }
2375 +
2376 + $(this._backdrop).appendTo(document.body);
2377 + $(this._element).on(Event$5.CLICK_DISMISS, function (event) {
2378 + if (_this8._ignoreBackdropClick) {
2379 + _this8._ignoreBackdropClick = false;
2380 + return;
2381 + }
2382 +
2383 + if (event.target !== event.currentTarget) {
2384 + return;
2385 + }
2386 +
2387 + if (_this8._config.backdrop === 'static') {
2388 + _this8._element.focus();
2389 + } else {
2390 + _this8.hide();
2391 + }
2392 + });
2393 +
2394 + if (animate) {
2395 + Util.reflow(this._backdrop);
2396 + }
2397 +
2398 + $(this._backdrop).addClass(ClassName$5.SHOW);
2399 +
2400 + if (!callback) {
2401 + return;
2402 + }
2403 +
2404 + if (!animate) {
2405 + callback();
2406 + return;
2407 + }
2408 +
2409 + var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2410 + $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
2411 + } else if (!this._isShown && this._backdrop) {
2412 + $(this._backdrop).removeClass(ClassName$5.SHOW);
2413 +
2414 + var callbackRemove = function callbackRemove() {
2415 + _this8._removeBackdrop();
2416 +
2417 + if (callback) {
2418 + callback();
2419 + }
2420 + };
2421 +
2422 + if ($(this._element).hasClass(ClassName$5.FADE)) {
2423 + var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2424 +
2425 + $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
2426 + } else {
2427 + callbackRemove();
2428 + }
2429 + } else if (callback) {
2430 + callback();
2431 + }
2432 + } // ----------------------------------------------------------------------
2433 + // the following methods are used to handle overflowing modals
2434 + // todo (fat): these should probably be refactored out of modal.js
2435 + // ----------------------------------------------------------------------
2436 + ;
2437 +
2438 + _proto._adjustDialog = function _adjustDialog() {
2439 + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2440 +
2441 + if (!this._isBodyOverflowing && isModalOverflowing) {
2442 + this._element.style.paddingLeft = this._scrollbarWidth + "px";
2443 + }
2444 +
2445 + if (this._isBodyOverflowing && !isModalOverflowing) {
2446 + this._element.style.paddingRight = this._scrollbarWidth + "px";
2447 + }
2448 + };
2449 +
2450 + _proto._resetAdjustments = function _resetAdjustments() {
2451 + this._element.style.paddingLeft = '';
2452 + this._element.style.paddingRight = '';
2453 + };
2454 +
2455 + _proto._checkScrollbar = function _checkScrollbar() {
2456 + var rect = document.body.getBoundingClientRect();
2457 + this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2458 + this._scrollbarWidth = this._getScrollbarWidth();
2459 + };
2460 +
2461 + _proto._setScrollbar = function _setScrollbar() {
2462 + var _this9 = this;
2463 +
2464 + if (this._isBodyOverflowing) {
2465 + // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2466 + // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2467 + var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2468 + var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding
2469 +
2470 + $(fixedContent).each(function (index, element) {
2471 + var actualPadding = element.style.paddingRight;
2472 + var calculatedPadding = $(element).css('padding-right');
2473 + $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2474 + }); // Adjust sticky content margin
2475 +
2476 + $(stickyContent).each(function (index, element) {
2477 + var actualMargin = element.style.marginRight;
2478 + var calculatedMargin = $(element).css('margin-right');
2479 + $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2480 + }); // Adjust body padding
2481 +
2482 + var actualPadding = document.body.style.paddingRight;
2483 + var calculatedPadding = $(document.body).css('padding-right');
2484 + $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2485 + }
2486 +
2487 + $(document.body).addClass(ClassName$5.OPEN);
2488 + };
2489 +
2490 + _proto._resetScrollbar = function _resetScrollbar() {
2491 + // Restore fixed content padding
2492 + var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2493 + $(fixedContent).each(function (index, element) {
2494 + var padding = $(element).data('padding-right');
2495 + $(element).removeData('padding-right');
2496 + element.style.paddingRight = padding ? padding : '';
2497 + }); // Restore sticky content
2498 +
2499 + var elements = [].slice.call(document.querySelectorAll("" + Selector$5.STICKY_CONTENT));
2500 + $(elements).each(function (index, element) {
2501 + var margin = $(element).data('margin-right');
2502 +
2503 + if (typeof margin !== 'undefined') {
2504 + $(element).css('margin-right', margin).removeData('margin-right');
2505 + }
2506 + }); // Restore body padding
2507 +
2508 + var padding = $(document.body).data('padding-right');
2509 + $(document.body).removeData('padding-right');
2510 + document.body.style.paddingRight = padding ? padding : '';
2511 + };
2512 +
2513 + _proto._getScrollbarWidth = function _getScrollbarWidth() {
2514 + // thx d.walsh
2515 + var scrollDiv = document.createElement('div');
2516 + scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;
2517 + document.body.appendChild(scrollDiv);
2518 + var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2519 + document.body.removeChild(scrollDiv);
2520 + return scrollbarWidth;
2521 + } // Static
2522 + ;
2523 +
2524 + Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2525 + return this.each(function () {
2526 + var data = $(this).data(DATA_KEY$5);
2527 +
2528 + var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});
2529 +
2530 + if (!data) {
2531 + data = new Modal(this, _config);
2532 + $(this).data(DATA_KEY$5, data);
2533 + }
2534 +
2535 + if (typeof config === 'string') {
2536 + if (typeof data[config] === 'undefined') {
2537 + throw new TypeError("No method named \"" + config + "\"");
2538 + }
2539 +
2540 + data[config](relatedTarget);
2541 + } else if (_config.show) {
2542 + data.show(relatedTarget);
2543 + }
2544 + });
2545 + };
2546 +
2547 + _createClass(Modal, null, [{
2548 + key: "VERSION",
2549 + get: function get() {
2550 + return VERSION$5;
2551 + }
2552 + }, {
2553 + key: "Default",
2554 + get: function get() {
2555 + return Default$3;
2556 + }
2557 + }]);
2558 +
2559 + return Modal;
2560 + }();
2561 + /**
2562 + * ------------------------------------------------------------------------
2563 + * Data Api implementation
2564 + * ------------------------------------------------------------------------
2565 + */
2566 +
2567 +
2568 + $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
2569 + var _this10 = this;
2570 +
2571 + var target;
2572 + var selector = Util.getSelectorFromElement(this);
2573 +
2574 + if (selector) {
2575 + target = document.querySelector(selector);
2576 + }
2577 +
2578 + var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());
2579 +
2580 + if (this.tagName === 'A' || this.tagName === 'AREA') {
2581 + event.preventDefault();
2582 + }
2583 +
2584 + var $target = $(target).one(Event$5.SHOW, function (showEvent) {
2585 + if (showEvent.isDefaultPrevented()) {
2586 + // Only register focus restorer if modal will actually get shown
2587 + return;
2588 + }
2589 +
2590 + $target.one(Event$5.HIDDEN, function () {
2591 + if ($(_this10).is(':visible')) {
2592 + _this10.focus();
2593 + }
2594 + });
2595 + });
2596 +
2597 + Modal._jQueryInterface.call($(target), config, this);
2598 + });
2599 + /**
2600 + * ------------------------------------------------------------------------
2601 + * jQuery
2602 + * ------------------------------------------------------------------------
2603 + */
2604 +
2605 + $.fn[NAME$5] = Modal._jQueryInterface;
2606 + $.fn[NAME$5].Constructor = Modal;
2607 +
2608 + $.fn[NAME$5].noConflict = function () {
2609 + $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;
2610 + return Modal._jQueryInterface;
2611 + };
2612 +
2613 + /**
2614 + * --------------------------------------------------------------------------
2615 + * Bootstrap (v4.3.1): tools/sanitizer.js
2616 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2617 + * --------------------------------------------------------------------------
2618 + */
2619 + var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
2620 + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
2621 + var DefaultWhitelist = {
2622 + // Global attributes allowed on any supplied element below.
2623 + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
2624 + a: ['target', 'href', 'title', 'rel'],
2625 + area: [],
2626 + b: [],
2627 + br: [],
2628 + col: [],
2629 + code: [],
2630 + div: [],
2631 + em: [],
2632 + hr: [],
2633 + h1: [],
2634 + h2: [],
2635 + h3: [],
2636 + h4: [],
2637 + h5: [],
2638 + h6: [],
2639 + i: [],
2640 + img: ['src', 'alt', 'title', 'width', 'height'],
2641 + li: [],
2642 + ol: [],
2643 + p: [],
2644 + pre: [],
2645 + s: [],
2646 + small: [],
2647 + span: [],
2648 + sub: [],
2649 + sup: [],
2650 + strong: [],
2651 + u: [],
2652 + ul: []
2653 + /**
2654 + * A pattern that recognizes a commonly useful subset of URLs that are safe.
2655 + *
2656 + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2657 + */
2658 +
2659 + };
2660 + var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
2661 + /**
2662 + * A pattern that matches safe data URLs. Only matches image, video and audio types.
2663 + *
2664 + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2665 + */
2666 +
2667 + var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
2668 +
2669 + function allowedAttribute(attr, allowedAttributeList) {
2670 + var attrName = attr.nodeName.toLowerCase();
2671 +
2672 + if (allowedAttributeList.indexOf(attrName) !== -1) {
2673 + if (uriAttrs.indexOf(attrName) !== -1) {
2674 + return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
2675 + }
2676 +
2677 + return true;
2678 + }
2679 +
2680 + var regExp = allowedAttributeList.filter(function (attrRegex) {
2681 + return attrRegex instanceof RegExp;
2682 + }); // Check if a regular expression validates the attribute.
2683 +
2684 + for (var i = 0, l = regExp.length; i < l; i++) {
2685 + if (attrName.match(regExp[i])) {
2686 + return true;
2687 + }
2688 + }
2689 +
2690 + return false;
2691 + }
2692 +
2693 + function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
2694 + if (unsafeHtml.length === 0) {
2695 + return unsafeHtml;
2696 + }
2697 +
2698 + if (sanitizeFn && typeof sanitizeFn === 'function') {
2699 + return sanitizeFn(unsafeHtml);
2700 + }
2701 +
2702 + var domParser = new window.DOMParser();
2703 + var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
2704 + var whitelistKeys = Object.keys(whiteList);
2705 + var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
2706 +
2707 + var _loop = function _loop(i, len) {
2708 + var el = elements[i];
2709 + var elName = el.nodeName.toLowerCase();
2710 +
2711 + if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
2712 + el.parentNode.removeChild(el);
2713 + return "continue";
2714 + }
2715 +
2716 + var attributeList = [].slice.call(el.attributes);
2717 + var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
2718 + attributeList.forEach(function (attr) {
2719 + if (!allowedAttribute(attr, whitelistedAttributes)) {
2720 + el.removeAttribute(attr.nodeName);
2721 + }
2722 + });
2723 + };
2724 +
2725 + for (var i = 0, len = elements.length; i < len; i++) {
2726 + var _ret = _loop(i, len);
2727 +
2728 + if (_ret === "continue") continue;
2729 + }
2730 +
2731 + return createdDocument.body.innerHTML;
2732 + }
2733 +
2734 + /**
2735 + * ------------------------------------------------------------------------
2736 + * Constants
2737 + * ------------------------------------------------------------------------
2738 + */
2739 +
2740 + var NAME$6 = 'tooltip';
2741 + var VERSION$6 = '4.3.1';
2742 + var DATA_KEY$6 = 'bs.tooltip';
2743 + var EVENT_KEY$6 = "." + DATA_KEY$6;
2744 + var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
2745 + var CLASS_PREFIX = 'bs-tooltip';
2746 + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2747 + var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
2748 + var DefaultType$4 = {
2749 + animation: 'boolean',
2750 + template: 'string',
2751 + title: '(string|element|function)',
2752 + trigger: 'string',
2753 + delay: '(number|object)',
2754 + html: 'boolean',
2755 + selector: '(string|boolean)',
2756 + placement: '(string|function)',
2757 + offset: '(number|string|function)',
2758 + container: '(string|element|boolean)',
2759 + fallbackPlacement: '(string|array)',
2760 + boundary: '(string|element)',
2761 + sanitize: 'boolean',
2762 + sanitizeFn: '(null|function)',
2763 + whiteList: 'object'
2764 + };
2765 + var AttachmentMap$1 = {
2766 + AUTO: 'auto',
2767 + TOP: 'top',
2768 + RIGHT: 'right',
2769 + BOTTOM: 'bottom',
2770 + LEFT: 'left'
2771 + };
2772 + var Default$4 = {
2773 + animation: true,
2774 + template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
2775 + trigger: 'hover focus',
2776 + title: '',
2777 + delay: 0,
2778 + html: false,
2779 + selector: false,
2780 + placement: 'top',
2781 + offset: 0,
2782 + container: false,
2783 + fallbackPlacement: 'flip',
2784 + boundary: 'scrollParent',
2785 + sanitize: true,
2786 + sanitizeFn: null,
2787 + whiteList: DefaultWhitelist
2788 + };
2789 + var HoverState = {
2790 + SHOW: 'show',
2791 + OUT: 'out'
2792 + };
2793 + var Event$6 = {
2794 + HIDE: "hide" + EVENT_KEY$6,
2795 + HIDDEN: "hidden" + EVENT_KEY$6,
2796 + SHOW: "show" + EVENT_KEY$6,
2797 + SHOWN: "shown" + EVENT_KEY$6,
2798 + INSERTED: "inserted" + EVENT_KEY$6,
2799 + CLICK: "click" + EVENT_KEY$6,
2800 + FOCUSIN: "focusin" + EVENT_KEY$6,
2801 + FOCUSOUT: "focusout" + EVENT_KEY$6,
2802 + MOUSEENTER: "mouseenter" + EVENT_KEY$6,
2803 + MOUSELEAVE: "mouseleave" + EVENT_KEY$6
2804 + };
2805 + var ClassName$6 = {
2806 + FADE: 'fade',
2807 + SHOW: 'show'
2808 + };
2809 + var Selector$6 = {
2810 + TOOLTIP: '.tooltip',
2811 + TOOLTIP_INNER: '.tooltip-inner',
2812 + ARROW: '.arrow'
2813 + };
2814 + var Trigger = {
2815 + HOVER: 'hover',
2816 + FOCUS: 'focus',
2817 + CLICK: 'click',
2818 + MANUAL: 'manual'
2819 + /**
2820 + * ------------------------------------------------------------------------
2821 + * Class Definition
2822 + * ------------------------------------------------------------------------
2823 + */
2824 +
2825 + };
2826 +
2827 + var Tooltip =
2828 + /*#__PURE__*/
2829 + function () {
2830 + function Tooltip(element, config) {
2831 + /**
2832 + * Check for Popper dependency
2833 + * Popper - https://popper.js.org
2834 + */
2835 + if (typeof Popper === 'undefined') {
2836 + throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
2837 + } // private
2838 +
2839 +
2840 + this._isEnabled = true;
2841 + this._timeout = 0;
2842 + this._hoverState = '';
2843 + this._activeTrigger = {};
2844 + this._popper = null; // Protected
2845 +
2846 + this.element = element;
2847 + this.config = this._getConfig(config);
2848 + this.tip = null;
2849 +
2850 + this._setListeners();
2851 + } // Getters
2852 +
2853 +
2854 + var _proto = Tooltip.prototype;
2855 +
2856 + // Public
2857 + _proto.enable = function enable() {
2858 + this._isEnabled = true;
2859 + };
2860 +
2861 + _proto.disable = function disable() {
2862 + this._isEnabled = false;
2863 + };
2864 +
2865 + _proto.toggleEnabled = function toggleEnabled() {
2866 + this._isEnabled = !this._isEnabled;
2867 + };
2868 +
2869 + _proto.toggle = function toggle(event) {
2870 + if (!this._isEnabled) {
2871 + return;
2872 + }
2873 +
2874 + if (event) {
2875 + var dataKey = this.constructor.DATA_KEY;
2876 + var context = $(event.currentTarget).data(dataKey);
2877 +
2878 + if (!context) {
2879 + context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2880 + $(event.currentTarget).data(dataKey, context);
2881 + }
2882 +
2883 + context._activeTrigger.click = !context._activeTrigger.click;
2884 +
2885 + if (context._isWithActiveTrigger()) {
2886 + context._enter(null, context);
2887 + } else {
2888 + context._leave(null, context);
2889 + }
2890 + } else {
2891 + if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {
2892 + this._leave(null, this);
2893 +
2894 + return;
2895 + }
2896 +
2897 + this._enter(null, this);
2898 + }
2899 + };
2900 +
2901 + _proto.dispose = function dispose() {
2902 + clearTimeout(this._timeout);
2903 + $.removeData(this.element, this.constructor.DATA_KEY);
2904 + $(this.element).off(this.constructor.EVENT_KEY);
2905 + $(this.element).closest('.modal').off('hide.bs.modal');
2906 +
2907 + if (this.tip) {
2908 + $(this.tip).remove();
2909 + }
2910 +
2911 + this._isEnabled = null;
2912 + this._timeout = null;
2913 + this._hoverState = null;
2914 + this._activeTrigger = null;
2915 +
2916 + if (this._popper !== null) {
2917 + this._popper.destroy();
2918 + }
2919 +
2920 + this._popper = null;
2921 + this.element = null;
2922 + this.config = null;
2923 + this.tip = null;
2924 + };
2925 +
2926 + _proto.show = function show() {
2927 + var _this = this;
2928 +
2929 + if ($(this.element).css('display') === 'none') {
2930 + throw new Error('Please use show on visible elements');
2931 + }
2932 +
2933 + var showEvent = $.Event(this.constructor.Event.SHOW);
2934 +
2935 + if (this.isWithContent() && this._isEnabled) {
2936 + $(this.element).trigger(showEvent);
2937 + var shadowRoot = Util.findShadowRoot(this.element);
2938 + var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
2939 +
2940 + if (showEvent.isDefaultPrevented() || !isInTheDom) {
2941 + return;
2942 + }
2943 +
2944 + var tip = this.getTipElement();
2945 + var tipId = Util.getUID(this.constructor.NAME);
2946 + tip.setAttribute('id', tipId);
2947 + this.element.setAttribute('aria-describedby', tipId);
2948 + this.setContent();
2949 +
2950 + if (this.config.animation) {
2951 + $(tip).addClass(ClassName$6.FADE);
2952 + }
2953 +
2954 + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
2955 +
2956 + var attachment = this._getAttachment(placement);
2957 +
2958 + this.addAttachmentClass(attachment);
2959 +
2960 + var container = this._getContainer();
2961 +
2962 + $(tip).data(this.constructor.DATA_KEY, this);
2963 +
2964 + if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {
2965 + $(tip).appendTo(container);
2966 + }
2967 +
2968 + $(this.element).trigger(this.constructor.Event.INSERTED);
2969 + this._popper = new Popper(this.element, tip, {
2970 + placement: attachment,
2971 + modifiers: {
2972 + offset: this._getOffset(),
2973 + flip: {
2974 + behavior: this.config.fallbackPlacement
2975 + },
2976 + arrow: {
2977 + element: Selector$6.ARROW
2978 + },
2979 + preventOverflow: {
2980 + boundariesElement: this.config.boundary
2981 + }
2982 + },
2983 + onCreate: function onCreate(data) {
2984 + if (data.originalPlacement !== data.placement) {
2985 + _this._handlePopperPlacementChange(data);
2986 + }
2987 + },
2988 + onUpdate: function onUpdate(data) {
2989 + return _this._handlePopperPlacementChange(data);
2990 + }
2991 + });
2992 + $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra
2993 + // empty mouseover listeners to the body's immediate children;
2994 + // only needed because of broken event delegation on iOS
2995 + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2996 +
2997 + if ('ontouchstart' in document.documentElement) {
2998 + $(document.body).children().on('mouseover', null, $.noop);
2999 + }
3000 +
3001 + var complete = function complete() {
3002 + if (_this.config.animation) {
3003 + _this._fixTransition();
3004 + }
3005 +
3006 + var prevHoverState = _this._hoverState;
3007 + _this._hoverState = null;
3008 + $(_this.element).trigger(_this.constructor.Event.SHOWN);
3009 +
3010 + if (prevHoverState === HoverState.OUT) {
3011 + _this._leave(null, _this);
3012 + }
3013 + };
3014 +
3015 + if ($(this.tip).hasClass(ClassName$6.FADE)) {
3016 + var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
3017 + $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3018 + } else {
3019 + complete();
3020 + }
3021 + }
3022 + };
3023 +
3024 + _proto.hide = function hide(callback) {
3025 + var _this2 = this;
3026 +
3027 + var tip = this.getTipElement();
3028 + var hideEvent = $.Event(this.constructor.Event.HIDE);
3029 +
3030 + var complete = function complete() {
3031 + if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
3032 + tip.parentNode.removeChild(tip);
3033 + }
3034 +
3035 + _this2._cleanTipClass();
3036 +
3037 + _this2.element.removeAttribute('aria-describedby');
3038 +
3039 + $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
3040 +
3041 + if (_this2._popper !== null) {
3042 + _this2._popper.destroy();
3043 + }
3044 +
3045 + if (callback) {
3046 + callback();
3047 + }
3048 + };
3049 +
3050 + $(this.element).trigger(hideEvent);
3051 +
3052 + if (hideEvent.isDefaultPrevented()) {
3053 + return;
3054 + }
3055 +
3056 + $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra
3057 + // empty mouseover listeners we added for iOS support
3058 +
3059 + if ('ontouchstart' in document.documentElement) {
3060 + $(document.body).children().off('mouseover', null, $.noop);
3061 + }
3062 +
3063 + this._activeTrigger[Trigger.CLICK] = false;
3064 + this._activeTrigger[Trigger.FOCUS] = false;
3065 + this._activeTrigger[Trigger.HOVER] = false;
3066 +
3067 + if ($(this.tip).hasClass(ClassName$6.FADE)) {
3068 + var transitionDuration = Util.getTransitionDurationFromElement(tip);
3069 + $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3070 + } else {
3071 + complete();
3072 + }
3073 +
3074 + this._hoverState = '';
3075 + };
3076 +
3077 + _proto.update = function update() {
3078 + if (this._popper !== null) {
3079 + this._popper.scheduleUpdate();
3080 + }
3081 + } // Protected
3082 + ;
3083 +
3084 + _proto.isWithContent = function isWithContent() {
3085 + return Boolean(this.getTitle());
3086 + };
3087 +
3088 + _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3089 + $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3090 + };
3091 +
3092 + _proto.getTipElement = function getTipElement() {
3093 + this.tip = this.tip || $(this.config.template)[0];
3094 + return this.tip;
3095 + };
3096 +
3097 + _proto.setContent = function setContent() {
3098 + var tip = this.getTipElement();
3099 + this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());
3100 + $(tip).removeClass(ClassName$6.FADE + " " + ClassName$6.SHOW);
3101 + };
3102 +
3103 + _proto.setElementContent = function setElementContent($element, content) {
3104 + if (typeof content === 'object' && (content.nodeType || content.jquery)) {
3105 + // Content is a DOM node or a jQuery
3106 + if (this.config.html) {
3107 + if (!$(content).parent().is($element)) {
3108 + $element.empty().append(content);
3109 + }
3110 + } else {
3111 + $element.text($(content).text());
3112 + }
3113 +
3114 + return;
3115 + }
3116 +
3117 + if (this.config.html) {
3118 + if (this.config.sanitize) {
3119 + content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
3120 + }
3121 +
3122 + $element.html(content);
3123 + } else {
3124 + $element.text(content);
3125 + }
3126 + };
3127 +
3128 + _proto.getTitle = function getTitle() {
3129 + var title = this.element.getAttribute('data-original-title');
3130 +
3131 + if (!title) {
3132 + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
3133 + }
3134 +
3135 + return title;
3136 + } // Private
3137 + ;
3138 +
3139 + _proto._getOffset = function _getOffset() {
3140 + var _this3 = this;
3141 +
3142 + var offset = {};
3143 +
3144 + if (typeof this.config.offset === 'function') {
3145 + offset.fn = function (data) {
3146 + data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});
3147 + return data;
3148 + };
3149 + } else {
3150 + offset.offset = this.config.offset;
3151 + }
3152 +
3153 + return offset;
3154 + };
3155 +
3156 + _proto._getContainer = function _getContainer() {
3157 + if (this.config.container === false) {
3158 + return document.body;
3159 + }
3160 +
3161 + if (Util.isElement(this.config.container)) {
3162 + return $(this.config.container);
3163 + }
3164 +
3165 + return $(document).find(this.config.container);
3166 + };
3167 +
3168 + _proto._getAttachment = function _getAttachment(placement) {
3169 + return AttachmentMap$1[placement.toUpperCase()];
3170 + };
3171 +
3172 + _proto._setListeners = function _setListeners() {
3173 + var _this4 = this;
3174 +
3175 + var triggers = this.config.trigger.split(' ');
3176 + triggers.forEach(function (trigger) {
3177 + if (trigger === 'click') {
3178 + $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
3179 + return _this4.toggle(event);
3180 + });
3181 + } else if (trigger !== Trigger.MANUAL) {
3182 + var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
3183 + var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
3184 + $(_this4.element).on(eventIn, _this4.config.selector, function (event) {
3185 + return _this4._enter(event);
3186 + }).on(eventOut, _this4.config.selector, function (event) {
3187 + return _this4._leave(event);
3188 + });
3189 + }
3190 + });
3191 + $(this.element).closest('.modal').on('hide.bs.modal', function () {
3192 + if (_this4.element) {
3193 + _this4.hide();
3194 + }
3195 + });
3196 +
3197 + if (this.config.selector) {
3198 + this.config = _objectSpread({}, this.config, {
3199 + trigger: 'manual',
3200 + selector: ''
3201 + });
3202 + } else {
3203 + this._fixTitle();
3204 + }
3205 + };
3206 +
3207 + _proto._fixTitle = function _fixTitle() {
3208 + var titleType = typeof this.element.getAttribute('data-original-title');
3209 +
3210 + if (this.element.getAttribute('title') || titleType !== 'string') {
3211 + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
3212 + this.element.setAttribute('title', '');
3213 + }
3214 + };
3215 +
3216 + _proto._enter = function _enter(event, context) {
3217 + var dataKey = this.constructor.DATA_KEY;
3218 + context = context || $(event.currentTarget).data(dataKey);
3219 +
3220 + if (!context) {
3221 + context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3222 + $(event.currentTarget).data(dataKey, context);
3223 + }
3224 +
3225 + if (event) {
3226 + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
3227 + }
3228 +
3229 + if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {
3230 + context._hoverState = HoverState.SHOW;
3231 + return;
3232 + }
3233 +
3234 + clearTimeout(context._timeout);
3235 + context._hoverState = HoverState.SHOW;
3236 +
3237 + if (!context.config.delay || !context.config.delay.show) {
3238 + context.show();
3239 + return;
3240 + }
3241 +
3242 + context._timeout = setTimeout(function () {
3243 + if (context._hoverState === HoverState.SHOW) {
3244 + context.show();
3245 + }
3246 + }, context.config.delay.show);
3247 + };
3248 +
3249 + _proto._leave = function _leave(event, context) {
3250 + var dataKey = this.constructor.DATA_KEY;
3251 + context = context || $(event.currentTarget).data(dataKey);
3252 +
3253 + if (!context) {
3254 + context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3255 + $(event.currentTarget).data(dataKey, context);
3256 + }
3257 +
3258 + if (event) {
3259 + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
3260 + }
3261 +
3262 + if (context._isWithActiveTrigger()) {
3263 + return;
3264 + }
3265 +
3266 + clearTimeout(context._timeout);
3267 + context._hoverState = HoverState.OUT;
3268 +
3269 + if (!context.config.delay || !context.config.delay.hide) {
3270 + context.hide();
3271 + return;
3272 + }
3273 +
3274 + context._timeout = setTimeout(function () {
3275 + if (context._hoverState === HoverState.OUT) {
3276 + context.hide();
3277 + }
3278 + }, context.config.delay.hide);
3279 + };
3280 +
3281 + _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
3282 + for (var trigger in this._activeTrigger) {
3283 + if (this._activeTrigger[trigger]) {
3284 + return true;
3285 + }
3286 + }
3287 +
3288 + return false;
3289 + };
3290 +
3291 + _proto._getConfig = function _getConfig(config) {
3292 + var dataAttributes = $(this.element).data();
3293 + Object.keys(dataAttributes).forEach(function (dataAttr) {
3294 + if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
3295 + delete dataAttributes[dataAttr];
3296 + }
3297 + });
3298 + config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
3299 +
3300 + if (typeof config.delay === 'number') {
3301 + config.delay = {
3302 + show: config.delay,
3303 + hide: config.delay
3304 + };
3305 + }
3306 +
3307 + if (typeof config.title === 'number') {
3308 + config.title = config.title.toString();
3309 + }
3310 +
3311 + if (typeof config.content === 'number') {
3312 + config.content = config.content.toString();
3313 + }
3314 +
3315 + Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
3316 +
3317 + if (config.sanitize) {
3318 + config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
3319 + }
3320 +
3321 + return config;
3322 + };
3323 +
3324 + _proto._getDelegateConfig = function _getDelegateConfig() {
3325 + var config = {};
3326 +
3327 + if (this.config) {
3328 + for (var key in this.config) {
3329 + if (this.constructor.Default[key] !== this.config[key]) {
3330 + config[key] = this.config[key];
3331 + }
3332 + }
3333 + }
3334 +
3335 + return config;
3336 + };
3337 +
3338 + _proto._cleanTipClass = function _cleanTipClass() {
3339 + var $tip = $(this.getTipElement());
3340 + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3341 +
3342 + if (tabClass !== null && tabClass.length) {
3343 + $tip.removeClass(tabClass.join(''));
3344 + }
3345 + };
3346 +
3347 + _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
3348 + var popperInstance = popperData.instance;
3349 + this.tip = popperInstance.popper;
3350 +
3351 + this._cleanTipClass();
3352 +
3353 + this.addAttachmentClass(this._getAttachment(popperData.placement));
3354 + };
3355 +
3356 + _proto._fixTransition = function _fixTransition() {
3357 + var tip = this.getTipElement();
3358 + var initConfigAnimation = this.config.animation;
3359 +
3360 + if (tip.getAttribute('x-placement') !== null) {
3361 + return;
3362 + }
3363 +
3364 + $(tip).removeClass(ClassName$6.FADE);
3365 + this.config.animation = false;
3366 + this.hide();
3367 + this.show();
3368 + this.config.animation = initConfigAnimation;
3369 + } // Static
3370 + ;
3371 +
3372 + Tooltip._jQueryInterface = function _jQueryInterface(config) {
3373 + return this.each(function () {
3374 + var data = $(this).data(DATA_KEY$6);
3375 +
3376 + var _config = typeof config === 'object' && config;
3377 +
3378 + if (!data && /dispose|hide/.test(config)) {
3379 + return;
3380 + }
3381 +
3382 + if (!data) {
3383 + data = new Tooltip(this, _config);
3384 + $(this).data(DATA_KEY$6, data);
3385 + }
3386 +
3387 + if (typeof config === 'string') {
3388 + if (typeof data[config] === 'undefined') {
3389 + throw new TypeError("No method named \"" + config + "\"");
3390 + }
3391 +
3392 + data[config]();
3393 + }
3394 + });
3395 + };
3396 +
3397 + _createClass(Tooltip, null, [{
3398 + key: "VERSION",
3399 + get: function get() {
3400 + return VERSION$6;
3401 + }
3402 + }, {
3403 + key: "Default",
3404 + get: function get() {
3405 + return Default$4;
3406 + }
3407 + }, {
3408 + key: "NAME",
3409 + get: function get() {
3410 + return NAME$6;
3411 + }
3412 + }, {
3413 + key: "DATA_KEY",
3414 + get: function get() {
3415 + return DATA_KEY$6;
3416 + }
3417 + }, {
3418 + key: "Event",
3419 + get: function get() {
3420 + return Event$6;
3421 + }
3422 + }, {
3423 + key: "EVENT_KEY",
3424 + get: function get() {
3425 + return EVENT_KEY$6;
3426 + }
3427 + }, {
3428 + key: "DefaultType",
3429 + get: function get() {
3430 + return DefaultType$4;
3431 + }
3432 + }]);
3433 +
3434 + return Tooltip;
3435 + }();
3436 + /**
3437 + * ------------------------------------------------------------------------
3438 + * jQuery
3439 + * ------------------------------------------------------------------------
3440 + */
3441 +
3442 +
3443 + $.fn[NAME$6] = Tooltip._jQueryInterface;
3444 + $.fn[NAME$6].Constructor = Tooltip;
3445 +
3446 + $.fn[NAME$6].noConflict = function () {
3447 + $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;
3448 + return Tooltip._jQueryInterface;
3449 + };
3450 +
3451 + /**
3452 + * ------------------------------------------------------------------------
3453 + * Constants
3454 + * ------------------------------------------------------------------------
3455 + */
3456 +
3457 + var NAME$7 = 'popover';
3458 + var VERSION$7 = '4.3.1';
3459 + var DATA_KEY$7 = 'bs.popover';
3460 + var EVENT_KEY$7 = "." + DATA_KEY$7;
3461 + var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
3462 + var CLASS_PREFIX$1 = 'bs-popover';
3463 + var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
3464 +
3465 + var Default$5 = _objectSpread({}, Tooltip.Default, {
3466 + placement: 'right',
3467 + trigger: 'click',
3468 + content: '',
3469 + template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3470 + });
3471 +
3472 + var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {
3473 + content: '(string|element|function)'
3474 + });
3475 +
3476 + var ClassName$7 = {
3477 + FADE: 'fade',
3478 + SHOW: 'show'
3479 + };
3480 + var Selector$7 = {
3481 + TITLE: '.popover-header',
3482 + CONTENT: '.popover-body'
3483 + };
3484 + var Event$7 = {
3485 + HIDE: "hide" + EVENT_KEY$7,
3486 + HIDDEN: "hidden" + EVENT_KEY$7,
3487 + SHOW: "show" + EVENT_KEY$7,
3488 + SHOWN: "shown" + EVENT_KEY$7,
3489 + INSERTED: "inserted" + EVENT_KEY$7,
3490 + CLICK: "click" + EVENT_KEY$7,
3491 + FOCUSIN: "focusin" + EVENT_KEY$7,
3492 + FOCUSOUT: "focusout" + EVENT_KEY$7,
3493 + MOUSEENTER: "mouseenter" + EVENT_KEY$7,
3494 + MOUSELEAVE: "mouseleave" + EVENT_KEY$7
3495 + /**
3496 + * ------------------------------------------------------------------------
3497 + * Class Definition
3498 + * ------------------------------------------------------------------------
3499 + */
3500 +
3501 + };
3502 +
3503 + var Popover =
3504 + /*#__PURE__*/
3505 + function (_Tooltip) {
3506 + _inheritsLoose(Popover, _Tooltip);
3507 +
3508 + function Popover() {
3509 + return _Tooltip.apply(this, arguments) || this;
3510 + }
3511 +
3512 + var _proto = Popover.prototype;
3513 +
3514 + // Overrides
3515 + _proto.isWithContent = function isWithContent() {
3516 + return this.getTitle() || this._getContent();
3517 + };
3518 +
3519 + _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3520 + $(this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);
3521 + };
3522 +
3523 + _proto.getTipElement = function getTipElement() {
3524 + this.tip = this.tip || $(this.config.template)[0];
3525 + return this.tip;
3526 + };
3527 +
3528 + _proto.setContent = function setContent() {
3529 + var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
3530 +
3531 + this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());
3532 +
3533 + var content = this._getContent();
3534 +
3535 + if (typeof content === 'function') {
3536 + content = content.call(this.element);
3537 + }
3538 +
3539 + this.setElementContent($tip.find(Selector$7.CONTENT), content);
3540 + $tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
3541 + } // Private
3542 + ;
3543 +
3544 + _proto._getContent = function _getContent() {
3545 + return this.element.getAttribute('data-content') || this.config.content;
3546 + };
3547 +
3548 + _proto._cleanTipClass = function _cleanTipClass() {
3549 + var $tip = $(this.getTipElement());
3550 + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);
3551 +
3552 + if (tabClass !== null && tabClass.length > 0) {
3553 + $tip.removeClass(tabClass.join(''));
3554 + }
3555 + } // Static
3556 + ;
3557 +
3558 + Popover._jQueryInterface = function _jQueryInterface(config) {
3559 + return this.each(function () {
3560 + var data = $(this).data(DATA_KEY$7);
3561 +
3562 + var _config = typeof config === 'object' ? config : null;
3563 +
3564 + if (!data && /dispose|hide/.test(config)) {
3565 + return;
3566 + }
3567 +
3568 + if (!data) {
3569 + data = new Popover(this, _config);
3570 + $(this).data(DATA_KEY$7, data);
3571 + }
3572 +
3573 + if (typeof config === 'string') {
3574 + if (typeof data[config] === 'undefined') {
3575 + throw new TypeError("No method named \"" + config + "\"");
3576 + }
3577 +
3578 + data[config]();
3579 + }
3580 + });
3581 + };
3582 +
3583 + _createClass(Popover, null, [{
3584 + key: "VERSION",
3585 + // Getters
3586 + get: function get() {
3587 + return VERSION$7;
3588 + }
3589 + }, {
3590 + key: "Default",
3591 + get: function get() {
3592 + return Default$5;
3593 + }
3594 + }, {
3595 + key: "NAME",
3596 + get: function get() {
3597 + return NAME$7;
3598 + }
3599 + }, {
3600 + key: "DATA_KEY",
3601 + get: function get() {
3602 + return DATA_KEY$7;
3603 + }
3604 + }, {
3605 + key: "Event",
3606 + get: function get() {
3607 + return Event$7;
3608 + }
3609 + }, {
3610 + key: "EVENT_KEY",
3611 + get: function get() {
3612 + return EVENT_KEY$7;
3613 + }
3614 + }, {
3615 + key: "DefaultType",
3616 + get: function get() {
3617 + return DefaultType$5;
3618 + }
3619 + }]);
3620 +
3621 + return Popover;
3622 + }(Tooltip);
3623 + /**
3624 + * ------------------------------------------------------------------------
3625 + * jQuery
3626 + * ------------------------------------------------------------------------
3627 + */
3628 +
3629 +
3630 + $.fn[NAME$7] = Popover._jQueryInterface;
3631 + $.fn[NAME$7].Constructor = Popover;
3632 +
3633 + $.fn[NAME$7].noConflict = function () {
3634 + $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;
3635 + return Popover._jQueryInterface;
3636 + };
3637 +
3638 + /**
3639 + * ------------------------------------------------------------------------
3640 + * Constants
3641 + * ------------------------------------------------------------------------
3642 + */
3643 +
3644 + var NAME$8 = 'scrollspy';
3645 + var VERSION$8 = '4.3.1';
3646 + var DATA_KEY$8 = 'bs.scrollspy';
3647 + var EVENT_KEY$8 = "." + DATA_KEY$8;
3648 + var DATA_API_KEY$6 = '.data-api';
3649 + var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];
3650 + var Default$6 = {
3651 + offset: 10,
3652 + method: 'auto',
3653 + target: ''
3654 + };
3655 + var DefaultType$6 = {
3656 + offset: 'number',
3657 + method: 'string',
3658 + target: '(string|element)'
3659 + };
3660 + var Event$8 = {
3661 + ACTIVATE: "activate" + EVENT_KEY$8,
3662 + SCROLL: "scroll" + EVENT_KEY$8,
3663 + LOAD_DATA_API: "load" + EVENT_KEY$8 + DATA_API_KEY$6
3664 + };
3665 + var ClassName$8 = {
3666 + DROPDOWN_ITEM: 'dropdown-item',
3667 + DROPDOWN_MENU: 'dropdown-menu',
3668 + ACTIVE: 'active'
3669 + };
3670 + var Selector$8 = {
3671 + DATA_SPY: '[data-spy="scroll"]',
3672 + ACTIVE: '.active',
3673 + NAV_LIST_GROUP: '.nav, .list-group',
3674 + NAV_LINKS: '.nav-link',
3675 + NAV_ITEMS: '.nav-item',
3676 + LIST_ITEMS: '.list-group-item',
3677 + DROPDOWN: '.dropdown',
3678 + DROPDOWN_ITEMS: '.dropdown-item',
3679 + DROPDOWN_TOGGLE: '.dropdown-toggle'
3680 + };
3681 + var OffsetMethod = {
3682 + OFFSET: 'offset',
3683 + POSITION: 'position'
3684 + /**
3685 + * ------------------------------------------------------------------------
3686 + * Class Definition
3687 + * ------------------------------------------------------------------------
3688 + */
3689 +
3690 + };
3691 +
3692 + var ScrollSpy =
3693 + /*#__PURE__*/
3694 + function () {
3695 + function ScrollSpy(element, config) {
3696 + var _this = this;
3697 +
3698 + this._element = element;
3699 + this._scrollElement = element.tagName === 'BODY' ? window : element;
3700 + this._config = this._getConfig(config);
3701 + this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " " + Selector$8.DROPDOWN_ITEMS);
3702 + this._offsets = [];
3703 + this._targets = [];
3704 + this._activeTarget = null;
3705 + this._scrollHeight = 0;
3706 + $(this._scrollElement).on(Event$8.SCROLL, function (event) {
3707 + return _this._process(event);
3708 + });
3709 + this.refresh();
3710 +
3711 + this._process();
3712 + } // Getters
3713 +
3714 +
3715 + var _proto = ScrollSpy.prototype;
3716 +
3717 + // Public
3718 + _proto.refresh = function refresh() {
3719 + var _this2 = this;
3720 +
3721 + var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3722 + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3723 + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3724 + this._offsets = [];
3725 + this._targets = [];
3726 + this._scrollHeight = this._getScrollHeight();
3727 + var targets = [].slice.call(document.querySelectorAll(this._selector));
3728 + targets.map(function (element) {
3729 + var target;
3730 + var targetSelector = Util.getSelectorFromElement(element);
3731 +
3732 + if (targetSelector) {
3733 + target = document.querySelector(targetSelector);
3734 + }
3735 +
3736 + if (target) {
3737 + var targetBCR = target.getBoundingClientRect();
3738 +
3739 + if (targetBCR.width || targetBCR.height) {
3740 + // TODO (fat): remove sketch reliance on jQuery position/offset
3741 + return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
3742 + }
3743 + }
3744 +
3745 + return null;
3746 + }).filter(function (item) {
3747 + return item;
3748 + }).sort(function (a, b) {
3749 + return a[0] - b[0];
3750 + }).forEach(function (item) {
3751 + _this2._offsets.push(item[0]);
3752 +
3753 + _this2._targets.push(item[1]);
3754 + });
3755 + };
3756 +
3757 + _proto.dispose = function dispose() {
3758 + $.removeData(this._element, DATA_KEY$8);
3759 + $(this._scrollElement).off(EVENT_KEY$8);
3760 + this._element = null;
3761 + this._scrollElement = null;
3762 + this._config = null;
3763 + this._selector = null;
3764 + this._offsets = null;
3765 + this._targets = null;
3766 + this._activeTarget = null;
3767 + this._scrollHeight = null;
3768 + } // Private
3769 + ;
3770 +
3771 + _proto._getConfig = function _getConfig(config) {
3772 + config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
3773 +
3774 + if (typeof config.target !== 'string') {
3775 + var id = $(config.target).attr('id');
3776 +
3777 + if (!id) {
3778 + id = Util.getUID(NAME$8);
3779 + $(config.target).attr('id', id);
3780 + }
3781 +
3782 + config.target = "#" + id;
3783 + }
3784 +
3785 + Util.typeCheckConfig(NAME$8, config, DefaultType$6);
3786 + return config;
3787 + };
3788 +
3789 + _proto._getScrollTop = function _getScrollTop() {
3790 + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
3791 + };
3792 +
3793 + _proto._getScrollHeight = function _getScrollHeight() {
3794 + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
3795 + };
3796 +
3797 + _proto._getOffsetHeight = function _getOffsetHeight() {
3798 + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
3799 + };
3800 +
3801 + _proto._process = function _process() {
3802 + var scrollTop = this._getScrollTop() + this._config.offset;
3803 +
3804 + var scrollHeight = this._getScrollHeight();
3805 +
3806 + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
3807 +
3808 + if (this._scrollHeight !== scrollHeight) {
3809 + this.refresh();
3810 + }
3811 +
3812 + if (scrollTop >= maxScroll) {
3813 + var target = this._targets[this._targets.length - 1];
3814 +
3815 + if (this._activeTarget !== target) {
3816 + this._activate(target);
3817 + }
3818 +
3819 + return;
3820 + }
3821 +
3822 + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
3823 + this._activeTarget = null;
3824 +
3825 + this._clear();
3826 +
3827 + return;
3828 + }
3829 +
3830 + var offsetLength = this._offsets.length;
3831 +
3832 + for (var i = offsetLength; i--;) {
3833 + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
3834 +
3835 + if (isActiveTarget) {
3836 + this._activate(this._targets[i]);
3837 + }
3838 + }
3839 + };
3840 +
3841 + _proto._activate = function _activate(target) {
3842 + this._activeTarget = target;
3843 +
3844 + this._clear();
3845 +
3846 + var queries = this._selector.split(',').map(function (selector) {
3847 + return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
3848 + });
3849 +
3850 + var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));
3851 +
3852 + if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {
3853 + $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);
3854 + $link.addClass(ClassName$8.ACTIVE);
3855 + } else {
3856 + // Set triggered link as active
3857 + $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active
3858 + // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
3859 +
3860 + $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + ", " + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item
3861 +
3862 + $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);
3863 + }
3864 +
3865 + $(this._scrollElement).trigger(Event$8.ACTIVATE, {
3866 + relatedTarget: target
3867 + });
3868 + };
3869 +
3870 + _proto._clear = function _clear() {
3871 + [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
3872 + return node.classList.contains(ClassName$8.ACTIVE);
3873 + }).forEach(function (node) {
3874 + return node.classList.remove(ClassName$8.ACTIVE);
3875 + });
3876 + } // Static
3877 + ;
3878 +
3879 + ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
3880 + return this.each(function () {
3881 + var data = $(this).data(DATA_KEY$8);
3882 +
3883 + var _config = typeof config === 'object' && config;
3884 +
3885 + if (!data) {
3886 + data = new ScrollSpy(this, _config);
3887 + $(this).data(DATA_KEY$8, data);
3888 + }
3889 +
3890 + if (typeof config === 'string') {
3891 + if (typeof data[config] === 'undefined') {
3892 + throw new TypeError("No method named \"" + config + "\"");
3893 + }
3894 +
3895 + data[config]();
3896 + }
3897 + });
3898 + };
3899 +
3900 + _createClass(ScrollSpy, null, [{
3901 + key: "VERSION",
3902 + get: function get() {
3903 + return VERSION$8;
3904 + }
3905 + }, {
3906 + key: "Default",
3907 + get: function get() {
3908 + return Default$6;
3909 + }
3910 + }]);
3911 +
3912 + return ScrollSpy;
3913 + }();
3914 + /**
3915 + * ------------------------------------------------------------------------
3916 + * Data Api implementation
3917 + * ------------------------------------------------------------------------
3918 + */
3919 +
3920 +
3921 + $(window).on(Event$8.LOAD_DATA_API, function () {
3922 + var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));
3923 + var scrollSpysLength = scrollSpys.length;
3924 +
3925 + for (var i = scrollSpysLength; i--;) {
3926 + var $spy = $(scrollSpys[i]);
3927 +
3928 + ScrollSpy._jQueryInterface.call($spy, $spy.data());
3929 + }
3930 + });
3931 + /**
3932 + * ------------------------------------------------------------------------
3933 + * jQuery
3934 + * ------------------------------------------------------------------------
3935 + */
3936 +
3937 + $.fn[NAME$8] = ScrollSpy._jQueryInterface;
3938 + $.fn[NAME$8].Constructor = ScrollSpy;
3939 +
3940 + $.fn[NAME$8].noConflict = function () {
3941 + $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;
3942 + return ScrollSpy._jQueryInterface;
3943 + };
3944 +
3945 + /**
3946 + * ------------------------------------------------------------------------
3947 + * Constants
3948 + * ------------------------------------------------------------------------
3949 + */
3950 +
3951 + var NAME$9 = 'tab';
3952 + var VERSION$9 = '4.3.1';
3953 + var DATA_KEY$9 = 'bs.tab';
3954 + var EVENT_KEY$9 = "." + DATA_KEY$9;
3955 + var DATA_API_KEY$7 = '.data-api';
3956 + var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];
3957 + var Event$9 = {
3958 + HIDE: "hide" + EVENT_KEY$9,
3959 + HIDDEN: "hidden" + EVENT_KEY$9,
3960 + SHOW: "show" + EVENT_KEY$9,
3961 + SHOWN: "shown" + EVENT_KEY$9,
3962 + CLICK_DATA_API: "click" + EVENT_KEY$9 + DATA_API_KEY$7
3963 + };
3964 + var ClassName$9 = {
3965 + DROPDOWN_MENU: 'dropdown-menu',
3966 + ACTIVE: 'active',
3967 + DISABLED: 'disabled',
3968 + FADE: 'fade',
3969 + SHOW: 'show'
3970 + };
3971 + var Selector$9 = {
3972 + DROPDOWN: '.dropdown',
3973 + NAV_LIST_GROUP: '.nav, .list-group',
3974 + ACTIVE: '.active',
3975 + ACTIVE_UL: '> li > .active',
3976 + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
3977 + DROPDOWN_TOGGLE: '.dropdown-toggle',
3978 + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
3979 + /**
3980 + * ------------------------------------------------------------------------
3981 + * Class Definition
3982 + * ------------------------------------------------------------------------
3983 + */
3984 +
3985 + };
3986 +
3987 + var Tab =
3988 + /*#__PURE__*/
3989 + function () {
3990 + function Tab(element) {
3991 + this._element = element;
3992 + } // Getters
3993 +
3994 +
3995 + var _proto = Tab.prototype;
3996 +
3997 + // Public
3998 + _proto.show = function show() {
3999 + var _this = this;
4000 +
4001 + if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {
4002 + return;
4003 + }
4004 +
4005 + var target;
4006 + var previous;
4007 + var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];
4008 + var selector = Util.getSelectorFromElement(this._element);
4009 +
4010 + if (listElement) {
4011 + var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;
4012 + previous = $.makeArray($(listElement).find(itemSelector));
4013 + previous = previous[previous.length - 1];
4014 + }
4015 +
4016 + var hideEvent = $.Event(Event$9.HIDE, {
4017 + relatedTarget: this._element
4018 + });
4019 + var showEvent = $.Event(Event$9.SHOW, {
4020 + relatedTarget: previous
4021 + });
4022 +
4023 + if (previous) {
4024 + $(previous).trigger(hideEvent);
4025 + }
4026 +
4027 + $(this._element).trigger(showEvent);
4028 +
4029 + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
4030 + return;
4031 + }
4032 +
4033 + if (selector) {
4034 + target = document.querySelector(selector);
4035 + }
4036 +
4037 + this._activate(this._element, listElement);
4038 +
4039 + var complete = function complete() {
4040 + var hiddenEvent = $.Event(Event$9.HIDDEN, {
4041 + relatedTarget: _this._element
4042 + });
4043 + var shownEvent = $.Event(Event$9.SHOWN, {
4044 + relatedTarget: previous
4045 + });
4046 + $(previous).trigger(hiddenEvent);
4047 + $(_this._element).trigger(shownEvent);
4048 + };
4049 +
4050 + if (target) {
4051 + this._activate(target, target.parentNode, complete);
4052 + } else {
4053 + complete();
4054 + }
4055 + };
4056 +
4057 + _proto.dispose = function dispose() {
4058 + $.removeData(this._element, DATA_KEY$9);
4059 + this._element = null;
4060 + } // Private
4061 + ;
4062 +
4063 + _proto._activate = function _activate(element, container, callback) {
4064 + var _this2 = this;
4065 +
4066 + var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);
4067 + var active = activeElements[0];
4068 + var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);
4069 +
4070 + var complete = function complete() {
4071 + return _this2._transitionComplete(element, active, callback);
4072 + };
4073 +
4074 + if (active && isTransitioning) {
4075 + var transitionDuration = Util.getTransitionDurationFromElement(active);
4076 + $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4077 + } else {
4078 + complete();
4079 + }
4080 + };
4081 +
4082 + _proto._transitionComplete = function _transitionComplete(element, active, callback) {
4083 + if (active) {
4084 + $(active).removeClass(ClassName$9.ACTIVE);
4085 + var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];
4086 +
4087 + if (dropdownChild) {
4088 + $(dropdownChild).removeClass(ClassName$9.ACTIVE);
4089 + }
4090 +
4091 + if (active.getAttribute('role') === 'tab') {
4092 + active.setAttribute('aria-selected', false);
4093 + }
4094 + }
4095 +
4096 + $(element).addClass(ClassName$9.ACTIVE);
4097 +
4098 + if (element.getAttribute('role') === 'tab') {
4099 + element.setAttribute('aria-selected', true);
4100 + }
4101 +
4102 + Util.reflow(element);
4103 +
4104 + if (element.classList.contains(ClassName$9.FADE)) {
4105 + element.classList.add(ClassName$9.SHOW);
4106 + }
4107 +
4108 + if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
4109 + var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
4110 +
4111 + if (dropdownElement) {
4112 + var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));
4113 + $(dropdownToggleList).addClass(ClassName$9.ACTIVE);
4114 + }
4115 +
4116 + element.setAttribute('aria-expanded', true);
4117 + }
4118 +
4119 + if (callback) {
4120 + callback();
4121 + }
4122 + } // Static
4123 + ;
4124 +
4125 + Tab._jQueryInterface = function _jQueryInterface(config) {
4126 + return this.each(function () {
4127 + var $this = $(this);
4128 + var data = $this.data(DATA_KEY$9);
4129 +
4130 + if (!data) {
4131 + data = new Tab(this);
4132 + $this.data(DATA_KEY$9, data);
4133 + }
4134 +
4135 + if (typeof config === 'string') {
4136 + if (typeof data[config] === 'undefined') {
4137 + throw new TypeError("No method named \"" + config + "\"");
4138 + }
4139 +
4140 + data[config]();
4141 + }
4142 + });
4143 + };
4144 +
4145 + _createClass(Tab, null, [{
4146 + key: "VERSION",
4147 + get: function get() {
4148 + return VERSION$9;
4149 + }
4150 + }]);
4151 +
4152 + return Tab;
4153 + }();
4154 + /**
4155 + * ------------------------------------------------------------------------
4156 + * Data Api implementation
4157 + * ------------------------------------------------------------------------
4158 + */
4159 +
4160 +
4161 + $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {
4162 + event.preventDefault();
4163 +
4164 + Tab._jQueryInterface.call($(this), 'show');
4165 + });
4166 + /**
4167 + * ------------------------------------------------------------------------
4168 + * jQuery
4169 + * ------------------------------------------------------------------------
4170 + */
4171 +
4172 + $.fn[NAME$9] = Tab._jQueryInterface;
4173 + $.fn[NAME$9].Constructor = Tab;
4174 +
4175 + $.fn[NAME$9].noConflict = function () {
4176 + $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;
4177 + return Tab._jQueryInterface;
4178 + };
4179 +
4180 + /**
4181 + * ------------------------------------------------------------------------
4182 + * Constants
4183 + * ------------------------------------------------------------------------
4184 + */
4185 +
4186 + var NAME$a = 'toast';
4187 + var VERSION$a = '4.3.1';
4188 + var DATA_KEY$a = 'bs.toast';
4189 + var EVENT_KEY$a = "." + DATA_KEY$a;
4190 + var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
4191 + var Event$a = {
4192 + CLICK_DISMISS: "click.dismiss" + EVENT_KEY$a,
4193 + HIDE: "hide" + EVENT_KEY$a,
4194 + HIDDEN: "hidden" + EVENT_KEY$a,
4195 + SHOW: "show" + EVENT_KEY$a,
4196 + SHOWN: "shown" + EVENT_KEY$a
4197 + };
4198 + var ClassName$a = {
4199 + FADE: 'fade',
4200 + HIDE: 'hide',
4201 + SHOW: 'show',
4202 + SHOWING: 'showing'
4203 + };
4204 + var DefaultType$7 = {
4205 + animation: 'boolean',
4206 + autohide: 'boolean',
4207 + delay: 'number'
4208 + };
4209 + var Default$7 = {
4210 + animation: true,
4211 + autohide: true,
4212 + delay: 500
4213 + };
4214 + var Selector$a = {
4215 + DATA_DISMISS: '[data-dismiss="toast"]'
4216 + /**
4217 + * ------------------------------------------------------------------------
4218 + * Class Definition
4219 + * ------------------------------------------------------------------------
4220 + */
4221 +
4222 + };
4223 +
4224 + var Toast =
4225 + /*#__PURE__*/
4226 + function () {
4227 + function Toast(element, config) {
4228 + this._element = element;
4229 + this._config = this._getConfig(config);
4230 + this._timeout = null;
4231 +
4232 + this._setListeners();
4233 + } // Getters
4234 +
4235 +
4236 + var _proto = Toast.prototype;
4237 +
4238 + // Public
4239 + _proto.show = function show() {
4240 + var _this = this;
4241 +
4242 + $(this._element).trigger(Event$a.SHOW);
4243 +
4244 + if (this._config.animation) {
4245 + this._element.classList.add(ClassName$a.FADE);
4246 + }
4247 +
4248 + var complete = function complete() {
4249 + _this._element.classList.remove(ClassName$a.SHOWING);
4250 +
4251 + _this._element.classList.add(ClassName$a.SHOW);
4252 +
4253 + $(_this._element).trigger(Event$a.SHOWN);
4254 +
4255 + if (_this._config.autohide) {
4256 + _this.hide();
4257 + }
4258 + };
4259 +
4260 + this._element.classList.remove(ClassName$a.HIDE);
4261 +
4262 + this._element.classList.add(ClassName$a.SHOWING);
4263 +
4264 + if (this._config.animation) {
4265 + var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4266 + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4267 + } else {
4268 + complete();
4269 + }
4270 + };
4271 +
4272 + _proto.hide = function hide(withoutTimeout) {
4273 + var _this2 = this;
4274 +
4275 + if (!this._element.classList.contains(ClassName$a.SHOW)) {
4276 + return;
4277 + }
4278 +
4279 + $(this._element).trigger(Event$a.HIDE);
4280 +
4281 + if (withoutTimeout) {
4282 + this._close();
4283 + } else {
4284 + this._timeout = setTimeout(function () {
4285 + _this2._close();
4286 + }, this._config.delay);
4287 + }
4288 + };
4289 +
4290 + _proto.dispose = function dispose() {
4291 + clearTimeout(this._timeout);
4292 + this._timeout = null;
4293 +
4294 + if (this._element.classList.contains(ClassName$a.SHOW)) {
4295 + this._element.classList.remove(ClassName$a.SHOW);
4296 + }
4297 +
4298 + $(this._element).off(Event$a.CLICK_DISMISS);
4299 + $.removeData(this._element, DATA_KEY$a);
4300 + this._element = null;
4301 + this._config = null;
4302 + } // Private
4303 + ;
4304 +
4305 + _proto._getConfig = function _getConfig(config) {
4306 + config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
4307 + Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
4308 + return config;
4309 + };
4310 +
4311 + _proto._setListeners = function _setListeners() {
4312 + var _this3 = this;
4313 +
4314 + $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {
4315 + return _this3.hide(true);
4316 + });
4317 + };
4318 +
4319 + _proto._close = function _close() {
4320 + var _this4 = this;
4321 +
4322 + var complete = function complete() {
4323 + _this4._element.classList.add(ClassName$a.HIDE);
4324 +
4325 + $(_this4._element).trigger(Event$a.HIDDEN);
4326 + };
4327 +
4328 + this._element.classList.remove(ClassName$a.SHOW);
4329 +
4330 + if (this._config.animation) {
4331 + var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4332 + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4333 + } else {
4334 + complete();
4335 + }
4336 + } // Static
4337 + ;
4338 +
4339 + Toast._jQueryInterface = function _jQueryInterface(config) {
4340 + return this.each(function () {
4341 + var $element = $(this);
4342 + var data = $element.data(DATA_KEY$a);
4343 +
4344 + var _config = typeof config === 'object' && config;
4345 +
4346 + if (!data) {
4347 + data = new Toast(this, _config);
4348 + $element.data(DATA_KEY$a, data);
4349 + }
4350 +
4351 + if (typeof config === 'string') {
4352 + if (typeof data[config] === 'undefined') {
4353 + throw new TypeError("No method named \"" + config + "\"");
4354 + }
4355 +
4356 + data[config](this);
4357 + }
4358 + });
4359 + };
4360 +
4361 + _createClass(Toast, null, [{
4362 + key: "VERSION",
4363 + get: function get() {
4364 + return VERSION$a;
4365 + }
4366 + }, {
4367 + key: "DefaultType",
4368 + get: function get() {
4369 + return DefaultType$7;
4370 + }
4371 + }, {
4372 + key: "Default",
4373 + get: function get() {
4374 + return Default$7;
4375 + }
4376 + }]);
4377 +
4378 + return Toast;
4379 + }();
4380 + /**
4381 + * ------------------------------------------------------------------------
4382 + * jQuery
4383 + * ------------------------------------------------------------------------
4384 + */
4385 +
4386 +
4387 + $.fn[NAME$a] = Toast._jQueryInterface;
4388 + $.fn[NAME$a].Constructor = Toast;
4389 +
4390 + $.fn[NAME$a].noConflict = function () {
4391 + $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;
4392 + return Toast._jQueryInterface;
4393 + };
4394 +
4395 + /**
4396 + * --------------------------------------------------------------------------
4397 + * Bootstrap (v4.3.1): index.js
4398 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4399 + * --------------------------------------------------------------------------
4400 + */
4401 +
4402 + (function () {
4403 + if (typeof $ === 'undefined') {
4404 + throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
4405 + }
4406 +
4407 + var version = $.fn.jquery.split(' ')[0].split('.');
4408 + var minMajor = 1;
4409 + var ltMajor = 2;
4410 + var minMinor = 9;
4411 + var minPatch = 1;
4412 + var maxMajor = 4;
4413 +
4414 + if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
4415 + throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
4416 + }
4417 + })();
4418 +
4419 + exports.Util = Util;
4420 + exports.Alert = Alert;
4421 + exports.Button = Button;
4422 + exports.Carousel = Carousel;
4423 + exports.Collapse = Collapse;
4424 + exports.Dropdown = Dropdown;
4425 + exports.Modal = Modal;
4426 + exports.Popover = Popover;
4427 + exports.Scrollspy = ScrollSpy;
4428 + exports.Tab = Tab;
4429 + exports.Toast = Toast;
4430 + exports.Tooltip = Tooltip;
4431 +
4432 + Object.defineProperty(exports, '__esModule', { value: true });
4433 +
4434 +}));
4435 +//# sourceMappingURL=bootstrap.js.map
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt new
+12
@@ -0,0 +1,12 @@
1 +Copyright (c) .NET Foundation. All rights reserved.
2 +
3 +Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 +these files except in compliance with the License. You may obtain a copy of the
5 +License at
6 +
7 +http://www.apache.org/licenses/LICENSE-2.0
8 +
9 +Unless required by applicable law or agreed to in writing, software distributed
10 +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
11 +CONDITIONS OF ANY KIND, either express or implied. See the License for the
12 +specific language governing permissions and limitations under the License.
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js new
+432
@@ -0,0 +1,432 @@
1 +// Unobtrusive validation support library for jQuery and jQuery Validate
2 +// Copyright (c) .NET Foundation. All rights reserved.
3 +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4 +// @version v3.2.11
5 +
6 +/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
7 +/*global document: false, jQuery: false */
8 +
9 +(function (factory) {
10 + if (typeof define === 'function' && define.amd) {
11 + // AMD. Register as an anonymous module.
12 + define("jquery.validate.unobtrusive", ['jquery-validation'], factory);
13 + } else if (typeof module === 'object' && module.exports) {
14 + // CommonJS-like environments that support module.exports
15 + module.exports = factory(require('jquery-validation'));
16 + } else {
17 + // Browser global
18 + jQuery.validator.unobtrusive = factory(jQuery);
19 + }
20 +}(function ($) {
21 + var $jQval = $.validator,
22 + adapters,
23 + data_validation = "unobtrusiveValidation";
24 +
25 + function setValidationValues(options, ruleName, value) {
26 + options.rules[ruleName] = value;
27 + if (options.message) {
28 + options.messages[ruleName] = options.message;
29 + }
30 + }
31 +
32 + function splitAndTrim(value) {
33 + return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g);
34 + }
35 +
36 + function escapeAttributeValue(value) {
37 + // As mentioned on http://api.jquery.com/category/selectors/
38 + return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1");
39 + }
40 +
41 + function getModelPrefix(fieldName) {
42 + return fieldName.substr(0, fieldName.lastIndexOf(".") + 1);
43 + }
44 +
45 + function appendModelPrefix(value, prefix) {
46 + if (value.indexOf("*.") === 0) {
47 + value = value.replace("*.", prefix);
48 + }
49 + return value;
50 + }
51 +
52 + function onError(error, inputElement) { // 'this' is the form element
53 + var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
54 + replaceAttrValue = container.attr("data-valmsg-replace"),
55 + replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;
56 +
57 + container.removeClass("field-validation-valid").addClass("field-validation-error");
58 + error.data("unobtrusiveContainer", container);
59 +
60 + if (replace) {
61 + container.empty();
62 + error.removeClass("input-validation-error").appendTo(container);
63 + }
64 + else {
65 + error.hide();
66 + }
67 + }
68 +
69 + function onErrors(event, validator) { // 'this' is the form element
70 + var container = $(this).find("[data-valmsg-summary=true]"),
71 + list = container.find("ul");
72 +
73 + if (list && list.length && validator.errorList.length) {
74 + list.empty();
75 + container.addClass("validation-summary-errors").removeClass("validation-summary-valid");
76 +
77 + $.each(validator.errorList, function () {
78 + $("<li />").html(this.message).appendTo(list);
79 + });
80 + }
81 + }
82 +
83 + function onSuccess(error) { // 'this' is the form element
84 + var container = error.data("unobtrusiveContainer");
85 +
86 + if (container) {
87 + var replaceAttrValue = container.attr("data-valmsg-replace"),
88 + replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;
89 +
90 + container.addClass("field-validation-valid").removeClass("field-validation-error");
91 + error.removeData("unobtrusiveContainer");
92 +
93 + if (replace) {
94 + container.empty();
95 + }
96 + }
97 + }
98 +
99 + function onReset(event) { // 'this' is the form element
100 + var $form = $(this),
101 + key = '__jquery_unobtrusive_validation_form_reset';
102 + if ($form.data(key)) {
103 + return;
104 + }
105 + // Set a flag that indicates we're currently resetting the form.
106 + $form.data(key, true);
107 + try {
108 + $form.data("validator").resetForm();
109 + } finally {
110 + $form.removeData(key);
111 + }
112 +
113 + $form.find(".validation-summary-errors")
114 + .addClass("validation-summary-valid")
115 + .removeClass("validation-summary-errors");
116 + $form.find(".field-validation-error")
117 + .addClass("field-validation-valid")
118 + .removeClass("field-validation-error")
119 + .removeData("unobtrusiveContainer")
120 + .find(">*") // If we were using valmsg-replace, get the underlying error
121 + .removeData("unobtrusiveContainer");
122 + }
123 +
124 + function validationInfo(form) {
125 + var $form = $(form),
126 + result = $form.data(data_validation),
127 + onResetProxy = $.proxy(onReset, form),
128 + defaultOptions = $jQval.unobtrusive.options || {},
129 + execInContext = function (name, args) {
130 + var func = defaultOptions[name];
131 + func && $.isFunction(func) && func.apply(form, args);
132 + };
133 +
134 + if (!result) {
135 + result = {
136 + options: { // options structure passed to jQuery Validate's validate() method
137 + errorClass: defaultOptions.errorClass || "input-validation-error",
138 + errorElement: defaultOptions.errorElement || "span",
139 + errorPlacement: function () {
140 + onError.apply(form, arguments);
141 + execInContext("errorPlacement", arguments);
142 + },
143 + invalidHandler: function () {
144 + onErrors.apply(form, arguments);
145 + execInContext("invalidHandler", arguments);
146 + },
147 + messages: {},
148 + rules: {},
149 + success: function () {
150 + onSuccess.apply(form, arguments);
151 + execInContext("success", arguments);
152 + }
153 + },
154 + attachValidation: function () {
155 + $form
156 + .off("reset." + data_validation, onResetProxy)
157 + .on("reset." + data_validation, onResetProxy)
158 + .validate(this.options);
159 + },
160 + validate: function () { // a validation function that is called by unobtrusive Ajax
161 + $form.validate();
162 + return $form.valid();
163 + }
164 + };
165 + $form.data(data_validation, result);
166 + }
167 +
168 + return result;
169 + }
170 +
171 + $jQval.unobtrusive = {
172 + adapters: [],
173 +
174 + parseElement: function (element, skipAttach) {
175 + /// <summary>
176 + /// Parses a single HTML element for unobtrusive validation attributes.
177 + /// </summary>
178 + /// <param name="element" domElement="true">The HTML element to be parsed.</param>
179 + /// <param name="skipAttach" type="Boolean">[Optional] true to skip attaching the
180 + /// validation to the form. If parsing just this single element, you should specify true.
181 + /// If parsing several elements, you should specify false, and manually attach the validation
182 + /// to the form when you are finished. The default is false.</param>
183 + var $element = $(element),
184 + form = $element.parents("form")[0],
185 + valInfo, rules, messages;
186 +
187 + if (!form) { // Cannot do client-side validation without a form
188 + return;
189 + }
190 +
191 + valInfo = validationInfo(form);
192 + valInfo.options.rules[element.name] = rules = {};
193 + valInfo.options.messages[element.name] = messages = {};
194 +
195 + $.each(this.adapters, function () {
196 + var prefix = "data-val-" + this.name,
197 + message = $element.attr(prefix),
198 + paramValues = {};
199 +
200 + if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)
201 + prefix += "-";
202 +
203 + $.each(this.params, function () {
204 + paramValues[this] = $element.attr(prefix + this);
205 + });
206 +
207 + this.adapt({
208 + element: element,
209 + form: form,
210 + message: message,
211 + params: paramValues,
212 + rules: rules,
213 + messages: messages
214 + });
215 + }
216 + });
217 +
218 + $.extend(rules, { "__dummy__": true });
219 +
220 + if (!skipAttach) {
221 + valInfo.attachValidation();
222 + }
223 + },
224 +
225 + parse: function (selector) {
226 + /// <summary>
227 + /// Parses all the HTML elements in the specified selector. It looks for input elements decorated
228 + /// with the [data-val=true] attribute value and enables validation according to the data-val-*
229 + /// attribute values.
230 + /// </summary>
231 + /// <param name="selector" type="String">Any valid jQuery selector.</param>
232 +
233 + // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one
234 + // element with data-val=true
235 + var $selector = $(selector),
236 + $forms = $selector.parents()
237 + .addBack()
238 + .filter("form")
239 + .add($selector.find("form"))
240 + .has("[data-val=true]");
241 +
242 + $selector.find("[data-val=true]").each(function () {
243 + $jQval.unobtrusive.parseElement(this, true);
244 + });
245 +
246 + $forms.each(function () {
247 + var info = validationInfo(this);
248 + if (info) {
249 + info.attachValidation();
250 + }
251 + });
252 + }
253 + };
254 +
255 + adapters = $jQval.unobtrusive.adapters;
256 +
257 + adapters.add = function (adapterName, params, fn) {
258 + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.</summary>
259 + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
260 + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
261 + /// <param name="params" type="Array" optional="true">[Optional] An array of parameter names (strings) that will
262 + /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and
263 + /// mmmm is the parameter name).</param>
264 + /// <param name="fn" type="Function">The function to call, which adapts the values from the HTML
265 + /// attributes into jQuery Validate rules and/or messages.</param>
266 + /// <returns type="jQuery.validator.unobtrusive.adapters" />
267 + if (!fn) { // Called with no params, just a function
268 + fn = params;
269 + params = [];
270 + }
271 + this.push({ name: adapterName, params: params, adapt: fn });
272 + return this;
273 + };
274 +
275 + adapters.addBool = function (adapterName, ruleName) {
276 + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
277 + /// the jQuery Validate validation rule has no parameter values.</summary>
278 + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
279 + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
280 + /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value
281 + /// of adapterName will be used instead.</param>
282 + /// <returns type="jQuery.validator.unobtrusive.adapters" />
283 + return this.add(adapterName, function (options) {
284 + setValidationValues(options, ruleName || adapterName, true);
285 + });
286 + };
287 +
288 + adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {
289 + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
290 + /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and
291 + /// one for min-and-max). The HTML parameters are expected to be named -min and -max.</summary>
292 + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
293 + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
294 + /// <param name="minRuleName" type="String">The name of the jQuery Validate rule to be used when you only
295 + /// have a minimum value.</param>
296 + /// <param name="maxRuleName" type="String">The name of the jQuery Validate rule to be used when you only
297 + /// have a maximum value.</param>
298 + /// <param name="minMaxRuleName" type="String">The name of the jQuery Validate rule to be used when you
299 + /// have both a minimum and maximum value.</param>
300 + /// <param name="minAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that
301 + /// contains the minimum value. The default is "min".</param>
302 + /// <param name="maxAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that
303 + /// contains the maximum value. The default is "max".</param>
304 + /// <returns type="jQuery.validator.unobtrusive.adapters" />
305 + return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) {
306 + var min = options.params.min,
307 + max = options.params.max;
308 +
309 + if (min && max) {
310 + setValidationValues(options, minMaxRuleName, [min, max]);
311 + }
312 + else if (min) {
313 + setValidationValues(options, minRuleName, min);
314 + }
315 + else if (max) {
316 + setValidationValues(options, maxRuleName, max);
317 + }
318 + });
319 + };
320 +
321 + adapters.addSingleVal = function (adapterName, attribute, ruleName) {
322 + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
323 + /// the jQuery Validate validation rule has a single value.</summary>
324 + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
325 + /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).</param>
326 + /// <param name="attribute" type="String">[Optional] The name of the HTML attribute that contains the value.
327 + /// The default is "val".</param>
328 + /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value
329 + /// of adapterName will be used instead.</param>
330 + /// <returns type="jQuery.validator.unobtrusive.adapters" />
331 + return this.add(adapterName, [attribute || "val"], function (options) {
332 + setValidationValues(options, ruleName || adapterName, options.params[attribute]);
333 + });
334 + };
335 +
336 + $jQval.addMethod("__dummy__", function (value, element, params) {
337 + return true;
338 + });
339 +
340 + $jQval.addMethod("regex", function (value, element, params) {
341 + var match;
342 + if (this.optional(element)) {
343 + return true;
344 + }
345 +
346 + match = new RegExp(params).exec(value);
347 + return (match && (match.index === 0) && (match[0].length === value.length));
348 + });
349 +
350 + $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) {
351 + var match;
352 + if (nonalphamin) {
353 + match = value.match(/\W/g);
354 + match = match && match.length >= nonalphamin;
355 + }
356 + return match;
357 + });
358 +
359 + if ($jQval.methods.extension) {
360 + adapters.addSingleVal("accept", "mimtype");
361 + adapters.addSingleVal("extension", "extension");
362 + } else {
363 + // for backward compatibility, when the 'extension' validation method does not exist, such as with versions
364 + // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for
365 + // validating the extension, and ignore mime-type validations as they are not supported.
366 + adapters.addSingleVal("extension", "extension", "accept");
367 + }
368 +
369 + adapters.addSingleVal("regex", "pattern");
370 + adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");
371 + adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range");
372 + adapters.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength");
373 + adapters.add("equalto", ["other"], function (options) {
374 + var prefix = getModelPrefix(options.element.name),
375 + other = options.params.other,
376 + fullOtherName = appendModelPrefix(other, prefix),
377 + element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0];
378 +
379 + setValidationValues(options, "equalTo", element);
380 + });
381 + adapters.add("required", function (options) {
382 + // jQuery Validate equates "required" with "mandatory" for checkbox elements
383 + if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") {
384 + setValidationValues(options, "required", true);
385 + }
386 + });
387 + adapters.add("remote", ["url", "type", "additionalfields"], function (options) {
388 + var value = {
389 + url: options.params.url,
390 + type: options.params.type || "GET",
391 + data: {}
392 + },
393 + prefix = getModelPrefix(options.element.name);
394 +
395 + $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {
396 + var paramName = appendModelPrefix(fieldName, prefix);
397 + value.data[paramName] = function () {
398 + var field = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']");
399 + // For checkboxes and radio buttons, only pick up values from checked fields.
400 + if (field.is(":checkbox")) {
401 + return field.filter(":checked").val() || field.filter(":hidden").val() || '';
402 + }
403 + else if (field.is(":radio")) {
404 + return field.filter(":checked").val() || '';
405 + }
406 + return field.val();
407 + };
408 + });
409 +
410 + setValidationValues(options, "remote", value);
411 + });
412 + adapters.add("password", ["min", "nonalphamin", "regex"], function (options) {
413 + if (options.params.min) {
414 + setValidationValues(options, "minlength", options.params.min);
415 + }
416 + if (options.params.nonalphamin) {
417 + setValidationValues(options, "nonalphamin", options.params.nonalphamin);
418 + }
419 + if (options.params.regex) {
420 + setValidationValues(options, "regex", options.params.regex);
421 + }
422 + });
423 + adapters.add("fileextensions", ["extensions"], function (options) {
424 + setValidationValues(options, "extension", options.params.extensions);
425 + });
426 +
427 + $(function () {
428 + $jQval.unobtrusive.parse(document);
429 + });
430 +
431 + return $jQval.unobtrusive;
432 +}));
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/LICENSE.md new
+22
@@ -0,0 +1,22 @@
1 +The MIT License (MIT)
2 +=====================
3 +
4 +Copyright Jörn Zaefferer
5 +
6 +Permission is hereby granted, free of charge, to any person obtaining a copy
7 +of this software and associated documentation files (the "Software"), to deal
8 +in the Software without restriction, including without limitation the rights
9 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 +copies of the Software, and to permit persons to whom the Software is
11 +furnished to do so, subject to the following conditions:
12 +
13 +The above copyright notice and this permission notice shall be included in
14 +all copies or substantial portions of the Software.
15 +
16 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 +THE SOFTWARE.
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/dist/additional-methods.js new
+1158
@@ -0,0 +1,1158 @@
1 +/*!
2 + * jQuery Validation Plugin v1.17.0
3 + *
4 + * https://jqueryvalidation.org/
5 + *
6 + * Copyright (c) 2017 Jörn Zaefferer
7 + * Released under the MIT license
8 + */
9 +(function( factory ) {
10 + if ( typeof define === "function" && define.amd ) {
11 + define( ["jquery", "./jquery.validate"], factory );
12 + } else if (typeof module === "object" && module.exports) {
13 + module.exports = factory( require( "jquery" ) );
14 + } else {
15 + factory( jQuery );
16 + }
17 +}(function( $ ) {
18 +
19 +( function() {
20 +
21 + function stripHtml( value ) {
22 +
23 + // Remove html tags and space chars
24 + return value.replace( /<.[^<>]*?>/g, " " ).replace( /&nbsp;|&#160;/gi, " " )
25 +
26 + // Remove punctuation
27 + .replace( /[.(),;:!?%#$'\"_+=\/\-“”’]*/g, "" );
28 + }
29 +
30 + $.validator.addMethod( "maxWords", function( value, element, params ) {
31 + return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length <= params;
32 + }, $.validator.format( "Please enter {0} words or less." ) );
33 +
34 + $.validator.addMethod( "minWords", function( value, element, params ) {
35 + return this.optional( element ) || stripHtml( value ).match( /\b\w+\b/g ).length >= params;
36 + }, $.validator.format( "Please enter at least {0} words." ) );
37 +
38 + $.validator.addMethod( "rangeWords", function( value, element, params ) {
39 + var valueStripped = stripHtml( value ),
40 + regex = /\b\w+\b/g;
41 + return this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];
42 + }, $.validator.format( "Please enter between {0} and {1} words." ) );
43 +
44 +}() );
45 +
46 +// Accept a value from a file input based on a required mimetype
47 +$.validator.addMethod( "accept", function( value, element, param ) {
48 +
49 + // Split mime on commas in case we have multiple types we can accept
50 + var typeParam = typeof param === "string" ? param.replace( /\s/g, "" ) : "image/*",
51 + optionalValue = this.optional( element ),
52 + i, file, regex;
53 +
54 + // Element is optional
55 + if ( optionalValue ) {
56 + return optionalValue;
57 + }
58 +
59 + if ( $( element ).attr( "type" ) === "file" ) {
60 +
61 + // Escape string to be used in the regex
62 + // see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
63 + // Escape also "/*" as "/.*" as a wildcard
64 + typeParam = typeParam
65 + .replace( /[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&" )
66 + .replace( /,/g, "|" )
67 + .replace( /\/\*/g, "/.*" );
68 +
69 + // Check if the element has a FileList before checking each file
70 + if ( element.files && element.files.length ) {
71 + regex = new RegExp( ".?(" + typeParam + ")$", "i" );
72 + for ( i = 0; i < element.files.length; i++ ) {
73 + file = element.files[ i ];
74 +
75 + // Grab the mimetype from the loaded file, verify it matches
76 + if ( !file.type.match( regex ) ) {
77 + return false;
78 + }
79 + }
80 + }
81 + }
82 +
83 + // Either return true because we've validated each file, or because the
84 + // browser does not support element.files and the FileList feature
85 + return true;
86 +}, $.validator.format( "Please enter a value with a valid mimetype." ) );
87 +
88 +$.validator.addMethod( "alphanumeric", function( value, element ) {
89 + return this.optional( element ) || /^\w+$/i.test( value );
90 +}, "Letters, numbers, and underscores only please" );
91 +
92 +/*
93 + * Dutch bank account numbers (not 'giro' numbers) have 9 digits
94 + * and pass the '11 check'.
95 + * We accept the notation with spaces, as that is common.
96 + * acceptable: 123456789 or 12 34 56 789
97 + */
98 +$.validator.addMethod( "bankaccountNL", function( value, element ) {
99 + if ( this.optional( element ) ) {
100 + return true;
101 + }
102 + if ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {
103 + return false;
104 + }
105 +
106 + // Now '11 check'
107 + var account = value.replace( / /g, "" ), // Remove spaces
108 + sum = 0,
109 + len = account.length,
110 + pos, factor, digit;
111 + for ( pos = 0; pos < len; pos++ ) {
112 + factor = len - pos;
113 + digit = account.substring( pos, pos + 1 );
114 + sum = sum + factor * digit;
115 + }
116 + return sum % 11 === 0;
117 +}, "Please specify a valid bank account number" );
118 +
119 +$.validator.addMethod( "bankorgiroaccountNL", function( value, element ) {
120 + return this.optional( element ) ||
121 + ( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||
122 + ( $.validator.methods.giroaccountNL.call( this, value, element ) );
123 +}, "Please specify a valid bank or giro account number" );
124 +
125 +/**
126 + * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.
127 + *
128 + * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)
129 + *
130 + * Validation is case-insensitive. Please make sure to normalize input yourself.
131 + *
132 + * BIC definition in detail:
133 + * - First 4 characters - bank code (only letters)
134 + * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)
135 + * - Next 2 characters - location code (letters and digits)
136 + * a. shall not start with '0' or '1'
137 + * b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)
138 + * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)
139 + */
140 +$.validator.addMethod( "bic", function( value, element ) {
141 + return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );
142 +}, "Please specify a valid BIC code" );
143 +
144 +/*
145 + * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities
146 + * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal
147 + *
148 + * Spanish CIF structure:
149 + *
150 + * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]
151 + *
152 + * Where:
153 + *
154 + * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]
155 + * P: 2 characters. Province.
156 + * N: 5 characters. Secuencial Number within the province.
157 + * C: 1 character. Control Digit: [0-9A-J].
158 + *
159 + * [ T ]: Kind of Organizations. Possible values:
160 + *
161 + * A. Corporations
162 + * B. LLCs
163 + * C. General partnerships
164 + * D. Companies limited partnerships
165 + * E. Communities of goods
166 + * F. Cooperative Societies
167 + * G. Associations
168 + * H. Communities of homeowners in horizontal property regime
169 + * J. Civil Societies
170 + * K. Old format
171 + * L. Old format
172 + * M. Old format
173 + * N. Nonresident entities
174 + * P. Local authorities
175 + * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions
176 + * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)
177 + * S. Organs of State Administration and regions
178 + * V. Agrarian Transformation
179 + * W. Permanent establishments of non-resident in Spain
180 + *
181 + * [ C ]: Control Digit. It can be a number or a letter depending on T value:
182 + * [ T ] --> [ C ]
183 + * ------ ----------
184 + * A Number
185 + * B Number
186 + * E Number
187 + * H Number
188 + * K Letter
189 + * P Letter
190 + * Q Letter
191 + * S Letter
192 + *
193 + */
194 +$.validator.addMethod( "cifES", function( value, element ) {
195 + "use strict";
196 +
197 + if ( this.optional( element ) ) {
198 + return true;
199 + }
200 +
201 + var cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\d{7})([0-9A-J])$/gi );
202 + var letter = value.substring( 0, 1 ), // [ T ]
203 + number = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]
204 + control = value.substring( 8, 9 ), // [ C ]
205 + all_sum = 0,
206 + even_sum = 0,
207 + odd_sum = 0,
208 + i, n,
209 + control_digit,
210 + control_letter;
211 +
212 + function isOdd( n ) {
213 + return n % 2 === 0;
214 + }
215 +
216 + // Quick format test
217 + if ( value.length !== 9 || !cifRegEx.test( value ) ) {
218 + return false;
219 + }
220 +
221 + for ( i = 0; i < number.length; i++ ) {
222 + n = parseInt( number[ i ], 10 );
223 +
224 + // Odd positions
225 + if ( isOdd( i ) ) {
226 +
227 + // Odd positions are multiplied first.
228 + n *= 2;
229 +
230 + // If the multiplication is bigger than 10 we need to adjust
231 + odd_sum += n < 10 ? n : n - 9;
232 +
233 + // Even positions
234 + // Just sum them
235 + } else {
236 + even_sum += n;
237 + }
238 + }
239 +
240 + all_sum = even_sum + odd_sum;
241 + control_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();
242 + control_digit = parseInt( control_digit, 10 ) > 9 ? "0" : control_digit;
243 + control_letter = "JABCDEFGHI".substr( control_digit, 1 ).toString();
244 +
245 + // Control must be a digit
246 + if ( letter.match( /[ABEH]/ ) ) {
247 + return control === control_digit;
248 +
249 + // Control must be a letter
250 + } else if ( letter.match( /[KPQS]/ ) ) {
251 + return control === control_letter;
252 + }
253 +
254 + // Can be either
255 + return control === control_digit || control === control_letter;
256 +
257 +}, "Please specify a valid CIF number." );
258 +
259 +/*
260 + * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.
261 + * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.
262 + */
263 +$.validator.addMethod( "cpfBR", function( value ) {
264 +
265 + // Removing special characters from value
266 + value = value.replace( /([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, "" );
267 +
268 + // Checking value to have 11 digits only
269 + if ( value.length !== 11 ) {
270 + return false;
271 + }
272 +
273 + var sum = 0,
274 + firstCN, secondCN, checkResult, i;
275 +
276 + firstCN = parseInt( value.substring( 9, 10 ), 10 );
277 + secondCN = parseInt( value.substring( 10, 11 ), 10 );
278 +
279 + checkResult = function( sum, cn ) {
280 + var result = ( sum * 10 ) % 11;
281 + if ( ( result === 10 ) || ( result === 11 ) ) {
282 + result = 0;
283 + }
284 + return ( result === cn );
285 + };
286 +
287 + // Checking for dump data
288 + if ( value === "" ||
289 + value === "00000000000" ||
290 + value === "11111111111" ||
291 + value === "22222222222" ||
292 + value === "33333333333" ||
293 + value === "44444444444" ||
294 + value === "55555555555" ||
295 + value === "66666666666" ||
296 + value === "77777777777" ||
297 + value === "88888888888" ||
298 + value === "99999999999"
299 + ) {
300 + return false;
301 + }
302 +
303 + // Step 1 - using first Check Number:
304 + for ( i = 1; i <= 9; i++ ) {
305 + sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );
306 + }
307 +
308 + // If first Check Number (CN) is valid, move to Step 2 - using second Check Number:
309 + if ( checkResult( sum, firstCN ) ) {
310 + sum = 0;
311 + for ( i = 1; i <= 10; i++ ) {
312 + sum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );
313 + }
314 + return checkResult( sum, secondCN );
315 + }
316 + return false;
317 +
318 +}, "Please specify a valid CPF number" );
319 +
320 +// https://jqueryvalidation.org/creditcard-method/
321 +// based on https://en.wikipedia.org/wiki/Luhn_algorithm
322 +$.validator.addMethod( "creditcard", function( value, element ) {
323 + if ( this.optional( element ) ) {
324 + return "dependency-mismatch";
325 + }
326 +
327 + // Accept only spaces, digits and dashes
328 + if ( /[^0-9 \-]+/.test( value ) ) {
329 + return false;
330 + }
331 +
332 + var nCheck = 0,
333 + nDigit = 0,
334 + bEven = false,
335 + n, cDigit;
336 +
337 + value = value.replace( /\D/g, "" );
338 +
339 + // Basing min and max length on
340 + // https://developer.ean.com/general_info/Valid_Credit_Card_Types
341 + if ( value.length < 13 || value.length > 19 ) {
342 + return false;
343 + }
344 +
345 + for ( n = value.length - 1; n >= 0; n-- ) {
346 + cDigit = value.charAt( n );
347 + nDigit = parseInt( cDigit, 10 );
348 + if ( bEven ) {
349 + if ( ( nDigit *= 2 ) > 9 ) {
350 + nDigit -= 9;
351 + }
352 + }
353 +
354 + nCheck += nDigit;
355 + bEven = !bEven;
356 + }
357 +
358 + return ( nCheck % 10 ) === 0;
359 +}, "Please enter a valid credit card number." );
360 +
361 +/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
362 + * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
363 + * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
364 + */
365 +$.validator.addMethod( "creditcardtypes", function( value, element, param ) {
366 + if ( /[^0-9\-]+/.test( value ) ) {
367 + return false;
368 + }
369 +
370 + value = value.replace( /\D/g, "" );
371 +
372 + var validTypes = 0x0000;
373 +
374 + if ( param.mastercard ) {
375 + validTypes |= 0x0001;
376 + }
377 + if ( param.visa ) {
378 + validTypes |= 0x0002;
379 + }
380 + if ( param.amex ) {
381 + validTypes |= 0x0004;
382 + }
383 + if ( param.dinersclub ) {
384 + validTypes |= 0x0008;
385 + }
386 + if ( param.enroute ) {
387 + validTypes |= 0x0010;
388 + }
389 + if ( param.discover ) {
390 + validTypes |= 0x0020;
391 + }
392 + if ( param.jcb ) {
393 + validTypes |= 0x0040;
394 + }
395 + if ( param.unknown ) {
396 + validTypes |= 0x0080;
397 + }
398 + if ( param.all ) {
399 + validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
400 + }
401 + if ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard
402 + return value.length === 16;
403 + }
404 + if ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa
405 + return value.length === 16;
406 + }
407 + if ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex
408 + return value.length === 15;
409 + }
410 + if ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub
411 + return value.length === 14;
412 + }
413 + if ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute
414 + return value.length === 15;
415 + }
416 + if ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover
417 + return value.length === 16;
418 + }
419 + if ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb
420 + return value.length === 16;
421 + }
422 + if ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb
423 + return value.length === 15;
424 + }
425 + if ( validTypes & 0x0080 ) { // Unknown
426 + return true;
427 + }
428 + return false;
429 +}, "Please enter a valid credit card number." );
430 +
431 +/**
432 + * Validates currencies with any given symbols by @jameslouiz
433 + * Symbols can be optional or required. Symbols required by default
434 + *
435 + * Usage examples:
436 + * currency: ["£", false] - Use false for soft currency validation
437 + * currency: ["$", false]
438 + * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc
439 + *
440 + * <input class="currencyInput" name="currencyInput">
441 + *
442 + * Soft symbol checking
443 + * currencyInput: {
444 + * currency: ["$", false]
445 + * }
446 + *
447 + * Strict symbol checking (default)
448 + * currencyInput: {
449 + * currency: "$"
450 + * //OR
451 + * currency: ["$", true]
452 + * }
453 + *
454 + * Multiple Symbols
455 + * currencyInput: {
456 + * currency: "$,£,¢"
457 + * }
458 + */
459 +$.validator.addMethod( "currency", function( value, element, param ) {
460 + var isParamString = typeof param === "string",
461 + symbol = isParamString ? param : param[ 0 ],
462 + soft = isParamString ? true : param[ 1 ],
463 + regex;
464 +
465 + symbol = symbol.replace( /,/g, "" );
466 + symbol = soft ? symbol + "]" : symbol + "]?";
467 + regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$";
468 + regex = new RegExp( regex );
469 + return this.optional( element ) || regex.test( value );
470 +
471 +}, "Please specify a valid currency" );
472 +
473 +$.validator.addMethod( "dateFA", function( value, element ) {
474 + return this.optional( element ) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );
475 +}, $.validator.messages.date );
476 +
477 +/**
478 + * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
479 + *
480 + * @example $.validator.methods.date("01/01/1900")
481 + * @result true
482 + *
483 + * @example $.validator.methods.date("01/13/1990")
484 + * @result false
485 + *
486 + * @example $.validator.methods.date("01.01.1900")
487 + * @result false
488 + *
489 + * @example <input name="pippo" class="{dateITA:true}" />
490 + * @desc Declares an optional input element whose value must be a valid date.
491 + *
492 + * @name $.validator.methods.dateITA
493 + * @type Boolean
494 + * @cat Plugins/Validate/Methods
495 + */
496 +$.validator.addMethod( "dateITA", function( value, element ) {
497 + var check = false,
498 + re = /^\d{1,2}\/\d{1,2}\/\d{4}$/,
499 + adata, gg, mm, aaaa, xdata;
500 + if ( re.test( value ) ) {
501 + adata = value.split( "/" );
502 + gg = parseInt( adata[ 0 ], 10 );
503 + mm = parseInt( adata[ 1 ], 10 );
504 + aaaa = parseInt( adata[ 2 ], 10 );
505 + xdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );
506 + if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {
507 + check = true;
508 + } else {
509 + check = false;
510 + }
511 + } else {
512 + check = false;
513 + }
514 + return this.optional( element ) || check;
515 +}, $.validator.messages.date );
516 +
517 +$.validator.addMethod( "dateNL", function( value, element ) {
518 + return this.optional( element ) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test( value );
519 +}, $.validator.messages.date );
520 +
521 +// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept
522 +$.validator.addMethod( "extension", function( value, element, param ) {
523 + param = typeof param === "string" ? param.replace( /,/g, "|" ) : "png|jpe?g|gif";
524 + return this.optional( element ) || value.match( new RegExp( "\\.(" + param + ")$", "i" ) );
525 +}, $.validator.format( "Please enter a value with a valid extension." ) );
526 +
527 +/**
528 + * Dutch giro account numbers (not bank numbers) have max 7 digits
529 + */
530 +$.validator.addMethod( "giroaccountNL", function( value, element ) {
531 + return this.optional( element ) || /^[0-9]{1,7}$/.test( value );
532 +}, "Please specify a valid giro account number" );
533 +
534 +/**
535 + * IBAN is the international bank account number.
536 + * It has a country - specific format, that is checked here too
537 + *
538 + * Validation is case-insensitive. Please make sure to normalize input yourself.
539 + */
540 +$.validator.addMethod( "iban", function( value, element ) {
541 +
542 + // Some quick simple tests to prevent needless work
543 + if ( this.optional( element ) ) {
544 + return true;
545 + }
546 +
547 + // Remove spaces and to upper case
548 + var iban = value.replace( / /g, "" ).toUpperCase(),
549 + ibancheckdigits = "",
550 + leadingZeroes = true,
551 + cRest = "",
552 + cOperator = "",
553 + countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;
554 +
555 + // Check for IBAN code length.
556 + // It contains:
557 + // country code ISO 3166-1 - two letters,
558 + // two check digits,
559 + // Basic Bank Account Number (BBAN) - up to 30 chars
560 + var minimalIBANlength = 5;
561 + if ( iban.length < minimalIBANlength ) {
562 + return false;
563 + }
564 +
565 + // Check the country code and find the country specific format
566 + countrycode = iban.substring( 0, 2 );
567 + bbancountrypatterns = {
568 + "AL": "\\d{8}[\\dA-Z]{16}",
569 + "AD": "\\d{8}[\\dA-Z]{12}",
570 + "AT": "\\d{16}",
571 + "AZ": "[\\dA-Z]{4}\\d{20}",
572 + "BE": "\\d{12}",
573 + "BH": "[A-Z]{4}[\\dA-Z]{14}",
574 + "BA": "\\d{16}",
575 + "BR": "\\d{23}[A-Z][\\dA-Z]",
576 + "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}",
577 + "CR": "\\d{17}",
578 + "HR": "\\d{17}",
579 + "CY": "\\d{8}[\\dA-Z]{16}",
580 + "CZ": "\\d{20}",
581 + "DK": "\\d{14}",
582 + "DO": "[A-Z]{4}\\d{20}",
583 + "EE": "\\d{16}",
584 + "FO": "\\d{14}",
585 + "FI": "\\d{14}",
586 + "FR": "\\d{10}[\\dA-Z]{11}\\d{2}",
587 + "GE": "[\\dA-Z]{2}\\d{16}",
588 + "DE": "\\d{18}",
589 + "GI": "[A-Z]{4}[\\dA-Z]{15}",
590 + "GR": "\\d{7}[\\dA-Z]{16}",
591 + "GL": "\\d{14}",
592 + "GT": "[\\dA-Z]{4}[\\dA-Z]{20}",
593 + "HU": "\\d{24}",
594 + "IS": "\\d{22}",
595 + "IE": "[\\dA-Z]{4}\\d{14}",
596 + "IL": "\\d{19}",
597 + "IT": "[A-Z]\\d{10}[\\dA-Z]{12}",
598 + "KZ": "\\d{3}[\\dA-Z]{13}",
599 + "KW": "[A-Z]{4}[\\dA-Z]{22}",
600 + "LV": "[A-Z]{4}[\\dA-Z]{13}",
601 + "LB": "\\d{4}[\\dA-Z]{20}",
602 + "LI": "\\d{5}[\\dA-Z]{12}",
603 + "LT": "\\d{16}",
604 + "LU": "\\d{3}[\\dA-Z]{13}",
605 + "MK": "\\d{3}[\\dA-Z]{10}\\d{2}",
606 + "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}",
607 + "MR": "\\d{23}",
608 + "MU": "[A-Z]{4}\\d{19}[A-Z]{3}",
609 + "MC": "\\d{10}[\\dA-Z]{11}\\d{2}",
610 + "MD": "[\\dA-Z]{2}\\d{18}",
611 + "ME": "\\d{18}",
612 + "NL": "[A-Z]{4}\\d{10}",
613 + "NO": "\\d{11}",
614 + "PK": "[\\dA-Z]{4}\\d{16}",
615 + "PS": "[\\dA-Z]{4}\\d{21}",
616 + "PL": "\\d{24}",
617 + "PT": "\\d{21}",
618 + "RO": "[A-Z]{4}[\\dA-Z]{16}",
619 + "SM": "[A-Z]\\d{10}[\\dA-Z]{12}",
620 + "SA": "\\d{2}[\\dA-Z]{18}",
621 + "RS": "\\d{18}",
622 + "SK": "\\d{20}",
623 + "SI": "\\d{15}",
624 + "ES": "\\d{20}",
625 + "SE": "\\d{20}",
626 + "CH": "\\d{5}[\\dA-Z]{12}",
627 + "TN": "\\d{20}",
628 + "TR": "\\d{5}[\\dA-Z]{17}",
629 + "AE": "\\d{3}\\d{16}",
630 + "GB": "[A-Z]{4}\\d{14}",
631 + "VG": "[\\dA-Z]{4}\\d{16}"
632 + };
633 +
634 + bbanpattern = bbancountrypatterns[ countrycode ];
635 +
636 + // As new countries will start using IBAN in the
637 + // future, we only check if the countrycode is known.
638 + // This prevents false negatives, while almost all
639 + // false positives introduced by this, will be caught
640 + // by the checksum validation below anyway.
641 + // Strict checking should return FALSE for unknown
642 + // countries.
643 + if ( typeof bbanpattern !== "undefined" ) {
644 + ibanregexp = new RegExp( "^[A-Z]{2}\\d{2}" + bbanpattern + "$", "" );
645 + if ( !( ibanregexp.test( iban ) ) ) {
646 + return false; // Invalid country specific format
647 + }
648 + }
649 +
650 + // Now check the checksum, first convert to digits
651 + ibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );
652 + for ( i = 0; i < ibancheck.length; i++ ) {
653 + charAt = ibancheck.charAt( i );
654 + if ( charAt !== "0" ) {
655 + leadingZeroes = false;
656 + }
657 + if ( !leadingZeroes ) {
658 + ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf( charAt );
659 + }
660 + }
661 +
662 + // Calculate the result of: ibancheckdigits % 97
663 + for ( p = 0; p < ibancheckdigits.length; p++ ) {
664 + cChar = ibancheckdigits.charAt( p );
665 + cOperator = "" + cRest + "" + cChar;
666 + cRest = cOperator % 97;
667 + }
668 + return cRest === 1;
669 +}, "Please specify a valid IBAN" );
670 +
671 +$.validator.addMethod( "integer", function( value, element ) {
672 + return this.optional( element ) || /^-?\d+$/.test( value );
673 +}, "A positive or negative non-decimal number please" );
674 +
675 +$.validator.addMethod( "ipv4", function( value, element ) {
676 + return this.optional( element ) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test( value );
677 +}, "Please enter a valid IP v4 address." );
678 +
679 +$.validator.addMethod( "ipv6", function( value, element ) {
680 + return this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );
681 +}, "Please enter a valid IP v6 address." );
682 +
683 +$.validator.addMethod( "lettersonly", function( value, element ) {
684 + return this.optional( element ) || /^[a-z]+$/i.test( value );
685 +}, "Letters only please" );
686 +
687 +$.validator.addMethod( "letterswithbasicpunc", function( value, element ) {
688 + return this.optional( element ) || /^[a-z\-.,()'"\s]+$/i.test( value );
689 +}, "Letters or punctuation only please" );
690 +
691 +$.validator.addMethod( "mobileNL", function( value, element ) {
692 + return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
693 +}, "Please specify a valid mobile number" );
694 +
695 +/* For UK phone functions, do the following server side processing:
696 + * Compare original input with this RegEx pattern:
697 + * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
698 + * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
699 + * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
700 + * A number of very detailed GB telephone number RegEx patterns can also be found at:
701 + * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
702 + */
703 +$.validator.addMethod( "mobileUK", function( phone_number, element ) {
704 + phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
705 + return this.optional( element ) || phone_number.length > 9 &&
706 + phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/ );
707 +}, "Please specify a valid mobile number" );
708 +
709 +$.validator.addMethod( "netmask", function( value, element ) {
710 + return this.optional( element ) || /^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)/i.test( value );
711 +}, "Please enter a valid netmask." );
712 +
713 +/*
714 + * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish
715 + * authorities to any foreigner.
716 + *
717 + * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal
718 + * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to
719 + * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.
720 + */
721 +$.validator.addMethod( "nieES", function( value, element ) {
722 + "use strict";
723 +
724 + if ( this.optional( element ) ) {
725 + return true;
726 + }
727 +
728 + var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );
729 + var validChars = "TRWAGMYFPDXBNJZSQVHLCKET",
730 + letter = value.substr( value.length - 1 ).toUpperCase(),
731 + number;
732 +
733 + value = value.toString().toUpperCase();
734 +
735 + // Quick format test
736 + if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {
737 + return false;
738 + }
739 +
740 + // X means same number
741 + // Y means number + 10000000
742 + // Z means number + 20000000
743 + value = value.replace( /^[X]/, "0" )
744 + .replace( /^[Y]/, "1" )
745 + .replace( /^[Z]/, "2" );
746 +
747 + number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );
748 +
749 + return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;
750 +
751 +}, "Please specify a valid NIE number." );
752 +
753 +/*
754 + * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
755 + */
756 +$.validator.addMethod( "nifES", function( value, element ) {
757 + "use strict";
758 +
759 + if ( this.optional( element ) ) {
760 + return true;
761 + }
762 +
763 + value = value.toUpperCase();
764 +
765 + // Basic format test
766 + if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) {
767 + return false;
768 + }
769 +
770 + // Test NIF
771 + if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {
772 + return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );
773 + }
774 +
775 + // Test specials NIF (starts with K, L or M)
776 + if ( /^[KLM]{1}/.test( value ) ) {
777 + return ( value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 1 ) % 23 ) );
778 + }
779 +
780 + return false;
781 +
782 +}, "Please specify a valid NIF number." );
783 +
784 +/*
785 + * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies
786 + */
787 +$.validator.addMethod( "nipPL", function( value ) {
788 + "use strict";
789 +
790 + value = value.replace( /[^0-9]/g, "" );
791 +
792 + if ( value.length !== 10 ) {
793 + return false;
794 + }
795 +
796 + var arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];
797 + var intSum = 0;
798 + for ( var i = 0; i < 9; i++ ) {
799 + intSum += arrSteps[ i ] * value[ i ];
800 + }
801 + var int2 = intSum % 11;
802 + var intControlNr = ( int2 === 10 ) ? 0 : int2;
803 +
804 + return ( intControlNr === parseInt( value[ 9 ], 10 ) );
805 +}, "Please specify a valid NIP number." );
806 +
807 +$.validator.addMethod( "notEqualTo", function( value, element, param ) {
808 + return this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );
809 +}, "Please enter a different value, values must not be the same." );
810 +
811 +$.validator.addMethod( "nowhitespace", function( value, element ) {
812 + return this.optional( element ) || /^\S+$/i.test( value );
813 +}, "No white space please" );
814 +
815 +/**
816 +* Return true if the field value matches the given format RegExp
817 +*
818 +* @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/)
819 +* @result true
820 +*
821 +* @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/)
822 +* @result false
823 +*
824 +* @name $.validator.methods.pattern
825 +* @type Boolean
826 +* @cat Plugins/Validate/Methods
827 +*/
828 +$.validator.addMethod( "pattern", function( value, element, param ) {
829 + if ( this.optional( element ) ) {
830 + return true;
831 + }
832 + if ( typeof param === "string" ) {
833 + param = new RegExp( "^(?:" + param + ")$" );
834 + }
835 + return param.test( value );
836 +}, "Invalid format." );
837 +
838 +/**
839 + * Dutch phone numbers have 10 digits (or 11 and start with +31).
840 + */
841 +$.validator.addMethod( "phoneNL", function( value, element ) {
842 + return this.optional( element ) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test( value );
843 +}, "Please specify a valid phone number." );
844 +
845 +/* For UK phone functions, do the following server side processing:
846 + * Compare original input with this RegEx pattern:
847 + * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
848 + * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
849 + * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
850 + * A number of very detailed GB telephone number RegEx patterns can also be found at:
851 + * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
852 + */
853 +
854 +// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers
855 +$.validator.addMethod( "phonesUK", function( phone_number, element ) {
856 + phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
857 + return this.optional( element ) || phone_number.length > 9 &&
858 + phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/ );
859 +}, "Please specify a valid uk phone number" );
860 +
861 +/* For UK phone functions, do the following server side processing:
862 + * Compare original input with this RegEx pattern:
863 + * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$
864 + * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'
865 + * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.
866 + * A number of very detailed GB telephone number RegEx patterns can also be found at:
867 + * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers
868 + */
869 +$.validator.addMethod( "phoneUK", function( phone_number, element ) {
870 + phone_number = phone_number.replace( /\(|\)|\s+|-/g, "" );
871 + return this.optional( element ) || phone_number.length > 9 &&
872 + phone_number.match( /^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/ );
873 +}, "Please specify a valid phone number" );
874 +
875 +/**
876 + * Matches US phone number format
877 + *
878 + * where the area code may not start with 1 and the prefix may not start with 1
879 + * allows '-' or ' ' as a separator and allows parens around area code
880 + * some people may want to put a '1' in front of their number
881 + *
882 + * 1(212)-999-2345 or
883 + * 212 999 2344 or
884 + * 212-999-0983
885 + *
886 + * but not
887 + * 111-123-5434
888 + * and not
889 + * 212 123 4567
890 + */
891 +$.validator.addMethod( "phoneUS", function( phone_number, element ) {
892 + phone_number = phone_number.replace( /\s+/g, "" );
893 + return this.optional( element ) || phone_number.length > 9 &&
894 + phone_number.match( /^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/ );
895 +}, "Please specify a valid phone number" );
896 +
897 +/*
898 +* Valida CEPs do brasileiros:
899 +*
900 +* Formatos aceitos:
901 +* 99999-999
902 +* 99.999-999
903 +* 99999999
904 +*/
905 +$.validator.addMethod( "postalcodeBR", function( cep_value, element ) {
906 + return this.optional( element ) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value );
907 +}, "Informe um CEP válido." );
908 +
909 +/**
910 + * Matches a valid Canadian Postal Code
911 + *
912 + * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element )
913 + * @result true
914 + *
915 + * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element )
916 + * @result false
917 + *
918 + * @name jQuery.validator.methods.postalCodeCA
919 + * @type Boolean
920 + * @cat Plugins/Validate/Methods
921 + */
922 +$.validator.addMethod( "postalCodeCA", function( value, element ) {
923 + return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ] *\d[ABCEGHJKLMNPRSTVWXYZ]\d$/i.test( value );
924 +}, "Please specify a valid postal code" );
925 +
926 +/* Matches Italian postcode (CAP) */
927 +$.validator.addMethod( "postalcodeIT", function( value, element ) {
928 + return this.optional( element ) || /^\d{5}$/.test( value );
929 +}, "Please specify a valid postal code" );
930 +
931 +$.validator.addMethod( "postalcodeNL", function( value, element ) {
932 + return this.optional( element ) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test( value );
933 +}, "Please specify a valid postal code" );
934 +
935 +// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)
936 +$.validator.addMethod( "postcodeUK", function( value, element ) {
937 + return this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test( value );
938 +}, "Please specify a valid UK postcode" );
939 +
940 +/*
941 + * Lets you say "at least X inputs that match selector Y must be filled."
942 + *
943 + * The end result is that neither of these inputs:
944 + *
945 + * <input class="productinfo" name="partnumber">
946 + * <input class="productinfo" name="description">
947 + *
948 + * ...will validate unless at least one of them is filled.
949 + *
950 + * partnumber: {require_from_group: [1,".productinfo"]},
951 + * description: {require_from_group: [1,".productinfo"]}
952 + *
953 + * options[0]: number of fields that must be filled in the group
954 + * options[1]: CSS selector that defines the group of conditionally required fields
955 + */
956 +$.validator.addMethod( "require_from_group", function( value, element, options ) {
957 + var $fields = $( options[ 1 ], element.form ),
958 + $fieldsFirst = $fields.eq( 0 ),
959 + validator = $fieldsFirst.data( "valid_req_grp" ) ? $fieldsFirst.data( "valid_req_grp" ) : $.extend( {}, this ),
960 + isValid = $fields.filter( function() {
961 + return validator.elementValue( this );
962 + } ).length >= options[ 0 ];
963 +
964 + // Store the cloned validator for future validation
965 + $fieldsFirst.data( "valid_req_grp", validator );
966 +
967 + // If element isn't being validated, run each require_from_group field's validation rules
968 + if ( !$( element ).data( "being_validated" ) ) {
969 + $fields.data( "being_validated", true );
970 + $fields.each( function() {
971 + validator.element( this );
972 + } );
973 + $fields.data( "being_validated", false );
974 + }
975 + return isValid;
976 +}, $.validator.format( "Please fill at least {0} of these fields." ) );
977 +
978 +/*
979 + * Lets you say "either at least X inputs that match selector Y must be filled,
980 + * OR they must all be skipped (left blank)."
981 + *
982 + * The end result, is that none of these inputs:
983 + *
984 + * <input class="productinfo" name="partnumber">
985 + * <input class="productinfo" name="description">
986 + * <input class="productinfo" name="color">
987 + *
988 + * ...will validate unless either at least two of them are filled,
989 + * OR none of them are.
990 + *
991 + * partnumber: {skip_or_fill_minimum: [2,".productinfo"]},
992 + * description: {skip_or_fill_minimum: [2,".productinfo"]},
993 + * color: {skip_or_fill_minimum: [2,".productinfo"]}
994 + *
995 + * options[0]: number of fields that must be filled in the group
996 + * options[1]: CSS selector that defines the group of conditionally required fields
997 + *
998 + */
999 +$.validator.addMethod( "skip_or_fill_minimum", function( value, element, options ) {
1000 + var $fields = $( options[ 1 ], element.form ),
1001 + $fieldsFirst = $fields.eq( 0 ),
1002 + validator = $fieldsFirst.data( "valid_skip" ) ? $fieldsFirst.data( "valid_skip" ) : $.extend( {}, this ),
1003 + numberFilled = $fields.filter( function() {
1004 + return validator.elementValue( this );
1005 + } ).length,
1006 + isValid = numberFilled === 0 || numberFilled >= options[ 0 ];
1007 +
1008 + // Store the cloned validator for future validation
1009 + $fieldsFirst.data( "valid_skip", validator );
1010 +
1011 + // If element isn't being validated, run each skip_or_fill_minimum field's validation rules
1012 + if ( !$( element ).data( "being_validated" ) ) {
1013 + $fields.data( "being_validated", true );
1014 + $fields.each( function() {
1015 + validator.element( this );
1016 + } );
1017 + $fields.data( "being_validated", false );
1018 + }
1019 + return isValid;
1020 +}, $.validator.format( "Please either skip these fields or fill at least {0} of them." ) );
1021 +
1022 +/* Validates US States and/or Territories by @jdforsythe
1023 + * Can be case insensitive or require capitalization - default is case insensitive
1024 + * Can include US Territories or not - default does not
1025 + * Can include US Military postal abbreviations (AA, AE, AP) - default does not
1026 + *
1027 + * Note: "States" always includes DC (District of Colombia)
1028 + *
1029 + * Usage examples:
1030 + *
1031 + * This is the default - case insensitive, no territories, no military zones
1032 + * stateInput: {
1033 + * caseSensitive: false,
1034 + * includeTerritories: false,
1035 + * includeMilitary: false
1036 + * }
1037 + *
1038 + * Only allow capital letters, no territories, no military zones
1039 + * stateInput: {
1040 + * caseSensitive: false
1041 + * }
1042 + *
1043 + * Case insensitive, include territories but not military zones
1044 + * stateInput: {
1045 + * includeTerritories: true
1046 + * }
1047 + *
1048 + * Only allow capital letters, include territories and military zones
1049 + * stateInput: {
1050 + * caseSensitive: true,
1051 + * includeTerritories: true,
1052 + * includeMilitary: true
1053 + * }
1054 + *
1055 + */
1056 +$.validator.addMethod( "stateUS", function( value, element, options ) {
1057 + var isDefault = typeof options === "undefined",
1058 + caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive,
1059 + includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories,
1060 + includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary,
1061 + regex;
1062 +
1063 + if ( !includeTerritories && !includeMilitary ) {
1064 + regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
1065 + } else if ( includeTerritories && includeMilitary ) {
1066 + regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
1067 + } else if ( includeTerritories ) {
1068 + regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$";
1069 + } else {
1070 + regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$";
1071 + }
1072 +
1073 + regex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, "i" );
1074 + return this.optional( element ) || regex.test( value );
1075 +}, "Please specify a valid state" );
1076 +
1077 +// TODO check if value starts with <, otherwise don't try stripping anything
1078 +$.validator.addMethod( "strippedminlength", function( value, element, param ) {
1079 + return $( value ).text().length >= param;
1080 +}, $.validator.format( "Please enter at least {0} characters" ) );
1081 +
1082 +$.validator.addMethod( "time", function( value, element ) {
1083 + return this.optional( element ) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test( value );
1084 +}, "Please enter a valid time, between 00:00 and 23:59" );
1085 +
1086 +$.validator.addMethod( "time12h", function( value, element ) {
1087 + return this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test( value );
1088 +}, "Please enter a valid time in 12-hour am/pm format" );
1089 +
1090 +// Same as url, but TLD is optional
1091 +$.validator.addMethod( "url2", function( value, element ) {
1092 + return this.optional( element ) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test( value );
1093 +}, $.validator.messages.url );
1094 +
1095 +/**
1096 + * Return true, if the value is a valid vehicle identification number (VIN).
1097 + *
1098 + * Works with all kind of text inputs.
1099 + *
1100 + * @example <input type="text" size="20" name="VehicleID" class="{required:true,vinUS:true}" />
1101 + * @desc Declares a required input element whose value must be a valid vehicle identification number.
1102 + *
1103 + * @name $.validator.methods.vinUS
1104 + * @type Boolean
1105 + * @cat Plugins/Validate/Methods
1106 + */
1107 +$.validator.addMethod( "vinUS", function( v ) {
1108 + if ( v.length !== 17 ) {
1109 + return false;
1110 + }
1111 +
1112 + var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ],
1113 + VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],
1114 + FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],
1115 + rs = 0,
1116 + i, n, d, f, cd, cdv;
1117 +
1118 + for ( i = 0; i < 17; i++ ) {
1119 + f = FL[ i ];
1120 + d = v.slice( i, i + 1 );
1121 + if ( i === 8 ) {
1122 + cdv = d;
1123 + }
1124 + if ( !isNaN( d ) ) {
1125 + d *= f;
1126 + } else {
1127 + for ( n = 0; n < LL.length; n++ ) {
1128 + if ( d.toUpperCase() === LL[ n ] ) {
1129 + d = VL[ n ];
1130 + d *= f;
1131 + if ( isNaN( cdv ) && n === 8 ) {
1132 + cdv = LL[ n ];
1133 + }
1134 + break;
1135 + }
1136 + }
1137 + }
1138 + rs += d;
1139 + }
1140 + cd = rs % 11;
1141 + if ( cd === 10 ) {
1142 + cd = "X";
1143 + }
1144 + if ( cd === cdv ) {
1145 + return true;
1146 + }
1147 + return false;
1148 +}, "The specified vehicle identification number (VIN) is invalid." );
1149 +
1150 +$.validator.addMethod( "zipcodeUS", function( value, element ) {
1151 + return this.optional( element ) || /^\d{5}(-\d{4})?$/.test( value );
1152 +}, "The specified US ZIP Code is invalid" );
1153 +
1154 +$.validator.addMethod( "ziprange", function( value, element ) {
1155 + return this.optional( element ) || /^90[2-5]\d\{2\}-\d{4}$/.test( value );
1156 +}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx" );
1157 +return $;
1158 +}));
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery-validation/dist/jquery.validate.js new
+1601
@@ -0,0 +1,1601 @@
1 +/*!
2 + * jQuery Validation Plugin v1.17.0
3 + *
4 + * https://jqueryvalidation.org/
5 + *
6 + * Copyright (c) 2017 Jörn Zaefferer
7 + * Released under the MIT license
8 + */
9 +(function( factory ) {
10 + if ( typeof define === "function" && define.amd ) {
11 + define( ["jquery"], factory );
12 + } else if (typeof module === "object" && module.exports) {
13 + module.exports = factory( require( "jquery" ) );
14 + } else {
15 + factory( jQuery );
16 + }
17 +}(function( $ ) {
18 +
19 +$.extend( $.fn, {
20 +
21 + // https://jqueryvalidation.org/validate/
22 + validate: function( options ) {
23 +
24 + // If nothing is selected, return nothing; can't chain anyway
25 + if ( !this.length ) {
26 + if ( options && options.debug && window.console ) {
27 + console.warn( "Nothing selected, can't validate, returning nothing." );
28 + }
29 + return;
30 + }
31 +
32 + // Check if a validator for this form was already created
33 + var validator = $.data( this[ 0 ], "validator" );
34 + if ( validator ) {
35 + return validator;
36 + }
37 +
38 + // Add novalidate tag if HTML5.
39 + this.attr( "novalidate", "novalidate" );
40 +
41 + validator = new $.validator( options, this[ 0 ] );
42 + $.data( this[ 0 ], "validator", validator );
43 +
44 + if ( validator.settings.onsubmit ) {
45 +
46 + this.on( "click.validate", ":submit", function( event ) {
47 +
48 + // Track the used submit button to properly handle scripted
49 + // submits later.
50 + validator.submitButton = event.currentTarget;
51 +
52 + // Allow suppressing validation by adding a cancel class to the submit button
53 + if ( $( this ).hasClass( "cancel" ) ) {
54 + validator.cancelSubmit = true;
55 + }
56 +
57 + // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
58 + if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
59 + validator.cancelSubmit = true;
60 + }
61 + } );
62 +
63 + // Validate the form on submit
64 + this.on( "submit.validate", function( event ) {
65 + if ( validator.settings.debug ) {
66 +
67 + // Prevent form submit to be able to see console output
68 + event.preventDefault();
69 + }
70 + function handle() {
71 + var hidden, result;
72 +
73 + // Insert a hidden input as a replacement for the missing submit button
74 + // The hidden input is inserted in two cases:
75 + // - A user defined a `submitHandler`
76 + // - There was a pending request due to `remote` method and `stopRequest()`
77 + // was called to submit the form in case it's valid
78 + if ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {
79 + hidden = $( "<input type='hidden'/>" )
80 + .attr( "name", validator.submitButton.name )
81 + .val( $( validator.submitButton ).val() )
82 + .appendTo( validator.currentForm );
83 + }
84 +
85 + if ( validator.settings.submitHandler ) {
86 + result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
87 + if ( hidden ) {
88 +
89 + // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
90 + hidden.remove();
91 + }
92 + if ( result !== undefined ) {
93 + return result;
94 + }
95 + return false;
96 + }
97 + return true;
98 + }
99 +
100 + // Prevent submit for invalid forms or custom submit handlers
101 + if ( validator.cancelSubmit ) {
102 + validator.cancelSubmit = false;
103 + return handle();
104 + }
105 + if ( validator.form() ) {
106 + if ( validator.pendingRequest ) {
107 + validator.formSubmitted = true;
108 + return false;
109 + }
110 + return handle();
111 + } else {
112 + validator.focusInvalid();
113 + return false;
114 + }
115 + } );
116 + }
117 +
118 + return validator;
119 + },
120 +
121 + // https://jqueryvalidation.org/valid/
122 + valid: function() {
123 + var valid, validator, errorList;
124 +
125 + if ( $( this[ 0 ] ).is( "form" ) ) {
126 + valid = this.validate().form();
127 + } else {
128 + errorList = [];
129 + valid = true;
130 + validator = $( this[ 0 ].form ).validate();
131 + this.each( function() {
132 + valid = validator.element( this ) && valid;
133 + if ( !valid ) {
134 + errorList = errorList.concat( validator.errorList );
135 + }
136 + } );
137 + validator.errorList = errorList;
138 + }
139 + return valid;
140 + },
141 +
142 + // https://jqueryvalidation.org/rules/
143 + rules: function( command, argument ) {
144 + var element = this[ 0 ],
145 + settings, staticRules, existingRules, data, param, filtered;
146 +
147 + // If nothing is selected, return empty object; can't chain anyway
148 + if ( element == null ) {
149 + return;
150 + }
151 +
152 + if ( !element.form && element.hasAttribute( "contenteditable" ) ) {
153 + element.form = this.closest( "form" )[ 0 ];
154 + element.name = this.attr( "name" );
155 + }
156 +
157 + if ( element.form == null ) {
158 + return;
159 + }
160 +
161 + if ( command ) {
162 + settings = $.data( element.form, "validator" ).settings;
163 + staticRules = settings.rules;
164 + existingRules = $.validator.staticRules( element );
165 + switch ( command ) {
166 + case "add":
167 + $.extend( existingRules, $.validator.normalizeRule( argument ) );
168 +
169 + // Remove messages from rules, but allow them to be set separately
170 + delete existingRules.messages;
171 + staticRules[ element.name ] = existingRules;
172 + if ( argument.messages ) {
173 + settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
174 + }
175 + break;
176 + case "remove":
177 + if ( !argument ) {
178 + delete staticRules[ element.name ];
179 + return existingRules;
180 + }
181 + filtered = {};
182 + $.each( argument.split( /\s/ ), function( index, method ) {
183 + filtered[ method ] = existingRules[ method ];
184 + delete existingRules[ method ];
185 + } );
186 + return filtered;
187 + }
188 + }
189 +
190 + data = $.validator.normalizeRules(
191 + $.extend(
192 + {},
193 + $.validator.classRules( element ),
194 + $.validator.attributeRules( element ),
195 + $.validator.dataRules( element ),
196 + $.validator.staticRules( element )
197 + ), element );
198 +
199 + // Make sure required is at front
200 + if ( data.required ) {
201 + param = data.required;
202 + delete data.required;
203 + data = $.extend( { required: param }, data );
204 + }
205 +
206 + // Make sure remote is at back
207 + if ( data.remote ) {
208 + param = data.remote;
209 + delete data.remote;
210 + data = $.extend( data, { remote: param } );
211 + }
212 +
213 + return data;
214 + }
215 +} );
216 +
217 +// Custom selectors
218 +$.extend( $.expr.pseudos || $.expr[ ":" ], { // '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
219 +
220 + // https://jqueryvalidation.org/blank-selector/
221 + blank: function( a ) {
222 + return !$.trim( "" + $( a ).val() );
223 + },
224 +
225 + // https://jqueryvalidation.org/filled-selector/
226 + filled: function( a ) {
227 + var val = $( a ).val();
228 + return val !== null && !!$.trim( "" + val );
229 + },
230 +
231 + // https://jqueryvalidation.org/unchecked-selector/
232 + unchecked: function( a ) {
233 + return !$( a ).prop( "checked" );
234 + }
235 +} );
236 +
237 +// Constructor for validator
238 +$.validator = function( options, form ) {
239 + this.settings = $.extend( true, {}, $.validator.defaults, options );
240 + this.currentForm = form;
241 + this.init();
242 +};
243 +
244 +// https://jqueryvalidation.org/jQuery.validator.format/
245 +$.validator.format = function( source, params ) {
246 + if ( arguments.length === 1 ) {
247 + return function() {
248 + var args = $.makeArray( arguments );
249 + args.unshift( source );
250 + return $.validator.format.apply( this, args );
251 + };
252 + }
253 + if ( params === undefined ) {
254 + return source;
255 + }
256 + if ( arguments.length > 2 && params.constructor !== Array ) {
257 + params = $.makeArray( arguments ).slice( 1 );
258 + }
259 + if ( params.constructor !== Array ) {
260 + params = [ params ];
261 + }
262 + $.each( params, function( i, n ) {
263 + source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
264 + return n;
265 + } );
266 + } );
267 + return source;
268 +};
269 +
270 +$.extend( $.validator, {
271 +
272 + defaults: {
273 + messages: {},
274 + groups: {},
275 + rules: {},
276 + errorClass: "error",
277 + pendingClass: "pending",
278 + validClass: "valid",
279 + errorElement: "label",
280 + focusCleanup: false,
281 + focusInvalid: true,
282 + errorContainer: $( [] ),
283 + errorLabelContainer: $( [] ),
284 + onsubmit: true,
285 + ignore: ":hidden",
286 + ignoreTitle: false,
287 + onfocusin: function( element ) {
288 + this.lastActive = element;
289 +
290 + // Hide error label and remove error class on focus if enabled
291 + if ( this.settings.focusCleanup ) {
292 + if ( this.settings.unhighlight ) {
293 + this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
294 + }
295 + this.hideThese( this.errorsFor( element ) );
296 + }
297 + },
298 + onfocusout: function( element ) {
299 + if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
300 + this.element( element );
301 + }
302 + },
303 + onkeyup: function( element, event ) {
304 +
305 + // Avoid revalidate the field when pressing one of the following keys
306 + // Shift => 16
307 + // Ctrl => 17
308 + // Alt => 18
309 + // Caps lock => 20
310 + // End => 35
311 + // Home => 36
312 + // Left arrow => 37
313 + // Up arrow => 38
314 + // Right arrow => 39
315 + // Down arrow => 40
316 + // Insert => 45
317 + // Num lock => 144
318 + // AltGr key => 225
319 + var excludedKeys = [
320 + 16, 17, 18, 20, 35, 36, 37,
321 + 38, 39, 40, 45, 144, 225
322 + ];
323 +
324 + if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
325 + return;
326 + } else if ( element.name in this.submitted || element.name in this.invalid ) {
327 + this.element( element );
328 + }
329 + },
330 + onclick: function( element ) {
331 +
332 + // Click on selects, radiobuttons and checkboxes
333 + if ( element.name in this.submitted ) {
334 + this.element( element );
335 +
336 + // Or option elements, check parent select in that case
337 + } else if ( element.parentNode.name in this.submitted ) {
338 + this.element( element.parentNode );
339 + }
340 + },
341 + highlight: function( element, errorClass, validClass ) {
342 + if ( element.type === "radio" ) {
343 + this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
344 + } else {
345 + $( element ).addClass( errorClass ).removeClass( validClass );
346 + }
347 + },
348 + unhighlight: function( element, errorClass, validClass ) {
349 + if ( element.type === "radio" ) {
350 + this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
351 + } else {
352 + $( element ).removeClass( errorClass ).addClass( validClass );
353 + }
354 + }
355 + },
356 +
357 + // https://jqueryvalidation.org/jQuery.validator.setDefaults/
358 + setDefaults: function( settings ) {
359 + $.extend( $.validator.defaults, settings );
360 + },
361 +
362 + messages: {
363 + required: "This field is required.",
364 + remote: "Please fix this field.",
365 + email: "Please enter a valid email address.",
366 + url: "Please enter a valid URL.",
367 + date: "Please enter a valid date.",
368 + dateISO: "Please enter a valid date (ISO).",
369 + number: "Please enter a valid number.",
370 + digits: "Please enter only digits.",
371 + equalTo: "Please enter the same value again.",
372 + maxlength: $.validator.format( "Please enter no more than {0} characters." ),
373 + minlength: $.validator.format( "Please enter at least {0} characters." ),
374 + rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
375 + range: $.validator.format( "Please enter a value between {0} and {1}." ),
376 + max: $.validator.format( "Please enter a value less than or equal to {0}." ),
377 + min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
378 + step: $.validator.format( "Please enter a multiple of {0}." )
379 + },
380 +
381 + autoCreateRanges: false,
382 +
383 + prototype: {
384 +
385 + init: function() {
386 + this.labelContainer = $( this.settings.errorLabelContainer );
387 + this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
388 + this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
389 + this.submitted = {};
390 + this.valueCache = {};
391 + this.pendingRequest = 0;
392 + this.pending = {};
393 + this.invalid = {};
394 + this.reset();
395 +
396 + var groups = ( this.groups = {} ),
397 + rules;
398 + $.each( this.settings.groups, function( key, value ) {
399 + if ( typeof value === "string" ) {
400 + value = value.split( /\s/ );
401 + }
402 + $.each( value, function( index, name ) {
403 + groups[ name ] = key;
404 + } );
405 + } );
406 + rules = this.settings.rules;
407 + $.each( rules, function( key, value ) {
408 + rules[ key ] = $.validator.normalizeRule( value );
409 + } );
410 +
411 + function delegate( event ) {
412 +
413 + // Set form expando on contenteditable
414 + if ( !this.form && this.hasAttribute( "contenteditable" ) ) {
415 + this.form = $( this ).closest( "form" )[ 0 ];
416 + this.name = $( this ).attr( "name" );
417 + }
418 +
419 + var validator = $.data( this.form, "validator" ),
420 + eventType = "on" + event.type.replace( /^validate/, "" ),
421 + settings = validator.settings;
422 + if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
423 + settings[ eventType ].call( validator, this, event );
424 + }
425 + }
426 +
427 + $( this.currentForm )
428 + .on( "focusin.validate focusout.validate keyup.validate",
429 + ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
430 + "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
431 + "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
432 + "[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate )
433 +
434 + // Support: Chrome, oldIE
435 + // "select" is provided as event.target when clicking a option
436 + .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
437 +
438 + if ( this.settings.invalidHandler ) {
439 + $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
440 + }
441 + },
442 +
443 + // https://jqueryvalidation.org/Validator.form/
444 + form: function() {
445 + this.checkForm();
446 + $.extend( this.submitted, this.errorMap );
447 + this.invalid = $.extend( {}, this.errorMap );
448 + if ( !this.valid() ) {
449 + $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
450 + }
451 + this.showErrors();
452 + return this.valid();
453 + },
454 +
455 + checkForm: function() {
456 + this.prepareForm();
457 + for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
458 + this.check( elements[ i ] );
459 + }
460 + return this.valid();
461 + },
462 +
463 + // https://jqueryvalidation.org/Validator.element/
464 + element: function( element ) {
465 + var cleanElement = this.clean( element ),
466 + checkElement = this.validationTargetFor( cleanElement ),
467 + v = this,
468 + result = true,
469 + rs, group;
470 +
471 + if ( checkElement === undefined ) {
472 + delete this.invalid[ cleanElement.name ];
473 + } else {
474 + this.prepareElement( checkElement );
475 + this.currentElements = $( checkElement );
476 +
477 + // If this element is grouped, then validate all group elements already
478 + // containing a value
479 + group = this.groups[ checkElement.name ];
480 + if ( group ) {
481 + $.each( this.groups, function( name, testgroup ) {
482 + if ( testgroup === group && name !== checkElement.name ) {
483 + cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
484 + if ( cleanElement && cleanElement.name in v.invalid ) {
485 + v.currentElements.push( cleanElement );
486 + result = v.check( cleanElement ) && result;
487 + }
488 + }
489 + } );
490 + }
491 +
492 + rs = this.check( checkElement ) !== false;
493 + result = result && rs;
494 + if ( rs ) {
495 + this.invalid[ checkElement.name ] = false;
496 + } else {
497 + this.invalid[ checkElement.name ] = true;
498 + }
499 +
500 + if ( !this.numberOfInvalids() ) {
501 +
502 + // Hide error containers on last error
503 + this.toHide = this.toHide.add( this.containers );
504 + }
505 + this.showErrors();
506 +
507 + // Add aria-invalid status for screen readers
508 + $( element ).attr( "aria-invalid", !rs );
509 + }
510 +
511 + return result;
512 + },
513 +
514 + // https://jqueryvalidation.org/Validator.showErrors/
515 + showErrors: function( errors ) {
516 + if ( errors ) {
517 + var validator = this;
518 +
519 + // Add items to error list and map
520 + $.extend( this.errorMap, errors );
521 + this.errorList = $.map( this.errorMap, function( message, name ) {
522 + return {
523 + message: message,
524 + element: validator.findByName( name )[ 0 ]
525 + };
526 + } );
527 +
528 + // Remove items from success list
529 + this.successList = $.grep( this.successList, function( element ) {
530 + return !( element.name in errors );
531 + } );
532 + }
533 + if ( this.settings.showErrors ) {
534 + this.settings.showErrors.call( this, this.errorMap, this.errorList );
535 + } else {
536 + this.defaultShowErrors();
537 + }
538 + },
539 +
540 + // https://jqueryvalidation.org/Validator.resetForm/
541 + resetForm: function() {
542 + if ( $.fn.resetForm ) {
543 + $( this.currentForm ).resetForm();
544 + }
545 + this.invalid = {};
546 + this.submitted = {};
547 + this.prepareForm();
548 + this.hideErrors();
549 + var elements = this.elements()
550 + .removeData( "previousValue" )
551 + .removeAttr( "aria-invalid" );
552 +
553 + this.resetElements( elements );
554 + },
555 +
556 + resetElements: function( elements ) {
557 + var i;
558 +
559 + if ( this.settings.unhighlight ) {
560 + for ( i = 0; elements[ i ]; i++ ) {
561 + this.settings.unhighlight.call( this, elements[ i ],
562 + this.settings.errorClass, "" );
563 + this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
564 + }
565 + } else {
566 + elements
567 + .removeClass( this.settings.errorClass )
568 + .removeClass( this.settings.validClass );
569 + }
570 + },
571 +
572 + numberOfInvalids: function() {
573 + return this.objectLength( this.invalid );
574 + },
575 +
576 + objectLength: function( obj ) {
577 + /* jshint unused: false */
578 + var count = 0,
579 + i;
580 + for ( i in obj ) {
581 +
582 + // This check allows counting elements with empty error
583 + // message as invalid elements
584 + if ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {
585 + count++;
586 + }
587 + }
588 + return count;
589 + },
590 +
591 + hideErrors: function() {
592 + this.hideThese( this.toHide );
593 + },
594 +
595 + hideThese: function( errors ) {
596 + errors.not( this.containers ).text( "" );
597 + this.addWrapper( errors ).hide();
598 + },
599 +
600 + valid: function() {
601 + return this.size() === 0;
602 + },
603 +
604 + size: function() {
605 + return this.errorList.length;
606 + },
607 +
608 + focusInvalid: function() {
609 + if ( this.settings.focusInvalid ) {
610 + try {
611 + $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
612 + .filter( ":visible" )
613 + .focus()
614 +
615 + // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
616 + .trigger( "focusin" );
617 + } catch ( e ) {
618 +
619 + // Ignore IE throwing errors when focusing hidden elements
620 + }
621 + }
622 + },
623 +
624 + findLastActive: function() {
625 + var lastActive = this.lastActive;
626 + return lastActive && $.grep( this.errorList, function( n ) {
627 + return n.element.name === lastActive.name;
628 + } ).length === 1 && lastActive;
629 + },
630 +
631 + elements: function() {
632 + var validator = this,
633 + rulesCache = {};
634 +
635 + // Select all valid inputs inside the form (no submit or reset buttons)
636 + return $( this.currentForm )
637 + .find( "input, select, textarea, [contenteditable]" )
638 + .not( ":submit, :reset, :image, :disabled" )
639 + .not( this.settings.ignore )
640 + .filter( function() {
641 + var name = this.name || $( this ).attr( "name" ); // For contenteditable
642 + if ( !name && validator.settings.debug && window.console ) {
643 + console.error( "%o has no name assigned", this );
644 + }
645 +
646 + // Set form expando on contenteditable
647 + if ( this.hasAttribute( "contenteditable" ) ) {
648 + this.form = $( this ).closest( "form" )[ 0 ];
649 + this.name = name;
650 + }
651 +
652 + // Select only the first element for each name, and only those with rules specified
653 + if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
654 + return false;
655 + }
656 +
657 + rulesCache[ name ] = true;
658 + return true;
659 + } );
660 + },
661 +
662 + clean: function( selector ) {
663 + return $( selector )[ 0 ];
664 + },
665 +
666 + errors: function() {
667 + var errorClass = this.settings.errorClass.split( " " ).join( "." );
668 + return $( this.settings.errorElement + "." + errorClass, this.errorContext );
669 + },
670 +
671 + resetInternals: function() {
672 + this.successList = [];
673 + this.errorList = [];
674 + this.errorMap = {};
675 + this.toShow = $( [] );
676 + this.toHide = $( [] );
677 + },
678 +
679 + reset: function() {
680 + this.resetInternals();
681 + this.currentElements = $( [] );
682 + },
683 +
684 + prepareForm: function() {
685 + this.reset();
686 + this.toHide = this.errors().add( this.containers );
687 + },
688 +
689 + prepareElement: function( element ) {
690 + this.reset();
691 + this.toHide = this.errorsFor( element );
692 + },
693 +
694 + elementValue: function( element ) {
695 + var $element = $( element ),
696 + type = element.type,
697 + val, idx;
698 +
699 + if ( type === "radio" || type === "checkbox" ) {
700 + return this.findByName( element.name ).filter( ":checked" ).val();
701 + } else if ( type === "number" && typeof element.validity !== "undefined" ) {
702 + return element.validity.badInput ? "NaN" : $element.val();
703 + }
704 +
705 + if ( element.hasAttribute( "contenteditable" ) ) {
706 + val = $element.text();
707 + } else {
708 + val = $element.val();
709 + }
710 +
711 + if ( type === "file" ) {
712 +
713 + // Modern browser (chrome & safari)
714 + if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
715 + return val.substr( 12 );
716 + }
717 +
718 + // Legacy browsers
719 + // Unix-based path
720 + idx = val.lastIndexOf( "/" );
721 + if ( idx >= 0 ) {
722 + return val.substr( idx + 1 );
723 + }
724 +
725 + // Windows-based path
726 + idx = val.lastIndexOf( "\\" );
727 + if ( idx >= 0 ) {
728 + return val.substr( idx + 1 );
729 + }
730 +
731 + // Just the file name
732 + return val;
733 + }
734 +
735 + if ( typeof val === "string" ) {
736 + return val.replace( /\r/g, "" );
737 + }
738 + return val;
739 + },
740 +
741 + check: function( element ) {
742 + element = this.validationTargetFor( this.clean( element ) );
743 +
744 + var rules = $( element ).rules(),
745 + rulesCount = $.map( rules, function( n, i ) {
746 + return i;
747 + } ).length,
748 + dependencyMismatch = false,
749 + val = this.elementValue( element ),
750 + result, method, rule, normalizer;
751 +
752 + // Prioritize the local normalizer defined for this element over the global one
753 + // if the former exists, otherwise user the global one in case it exists.
754 + if ( typeof rules.normalizer === "function" ) {
755 + normalizer = rules.normalizer;
756 + } else if ( typeof this.settings.normalizer === "function" ) {
757 + normalizer = this.settings.normalizer;
758 + }
759 +
760 + // If normalizer is defined, then call it to retreive the changed value instead
761 + // of using the real one.
762 + // Note that `this` in the normalizer is `element`.
763 + if ( normalizer ) {
764 + val = normalizer.call( element, val );
765 +
766 + if ( typeof val !== "string" ) {
767 + throw new TypeError( "The normalizer should return a string value." );
768 + }
769 +
770 + // Delete the normalizer from rules to avoid treating it as a pre-defined method.
771 + delete rules.normalizer;
772 + }
773 +
774 + for ( method in rules ) {
775 + rule = { method: method, parameters: rules[ method ] };
776 + try {
777 + result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
778 +
779 + // If a method indicates that the field is optional and therefore valid,
780 + // don't mark it as valid when there are no other rules
781 + if ( result === "dependency-mismatch" && rulesCount === 1 ) {
782 + dependencyMismatch = true;
783 + continue;
784 + }
785 + dependencyMismatch = false;
786 +
787 + if ( result === "pending" ) {
788 + this.toHide = this.toHide.not( this.errorsFor( element ) );
789 + return;
790 + }
791 +
792 + if ( !result ) {
793 + this.formatAndAdd( element, rule );
794 + return false;
795 + }
796 + } catch ( e ) {
797 + if ( this.settings.debug && window.console ) {
798 + console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
799 + }
800 + if ( e instanceof TypeError ) {
801 + e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
802 + }
803 +
804 + throw e;
805 + }
806 + }
807 + if ( dependencyMismatch ) {
808 + return;
809 + }
810 + if ( this.objectLength( rules ) ) {
811 + this.successList.push( element );
812 + }
813 + return true;
814 + },
815 +
816 + // Return the custom message for the given element and validation method
817 + // specified in the element's HTML5 data attribute
818 + // return the generic message if present and no method specific message is present
819 + customDataMessage: function( element, method ) {
820 + return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
821 + method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
822 + },
823 +
824 + // Return the custom message for the given element name and validation method
825 + customMessage: function( name, method ) {
826 + var m = this.settings.messages[ name ];
827 + return m && ( m.constructor === String ? m : m[ method ] );
828 + },
829 +
830 + // Return the first defined argument, allowing empty strings
831 + findDefined: function() {
832 + for ( var i = 0; i < arguments.length; i++ ) {
833 + if ( arguments[ i ] !== undefined ) {
834 + return arguments[ i ];
835 + }
836 + }
837 + return undefined;
838 + },
839 +
840 + // The second parameter 'rule' used to be a string, and extended to an object literal
841 + // of the following form:
842 + // rule = {
843 + // method: "method name",
844 + // parameters: "the given method parameters"
845 + // }
846 + //
847 + // The old behavior still supported, kept to maintain backward compatibility with
848 + // old code, and will be removed in the next major release.
849 + defaultMessage: function( element, rule ) {
850 + if ( typeof rule === "string" ) {
851 + rule = { method: rule };
852 + }
853 +
854 + var message = this.findDefined(
855 + this.customMessage( element.name, rule.method ),
856 + this.customDataMessage( element, rule.method ),
857 +
858 + // 'title' is never undefined, so handle empty string as undefined
859 + !this.settings.ignoreTitle && element.title || undefined,
860 + $.validator.messages[ rule.method ],
861 + "<strong>Warning: No message defined for " + element.name + "</strong>"
862 + ),
863 + theregex = /\$?\{(\d+)\}/g;
864 + if ( typeof message === "function" ) {
865 + message = message.call( this, rule.parameters, element );
866 + } else if ( theregex.test( message ) ) {
867 + message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
868 + }
869 +
870 + return message;
871 + },
872 +
873 + formatAndAdd: function( element, rule ) {
874 + var message = this.defaultMessage( element, rule );
875 +
876 + this.errorList.push( {
877 + message: message,
878 + element: element,
879 + method: rule.method
880 + } );
881 +
882 + this.errorMap[ element.name ] = message;
883 + this.submitted[ element.name ] = message;
884 + },
885 +
886 + addWrapper: function( toToggle ) {
887 + if ( this.settings.wrapper ) {
888 + toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
889 + }
890 + return toToggle;
891 + },
892 +
893 + defaultShowErrors: function() {
894 + var i, elements, error;
895 + for ( i = 0; this.errorList[ i ]; i++ ) {
896 + error = this.errorList[ i ];
897 + if ( this.settings.highlight ) {
898 + this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
899 + }
900 + this.showLabel( error.element, error.message );
901 + }
902 + if ( this.errorList.length ) {
903 + this.toShow = this.toShow.add( this.containers );
904 + }
905 + if ( this.settings.success ) {
906 + for ( i = 0; this.successList[ i ]; i++ ) {
907 + this.showLabel( this.successList[ i ] );
908 + }
909 + }
910 + if ( this.settings.unhighlight ) {
911 + for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
912 + this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
913 + }
914 + }
915 + this.toHide = this.toHide.not( this.toShow );
916 + this.hideErrors();
917 + this.addWrapper( this.toShow ).show();
918 + },
919 +
920 + validElements: function() {
921 + return this.currentElements.not( this.invalidElements() );
922 + },
923 +
924 + invalidElements: function() {
925 + return $( this.errorList ).map( function() {
926 + return this.element;
927 + } );
928 + },
929 +
930 + showLabel: function( element, message ) {
931 + var place, group, errorID, v,
932 + error = this.errorsFor( element ),
933 + elementID = this.idOrName( element ),
934 + describedBy = $( element ).attr( "aria-describedby" );
935 +
936 + if ( error.length ) {
937 +
938 + // Refresh error/success class
939 + error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
940 +
941 + // Replace message on existing label
942 + error.html( message );
943 + } else {
944 +
945 + // Create error element
946 + error = $( "<" + this.settings.errorElement + ">" )
947 + .attr( "id", elementID + "-error" )
948 + .addClass( this.settings.errorClass )
949 + .html( message || "" );
950 +
951 + // Maintain reference to the element to be placed into the DOM
952 + place = error;
953 + if ( this.settings.wrapper ) {
954 +
955 + // Make sure the element is visible, even in IE
956 + // actually showing the wrapped element is handled elsewhere
957 + place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
958 + }
959 + if ( this.labelContainer.length ) {
960 + this.labelContainer.append( place );
961 + } else if ( this.settings.errorPlacement ) {
962 + this.settings.errorPlacement.call( this, place, $( element ) );
963 + } else {
964 + place.insertAfter( element );
965 + }
966 +
967 + // Link error back to the element
968 + if ( error.is( "label" ) ) {
969 +
970 + // If the error is a label, then associate using 'for'
971 + error.attr( "for", elementID );
972 +
973 + // If the element is not a child of an associated label, then it's necessary
974 + // to explicitly apply aria-describedby
975 + } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
976 + errorID = error.attr( "id" );
977 +
978 + // Respect existing non-error aria-describedby
979 + if ( !describedBy ) {
980 + describedBy = errorID;
981 + } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
982 +
983 + // Add to end of list if not already present
984 + describedBy += " " + errorID;
985 + }
986 + $( element ).attr( "aria-describedby", describedBy );
987 +
988 + // If this element is grouped, then assign to all elements in the same group
989 + group = this.groups[ element.name ];
990 + if ( group ) {
991 + v = this;
992 + $.each( v.groups, function( name, testgroup ) {
993 + if ( testgroup === group ) {
994 + $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
995 + .attr( "aria-describedby", error.attr( "id" ) );
996 + }
997 + } );
998 + }
999 + }
1000 + }
1001 + if ( !message && this.settings.success ) {
1002 + error.text( "" );
1003 + if ( typeof this.settings.success === "string" ) {
1004 + error.addClass( this.settings.success );
1005 + } else {
1006 + this.settings.success( error, element );
1007 + }
1008 + }
1009 + this.toShow = this.toShow.add( error );
1010 + },
1011 +
1012 + errorsFor: function( element ) {
1013 + var name = this.escapeCssMeta( this.idOrName( element ) ),
1014 + describer = $( element ).attr( "aria-describedby" ),
1015 + selector = "label[for='" + name + "'], label[for='" + name + "'] *";
1016 +
1017 + // 'aria-describedby' should directly reference the error element
1018 + if ( describer ) {
1019 + selector = selector + ", #" + this.escapeCssMeta( describer )
1020 + .replace( /\s+/g, ", #" );
1021 + }
1022 +
1023 + return this
1024 + .errors()
1025 + .filter( selector );
1026 + },
1027 +
1028 + // See https://api.jquery.com/category/selectors/, for CSS
1029 + // meta-characters that should be escaped in order to be used with JQuery
1030 + // as a literal part of a name/id or any selector.
1031 + escapeCssMeta: function( string ) {
1032 + return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
1033 + },
1034 +
1035 + idOrName: function( element ) {
1036 + return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
1037 + },
1038 +
1039 + validationTargetFor: function( element ) {
1040 +
1041 + // If radio/checkbox, validate first element in group instead
1042 + if ( this.checkable( element ) ) {
1043 + element = this.findByName( element.name );
1044 + }
1045 +
1046 + // Always apply ignore filter
1047 + return $( element ).not( this.settings.ignore )[ 0 ];
1048 + },
1049 +
1050 + checkable: function( element ) {
1051 + return ( /radio|checkbox/i ).test( element.type );
1052 + },
1053 +
1054 + findByName: function( name ) {
1055 + return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
1056 + },
1057 +
1058 + getLength: function( value, element ) {
1059 + switch ( element.nodeName.toLowerCase() ) {
1060 + case "select":
1061 + return $( "option:selected", element ).length;
1062 + case "input":
1063 + if ( this.checkable( element ) ) {
1064 + return this.findByName( element.name ).filter( ":checked" ).length;
1065 + }
1066 + }
1067 + return value.length;
1068 + },
1069 +
1070 + depend: function( param, element ) {
1071 + return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
1072 + },
1073 +
1074 + dependTypes: {
1075 + "boolean": function( param ) {
1076 + return param;
1077 + },
1078 + "string": function( param, element ) {
1079 + return !!$( param, element.form ).length;
1080 + },
1081 + "function": function( param, element ) {
1082 + return param( element );
1083 + }
1084 + },
1085 +
1086 + optional: function( element ) {
1087 + var val = this.elementValue( element );
1088 + return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
1089 + },
1090 +
1091 + startRequest: function( element ) {
1092 + if ( !this.pending[ element.name ] ) {
1093 + this.pendingRequest++;
1094 + $( element ).addClass( this.settings.pendingClass );
1095 + this.pending[ element.name ] = true;
1096 + }
1097 + },
1098 +
1099 + stopRequest: function( element, valid ) {
1100 + this.pendingRequest--;
1101 +
1102 + // Sometimes synchronization fails, make sure pendingRequest is never < 0
1103 + if ( this.pendingRequest < 0 ) {
1104 + this.pendingRequest = 0;
1105 + }
1106 + delete this.pending[ element.name ];
1107 + $( element ).removeClass( this.settings.pendingClass );
1108 + if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
1109 + $( this.currentForm ).submit();
1110 +
1111 + // Remove the hidden input that was used as a replacement for the
1112 + // missing submit button. The hidden input is added by `handle()`
1113 + // to ensure that the value of the used submit button is passed on
1114 + // for scripted submits triggered by this method
1115 + if ( this.submitButton ) {
1116 + $( "input:hidden[name='" + this.submitButton.name + "']", this.currentForm ).remove();
1117 + }
1118 +
1119 + this.formSubmitted = false;
1120 + } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
1121 + $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
1122 + this.formSubmitted = false;
1123 + }
1124 + },
1125 +
1126 + previousValue: function( element, method ) {
1127 + method = typeof method === "string" && method || "remote";
1128 +
1129 + return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
1130 + old: null,
1131 + valid: true,
1132 + message: this.defaultMessage( element, { method: method } )
1133 + } );
1134 + },
1135 +
1136 + // Cleans up all forms and elements, removes validator-specific events
1137 + destroy: function() {
1138 + this.resetForm();
1139 +
1140 + $( this.currentForm )
1141 + .off( ".validate" )
1142 + .removeData( "validator" )
1143 + .find( ".validate-equalTo-blur" )
1144 + .off( ".validate-equalTo" )
1145 + .removeClass( "validate-equalTo-blur" );
1146 + }
1147 +
1148 + },
1149 +
1150 + classRuleSettings: {
1151 + required: { required: true },
1152 + email: { email: true },
1153 + url: { url: true },
1154 + date: { date: true },
1155 + dateISO: { dateISO: true },
1156 + number: { number: true },
1157 + digits: { digits: true },
1158 + creditcard: { creditcard: true }
1159 + },
1160 +
1161 + addClassRules: function( className, rules ) {
1162 + if ( className.constructor === String ) {
1163 + this.classRuleSettings[ className ] = rules;
1164 + } else {
1165 + $.extend( this.classRuleSettings, className );
1166 + }
1167 + },
1168 +
1169 + classRules: function( element ) {
1170 + var rules = {},
1171 + classes = $( element ).attr( "class" );
1172 +
1173 + if ( classes ) {
1174 + $.each( classes.split( " " ), function() {
1175 + if ( this in $.validator.classRuleSettings ) {
1176 + $.extend( rules, $.validator.classRuleSettings[ this ] );
1177 + }
1178 + } );
1179 + }
1180 + return rules;
1181 + },
1182 +
1183 + normalizeAttributeRule: function( rules, type, method, value ) {
1184 +
1185 + // Convert the value to a number for number inputs, and for text for backwards compability
1186 + // allows type="date" and others to be compared as strings
1187 + if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
1188 + value = Number( value );
1189 +
1190 + // Support Opera Mini, which returns NaN for undefined minlength
1191 + if ( isNaN( value ) ) {
1192 + value = undefined;
1193 + }
1194 + }
1195 +
1196 + if ( value || value === 0 ) {
1197 + rules[ method ] = value;
1198 + } else if ( type === method && type !== "range" ) {
1199 +
1200 + // Exception: the jquery validate 'range' method
1201 + // does not test for the html5 'range' type
1202 + rules[ method ] = true;
1203 + }
1204 + },
1205 +
1206 + attributeRules: function( element ) {
1207 + var rules = {},
1208 + $element = $( element ),
1209 + type = element.getAttribute( "type" ),
1210 + method, value;
1211 +
1212 + for ( method in $.validator.methods ) {
1213 +
1214 + // Support for <input required> in both html5 and older browsers
1215 + if ( method === "required" ) {
1216 + value = element.getAttribute( method );
1217 +
1218 + // Some browsers return an empty string for the required attribute
1219 + // and non-HTML5 browsers might have required="" markup
1220 + if ( value === "" ) {
1221 + value = true;
1222 + }
1223 +
1224 + // Force non-HTML5 browsers to return bool
1225 + value = !!value;
1226 + } else {
1227 + value = $element.attr( method );
1228 + }
1229 +
1230 + this.normalizeAttributeRule( rules, type, method, value );
1231 + }
1232 +
1233 + // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
1234 + if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
1235 + delete rules.maxlength;
1236 + }
1237 +
1238 + return rules;
1239 + },
1240 +
1241 + dataRules: function( element ) {
1242 + var rules = {},
1243 + $element = $( element ),
1244 + type = element.getAttribute( "type" ),
1245 + method, value;
1246 +
1247 + for ( method in $.validator.methods ) {
1248 + value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
1249 + this.normalizeAttributeRule( rules, type, method, value );
1250 + }
1251 + return rules;
1252 + },
1253 +
1254 + staticRules: function( element ) {
1255 + var rules = {},
1256 + validator = $.data( element.form, "validator" );
1257 +
1258 + if ( validator.settings.rules ) {
1259 + rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
1260 + }
1261 + return rules;
1262 + },
1263 +
1264 + normalizeRules: function( rules, element ) {
1265 +
1266 + // Handle dependency check
1267 + $.each( rules, function( prop, val ) {
1268 +
1269 + // Ignore rule when param is explicitly false, eg. required:false
1270 + if ( val === false ) {
1271 + delete rules[ prop ];
1272 + return;
1273 + }
1274 + if ( val.param || val.depends ) {
1275 + var keepRule = true;
1276 + switch ( typeof val.depends ) {
1277 + case "string":
1278 + keepRule = !!$( val.depends, element.form ).length;
1279 + break;
1280 + case "function":
1281 + keepRule = val.depends.call( element, element );
1282 + break;
1283 + }
1284 + if ( keepRule ) {
1285 + rules[ prop ] = val.param !== undefined ? val.param : true;
1286 + } else {
1287 + $.data( element.form, "validator" ).resetElements( $( element ) );
1288 + delete rules[ prop ];
1289 + }
1290 + }
1291 + } );
1292 +
1293 + // Evaluate parameters
1294 + $.each( rules, function( rule, parameter ) {
1295 + rules[ rule ] = $.isFunction( parameter ) && rule !== "normalizer" ? parameter( element ) : parameter;
1296 + } );
1297 +
1298 + // Clean number parameters
1299 + $.each( [ "minlength", "maxlength" ], function() {
1300 + if ( rules[ this ] ) {
1301 + rules[ this ] = Number( rules[ this ] );
1302 + }
1303 + } );
1304 + $.each( [ "rangelength", "range" ], function() {
1305 + var parts;
1306 + if ( rules[ this ] ) {
1307 + if ( $.isArray( rules[ this ] ) ) {
1308 + rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
1309 + } else if ( typeof rules[ this ] === "string" ) {
1310 + parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
1311 + rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
1312 + }
1313 + }
1314 + } );
1315 +
1316 + if ( $.validator.autoCreateRanges ) {
1317 +
1318 + // Auto-create ranges
1319 + if ( rules.min != null && rules.max != null ) {
1320 + rules.range = [ rules.min, rules.max ];
1321 + delete rules.min;
1322 + delete rules.max;
1323 + }
1324 + if ( rules.minlength != null && rules.maxlength != null ) {
1325 + rules.rangelength = [ rules.minlength, rules.maxlength ];
1326 + delete rules.minlength;
1327 + delete rules.maxlength;
1328 + }
1329 + }
1330 +
1331 + return rules;
1332 + },
1333 +
1334 + // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
1335 + normalizeRule: function( data ) {
1336 + if ( typeof data === "string" ) {
1337 + var transformed = {};
1338 + $.each( data.split( /\s/ ), function() {
1339 + transformed[ this ] = true;
1340 + } );
1341 + data = transformed;
1342 + }
1343 + return data;
1344 + },
1345 +
1346 + // https://jqueryvalidation.org/jQuery.validator.addMethod/
1347 + addMethod: function( name, method, message ) {
1348 + $.validator.methods[ name ] = method;
1349 + $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
1350 + if ( method.length < 3 ) {
1351 + $.validator.addClassRules( name, $.validator.normalizeRule( name ) );
1352 + }
1353 + },
1354 +
1355 + // https://jqueryvalidation.org/jQuery.validator.methods/
1356 + methods: {
1357 +
1358 + // https://jqueryvalidation.org/required-method/
1359 + required: function( value, element, param ) {
1360 +
1361 + // Check if dependency is met
1362 + if ( !this.depend( param, element ) ) {
1363 + return "dependency-mismatch";
1364 + }
1365 + if ( element.nodeName.toLowerCase() === "select" ) {
1366 +
1367 + // Could be an array for select-multiple or a string, both are fine this way
1368 + var val = $( element ).val();
1369 + return val && val.length > 0;
1370 + }
1371 + if ( this.checkable( element ) ) {
1372 + return this.getLength( value, element ) > 0;
1373 + }
1374 + return value.length > 0;
1375 + },
1376 +
1377 + // https://jqueryvalidation.org/email-method/
1378 + email: function( value, element ) {
1379 +
1380 + // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
1381 + // Retrieved 2014-01-14
1382 + // If you have a problem with this implementation, report a bug against the above spec
1383 + // Or use custom methods to implement your own email validation
1384 + return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
1385 + },
1386 +
1387 + // https://jqueryvalidation.org/url-method/
1388 + url: function( value, element ) {
1389 +
1390 + // Copyright (c) 2010-2013 Diego Perini, MIT licensed
1391 + // https://gist.github.com/dperini/729294
1392 + // see also https://mathiasbynens.be/demo/url-regex
1393 + // modified to allow protocol-relative URLs
1394 + return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
1395 + },
1396 +
1397 + // https://jqueryvalidation.org/date-method/
1398 + date: function( value, element ) {
1399 + return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
1400 + },
1401 +
1402 + // https://jqueryvalidation.org/dateISO-method/
1403 + dateISO: function( value, element ) {
1404 + return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
1405 + },
1406 +
1407 + // https://jqueryvalidation.org/number-method/
1408 + number: function( value, element ) {
1409 + return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
1410 + },
1411 +
1412 + // https://jqueryvalidation.org/digits-method/
1413 + digits: function( value, element ) {
1414 + return this.optional( element ) || /^\d+$/.test( value );
1415 + },
1416 +
1417 + // https://jqueryvalidation.org/minlength-method/
1418 + minlength: function( value, element, param ) {
1419 + var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1420 + return this.optional( element ) || length >= param;
1421 + },
1422 +
1423 + // https://jqueryvalidation.org/maxlength-method/
1424 + maxlength: function( value, element, param ) {
1425 + var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1426 + return this.optional( element ) || length <= param;
1427 + },
1428 +
1429 + // https://jqueryvalidation.org/rangelength-method/
1430 + rangelength: function( value, element, param ) {
1431 + var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1432 + return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
1433 + },
1434 +
1435 + // https://jqueryvalidation.org/min-method/
1436 + min: function( value, element, param ) {
1437 + return this.optional( element ) || value >= param;
1438 + },
1439 +
1440 + // https://jqueryvalidation.org/max-method/
1441 + max: function( value, element, param ) {
1442 + return this.optional( element ) || value <= param;
1443 + },
1444 +
1445 + // https://jqueryvalidation.org/range-method/
1446 + range: function( value, element, param ) {
1447 + return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
1448 + },
1449 +
1450 + // https://jqueryvalidation.org/step-method/
1451 + step: function( value, element, param ) {
1452 + var type = $( element ).attr( "type" ),
1453 + errorMessage = "Step attribute on input type " + type + " is not supported.",
1454 + supportedTypes = [ "text", "number", "range" ],
1455 + re = new RegExp( "\\b" + type + "\\b" ),
1456 + notSupported = type && !re.test( supportedTypes.join() ),
1457 + decimalPlaces = function( num ) {
1458 + var match = ( "" + num ).match( /(?:\.(\d+))?$/ );
1459 + if ( !match ) {
1460 + return 0;
1461 + }
1462 +
1463 + // Number of digits right of decimal point.
1464 + return match[ 1 ] ? match[ 1 ].length : 0;
1465 + },
1466 + toInt = function( num ) {
1467 + return Math.round( num * Math.pow( 10, decimals ) );
1468 + },
1469 + valid = true,
1470 + decimals;
1471 +
1472 + // Works only for text, number and range input types
1473 + // TODO find a way to support input types date, datetime, datetime-local, month, time and week
1474 + if ( notSupported ) {
1475 + throw new Error( errorMessage );
1476 + }
1477 +
1478 + decimals = decimalPlaces( param );
1479 +
1480 + // Value can't have too many decimals
1481 + if ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {
1482 + valid = false;
1483 + }
1484 +
1485 + return this.optional( element ) || valid;
1486 + },
1487 +
1488 + // https://jqueryvalidation.org/equalTo-method/
1489 + equalTo: function( value, element, param ) {
1490 +
1491 + // Bind to the blur event of the target in order to revalidate whenever the target field is updated
1492 + var target = $( param );
1493 + if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
1494 + target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
1495 + $( element ).valid();
1496 + } );
1497 + }
1498 + return value === target.val();
1499 + },
1500 +
1501 + // https://jqueryvalidation.org/remote-method/
1502 + remote: function( value, element, param, method ) {
1503 + if ( this.optional( element ) ) {
1504 + return "dependency-mismatch";
1505 + }
1506 +
1507 + method = typeof method === "string" && method || "remote";
1508 +
1509 + var previous = this.previousValue( element, method ),
1510 + validator, data, optionDataString;
1511 +
1512 + if ( !this.settings.messages[ element.name ] ) {
1513 + this.settings.messages[ element.name ] = {};
1514 + }
1515 + previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
1516 + this.settings.messages[ element.name ][ method ] = previous.message;
1517 +
1518 + param = typeof param === "string" && { url: param } || param;
1519 + optionDataString = $.param( $.extend( { data: value }, param.data ) );
1520 + if ( previous.old === optionDataString ) {
1521 + return previous.valid;
1522 + }
1523 +
1524 + previous.old = optionDataString;
1525 + validator = this;
1526 + this.startRequest( element );
1527 + data = {};
1528 + data[ element.name ] = value;
1529 + $.ajax( $.extend( true, {
1530 + mode: "abort",
1531 + port: "validate" + element.name,
1532 + dataType: "json",
1533 + data: data,
1534 + context: validator.currentForm,
1535 + success: function( response ) {
1536 + var valid = response === true || response === "true",
1537 + errors, message, submitted;
1538 +
1539 + validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
1540 + if ( valid ) {
1541 + submitted = validator.formSubmitted;
1542 + validator.resetInternals();
1543 + validator.toHide = validator.errorsFor( element );
1544 + validator.formSubmitted = submitted;
1545 + validator.successList.push( element );
1546 + validator.invalid[ element.name ] = false;
1547 + validator.showErrors();
1548 + } else {
1549 + errors = {};
1550 + message = response || validator.defaultMessage( element, { method: method, parameters: value } );
1551 + errors[ element.name ] = previous.message = message;
1552 + validator.invalid[ element.name ] = true;
1553 + validator.showErrors( errors );
1554 + }
1555 + previous.valid = valid;
1556 + validator.stopRequest( element, valid );
1557 + }
1558 + }, param ) );
1559 + return "pending";
1560 + }
1561 + }
1562 +
1563 +} );
1564 +
1565 +// Ajax mode: abort
1566 +// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1567 +// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1568 +
1569 +var pendingRequests = {},
1570 + ajax;
1571 +
1572 +// Use a prefilter if available (1.5+)
1573 +if ( $.ajaxPrefilter ) {
1574 + $.ajaxPrefilter( function( settings, _, xhr ) {
1575 + var port = settings.port;
1576 + if ( settings.mode === "abort" ) {
1577 + if ( pendingRequests[ port ] ) {
1578 + pendingRequests[ port ].abort();
1579 + }
1580 + pendingRequests[ port ] = xhr;
1581 + }
1582 + } );
1583 +} else {
1584 +
1585 + // Proxy ajax
1586 + ajax = $.ajax;
1587 + $.ajax = function( settings ) {
1588 + var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1589 + port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1590 + if ( mode === "abort" ) {
1591 + if ( pendingRequests[ port ] ) {
1592 + pendingRequests[ port ].abort();
1593 + }
1594 + pendingRequests[ port ] = ajax.apply( this, arguments );
1595 + return pendingRequests[ port ];
1596 + }
1597 + return ajax.apply( this, arguments );
1598 + };
1599 +}
1600 +return $;
1601 +}));
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery/LICENSE.txt new
+36
@@ -0,0 +1,36 @@
1 +Copyright JS Foundation and other contributors, https://js.foundation/
2 +
3 +This software consists of voluntary contributions made by many
4 +individuals. For exact contribution history, see the revision history
5 +available at https://github.com/jquery/jquery
6 +
7 +The following license applies to all parts of this software except as
8 +documented below:
9 +
10 +====
11 +
12 +Permission is hereby granted, free of charge, to any person obtaining
13 +a copy of this software and associated documentation files (the
14 +"Software"), to deal in the Software without restriction, including
15 +without limitation the rights to use, copy, modify, merge, publish,
16 +distribute, sublicense, and/or sell copies of the Software, and to
17 +permit persons to whom the Software is furnished to do so, subject to
18 +the following conditions:
19 +
20 +The above copyright notice and this permission notice shall be
21 +included in all copies or substantial portions of the Software.
22 +
23 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 +
31 +====
32 +
33 +All files located in the node_modules and external directories are
34 +externally maintained libraries used by this software which have their
35 +own licenses; we recommend you read them, as their terms may differ from
36 +the terms above.
src/test/wix/TestData/CsprojWebApplicationNetCore/wwwroot/lib/jquery/dist/jquery.js new
+10872
@@ -0,0 +1,10872 @@
1 +/*!
2 + * jQuery JavaScript Library v3.5.1
3 + * https://jquery.com/
4 + *
5 + * Includes Sizzle.js
6 + * https://sizzlejs.com/
7 + *
8 + * Copyright JS Foundation and other contributors
9 + * Released under the MIT license
10 + * https://jquery.org/license
11 + *
12 + * Date: 2020-05-04T22:49Z
13 + */
14 +( function( global, factory ) {
15 +
16 + "use strict";
17 +
18 + if ( typeof module === "object" && typeof module.exports === "object" ) {
19 +
20 + // For CommonJS and CommonJS-like environments where a proper `window`
21 + // is present, execute the factory and get jQuery.
22 + // For environments that do not have a `window` with a `document`
23 + // (such as Node.js), expose a factory as module.exports.
24 + // This accentuates the need for the creation of a real `window`.
25 + // e.g. var jQuery = require("jquery")(window);
26 + // See ticket #14549 for more info.
27 + module.exports = global.document ?
28 + factory( global, true ) :
29 + function( w ) {
30 + if ( !w.document ) {
31 + throw new Error( "jQuery requires a window with a document" );
32 + }
33 + return factory( w );
34 + };
35 + } else {
36 + factory( global );
37 + }
38 +
39 +// Pass this if window is not defined yet
40 +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
41 +
42 +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
43 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
44 +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
45 +// enough that all such attempts are guarded in a try block.
46 +"use strict";
47 +
48 +var arr = [];
49 +
50 +var getProto = Object.getPrototypeOf;
51 +
52 +var slice = arr.slice;
53 +
54 +var flat = arr.flat ? function( array ) {
55 + return arr.flat.call( array );
56 +} : function( array ) {
57 + return arr.concat.apply( [], array );
58 +};
59 +
60 +
61 +var push = arr.push;
62 +
63 +var indexOf = arr.indexOf;
64 +
65 +var class2type = {};
66 +
67 +var toString = class2type.toString;
68 +
69 +var hasOwn = class2type.hasOwnProperty;
70 +
71 +var fnToString = hasOwn.toString;
72 +
73 +var ObjectFunctionString = fnToString.call( Object );
74 +
75 +var support = {};
76 +
77 +var isFunction = function isFunction( obj ) {
78 +
79 + // Support: Chrome <=57, Firefox <=52
80 + // In some browsers, typeof returns "function" for HTML <object> elements
81 + // (i.e., `typeof document.createElement( "object" ) === "function"`).
82 + // We don't want to classify *any* DOM node as a function.
83 + return typeof obj === "function" && typeof obj.nodeType !== "number";
84 + };
85 +
86 +
87 +var isWindow = function isWindow( obj ) {
88 + return obj != null && obj === obj.window;
89 + };
90 +
91 +
92 +var document = window.document;
93 +
94 +
95 +
96 + var preservedScriptAttributes = {
97 + type: true,
98 + src: true,
99 + nonce: true,
100 + noModule: true
101 + };
102 +
103 + function DOMEval( code, node, doc ) {
104 + doc = doc || document;
105 +
106 + var i, val,
107 + script = doc.createElement( "script" );
108 +
109 + script.text = code;
110 + if ( node ) {
111 + for ( i in preservedScriptAttributes ) {
112 +
113 + // Support: Firefox 64+, Edge 18+
114 + // Some browsers don't support the "nonce" property on scripts.
115 + // On the other hand, just using `getAttribute` is not enough as
116 + // the `nonce` attribute is reset to an empty string whenever it
117 + // becomes browsing-context connected.
118 + // See https://github.com/whatwg/html/issues/2369
119 + // See https://html.spec.whatwg.org/#nonce-attributes
120 + // The `node.getAttribute` check was added for the sake of
121 + // `jQuery.globalEval` so that it can fake a nonce-containing node
122 + // via an object.
123 + val = node[ i ] || node.getAttribute && node.getAttribute( i );
124 + if ( val ) {
125 + script.setAttribute( i, val );
126 + }
127 + }
128 + }
129 + doc.head.appendChild( script ).parentNode.removeChild( script );
130 + }
131 +
132 +
133 +function toType( obj ) {
134 + if ( obj == null ) {
135 + return obj + "";
136 + }
137 +
138 + // Support: Android <=2.3 only (functionish RegExp)
139 + return typeof obj === "object" || typeof obj === "function" ?
140 + class2type[ toString.call( obj ) ] || "object" :
141 + typeof obj;
142 +}
143 +/* global Symbol */
144 +// Defining this global in .eslintrc.json would create a danger of using the global
145 +// unguarded in another place, it seems safer to define global only for this module
146 +
147 +
148 +
149 +var
150 + version = "3.5.1",
151 +
152 + // Define a local copy of jQuery
153 + jQuery = function( selector, context ) {
154 +
155 + // The jQuery object is actually just the init constructor 'enhanced'
156 + // Need init if jQuery is called (just allow error to be thrown if not included)
157 + return new jQuery.fn.init( selector, context );
158 + };
159 +
160 +jQuery.fn = jQuery.prototype = {
161 +
162 + // The current version of jQuery being used
163 + jquery: version,
164 +
165 + constructor: jQuery,
166 +
167 + // The default length of a jQuery object is 0
168 + length: 0,
169 +
170 + toArray: function() {
171 + return slice.call( this );
172 + },
173 +
174 + // Get the Nth element in the matched element set OR
175 + // Get the whole matched element set as a clean array
176 + get: function( num ) {
177 +
178 + // Return all the elements in a clean array
179 + if ( num == null ) {
180 + return slice.call( this );
181 + }
182 +
183 + // Return just the one element from the set
184 + return num < 0 ? this[ num + this.length ] : this[ num ];
185 + },
186 +
187 + // Take an array of elements and push it onto the stack
188 + // (returning the new matched element set)
189 + pushStack: function( elems ) {
190 +
191 + // Build a new jQuery matched element set
192 + var ret = jQuery.merge( this.constructor(), elems );
193 +
194 + // Add the old object onto the stack (as a reference)
195 + ret.prevObject = this;
196 +
197 + // Return the newly-formed element set
198 + return ret;
199 + },
200 +
201 + // Execute a callback for every element in the matched set.
202 + each: function( callback ) {
203 + return jQuery.each( this, callback );
204 + },
205 +
206 + map: function( callback ) {
207 + return this.pushStack( jQuery.map( this, function( elem, i ) {
208 + return callback.call( elem, i, elem );
209 + } ) );
210 + },
211 +
212 + slice: function() {
213 + return this.pushStack( slice.apply( this, arguments ) );
214 + },
215 +
216 + first: function() {
217 + return this.eq( 0 );
218 + },
219 +
220 + last: function() {
221 + return this.eq( -1 );
222 + },
223 +
224 + even: function() {
225 + return this.pushStack( jQuery.grep( this, function( _elem, i ) {
226 + return ( i + 1 ) % 2;
227 + } ) );
228 + },
229 +
230 + odd: function() {
231 + return this.pushStack( jQuery.grep( this, function( _elem, i ) {
232 + return i % 2;
233 + } ) );
234 + },
235 +
236 + eq: function( i ) {
237 + var len = this.length,
238 + j = +i + ( i < 0 ? len : 0 );
239 + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
240 + },
241 +
242 + end: function() {
243 + return this.prevObject || this.constructor();
244 + },
245 +
246 + // For internal use only.
247 + // Behaves like an Array's method, not like a jQuery method.
248 + push: push,
249 + sort: arr.sort,
250 + splice: arr.splice
251 +};
252 +
253 +jQuery.extend = jQuery.fn.extend = function() {
254 + var options, name, src, copy, copyIsArray, clone,
255 + target = arguments[ 0 ] || {},
256 + i = 1,
257 + length = arguments.length,
258 + deep = false;
259 +
260 + // Handle a deep copy situation
261 + if ( typeof target === "boolean" ) {
262 + deep = target;
263 +
264 + // Skip the boolean and the target
265 + target = arguments[ i ] || {};
266 + i++;
267 + }
268 +
269 + // Handle case when target is a string or something (possible in deep copy)
270 + if ( typeof target !== "object" && !isFunction( target ) ) {
271 + target = {};
272 + }
273 +
274 + // Extend jQuery itself if only one argument is passed
275 + if ( i === length ) {
276 + target = this;
277 + i--;
278 + }
279 +
280 + for ( ; i < length; i++ ) {
281 +
282 + // Only deal with non-null/undefined values
283 + if ( ( options = arguments[ i ] ) != null ) {
284 +
285 + // Extend the base object
286 + for ( name in options ) {
287 + copy = options[ name ];
288 +
289 + // Prevent Object.prototype pollution
290 + // Prevent never-ending loop
291 + if ( name === "__proto__" || target === copy ) {
292 + continue;
293 + }
294 +
295 + // Recurse if we're merging plain objects or arrays
296 + if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
297 + ( copyIsArray = Array.isArray( copy ) ) ) ) {
298 + src = target[ name ];
299 +
300 + // Ensure proper type for the source value
301 + if ( copyIsArray && !Array.isArray( src ) ) {
302 + clone = [];
303 + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
304 + clone = {};
305 + } else {
306 + clone = src;
307 + }
308 + copyIsArray = false;
309 +
310 + // Never move original objects, clone them
311 + target[ name ] = jQuery.extend( deep, clone, copy );
312 +
313 + // Don't bring in undefined values
314 + } else if ( copy !== undefined ) {
315 + target[ name ] = copy;
316 + }
317 + }
318 + }
319 + }
320 +
321 + // Return the modified object
322 + return target;
323 +};
324 +
325 +jQuery.extend( {
326 +
327 + // Unique for each copy of jQuery on the page
328 + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
329 +
330 + // Assume jQuery is ready without the ready module
331 + isReady: true,
332 +
333 + error: function( msg ) {
334 + throw new Error( msg );
335 + },
336 +
337 + noop: function() {},
338 +
339 + isPlainObject: function( obj ) {
340 + var proto, Ctor;
341 +
342 + // Detect obvious negatives
343 + // Use toString instead of jQuery.type to catch host objects
344 + if ( !obj || toString.call( obj ) !== "[object Object]" ) {
345 + return false;
346 + }
347 +
348 + proto = getProto( obj );
349 +
350 + // Objects with no prototype (e.g., `Object.create( null )`) are plain
351 + if ( !proto ) {
352 + return true;
353 + }
354 +
355 + // Objects with prototype are plain iff they were constructed by a global Object function
356 + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
357 + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
358 + },
359 +
360 + isEmptyObject: function( obj ) {
361 + var name;
362 +
363 + for ( name in obj ) {
364 + return false;
365 + }
366 + return true;
367 + },
368 +
369 + // Evaluates a script in a provided context; falls back to the global one
370 + // if not specified.
371 + globalEval: function( code, options, doc ) {
372 + DOMEval( code, { nonce: options && options.nonce }, doc );
373 + },
374 +
375 + each: function( obj, callback ) {
376 + var length, i = 0;
377 +
378 + if ( isArrayLike( obj ) ) {
379 + length = obj.length;
380 + for ( ; i < length; i++ ) {
381 + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
382 + break;
383 + }
384 + }
385 + } else {
386 + for ( i in obj ) {
387 + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
388 + break;
389 + }
390 + }
391 + }
392 +
393 + return obj;
394 + },
395 +
396 + // results is for internal usage only
397 + makeArray: function( arr, results ) {
398 + var ret = results || [];
399 +
400 + if ( arr != null ) {
401 + if ( isArrayLike( Object( arr ) ) ) {
402 + jQuery.merge( ret,
403 + typeof arr === "string" ?
404 + [ arr ] : arr
405 + );
406 + } else {
407 + push.call( ret, arr );
408 + }
409 + }
410 +
411 + return ret;
412 + },
413 +
414 + inArray: function( elem, arr, i ) {
415 + return arr == null ? -1 : indexOf.call( arr, elem, i );
416 + },
417 +
418 + // Support: Android <=4.0 only, PhantomJS 1 only
419 + // push.apply(_, arraylike) throws on ancient WebKit
420 + merge: function( first, second ) {
421 + var len = +second.length,
422 + j = 0,
423 + i = first.length;
424 +
425 + for ( ; j < len; j++ ) {
426 + first[ i++ ] = second[ j ];
427 + }
428 +
429 + first.length = i;
430 +
431 + return first;
432 + },
433 +
434 + grep: function( elems, callback, invert ) {
435 + var callbackInverse,
436 + matches = [],
437 + i = 0,
438 + length = elems.length,
439 + callbackExpect = !invert;
440 +
441 + // Go through the array, only saving the items
442 + // that pass the validator function
443 + for ( ; i < length; i++ ) {
444 + callbackInverse = !callback( elems[ i ], i );
445 + if ( callbackInverse !== callbackExpect ) {
446 + matches.push( elems[ i ] );
447 + }
448 + }
449 +
450 + return matches;
451 + },
452 +
453 + // arg is for internal usage only
454 + map: function( elems, callback, arg ) {
455 + var length, value,
456 + i = 0,
457 + ret = [];
458 +
459 + // Go through the array, translating each of the items to their new values
460 + if ( isArrayLike( elems ) ) {
461 + length = elems.length;
462 + for ( ; i < length; i++ ) {
463 + value = callback( elems[ i ], i, arg );
464 +
465 + if ( value != null ) {
466 + ret.push( value );
467 + }
468 + }
469 +
470 + // Go through every key on the object,
471 + } else {
472 + for ( i in elems ) {
473 + value = callback( elems[ i ], i, arg );
474 +
475 + if ( value != null ) {
476 + ret.push( value );
477 + }
478 + }
479 + }
480 +
481 + // Flatten any nested arrays
482 + return flat( ret );
483 + },
484 +
485 + // A global GUID counter for objects
486 + guid: 1,
487 +
488 + // jQuery.support is not used in Core but other projects attach their
489 + // properties to it so it needs to exist.
490 + support: support
491 +} );
492 +
493 +if ( typeof Symbol === "function" ) {
494 + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
495 +}
496 +
497 +// Populate the class2type map
498 +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
499 +function( _i, name ) {
500 + class2type[ "[object " + name + "]" ] = name.toLowerCase();
501 +} );
502 +
503 +function isArrayLike( obj ) {
504 +
505 + // Support: real iOS 8.2 only (not reproducible in simulator)
506 + // `in` check used to prevent JIT error (gh-2145)
507 + // hasOwn isn't used here due to false negatives
508 + // regarding Nodelist length in IE
509 + var length = !!obj && "length" in obj && obj.length,
510 + type = toType( obj );
511 +
512 + if ( isFunction( obj ) || isWindow( obj ) ) {
513 + return false;
514 + }
515 +
516 + return type === "array" || length === 0 ||
517 + typeof length === "number" && length > 0 && ( length - 1 ) in obj;
518 +}
519 +var Sizzle =
520 +/*!
521 + * Sizzle CSS Selector Engine v2.3.5
522 + * https://sizzlejs.com/
523 + *
524 + * Copyright JS Foundation and other contributors
525 + * Released under the MIT license
526 + * https://js.foundation/
527 + *
528 + * Date: 2020-03-14
529 + */
530 +( function( window ) {
531 +var i,
532 + support,
533 + Expr,
534 + getText,
535 + isXML,
536 + tokenize,
537 + compile,
538 + select,
539 + outermostContext,
540 + sortInput,
541 + hasDuplicate,
542 +
543 + // Local document vars
544 + setDocument,
545 + document,
546 + docElem,
547 + documentIsHTML,
548 + rbuggyQSA,
549 + rbuggyMatches,
550 + matches,
551 + contains,
552 +
553 + // Instance-specific data
554 + expando = "sizzle" + 1 * new Date(),
555 + preferredDoc = window.document,
556 + dirruns = 0,
557 + done = 0,
558 + classCache = createCache(),
559 + tokenCache = createCache(),
560 + compilerCache = createCache(),
561 + nonnativeSelectorCache = createCache(),
562 + sortOrder = function( a, b ) {
563 + if ( a === b ) {
564 + hasDuplicate = true;
565 + }
566 + return 0;
567 + },
568 +
569 + // Instance methods
570 + hasOwn = ( {} ).hasOwnProperty,
571 + arr = [],
572 + pop = arr.pop,
573 + pushNative = arr.push,
574 + push = arr.push,
575 + slice = arr.slice,
576 +
577 + // Use a stripped-down indexOf as it's faster than native
578 + // https://jsperf.com/thor-indexof-vs-for/5
579 + indexOf = function( list, elem ) {
580 + var i = 0,
581 + len = list.length;
582 + for ( ; i < len; i++ ) {
583 + if ( list[ i ] === elem ) {
584 + return i;
585 + }
586 + }
587 + return -1;
588 + },
589 +
590 + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
591 + "ismap|loop|multiple|open|readonly|required|scoped",
592 +
593 + // Regular expressions
594 +
595 + // http://www.w3.org/TR/css3-selectors/#whitespace
596 + whitespace = "[\\x20\\t\\r\\n\\f]",
597 +
598 + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
599 + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
600 + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
601 +
602 + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
603 + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
604 +
605 + // Operator (capture 2)
606 + "*([*^$|!~]?=)" + whitespace +
607 +
608 + // "Attribute values must be CSS identifiers [capture 5]
609 + // or strings [capture 3 or capture 4]"
610 + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
611 + whitespace + "*\\]",
612 +
613 + pseudos = ":(" + identifier + ")(?:\\((" +
614 +
615 + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
616 + // 1. quoted (capture 3; capture 4 or capture 5)
617 + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
618 +
619 + // 2. simple (capture 6)
620 + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
621 +
622 + // 3. anything else (capture 2)
623 + ".*" +
624 + ")\\)|)",
625 +
626 + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
627 + rwhitespace = new RegExp( whitespace + "+", "g" ),
628 + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
629 + whitespace + "+$", "g" ),
630 +
631 + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
632 + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
633 + "*" ),
634 + rdescend = new RegExp( whitespace + "|>" ),
635 +
636 + rpseudo = new RegExp( pseudos ),
637 + ridentifier = new RegExp( "^" + identifier + "$" ),
638 +
639 + matchExpr = {
640 + "ID": new RegExp( "^#(" + identifier + ")" ),
641 + "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
642 + "TAG": new RegExp( "^(" + identifier + "|[*])" ),
643 + "ATTR": new RegExp( "^" + attributes ),
644 + "PSEUDO": new RegExp( "^" + pseudos ),
645 + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
646 + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
647 + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
648 + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
649 +
650 + // For use in libraries implementing .is()
651 + // We use this for POS matching in `select`
652 + "needsContext": new RegExp( "^" + whitespace +
653 + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
654 + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
655 + },
656 +
657 + rhtml = /HTML$/i,
658 + rinputs = /^(?:input|select|textarea|button)$/i,
659 + rheader = /^h\d$/i,
660 +
661 + rnative = /^[^{]+\{\s*\[native \w/,
662 +
663 + // Easily-parseable/retrievable ID or TAG or CLASS selectors
664 + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
665 +
666 + rsibling = /[+~]/,
667 +
668 + // CSS escapes
669 + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
670 + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
671 + funescape = function( escape, nonHex ) {
672 + var high = "0x" + escape.slice( 1 ) - 0x10000;
673 +
674 + return nonHex ?
675 +
676 + // Strip the backslash prefix from a non-hex escape sequence
677 + nonHex :
678 +
679 + // Replace a hexadecimal escape sequence with the encoded Unicode code point
680 + // Support: IE <=11+
681 + // For values outside the Basic Multilingual Plane (BMP), manually construct a
682 + // surrogate pair
683 + high < 0 ?
684 + String.fromCharCode( high + 0x10000 ) :
685 + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
686 + },
687 +
688 + // CSS string/identifier serialization
689 + // https://drafts.csswg.org/cssom/#common-serializing-idioms
690 + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
691 + fcssescape = function( ch, asCodePoint ) {
692 + if ( asCodePoint ) {
693 +
694 + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
695 + if ( ch === "\0" ) {
696 + return "\uFFFD";
697 + }
698 +
699 + // Control characters and (dependent upon position) numbers get escaped as code points
700 + return ch.slice( 0, -1 ) + "\\" +
701 + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
702 + }
703 +
704 + // Other potentially-special ASCII characters get backslash-escaped
705 + return "\\" + ch;
706 + },
707 +
708 + // Used for iframes
709 + // See setDocument()
710 + // Removing the function wrapper causes a "Permission Denied"
711 + // error in IE
712 + unloadHandler = function() {
713 + setDocument();
714 + },
715 +
716 + inDisabledFieldset = addCombinator(
717 + function( elem ) {
718 + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
719 + },
720 + { dir: "parentNode", next: "legend" }
721 + );
722 +
723 +// Optimize for push.apply( _, NodeList )
724 +try {
725 + push.apply(
726 + ( arr = slice.call( preferredDoc.childNodes ) ),
727 + preferredDoc.childNodes
728 + );
729 +
730 + // Support: Android<4.0
731 + // Detect silently failing push.apply
732 + // eslint-disable-next-line no-unused-expressions
733 + arr[ preferredDoc.childNodes.length ].nodeType;
734 +} catch ( e ) {
735 + push = { apply: arr.length ?
736 +
737 + // Leverage slice if possible
738 + function( target, els ) {
739 + pushNative.apply( target, slice.call( els ) );
740 + } :
741 +
742 + // Support: IE<9
743 + // Otherwise append directly
744 + function( target, els ) {
745 + var j = target.length,
746 + i = 0;
747 +
748 + // Can't trust NodeList.length
749 + while ( ( target[ j++ ] = els[ i++ ] ) ) {}
750 + target.length = j - 1;
751 + }
752 + };
753 +}
754 +
755 +function Sizzle( selector, context, results, seed ) {
756 + var m, i, elem, nid, match, groups, newSelector,
757 + newContext = context && context.ownerDocument,
758 +
759 + // nodeType defaults to 9, since context defaults to document
760 + nodeType = context ? context.nodeType : 9;
761 +
762 + results = results || [];
763 +
764 + // Return early from calls with invalid selector or context
765 + if ( typeof selector !== "string" || !selector ||
766 + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
767 +
768 + return results;
769 + }
770 +
771 + // Try to shortcut find operations (as opposed to filters) in HTML documents
772 + if ( !seed ) {
773 + setDocument( context );
774 + context = context || document;
775 +
776 + if ( documentIsHTML ) {
777 +
778 + // If the selector is sufficiently simple, try using a "get*By*" DOM method
779 + // (excepting DocumentFragment context, where the methods don't exist)
780 + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
781 +
782 + // ID selector
783 + if ( ( m = match[ 1 ] ) ) {
784 +
785 + // Document context
786 + if ( nodeType === 9 ) {
787 + if ( ( elem = context.getElementById( m ) ) ) {
788 +
789 + // Support: IE, Opera, Webkit
790 + // TODO: identify versions
791 + // getElementById can match elements by name instead of ID
792 + if ( elem.id === m ) {
793 + results.push( elem );
794 + return results;
795 + }
796 + } else {
797 + return results;
798 + }
799 +
800 + // Element context
801 + } else {
802 +
803 + // Support: IE, Opera, Webkit
804 + // TODO: identify versions
805 + // getElementById can match elements by name instead of ID
806 + if ( newContext && ( elem = newContext.getElementById( m ) ) &&
807 + contains( context, elem ) &&
808 + elem.id === m ) {
809 +
810 + results.push( elem );
811 + return results;
812 + }
813 + }
814 +
815 + // Type selector
816 + } else if ( match[ 2 ] ) {
817 + push.apply( results, context.getElementsByTagName( selector ) );
818 + return results;
819 +
820 + // Class selector
821 + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
822 + context.getElementsByClassName ) {
823 +
824 + push.apply( results, context.getElementsByClassName( m ) );
825 + return results;
826 + }
827 + }
828 +
829 + // Take advantage of querySelectorAll
830 + if ( support.qsa &&
831 + !nonnativeSelectorCache[ selector + " " ] &&
832 + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
833 +
834 + // Support: IE 8 only
835 + // Exclude object elements
836 + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
837 +
838 + newSelector = selector;
839 + newContext = context;
840 +
841 + // qSA considers elements outside a scoping root when evaluating child or
842 + // descendant combinators, which is not what we want.
843 + // In such cases, we work around the behavior by prefixing every selector in the
844 + // list with an ID selector referencing the scope context.
845 + // The technique has to be used as well when a leading combinator is used
846 + // as such selectors are not recognized by querySelectorAll.
847 + // Thanks to Andrew Dupont for this technique.
848 + if ( nodeType === 1 &&
849 + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
850 +
851 + // Expand context for sibling selectors
852 + newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
853 + context;
854 +
855 + // We can use :scope instead of the ID hack if the browser
856 + // supports it & if we're not changing the context.
857 + if ( newContext !== context || !support.scope ) {
858 +
859 + // Capture the context ID, setting it first if necessary
860 + if ( ( nid = context.getAttribute( "id" ) ) ) {
861 + nid = nid.replace( rcssescape, fcssescape );
862 + } else {
863 + context.setAttribute( "id", ( nid = expando ) );
864 + }
865 + }
866 +
867 + // Prefix every selector in the list
868 + groups = tokenize( selector );
869 + i = groups.length;
870 + while ( i-- ) {
871 + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
872 + toSelector( groups[ i ] );
873 + }
874 + newSelector = groups.join( "," );
875 + }
876 +
877 + try {
878 + push.apply( results,
879 + newContext.querySelectorAll( newSelector )
880 + );
881 + return results;
882 + } catch ( qsaError ) {
883 + nonnativeSelectorCache( selector, true );
884 + } finally {
885 + if ( nid === expando ) {
886 + context.removeAttribute( "id" );
887 + }
888 + }
889 + }
890 + }
891 + }
892 +
893 + // All others
894 + return select( selector.replace( rtrim, "$1" ), context, results, seed );
895 +}
896 +
897 +/**
898 + * Create key-value caches of limited size
899 + * @returns {function(string, object)} Returns the Object data after storing it on itself with
900 + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
901 + * deleting the oldest entry
902 + */
903 +function createCache() {
904 + var keys = [];
905 +
906 + function cache( key, value ) {
907 +
908 + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
909 + if ( keys.push( key + " " ) > Expr.cacheLength ) {
910 +
911 + // Only keep the most recent entries
912 + delete cache[ keys.shift() ];
913 + }
914 + return ( cache[ key + " " ] = value );
915 + }
916 + return cache;
917 +}
918 +
919 +/**
920 + * Mark a function for special use by Sizzle
921 + * @param {Function} fn The function to mark
922 + */
923 +function markFunction( fn ) {
924 + fn[ expando ] = true;
925 + return fn;
926 +}
927 +
928 +/**
929 + * Support testing using an element
930 + * @param {Function} fn Passed the created element and returns a boolean result
931 + */
932 +function assert( fn ) {
933 + var el = document.createElement( "fieldset" );
934 +
935 + try {
936 + return !!fn( el );
937 + } catch ( e ) {
938 + return false;
939 + } finally {
940 +
941 + // Remove from its parent by default
942 + if ( el.parentNode ) {
943 + el.parentNode.removeChild( el );
944 + }
945 +
946 + // release memory in IE
947 + el = null;
948 + }
949 +}
950 +
951 +/**
952 + * Adds the same handler for all of the specified attrs
953 + * @param {String} attrs Pipe-separated list of attributes
954 + * @param {Function} handler The method that will be applied
955 + */
956 +function addHandle( attrs, handler ) {
957 + var arr = attrs.split( "|" ),
958 + i = arr.length;
959 +
960 + while ( i-- ) {
961 + Expr.attrHandle[ arr[ i ] ] = handler;
962 + }
963 +}
964 +
965 +/**
966 + * Checks document order of two siblings
967 + * @param {Element} a
968 + * @param {Element} b
969 + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
970 + */
971 +function siblingCheck( a, b ) {
972 + var cur = b && a,
973 + diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
974 + a.sourceIndex - b.sourceIndex;
975 +
976 + // Use IE sourceIndex if available on both nodes
977 + if ( diff ) {
978 + return diff;
979 + }
980 +
981 + // Check if b follows a
982 + if ( cur ) {
983 + while ( ( cur = cur.nextSibling ) ) {
984 + if ( cur === b ) {
985 + return -1;
986 + }
987 + }
988 + }
989 +
990 + return a ? 1 : -1;
991 +}
992 +
993 +/**
994 + * Returns a function to use in pseudos for input types
995 + * @param {String} type
996 + */
997 +function createInputPseudo( type ) {
998 + return function( elem ) {
999 + var name = elem.nodeName.toLowerCase();
1000 + return name === "input" && elem.type === type;
1001 + };
1002 +}
1003 +
1004 +/**
1005 + * Returns a function to use in pseudos for buttons
1006 + * @param {String} type
1007 + */
1008 +function createButtonPseudo( type ) {
1009 + return function( elem ) {
1010 + var name = elem.nodeName.toLowerCase();
1011 + return ( name === "input" || name === "button" ) && elem.type === type;
1012 + };
1013 +}
1014 +
1015 +/**
1016 + * Returns a function to use in pseudos for :enabled/:disabled
1017 + * @param {Boolean} disabled true for :disabled; false for :enabled
1018 + */
1019 +function createDisabledPseudo( disabled ) {
1020 +
1021 + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
1022 + return function( elem ) {
1023 +
1024 + // Only certain elements can match :enabled or :disabled
1025 + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
1026 + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
1027 + if ( "form" in elem ) {
1028 +
1029 + // Check for inherited disabledness on relevant non-disabled elements:
1030 + // * listed form-associated elements in a disabled fieldset
1031 + // https://html.spec.whatwg.org/multipage/forms.html#category-listed
1032 + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
1033 + // * option elements in a disabled optgroup
1034 + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
1035 + // All such elements have a "form" property.
1036 + if ( elem.parentNode && elem.disabled === false ) {
1037 +
1038 + // Option elements defer to a parent optgroup if present
1039 + if ( "label" in elem ) {
1040 + if ( "label" in elem.parentNode ) {
1041 + return elem.parentNode.disabled === disabled;
1042 + } else {
1043 + return elem.disabled === disabled;
1044 + }
1045 + }
1046 +
1047 + // Support: IE 6 - 11
1048 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors
1049 + return elem.isDisabled === disabled ||
1050 +
1051 + // Where there is no isDisabled, check manually
1052 + /* jshint -W018 */
1053 + elem.isDisabled !== !disabled &&
1054 + inDisabledFieldset( elem ) === disabled;
1055 + }
1056 +
1057 + return elem.disabled === disabled;
1058 +
1059 + // Try to winnow out elements that can't be disabled before trusting the disabled property.
1060 + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1061 + // even exist on them, let alone have a boolean value.
1062 + } else if ( "label" in elem ) {
1063 + return elem.disabled === disabled;
1064 + }
1065 +
1066 + // Remaining elements are neither :enabled nor :disabled
1067 + return false;
1068 + };
1069 +}
1070 +
1071 +/**
1072 + * Returns a function to use in pseudos for positionals
1073 + * @param {Function} fn
1074 + */
1075 +function createPositionalPseudo( fn ) {
1076 + return markFunction( function( argument ) {
1077 + argument = +argument;
1078 + return markFunction( function( seed, matches ) {
1079 + var j,
1080 + matchIndexes = fn( [], seed.length, argument ),
1081 + i = matchIndexes.length;
1082 +
1083 + // Match elements found at the specified indexes
1084 + while ( i-- ) {
1085 + if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
1086 + seed[ j ] = !( matches[ j ] = seed[ j ] );
1087 + }
1088 + }
1089 + } );
1090 + } );
1091 +}
1092 +
1093 +/**
1094 + * Checks a node for validity as a Sizzle context
1095 + * @param {Element|Object=} context
1096 + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1097 + */
1098 +function testContext( context ) {
1099 + return context && typeof context.getElementsByTagName !== "undefined" && context;
1100 +}
1101 +
1102 +// Expose support vars for convenience
1103 +support = Sizzle.support = {};
1104 +
1105 +/**
1106 + * Detects XML nodes
1107 + * @param {Element|Object} elem An element or a document
1108 + * @returns {Boolean} True iff elem is a non-HTML XML node
1109 + */
1110 +isXML = Sizzle.isXML = function( elem ) {
1111 + var namespace = elem.namespaceURI,
1112 + docElem = ( elem.ownerDocument || elem ).documentElement;
1113 +
1114 + // Support: IE <=8
1115 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
1116 + // https://bugs.jquery.com/ticket/4833
1117 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
1118 +};
1119 +
1120 +/**
1121 + * Sets document-related variables once based on the current document
1122 + * @param {Element|Object} [doc] An element or document object to use to set the document
1123 + * @returns {Object} Returns the current document
1124 + */
1125 +setDocument = Sizzle.setDocument = function( node ) {
1126 + var hasCompare, subWindow,
1127 + doc = node ? node.ownerDocument || node : preferredDoc;
1128 +
1129 + // Return early if doc is invalid or already selected
1130 + // Support: IE 11+, Edge 17 - 18+
1131 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1132 + // two documents; shallow comparisons work.
1133 + // eslint-disable-next-line eqeqeq
1134 + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
1135 + return document;
1136 + }
1137 +
1138 + // Update global variables
1139 + document = doc;
1140 + docElem = document.documentElement;
1141 + documentIsHTML = !isXML( document );
1142 +
1143 + // Support: IE 9 - 11+, Edge 12 - 18+
1144 + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1145 + // Support: IE 11+, Edge 17 - 18+
1146 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1147 + // two documents; shallow comparisons work.
1148 + // eslint-disable-next-line eqeqeq
1149 + if ( preferredDoc != document &&
1150 + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
1151 +
1152 + // Support: IE 11, Edge
1153 + if ( subWindow.addEventListener ) {
1154 + subWindow.addEventListener( "unload", unloadHandler, false );
1155 +
1156 + // Support: IE 9 - 10 only
1157 + } else if ( subWindow.attachEvent ) {
1158 + subWindow.attachEvent( "onunload", unloadHandler );
1159 + }
1160 + }
1161 +
1162 + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
1163 + // Safari 4 - 5 only, Opera <=11.6 - 12.x only
1164 + // IE/Edge & older browsers don't support the :scope pseudo-class.
1165 + // Support: Safari 6.0 only
1166 + // Safari 6.0 supports :scope but it's an alias of :root there.
1167 + support.scope = assert( function( el ) {
1168 + docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
1169 + return typeof el.querySelectorAll !== "undefined" &&
1170 + !el.querySelectorAll( ":scope fieldset div" ).length;
1171 + } );
1172 +
1173 + /* Attributes
1174 + ---------------------------------------------------------------------- */
1175 +
1176 + // Support: IE<8
1177 + // Verify that getAttribute really returns attributes and not properties
1178 + // (excepting IE8 booleans)
1179 + support.attributes = assert( function( el ) {
1180 + el.className = "i";
1181 + return !el.getAttribute( "className" );
1182 + } );
1183 +
1184 + /* getElement(s)By*
1185 + ---------------------------------------------------------------------- */
1186 +
1187 + // Check if getElementsByTagName("*") returns only elements
1188 + support.getElementsByTagName = assert( function( el ) {
1189 + el.appendChild( document.createComment( "" ) );
1190 + return !el.getElementsByTagName( "*" ).length;
1191 + } );
1192 +
1193 + // Support: IE<9
1194 + support.getElementsByClassName = rnative.test( document.getElementsByClassName );
1195 +
1196 + // Support: IE<10
1197 + // Check if getElementById returns elements by name
1198 + // The broken getElementById methods don't pick up programmatically-set names,
1199 + // so use a roundabout getElementsByName test
1200 + support.getById = assert( function( el ) {
1201 + docElem.appendChild( el ).id = expando;
1202 + return !document.getElementsByName || !document.getElementsByName( expando ).length;
1203 + } );
1204 +
1205 + // ID filter and find
1206 + if ( support.getById ) {
1207 + Expr.filter[ "ID" ] = function( id ) {
1208 + var attrId = id.replace( runescape, funescape );
1209 + return function( elem ) {
1210 + return elem.getAttribute( "id" ) === attrId;
1211 + };
1212 + };
1213 + Expr.find[ "ID" ] = function( id, context ) {
1214 + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1215 + var elem = context.getElementById( id );
1216 + return elem ? [ elem ] : [];
1217 + }
1218 + };
1219 + } else {
1220 + Expr.filter[ "ID" ] = function( id ) {
1221 + var attrId = id.replace( runescape, funescape );
1222 + return function( elem ) {
1223 + var node = typeof elem.getAttributeNode !== "undefined" &&
1224 + elem.getAttributeNode( "id" );
1225 + return node && node.value === attrId;
1226 + };
1227 + };
1228 +
1229 + // Support: IE 6 - 7 only
1230 + // getElementById is not reliable as a find shortcut
1231 + Expr.find[ "ID" ] = function( id, context ) {
1232 + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1233 + var node, i, elems,
1234 + elem = context.getElementById( id );
1235 +
1236 + if ( elem ) {
1237 +
1238 + // Verify the id attribute
1239 + node = elem.getAttributeNode( "id" );
1240 + if ( node && node.value === id ) {
1241 + return [ elem ];
1242 + }
1243 +
1244 + // Fall back on getElementsByName
1245 + elems = context.getElementsByName( id );
1246 + i = 0;
1247 + while ( ( elem = elems[ i++ ] ) ) {
1248 + node = elem.getAttributeNode( "id" );
1249 + if ( node && node.value === id ) {
1250 + return [ elem ];
1251 + }
1252 + }
1253 + }
1254 +
1255 + return [];
1256 + }
1257 + };
1258 + }
1259 +
1260 + // Tag
1261 + Expr.find[ "TAG" ] = support.getElementsByTagName ?
1262 + function( tag, context ) {
1263 + if ( typeof context.getElementsByTagName !== "undefined" ) {
1264 + return context.getElementsByTagName( tag );
1265 +
1266 + // DocumentFragment nodes don't have gEBTN
1267 + } else if ( support.qsa ) {
1268 + return context.querySelectorAll( tag );
1269 + }
1270 + } :
1271 +
1272 + function( tag, context ) {
1273 + var elem,
1274 + tmp = [],
1275 + i = 0,
1276 +
1277 + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1278 + results = context.getElementsByTagName( tag );
1279 +
1280 + // Filter out possible comments
1281 + if ( tag === "*" ) {
1282 + while ( ( elem = results[ i++ ] ) ) {
1283 + if ( elem.nodeType === 1 ) {
1284 + tmp.push( elem );
1285 + }
1286 + }
1287 +
1288 + return tmp;
1289 + }
1290 + return results;
1291 + };
1292 +
1293 + // Class
1294 + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
1295 + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
1296 + return context.getElementsByClassName( className );
1297 + }
1298 + };
1299 +
1300 + /* QSA/matchesSelector
1301 + ---------------------------------------------------------------------- */
1302 +
1303 + // QSA and matchesSelector support
1304 +
1305 + // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1306 + rbuggyMatches = [];
1307 +
1308 + // qSa(:focus) reports false when true (Chrome 21)
1309 + // We allow this because of a bug in IE8/9 that throws an error
1310 + // whenever `document.activeElement` is accessed on an iframe
1311 + // So, we allow :focus to pass through QSA all the time to avoid the IE error
1312 + // See https://bugs.jquery.com/ticket/13378
1313 + rbuggyQSA = [];
1314 +
1315 + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
1316 +
1317 + // Build QSA regex
1318 + // Regex strategy adopted from Diego Perini
1319 + assert( function( el ) {
1320 +
1321 + var input;
1322 +
1323 + // Select is set to empty string on purpose
1324 + // This is to test IE's treatment of not explicitly
1325 + // setting a boolean content attribute,
1326 + // since its presence should be enough
1327 + // https://bugs.jquery.com/ticket/12359
1328 + docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
1329 + "<select id='" + expando + "-\r\\' msallowcapture=''>" +
1330 + "<option selected=''></option></select>";
1331 +
1332 + // Support: IE8, Opera 11-12.16
1333 + // Nothing should be selected when empty strings follow ^= or $= or *=
1334 + // The test attribute must be unknown in Opera but "safe" for WinRT
1335 + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1336 + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
1337 + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1338 + }
1339 +
1340 + // Support: IE8
1341 + // Boolean attributes and "value" are not treated correctly
1342 + if ( !el.querySelectorAll( "[selected]" ).length ) {
1343 + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1344 + }
1345 +
1346 + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
1347 + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1348 + rbuggyQSA.push( "~=" );
1349 + }
1350 +
1351 + // Support: IE 11+, Edge 15 - 18+
1352 + // IE 11/Edge don't find elements on a `[name='']` query in some cases.
1353 + // Adding a temporary attribute to the document before the selection works
1354 + // around the issue.
1355 + // Interestingly, IE 10 & older don't seem to have the issue.
1356 + input = document.createElement( "input" );
1357 + input.setAttribute( "name", "" );
1358 + el.appendChild( input );
1359 + if ( !el.querySelectorAll( "[name='']" ).length ) {
1360 + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
1361 + whitespace + "*(?:''|\"\")" );
1362 + }
1363 +
1364 + // Webkit/Opera - :checked should return selected option elements
1365 + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1366 + // IE8 throws error here and will not see later tests
1367 + if ( !el.querySelectorAll( ":checked" ).length ) {
1368 + rbuggyQSA.push( ":checked" );
1369 + }
1370 +
1371 + // Support: Safari 8+, iOS 8+
1372 + // https://bugs.webkit.org/show_bug.cgi?id=136851
1373 + // In-page `selector#id sibling-combinator selector` fails
1374 + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1375 + rbuggyQSA.push( ".#.+[+~]" );
1376 + }
1377 +
1378 + // Support: Firefox <=3.6 - 5 only
1379 + // Old Firefox doesn't throw on a badly-escaped identifier.
1380 + el.querySelectorAll( "\\\f" );
1381 + rbuggyQSA.push( "[\\r\\n\\f]" );
1382 + } );
1383 +
1384 + assert( function( el ) {
1385 + el.innerHTML = "<a href='' disabled='disabled'></a>" +
1386 + "<select disabled='disabled'><option/></select>";
1387 +
1388 + // Support: Windows 8 Native Apps
1389 + // The type and name attributes are restricted during .innerHTML assignment
1390 + var input = document.createElement( "input" );
1391 + input.setAttribute( "type", "hidden" );
1392 + el.appendChild( input ).setAttribute( "name", "D" );
1393 +
1394 + // Support: IE8
1395 + // Enforce case-sensitivity of name attribute
1396 + if ( el.querySelectorAll( "[name=d]" ).length ) {
1397 + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1398 + }
1399 +
1400 + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1401 + // IE8 throws error here and will not see later tests
1402 + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
1403 + rbuggyQSA.push( ":enabled", ":disabled" );
1404 + }
1405 +
1406 + // Support: IE9-11+
1407 + // IE's :disabled selector does not pick up the children of disabled fieldsets
1408 + docElem.appendChild( el ).disabled = true;
1409 + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
1410 + rbuggyQSA.push( ":enabled", ":disabled" );
1411 + }
1412 +
1413 + // Support: Opera 10 - 11 only
1414 + // Opera 10-11 does not throw on post-comma invalid pseudos
1415 + el.querySelectorAll( "*,:x" );
1416 + rbuggyQSA.push( ",.*:" );
1417 + } );
1418 + }
1419 +
1420 + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
1421 + docElem.webkitMatchesSelector ||
1422 + docElem.mozMatchesSelector ||
1423 + docElem.oMatchesSelector ||
1424 + docElem.msMatchesSelector ) ) ) ) {
1425 +
1426 + assert( function( el ) {
1427 +
1428 + // Check to see if it's possible to do matchesSelector
1429 + // on a disconnected node (IE 9)
1430 + support.disconnectedMatch = matches.call( el, "*" );
1431 +
1432 + // This should fail with an exception
1433 + // Gecko does not error, returns false instead
1434 + matches.call( el, "[s!='']:x" );
1435 + rbuggyMatches.push( "!=", pseudos );
1436 + } );
1437 + }
1438 +
1439 + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
1440 + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
1441 +
1442 + /* Contains
1443 + ---------------------------------------------------------------------- */
1444 + hasCompare = rnative.test( docElem.compareDocumentPosition );
1445 +
1446 + // Element contains another
1447 + // Purposefully self-exclusive
1448 + // As in, an element does not contain itself
1449 + contains = hasCompare || rnative.test( docElem.contains ) ?
1450 + function( a, b ) {
1451 + var adown = a.nodeType === 9 ? a.documentElement : a,
1452 + bup = b && b.parentNode;
1453 + return a === bup || !!( bup && bup.nodeType === 1 && (
1454 + adown.contains ?
1455 + adown.contains( bup ) :
1456 + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1457 + ) );
1458 + } :
1459 + function( a, b ) {
1460 + if ( b ) {
1461 + while ( ( b = b.parentNode ) ) {
1462 + if ( b === a ) {
1463 + return true;
1464 + }
1465 + }
1466 + }
1467 + return false;
1468 + };
1469 +
1470 + /* Sorting
1471 + ---------------------------------------------------------------------- */
1472 +
1473 + // Document order sorting
1474 + sortOrder = hasCompare ?
1475 + function( a, b ) {
1476 +
1477 + // Flag for duplicate removal
1478 + if ( a === b ) {
1479 + hasDuplicate = true;
1480 + return 0;
1481 + }
1482 +
1483 + // Sort on method existence if only one input has compareDocumentPosition
1484 + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1485 + if ( compare ) {
1486 + return compare;
1487 + }
1488 +
1489 + // Calculate position if both inputs belong to the same document
1490 + // Support: IE 11+, Edge 17 - 18+
1491 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1492 + // two documents; shallow comparisons work.
1493 + // eslint-disable-next-line eqeqeq
1494 + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
1495 + a.compareDocumentPosition( b ) :
1496 +
1497 + // Otherwise we know they are disconnected
1498 + 1;
1499 +
1500 + // Disconnected nodes
1501 + if ( compare & 1 ||
1502 + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
1503 +
1504 + // Choose the first element that is related to our preferred document
1505 + // Support: IE 11+, Edge 17 - 18+
1506 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1507 + // two documents; shallow comparisons work.
1508 + // eslint-disable-next-line eqeqeq
1509 + if ( a == document || a.ownerDocument == preferredDoc &&
1510 + contains( preferredDoc, a ) ) {
1511 + return -1;
1512 + }
1513 +
1514 + // Support: IE 11+, Edge 17 - 18+
1515 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1516 + // two documents; shallow comparisons work.
1517 + // eslint-disable-next-line eqeqeq
1518 + if ( b == document || b.ownerDocument == preferredDoc &&
1519 + contains( preferredDoc, b ) ) {
1520 + return 1;
1521 + }
1522 +
1523 + // Maintain original order
1524 + return sortInput ?
1525 + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1526 + 0;
1527 + }
1528 +
1529 + return compare & 4 ? -1 : 1;
1530 + } :
1531 + function( a, b ) {
1532 +
1533 + // Exit early if the nodes are identical
1534 + if ( a === b ) {
1535 + hasDuplicate = true;
1536 + return 0;
1537 + }
1538 +
1539 + var cur,
1540 + i = 0,
1541 + aup = a.parentNode,
1542 + bup = b.parentNode,
1543 + ap = [ a ],
1544 + bp = [ b ];
1545 +
1546 + // Parentless nodes are either documents or disconnected
1547 + if ( !aup || !bup ) {
1548 +
1549 + // Support: IE 11+, Edge 17 - 18+
1550 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1551 + // two documents; shallow comparisons work.
1552 + /* eslint-disable eqeqeq */
1553 + return a == document ? -1 :
1554 + b == document ? 1 :
1555 + /* eslint-enable eqeqeq */
1556 + aup ? -1 :
1557 + bup ? 1 :
1558 + sortInput ?
1559 + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1560 + 0;
1561 +
1562 + // If the nodes are siblings, we can do a quick check
1563 + } else if ( aup === bup ) {
1564 + return siblingCheck( a, b );
1565 + }
1566 +
1567 + // Otherwise we need full lists of their ancestors for comparison
1568 + cur = a;
1569 + while ( ( cur = cur.parentNode ) ) {
1570 + ap.unshift( cur );
1571 + }
1572 + cur = b;
1573 + while ( ( cur = cur.parentNode ) ) {
1574 + bp.unshift( cur );
1575 + }
1576 +
1577 + // Walk down the tree looking for a discrepancy
1578 + while ( ap[ i ] === bp[ i ] ) {
1579 + i++;
1580 + }
1581 +
1582 + return i ?
1583 +
1584 + // Do a sibling check if the nodes have a common ancestor
1585 + siblingCheck( ap[ i ], bp[ i ] ) :
1586 +
1587 + // Otherwise nodes in our document sort first
1588 + // Support: IE 11+, Edge 17 - 18+
1589 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1590 + // two documents; shallow comparisons work.
1591 + /* eslint-disable eqeqeq */
1592 + ap[ i ] == preferredDoc ? -1 :
1593 + bp[ i ] == preferredDoc ? 1 :
1594 + /* eslint-enable eqeqeq */
1595 + 0;
1596 + };
1597 +
1598 + return document;
1599 +};
1600 +
1601 +Sizzle.matches = function( expr, elements ) {
1602 + return Sizzle( expr, null, null, elements );
1603 +};
1604 +
1605 +Sizzle.matchesSelector = function( elem, expr ) {
1606 + setDocument( elem );
1607 +
1608 + if ( support.matchesSelector && documentIsHTML &&
1609 + !nonnativeSelectorCache[ expr + " " ] &&
1610 + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1611 + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
1612 +
1613 + try {
1614 + var ret = matches.call( elem, expr );
1615 +
1616 + // IE 9's matchesSelector returns false on disconnected nodes
1617 + if ( ret || support.disconnectedMatch ||
1618 +
1619 + // As well, disconnected nodes are said to be in a document
1620 + // fragment in IE 9
1621 + elem.document && elem.document.nodeType !== 11 ) {
1622 + return ret;
1623 + }
1624 + } catch ( e ) {
1625 + nonnativeSelectorCache( expr, true );
1626 + }
1627 + }
1628 +
1629 + return Sizzle( expr, document, null, [ elem ] ).length > 0;
1630 +};
1631 +
1632 +Sizzle.contains = function( context, elem ) {
1633 +
1634 + // Set document vars if needed
1635 + // Support: IE 11+, Edge 17 - 18+
1636 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1637 + // two documents; shallow comparisons work.
1638 + // eslint-disable-next-line eqeqeq
1639 + if ( ( context.ownerDocument || context ) != document ) {
1640 + setDocument( context );
1641 + }
1642 + return contains( context, elem );
1643 +};
1644 +
1645 +Sizzle.attr = function( elem, name ) {
1646 +
1647 + // Set document vars if needed
1648 + // Support: IE 11+, Edge 17 - 18+
1649 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1650 + // two documents; shallow comparisons work.
1651 + // eslint-disable-next-line eqeqeq
1652 + if ( ( elem.ownerDocument || elem ) != document ) {
1653 + setDocument( elem );
1654 + }
1655 +
1656 + var fn = Expr.attrHandle[ name.toLowerCase() ],
1657 +
1658 + // Don't get fooled by Object.prototype properties (jQuery #13807)
1659 + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1660 + fn( elem, name, !documentIsHTML ) :
1661 + undefined;
1662 +
1663 + return val !== undefined ?
1664 + val :
1665 + support.attributes || !documentIsHTML ?
1666 + elem.getAttribute( name ) :
1667 + ( val = elem.getAttributeNode( name ) ) && val.specified ?
1668 + val.value :
1669 + null;
1670 +};
1671 +
1672 +Sizzle.escape = function( sel ) {
1673 + return ( sel + "" ).replace( rcssescape, fcssescape );
1674 +};
1675 +
1676 +Sizzle.error = function( msg ) {
1677 + throw new Error( "Syntax error, unrecognized expression: " + msg );
1678 +};
1679 +
1680 +/**
1681 + * Document sorting and removing duplicates
1682 + * @param {ArrayLike} results
1683 + */
1684 +Sizzle.uniqueSort = function( results ) {
1685 + var elem,
1686 + duplicates = [],
1687 + j = 0,
1688 + i = 0;
1689 +
1690 + // Unless we *know* we can detect duplicates, assume their presence
1691 + hasDuplicate = !support.detectDuplicates;
1692 + sortInput = !support.sortStable && results.slice( 0 );
1693 + results.sort( sortOrder );
1694 +
1695 + if ( hasDuplicate ) {
1696 + while ( ( elem = results[ i++ ] ) ) {
1697 + if ( elem === results[ i ] ) {
1698 + j = duplicates.push( i );
1699 + }
1700 + }
1701 + while ( j-- ) {
1702 + results.splice( duplicates[ j ], 1 );
1703 + }
1704 + }
1705 +
1706 + // Clear input after sorting to release objects
1707 + // See https://github.com/jquery/sizzle/pull/225
1708 + sortInput = null;
1709 +
1710 + return results;
1711 +};
1712 +
1713 +/**
1714 + * Utility function for retrieving the text value of an array of DOM nodes
1715 + * @param {Array|Element} elem
1716 + */
1717 +getText = Sizzle.getText = function( elem ) {
1718 + var node,
1719 + ret = "",
1720 + i = 0,
1721 + nodeType = elem.nodeType;
1722 +
1723 + if ( !nodeType ) {
1724 +
1725 + // If no nodeType, this is expected to be an array
1726 + while ( ( node = elem[ i++ ] ) ) {
1727 +
1728 + // Do not traverse comment nodes
1729 + ret += getText( node );
1730 + }
1731 + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1732 +
1733 + // Use textContent for elements
1734 + // innerText usage removed for consistency of new lines (jQuery #11153)
1735 + if ( typeof elem.textContent === "string" ) {
1736 + return elem.textContent;
1737 + } else {
1738 +
1739 + // Traverse its children
1740 + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1741 + ret += getText( elem );
1742 + }
1743 + }
1744 + } else if ( nodeType === 3 || nodeType === 4 ) {
1745 + return elem.nodeValue;
1746 + }
1747 +
1748 + // Do not include comment or processing instruction nodes
1749 +
1750 + return ret;
1751 +};
1752 +
1753 +Expr = Sizzle.selectors = {
1754 +
1755 + // Can be adjusted by the user
1756 + cacheLength: 50,
1757 +
1758 + createPseudo: markFunction,
1759 +
1760 + match: matchExpr,
1761 +
1762 + attrHandle: {},
1763 +
1764 + find: {},
1765 +
1766 + relative: {
1767 + ">": { dir: "parentNode", first: true },
1768 + " ": { dir: "parentNode" },
1769 + "+": { dir: "previousSibling", first: true },
1770 + "~": { dir: "previousSibling" }
1771 + },
1772 +
1773 + preFilter: {
1774 + "ATTR": function( match ) {
1775 + match[ 1 ] = match[ 1 ].replace( runescape, funescape );
1776 +
1777 + // Move the given value to match[3] whether quoted or unquoted
1778 + match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
1779 + match[ 5 ] || "" ).replace( runescape, funescape );
1780 +
1781 + if ( match[ 2 ] === "~=" ) {
1782 + match[ 3 ] = " " + match[ 3 ] + " ";
1783 + }
1784 +
1785 + return match.slice( 0, 4 );
1786 + },
1787 +
1788 + "CHILD": function( match ) {
1789 +
1790 + /* matches from matchExpr["CHILD"]
1791 + 1 type (only|nth|...)
1792 + 2 what (child|of-type)
1793 + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1794 + 4 xn-component of xn+y argument ([+-]?\d*n|)
1795 + 5 sign of xn-component
1796 + 6 x of xn-component
1797 + 7 sign of y-component
1798 + 8 y of y-component
1799 + */
1800 + match[ 1 ] = match[ 1 ].toLowerCase();
1801 +
1802 + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
1803 +
1804 + // nth-* requires argument
1805 + if ( !match[ 3 ] ) {
1806 + Sizzle.error( match[ 0 ] );
1807 + }
1808 +
1809 + // numeric x and y parameters for Expr.filter.CHILD
1810 + // remember that false/true cast respectively to 0/1
1811 + match[ 4 ] = +( match[ 4 ] ?
1812 + match[ 5 ] + ( match[ 6 ] || 1 ) :
1813 + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
1814 + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
1815 +
1816 + // other types prohibit arguments
1817 + } else if ( match[ 3 ] ) {
1818 + Sizzle.error( match[ 0 ] );
1819 + }
1820 +
1821 + return match;
1822 + },
1823 +
1824 + "PSEUDO": function( match ) {
1825 + var excess,
1826 + unquoted = !match[ 6 ] && match[ 2 ];
1827 +
1828 + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
1829 + return null;
1830 + }
1831 +
1832 + // Accept quoted arguments as-is
1833 + if ( match[ 3 ] ) {
1834 + match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
1835 +
1836 + // Strip excess characters from unquoted arguments
1837 + } else if ( unquoted && rpseudo.test( unquoted ) &&
1838 +
1839 + // Get excess from tokenize (recursively)
1840 + ( excess = tokenize( unquoted, true ) ) &&
1841 +
1842 + // advance to the next closing parenthesis
1843 + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
1844 +
1845 + // excess is a negative index
1846 + match[ 0 ] = match[ 0 ].slice( 0, excess );
1847 + match[ 2 ] = unquoted.slice( 0, excess );
1848 + }
1849 +
1850 + // Return only captures needed by the pseudo filter method (type and argument)
1851 + return match.slice( 0, 3 );
1852 + }
1853 + },
1854 +
1855 + filter: {
1856 +
1857 + "TAG": function( nodeNameSelector ) {
1858 + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1859 + return nodeNameSelector === "*" ?
1860 + function() {
1861 + return true;
1862 + } :
1863 + function( elem ) {
1864 + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1865 + };
1866 + },
1867 +
1868 + "CLASS": function( className ) {
1869 + var pattern = classCache[ className + " " ];
1870 +
1871 + return pattern ||
1872 + ( pattern = new RegExp( "(^|" + whitespace +
1873 + ")" + className + "(" + whitespace + "|$)" ) ) && classCache(
1874 + className, function( elem ) {
1875 + return pattern.test(
1876 + typeof elem.className === "string" && elem.className ||
1877 + typeof elem.getAttribute !== "undefined" &&
1878 + elem.getAttribute( "class" ) ||
1879 + ""
1880 + );
1881 + } );
1882 + },
1883 +
1884 + "ATTR": function( name, operator, check ) {
1885 + return function( elem ) {
1886 + var result = Sizzle.attr( elem, name );
1887 +
1888 + if ( result == null ) {
1889 + return operator === "!=";
1890 + }
1891 + if ( !operator ) {
1892 + return true;
1893 + }
1894 +
1895 + result += "";
1896 +
1897 + /* eslint-disable max-len */
1898 +
1899 + return operator === "=" ? result === check :
1900 + operator === "!=" ? result !== check :
1901 + operator === "^=" ? check && result.indexOf( check ) === 0 :
1902 + operator === "*=" ? check && result.indexOf( check ) > -1 :
1903 + operator === "$=" ? check && result.slice( -check.length ) === check :
1904 + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1905 + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1906 + false;
1907 + /* eslint-enable max-len */
1908 +
1909 + };
1910 + },
1911 +
1912 + "CHILD": function( type, what, _argument, first, last ) {
1913 + var simple = type.slice( 0, 3 ) !== "nth",
1914 + forward = type.slice( -4 ) !== "last",
1915 + ofType = what === "of-type";
1916 +
1917 + return first === 1 && last === 0 ?
1918 +
1919 + // Shortcut for :nth-*(n)
1920 + function( elem ) {
1921 + return !!elem.parentNode;
1922 + } :
1923 +
1924 + function( elem, _context, xml ) {
1925 + var cache, uniqueCache, outerCache, node, nodeIndex, start,
1926 + dir = simple !== forward ? "nextSibling" : "previousSibling",
1927 + parent = elem.parentNode,
1928 + name = ofType && elem.nodeName.toLowerCase(),
1929 + useCache = !xml && !ofType,
1930 + diff = false;
1931 +
1932 + if ( parent ) {
1933 +
1934 + // :(first|last|only)-(child|of-type)
1935 + if ( simple ) {
1936 + while ( dir ) {
1937 + node = elem;
1938 + while ( ( node = node[ dir ] ) ) {
1939 + if ( ofType ?
1940 + node.nodeName.toLowerCase() === name :
1941 + node.nodeType === 1 ) {
1942 +
1943 + return false;
1944 + }
1945 + }
1946 +
1947 + // Reverse direction for :only-* (if we haven't yet done so)
1948 + start = dir = type === "only" && !start && "nextSibling";
1949 + }
1950 + return true;
1951 + }
1952 +
1953 + start = [ forward ? parent.firstChild : parent.lastChild ];
1954 +
1955 + // non-xml :nth-child(...) stores cache data on `parent`
1956 + if ( forward && useCache ) {
1957 +
1958 + // Seek `elem` from a previously-cached index
1959 +
1960 + // ...in a gzip-friendly way
1961 + node = parent;
1962 + outerCache = node[ expando ] || ( node[ expando ] = {} );
1963 +
1964 + // Support: IE <9 only
1965 + // Defend against cloned attroperties (jQuery gh-1709)
1966 + uniqueCache = outerCache[ node.uniqueID ] ||
1967 + ( outerCache[ node.uniqueID ] = {} );
1968 +
1969 + cache = uniqueCache[ type ] || [];
1970 + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1971 + diff = nodeIndex && cache[ 2 ];
1972 + node = nodeIndex && parent.childNodes[ nodeIndex ];
1973 +
1974 + while ( ( node = ++nodeIndex && node && node[ dir ] ||
1975 +
1976 + // Fallback to seeking `elem` from the start
1977 + ( diff = nodeIndex = 0 ) || start.pop() ) ) {
1978 +
1979 + // When found, cache indexes on `parent` and break
1980 + if ( node.nodeType === 1 && ++diff && node === elem ) {
1981 + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1982 + break;
1983 + }
1984 + }
1985 +
1986 + } else {
1987 +
1988 + // Use previously-cached element index if available
1989 + if ( useCache ) {
1990 +
1991 + // ...in a gzip-friendly way
1992 + node = elem;
1993 + outerCache = node[ expando ] || ( node[ expando ] = {} );
1994 +
1995 + // Support: IE <9 only
1996 + // Defend against cloned attroperties (jQuery gh-1709)
1997 + uniqueCache = outerCache[ node.uniqueID ] ||
1998 + ( outerCache[ node.uniqueID ] = {} );
1999 +
2000 + cache = uniqueCache[ type ] || [];
2001 + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
2002 + diff = nodeIndex;
2003 + }
2004 +
2005 + // xml :nth-child(...)
2006 + // or :nth-last-child(...) or :nth(-last)?-of-type(...)
2007 + if ( diff === false ) {
2008 +
2009 + // Use the same loop as above to seek `elem` from the start
2010 + while ( ( node = ++nodeIndex && node && node[ dir ] ||
2011 + ( diff = nodeIndex = 0 ) || start.pop() ) ) {
2012 +
2013 + if ( ( ofType ?
2014 + node.nodeName.toLowerCase() === name :
2015 + node.nodeType === 1 ) &&
2016 + ++diff ) {
2017 +
2018 + // Cache the index of each encountered element
2019 + if ( useCache ) {
2020 + outerCache = node[ expando ] ||
2021 + ( node[ expando ] = {} );
2022 +
2023 + // Support: IE <9 only
2024 + // Defend against cloned attroperties (jQuery gh-1709)
2025 + uniqueCache = outerCache[ node.uniqueID ] ||
2026 + ( outerCache[ node.uniqueID ] = {} );
2027 +
2028 + uniqueCache[ type ] = [ dirruns, diff ];
2029 + }
2030 +
2031 + if ( node === elem ) {
2032 + break;
2033 + }
2034 + }
2035 + }
2036 + }
2037 + }
2038 +
2039 + // Incorporate the offset, then check against cycle size
2040 + diff -= last;
2041 + return diff === first || ( diff % first === 0 && diff / first >= 0 );
2042 + }
2043 + };
2044 + },
2045 +
2046 + "PSEUDO": function( pseudo, argument ) {
2047 +
2048 + // pseudo-class names are case-insensitive
2049 + // http://www.w3.org/TR/selectors/#pseudo-classes
2050 + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
2051 + // Remember that setFilters inherits from pseudos
2052 + var args,
2053 + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
2054 + Sizzle.error( "unsupported pseudo: " + pseudo );
2055 +
2056 + // The user may use createPseudo to indicate that
2057 + // arguments are needed to create the filter function
2058 + // just as Sizzle does
2059 + if ( fn[ expando ] ) {
2060 + return fn( argument );
2061 + }
2062 +
2063 + // But maintain support for old signatures
2064 + if ( fn.length > 1 ) {
2065 + args = [ pseudo, pseudo, "", argument ];
2066 + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
2067 + markFunction( function( seed, matches ) {
2068 + var idx,
2069 + matched = fn( seed, argument ),
2070 + i = matched.length;
2071 + while ( i-- ) {
2072 + idx = indexOf( seed, matched[ i ] );
2073 + seed[ idx ] = !( matches[ idx ] = matched[ i ] );
2074 + }
2075 + } ) :
2076 + function( elem ) {
2077 + return fn( elem, 0, args );
2078 + };
2079 + }
2080 +
2081 + return fn;
2082 + }
2083 + },
2084 +
2085 + pseudos: {
2086 +
2087 + // Potentially complex pseudos
2088 + "not": markFunction( function( selector ) {
2089 +
2090 + // Trim the selector passed to compile
2091 + // to avoid treating leading and trailing
2092 + // spaces as combinators
2093 + var input = [],
2094 + results = [],
2095 + matcher = compile( selector.replace( rtrim, "$1" ) );
2096 +
2097 + return matcher[ expando ] ?
2098 + markFunction( function( seed, matches, _context, xml ) {
2099 + var elem,
2100 + unmatched = matcher( seed, null, xml, [] ),
2101 + i = seed.length;
2102 +
2103 + // Match elements unmatched by `matcher`
2104 + while ( i-- ) {
2105 + if ( ( elem = unmatched[ i ] ) ) {
2106 + seed[ i ] = !( matches[ i ] = elem );
2107 + }
2108 + }
2109 + } ) :
2110 + function( elem, _context, xml ) {
2111 + input[ 0 ] = elem;
2112 + matcher( input, null, xml, results );
2113 +
2114 + // Don't keep the element (issue #299)
2115 + input[ 0 ] = null;
2116 + return !results.pop();
2117 + };
2118 + } ),
2119 +
2120 + "has": markFunction( function( selector ) {
2121 + return function( elem ) {
2122 + return Sizzle( selector, elem ).length > 0;
2123 + };
2124 + } ),
2125 +
2126 + "contains": markFunction( function( text ) {
2127 + text = text.replace( runescape, funescape );
2128 + return function( elem ) {
2129 + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
2130 + };
2131 + } ),
2132 +
2133 + // "Whether an element is represented by a :lang() selector
2134 + // is based solely on the element's language value
2135 + // being equal to the identifier C,
2136 + // or beginning with the identifier C immediately followed by "-".
2137 + // The matching of C against the element's language value is performed case-insensitively.
2138 + // The identifier C does not have to be a valid language name."
2139 + // http://www.w3.org/TR/selectors/#lang-pseudo
2140 + "lang": markFunction( function( lang ) {
2141 +
2142 + // lang value must be a valid identifier
2143 + if ( !ridentifier.test( lang || "" ) ) {
2144 + Sizzle.error( "unsupported lang: " + lang );
2145 + }
2146 + lang = lang.replace( runescape, funescape ).toLowerCase();
2147 + return function( elem ) {
2148 + var elemLang;
2149 + do {
2150 + if ( ( elemLang = documentIsHTML ?
2151 + elem.lang :
2152 + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
2153 +
2154 + elemLang = elemLang.toLowerCase();
2155 + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2156 + }
2157 + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
2158 + return false;
2159 + };
2160 + } ),
2161 +
2162 + // Miscellaneous
2163 + "target": function( elem ) {
2164 + var hash = window.location && window.location.hash;
2165 + return hash && hash.slice( 1 ) === elem.id;
2166 + },
2167 +
2168 + "root": function( elem ) {
2169 + return elem === docElem;
2170 + },
2171 +
2172 + "focus": function( elem ) {
2173 + return elem === document.activeElement &&
2174 + ( !document.hasFocus || document.hasFocus() ) &&
2175 + !!( elem.type || elem.href || ~elem.tabIndex );
2176 + },
2177 +
2178 + // Boolean properties
2179 + "enabled": createDisabledPseudo( false ),
2180 + "disabled": createDisabledPseudo( true ),
2181 +
2182 + "checked": function( elem ) {
2183 +
2184 + // In CSS3, :checked should return both checked and selected elements
2185 + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2186 + var nodeName = elem.nodeName.toLowerCase();
2187 + return ( nodeName === "input" && !!elem.checked ) ||
2188 + ( nodeName === "option" && !!elem.selected );
2189 + },
2190 +
2191 + "selected": function( elem ) {
2192 +
2193 + // Accessing this property makes selected-by-default
2194 + // options in Safari work properly
2195 + if ( elem.parentNode ) {
2196 + // eslint-disable-next-line no-unused-expressions
2197 + elem.parentNode.selectedIndex;
2198 + }
2199 +
2200 + return elem.selected === true;
2201 + },
2202 +
2203 + // Contents
2204 + "empty": function( elem ) {
2205 +
2206 + // http://www.w3.org/TR/selectors/#empty-pseudo
2207 + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2208 + // but not by others (comment: 8; processing instruction: 7; etc.)
2209 + // nodeType < 6 works because attributes (2) do not appear as children
2210 + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2211 + if ( elem.nodeType < 6 ) {
2212 + return false;
2213 + }
2214 + }
2215 + return true;
2216 + },
2217 +
2218 + "parent": function( elem ) {
2219 + return !Expr.pseudos[ "empty" ]( elem );
2220 + },
2221 +
2222 + // Element/input types
2223 + "header": function( elem ) {
2224 + return rheader.test( elem.nodeName );
2225 + },
2226 +
2227 + "input": function( elem ) {
2228 + return rinputs.test( elem.nodeName );
2229 + },
2230 +
2231 + "button": function( elem ) {
2232 + var name = elem.nodeName.toLowerCase();
2233 + return name === "input" && elem.type === "button" || name === "button";
2234 + },
2235 +
2236 + "text": function( elem ) {
2237 + var attr;
2238 + return elem.nodeName.toLowerCase() === "input" &&
2239 + elem.type === "text" &&
2240 +
2241 + // Support: IE<8
2242 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2243 + ( ( attr = elem.getAttribute( "type" ) ) == null ||
2244 + attr.toLowerCase() === "text" );
2245 + },
2246 +
2247 + // Position-in-collection
2248 + "first": createPositionalPseudo( function() {
2249 + return [ 0 ];
2250 + } ),
2251 +
2252 + "last": createPositionalPseudo( function( _matchIndexes, length ) {
2253 + return [ length - 1 ];
2254 + } ),
2255 +
2256 + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
2257 + return [ argument < 0 ? argument + length : argument ];
2258 + } ),
2259 +
2260 + "even": createPositionalPseudo( function( matchIndexes, length ) {
2261 + var i = 0;
2262 + for ( ; i < length; i += 2 ) {
2263 + matchIndexes.push( i );
2264 + }
2265 + return matchIndexes;
2266 + } ),
2267 +
2268 + "odd": createPositionalPseudo( function( matchIndexes, length ) {
2269 + var i = 1;
2270 + for ( ; i < length; i += 2 ) {
2271 + matchIndexes.push( i );
2272 + }
2273 + return matchIndexes;
2274 + } ),
2275 +
2276 + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
2277 + var i = argument < 0 ?
2278 + argument + length :
2279 + argument > length ?
2280 + length :
2281 + argument;
2282 + for ( ; --i >= 0; ) {
2283 + matchIndexes.push( i );
2284 + }
2285 + return matchIndexes;
2286 + } ),
2287 +
2288 + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
2289 + var i = argument < 0 ? argument + length : argument;
2290 + for ( ; ++i < length; ) {
2291 + matchIndexes.push( i );
2292 + }
2293 + return matchIndexes;
2294 + } )
2295 + }
2296 +};
2297 +
2298 +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
2299 +
2300 +// Add button/input type pseudos
2301 +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2302 + Expr.pseudos[ i ] = createInputPseudo( i );
2303 +}
2304 +for ( i in { submit: true, reset: true } ) {
2305 + Expr.pseudos[ i ] = createButtonPseudo( i );
2306 +}
2307 +
2308 +// Easy API for creating new setFilters
2309 +function setFilters() {}
2310 +setFilters.prototype = Expr.filters = Expr.pseudos;
2311 +Expr.setFilters = new setFilters();
2312 +
2313 +tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
2314 + var matched, match, tokens, type,
2315 + soFar, groups, preFilters,
2316 + cached = tokenCache[ selector + " " ];
2317 +
2318 + if ( cached ) {
2319 + return parseOnly ? 0 : cached.slice( 0 );
2320 + }
2321 +
2322 + soFar = selector;
2323 + groups = [];
2324 + preFilters = Expr.preFilter;
2325 +
2326 + while ( soFar ) {
2327 +
2328 + // Comma and first run
2329 + if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
2330 + if ( match ) {
2331 +
2332 + // Don't consume trailing commas as valid
2333 + soFar = soFar.slice( match[ 0 ].length ) || soFar;
2334 + }
2335 + groups.push( ( tokens = [] ) );
2336 + }
2337 +
2338 + matched = false;
2339 +
2340 + // Combinators
2341 + if ( ( match = rcombinators.exec( soFar ) ) ) {
2342 + matched = match.shift();
2343 + tokens.push( {
2344 + value: matched,
2345 +
2346 + // Cast descendant combinators to space
2347 + type: match[ 0 ].replace( rtrim, " " )
2348 + } );
2349 + soFar = soFar.slice( matched.length );
2350 + }
2351 +
2352 + // Filters
2353 + for ( type in Expr.filter ) {
2354 + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
2355 + ( match = preFilters[ type ]( match ) ) ) ) {
2356 + matched = match.shift();
2357 + tokens.push( {
2358 + value: matched,
2359 + type: type,
2360 + matches: match
2361 + } );
2362 + soFar = soFar.slice( matched.length );
2363 + }
2364 + }
2365 +
2366 + if ( !matched ) {
2367 + break;
2368 + }
2369 + }
2370 +
2371 + // Return the length of the invalid excess
2372 + // if we're just parsing
2373 + // Otherwise, throw an error or return tokens
2374 + return parseOnly ?
2375 + soFar.length :
2376 + soFar ?
2377 + Sizzle.error( selector ) :
2378 +
2379 + // Cache the tokens
2380 + tokenCache( selector, groups ).slice( 0 );
2381 +};
2382 +
2383 +function toSelector( tokens ) {
2384 + var i = 0,
2385 + len = tokens.length,
2386 + selector = "";
2387 + for ( ; i < len; i++ ) {
2388 + selector += tokens[ i ].value;
2389 + }
2390 + return selector;
2391 +}
2392 +
2393 +function addCombinator( matcher, combinator, base ) {
2394 + var dir = combinator.dir,
2395 + skip = combinator.next,
2396 + key = skip || dir,
2397 + checkNonElements = base && key === "parentNode",
2398 + doneName = done++;
2399 +
2400 + return combinator.first ?
2401 +
2402 + // Check against closest ancestor/preceding element
2403 + function( elem, context, xml ) {
2404 + while ( ( elem = elem[ dir ] ) ) {
2405 + if ( elem.nodeType === 1 || checkNonElements ) {
2406 + return matcher( elem, context, xml );
2407 + }
2408 + }
2409 + return false;
2410 + } :
2411 +
2412 + // Check against all ancestor/preceding elements
2413 + function( elem, context, xml ) {
2414 + var oldCache, uniqueCache, outerCache,
2415 + newCache = [ dirruns, doneName ];
2416 +
2417 + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2418 + if ( xml ) {
2419 + while ( ( elem = elem[ dir ] ) ) {
2420 + if ( elem.nodeType === 1 || checkNonElements ) {
2421 + if ( matcher( elem, context, xml ) ) {
2422 + return true;
2423 + }
2424 + }
2425 + }
2426 + } else {
2427 + while ( ( elem = elem[ dir ] ) ) {
2428 + if ( elem.nodeType === 1 || checkNonElements ) {
2429 + outerCache = elem[ expando ] || ( elem[ expando ] = {} );
2430 +
2431 + // Support: IE <9 only
2432 + // Defend against cloned attroperties (jQuery gh-1709)
2433 + uniqueCache = outerCache[ elem.uniqueID ] ||
2434 + ( outerCache[ elem.uniqueID ] = {} );
2435 +
2436 + if ( skip && skip === elem.nodeName.toLowerCase() ) {
2437 + elem = elem[ dir ] || elem;
2438 + } else if ( ( oldCache = uniqueCache[ key ] ) &&
2439 + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2440 +
2441 + // Assign to newCache so results back-propagate to previous elements
2442 + return ( newCache[ 2 ] = oldCache[ 2 ] );
2443 + } else {
2444 +
2445 + // Reuse newcache so results back-propagate to previous elements
2446 + uniqueCache[ key ] = newCache;
2447 +
2448 + // A match means we're done; a fail means we have to keep checking
2449 + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
2450 + return true;
2451 + }
2452 + }
2453 + }
2454 + }
2455 + }
2456 + return false;
2457 + };
2458 +}
2459 +
2460 +function elementMatcher( matchers ) {
2461 + return matchers.length > 1 ?
2462 + function( elem, context, xml ) {
2463 + var i = matchers.length;
2464 + while ( i-- ) {
2465 + if ( !matchers[ i ]( elem, context, xml ) ) {
2466 + return false;
2467 + }
2468 + }
2469 + return true;
2470 + } :
2471 + matchers[ 0 ];
2472 +}
2473 +
2474 +function multipleContexts( selector, contexts, results ) {
2475 + var i = 0,
2476 + len = contexts.length;
2477 + for ( ; i < len; i++ ) {
2478 + Sizzle( selector, contexts[ i ], results );
2479 + }
2480 + return results;
2481 +}
2482 +
2483 +function condense( unmatched, map, filter, context, xml ) {
2484 + var elem,
2485 + newUnmatched = [],
2486 + i = 0,
2487 + len = unmatched.length,
2488 + mapped = map != null;
2489 +
2490 + for ( ; i < len; i++ ) {
2491 + if ( ( elem = unmatched[ i ] ) ) {
2492 + if ( !filter || filter( elem, context, xml ) ) {
2493 + newUnmatched.push( elem );
2494 + if ( mapped ) {
2495 + map.push( i );
2496 + }
2497 + }
2498 + }
2499 + }
2500 +
2501 + return newUnmatched;
2502 +}
2503 +
2504 +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2505 + if ( postFilter && !postFilter[ expando ] ) {
2506 + postFilter = setMatcher( postFilter );
2507 + }
2508 + if ( postFinder && !postFinder[ expando ] ) {
2509 + postFinder = setMatcher( postFinder, postSelector );
2510 + }
2511 + return markFunction( function( seed, results, context, xml ) {
2512 + var temp, i, elem,
2513 + preMap = [],
2514 + postMap = [],
2515 + preexisting = results.length,
2516 +
2517 + // Get initial elements from seed or context
2518 + elems = seed || multipleContexts(
2519 + selector || "*",
2520 + context.nodeType ? [ context ] : context,
2521 + []
2522 + ),
2523 +
2524 + // Prefilter to get matcher input, preserving a map for seed-results synchronization
2525 + matcherIn = preFilter && ( seed || !selector ) ?
2526 + condense( elems, preMap, preFilter, context, xml ) :
2527 + elems,
2528 +
2529 + matcherOut = matcher ?
2530 +
2531 + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2532 + postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2533 +
2534 + // ...intermediate processing is necessary
2535 + [] :
2536 +
2537 + // ...otherwise use results directly
2538 + results :
2539 + matcherIn;
2540 +
2541 + // Find primary matches
2542 + if ( matcher ) {
2543 + matcher( matcherIn, matcherOut, context, xml );
2544 + }
2545 +
2546 + // Apply postFilter
2547 + if ( postFilter ) {
2548 + temp = condense( matcherOut, postMap );
2549 + postFilter( temp, [], context, xml );
2550 +
2551 + // Un-match failing elements by moving them back to matcherIn
2552 + i = temp.length;
2553 + while ( i-- ) {
2554 + if ( ( elem = temp[ i ] ) ) {
2555 + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
2556 + }
2557 + }
2558 + }
2559 +
2560 + if ( seed ) {
2561 + if ( postFinder || preFilter ) {
2562 + if ( postFinder ) {
2563 +
2564 + // Get the final matcherOut by condensing this intermediate into postFinder contexts
2565 + temp = [];
2566 + i = matcherOut.length;
2567 + while ( i-- ) {
2568 + if ( ( elem = matcherOut[ i ] ) ) {
2569 +
2570 + // Restore matcherIn since elem is not yet a final match
2571 + temp.push( ( matcherIn[ i ] = elem ) );
2572 + }
2573 + }
2574 + postFinder( null, ( matcherOut = [] ), temp, xml );
2575 + }
2576 +
2577 + // Move matched elements from seed to results to keep them synchronized
2578 + i = matcherOut.length;
2579 + while ( i-- ) {
2580 + if ( ( elem = matcherOut[ i ] ) &&
2581 + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
2582 +
2583 + seed[ temp ] = !( results[ temp ] = elem );
2584 + }
2585 + }
2586 + }
2587 +
2588 + // Add elements to results, through postFinder if defined
2589 + } else {
2590 + matcherOut = condense(
2591 + matcherOut === results ?
2592 + matcherOut.splice( preexisting, matcherOut.length ) :
2593 + matcherOut
2594 + );
2595 + if ( postFinder ) {
2596 + postFinder( null, results, matcherOut, xml );
2597 + } else {
2598 + push.apply( results, matcherOut );
2599 + }
2600 + }
2601 + } );
2602 +}
2603 +
2604 +function matcherFromTokens( tokens ) {
2605 + var checkContext, matcher, j,
2606 + len = tokens.length,
2607 + leadingRelative = Expr.relative[ tokens[ 0 ].type ],
2608 + implicitRelative = leadingRelative || Expr.relative[ " " ],
2609 + i = leadingRelative ? 1 : 0,
2610 +
2611 + // The foundational matcher ensures that elements are reachable from top-level context(s)
2612 + matchContext = addCombinator( function( elem ) {
2613 + return elem === checkContext;
2614 + }, implicitRelative, true ),
2615 + matchAnyContext = addCombinator( function( elem ) {
2616 + return indexOf( checkContext, elem ) > -1;
2617 + }, implicitRelative, true ),
2618 + matchers = [ function( elem, context, xml ) {
2619 + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2620 + ( checkContext = context ).nodeType ?
2621 + matchContext( elem, context, xml ) :
2622 + matchAnyContext( elem, context, xml ) );
2623 +
2624 + // Avoid hanging onto element (issue #299)
2625 + checkContext = null;
2626 + return ret;
2627 + } ];
2628 +
2629 + for ( ; i < len; i++ ) {
2630 + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
2631 + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
2632 + } else {
2633 + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
2634 +
2635 + // Return special upon seeing a positional matcher
2636 + if ( matcher[ expando ] ) {
2637 +
2638 + // Find the next relative operator (if any) for proper handling
2639 + j = ++i;
2640 + for ( ; j < len; j++ ) {
2641 + if ( Expr.relative[ tokens[ j ].type ] ) {
2642 + break;
2643 + }
2644 + }
2645 + return setMatcher(
2646 + i > 1 && elementMatcher( matchers ),
2647 + i > 1 && toSelector(
2648 +
2649 + // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2650 + tokens
2651 + .slice( 0, i - 1 )
2652 + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
2653 + ).replace( rtrim, "$1" ),
2654 + matcher,
2655 + i < j && matcherFromTokens( tokens.slice( i, j ) ),
2656 + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
2657 + j < len && toSelector( tokens )
2658 + );
2659 + }
2660 + matchers.push( matcher );
2661 + }
2662 + }
2663 +
2664 + return elementMatcher( matchers );
2665 +}
2666 +
2667 +function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2668 + var bySet = setMatchers.length > 0,
2669 + byElement = elementMatchers.length > 0,
2670 + superMatcher = function( seed, context, xml, results, outermost ) {
2671 + var elem, j, matcher,
2672 + matchedCount = 0,
2673 + i = "0",
2674 + unmatched = seed && [],
2675 + setMatched = [],
2676 + contextBackup = outermostContext,
2677 +
2678 + // We must always have either seed elements or outermost context
2679 + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
2680 +
2681 + // Use integer dirruns iff this is the outermost matcher
2682 + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
2683 + len = elems.length;
2684 +
2685 + if ( outermost ) {
2686 +
2687 + // Support: IE 11+, Edge 17 - 18+
2688 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2689 + // two documents; shallow comparisons work.
2690 + // eslint-disable-next-line eqeqeq
2691 + outermostContext = context == document || context || outermost;
2692 + }
2693 +
2694 + // Add elements passing elementMatchers directly to results
2695 + // Support: IE<9, Safari
2696 + // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2697 + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
2698 + if ( byElement && elem ) {
2699 + j = 0;
2700 +
2701 + // Support: IE 11+, Edge 17 - 18+
2702 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2703 + // two documents; shallow comparisons work.
2704 + // eslint-disable-next-line eqeqeq
2705 + if ( !context && elem.ownerDocument != document ) {
2706 + setDocument( elem );
2707 + xml = !documentIsHTML;
2708 + }
2709 + while ( ( matcher = elementMatchers[ j++ ] ) ) {
2710 + if ( matcher( elem, context || document, xml ) ) {
2711 + results.push( elem );
2712 + break;
2713 + }
2714 + }
2715 + if ( outermost ) {
2716 + dirruns = dirrunsUnique;
2717 + }
2718 + }
2719 +
2720 + // Track unmatched elements for set filters
2721 + if ( bySet ) {
2722 +
2723 + // They will have gone through all possible matchers
2724 + if ( ( elem = !matcher && elem ) ) {
2725 + matchedCount--;
2726 + }
2727 +
2728 + // Lengthen the array for every element, matched or not
2729 + if ( seed ) {
2730 + unmatched.push( elem );
2731 + }
2732 + }
2733 + }
2734 +
2735 + // `i` is now the count of elements visited above, and adding it to `matchedCount`
2736 + // makes the latter nonnegative.
2737 + matchedCount += i;
2738 +
2739 + // Apply set filters to unmatched elements
2740 + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2741 + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2742 + // no element matchers and no seed.
2743 + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2744 + // case, which will result in a "00" `matchedCount` that differs from `i` but is also
2745 + // numerically zero.
2746 + if ( bySet && i !== matchedCount ) {
2747 + j = 0;
2748 + while ( ( matcher = setMatchers[ j++ ] ) ) {
2749 + matcher( unmatched, setMatched, context, xml );
2750 + }
2751 +
2752 + if ( seed ) {
2753 +
2754 + // Reintegrate element matches to eliminate the need for sorting
2755 + if ( matchedCount > 0 ) {
2756 + while ( i-- ) {
2757 + if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
2758 + setMatched[ i ] = pop.call( results );
2759 + }
2760 + }
2761 + }
2762 +
2763 + // Discard index placeholder values to get only actual matches
2764 + setMatched = condense( setMatched );
2765 + }
2766 +
2767 + // Add matches to results
2768 + push.apply( results, setMatched );
2769 +
2770 + // Seedless set matches succeeding multiple successful matchers stipulate sorting
2771 + if ( outermost && !seed && setMatched.length > 0 &&
2772 + ( matchedCount + setMatchers.length ) > 1 ) {
2773 +
2774 + Sizzle.uniqueSort( results );
2775 + }
2776 + }
2777 +
2778 + // Override manipulation of globals by nested matchers
2779 + if ( outermost ) {
2780 + dirruns = dirrunsUnique;
2781 + outermostContext = contextBackup;
2782 + }
2783 +
2784 + return unmatched;
2785 + };
2786 +
2787 + return bySet ?
2788 + markFunction( superMatcher ) :
2789 + superMatcher;
2790 +}
2791 +
2792 +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2793 + var i,
2794 + setMatchers = [],
2795 + elementMatchers = [],
2796 + cached = compilerCache[ selector + " " ];
2797 +
2798 + if ( !cached ) {
2799 +
2800 + // Generate a function of recursive functions that can be used to check each element
2801 + if ( !match ) {
2802 + match = tokenize( selector );
2803 + }
2804 + i = match.length;
2805 + while ( i-- ) {
2806 + cached = matcherFromTokens( match[ i ] );
2807 + if ( cached[ expando ] ) {
2808 + setMatchers.push( cached );
2809 + } else {
2810 + elementMatchers.push( cached );
2811 + }
2812 + }
2813 +
2814 + // Cache the compiled function
2815 + cached = compilerCache(
2816 + selector,
2817 + matcherFromGroupMatchers( elementMatchers, setMatchers )
2818 + );
2819 +
2820 + // Save selector and tokenization
2821 + cached.selector = selector;
2822 + }
2823 + return cached;
2824 +};
2825 +
2826 +/**
2827 + * A low-level selection function that works with Sizzle's compiled
2828 + * selector functions
2829 + * @param {String|Function} selector A selector or a pre-compiled
2830 + * selector function built with Sizzle.compile
2831 + * @param {Element} context
2832 + * @param {Array} [results]
2833 + * @param {Array} [seed] A set of elements to match against
2834 + */
2835 +select = Sizzle.select = function( selector, context, results, seed ) {
2836 + var i, tokens, token, type, find,
2837 + compiled = typeof selector === "function" && selector,
2838 + match = !seed && tokenize( ( selector = compiled.selector || selector ) );
2839 +
2840 + results = results || [];
2841 +
2842 + // Try to minimize operations if there is only one selector in the list and no seed
2843 + // (the latter of which guarantees us context)
2844 + if ( match.length === 1 ) {
2845 +
2846 + // Reduce context if the leading compound selector is an ID
2847 + tokens = match[ 0 ] = match[ 0 ].slice( 0 );
2848 + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
2849 + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
2850 +
2851 + context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
2852 + .replace( runescape, funescape ), context ) || [] )[ 0 ];
2853 + if ( !context ) {
2854 + return results;
2855 +
2856 + // Precompiled matchers will still verify ancestry, so step up a level
2857 + } else if ( compiled ) {
2858 + context = context.parentNode;
2859 + }
2860 +
2861 + selector = selector.slice( tokens.shift().value.length );
2862 + }
2863 +
2864 + // Fetch a seed set for right-to-left matching
2865 + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
2866 + while ( i-- ) {
2867 + token = tokens[ i ];
2868 +
2869 + // Abort if we hit a combinator
2870 + if ( Expr.relative[ ( type = token.type ) ] ) {
2871 + break;
2872 + }
2873 + if ( ( find = Expr.find[ type ] ) ) {
2874 +
2875 + // Search, expanding context for leading sibling combinators
2876 + if ( ( seed = find(
2877 + token.matches[ 0 ].replace( runescape, funescape ),
2878 + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
2879 + context
2880 + ) ) ) {
2881 +
2882 + // If seed is empty or no tokens remain, we can return early
2883 + tokens.splice( i, 1 );
2884 + selector = seed.length && toSelector( tokens );
2885 + if ( !selector ) {
2886 + push.apply( results, seed );
2887 + return results;
2888 + }
2889 +
2890 + break;
2891 + }
2892 + }
2893 + }
2894 + }
2895 +
2896 + // Compile and execute a filtering function if one is not provided
2897 + // Provide `match` to avoid retokenization if we modified the selector above
2898 + ( compiled || compile( selector, match ) )(
2899 + seed,
2900 + context,
2901 + !documentIsHTML,
2902 + results,
2903 + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2904 + );
2905 + return results;
2906 +};
2907 +
2908 +// One-time assignments
2909 +
2910 +// Sort stability
2911 +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
2912 +
2913 +// Support: Chrome 14-35+
2914 +// Always assume duplicates if they aren't passed to the comparison function
2915 +support.detectDuplicates = !!hasDuplicate;
2916 +
2917 +// Initialize against the default document
2918 +setDocument();
2919 +
2920 +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2921 +// Detached nodes confoundingly follow *each other*
2922 +support.sortDetached = assert( function( el ) {
2923 +
2924 + // Should return 1, but returns 4 (following)
2925 + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
2926 +} );
2927 +
2928 +// Support: IE<8
2929 +// Prevent attribute/property "interpolation"
2930 +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2931 +if ( !assert( function( el ) {
2932 + el.innerHTML = "<a href='#'></a>";
2933 + return el.firstChild.getAttribute( "href" ) === "#";
2934 +} ) ) {
2935 + addHandle( "type|href|height|width", function( elem, name, isXML ) {
2936 + if ( !isXML ) {
2937 + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2938 + }
2939 + } );
2940 +}
2941 +
2942 +// Support: IE<9
2943 +// Use defaultValue in place of getAttribute("value")
2944 +if ( !support.attributes || !assert( function( el ) {
2945 + el.innerHTML = "<input/>";
2946 + el.firstChild.setAttribute( "value", "" );
2947 + return el.firstChild.getAttribute( "value" ) === "";
2948 +} ) ) {
2949 + addHandle( "value", function( elem, _name, isXML ) {
2950 + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2951 + return elem.defaultValue;
2952 + }
2953 + } );
2954 +}
2955 +
2956 +// Support: IE<9
2957 +// Use getAttributeNode to fetch booleans when getAttribute lies
2958 +if ( !assert( function( el ) {
2959 + return el.getAttribute( "disabled" ) == null;
2960 +} ) ) {
2961 + addHandle( booleans, function( elem, name, isXML ) {
2962 + var val;
2963 + if ( !isXML ) {
2964 + return elem[ name ] === true ? name.toLowerCase() :
2965 + ( val = elem.getAttributeNode( name ) ) && val.specified ?
2966 + val.value :
2967 + null;
2968 + }
2969 + } );
2970 +}
2971 +
2972 +return Sizzle;
2973 +
2974 +} )( window );
2975 +
2976 +
2977 +
2978 +jQuery.find = Sizzle;
2979 +jQuery.expr = Sizzle.selectors;
2980 +
2981 +// Deprecated
2982 +jQuery.expr[ ":" ] = jQuery.expr.pseudos;
2983 +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2984 +jQuery.text = Sizzle.getText;
2985 +jQuery.isXMLDoc = Sizzle.isXML;
2986 +jQuery.contains = Sizzle.contains;
2987 +jQuery.escapeSelector = Sizzle.escape;
2988 +
2989 +
2990 +
2991 +
2992 +var dir = function( elem, dir, until ) {
2993 + var matched = [],
2994 + truncate = until !== undefined;
2995 +
2996 + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
2997 + if ( elem.nodeType === 1 ) {
2998 + if ( truncate && jQuery( elem ).is( until ) ) {
2999 + break;
3000 + }
3001 + matched.push( elem );
3002 + }
3003 + }
3004 + return matched;
3005 +};
3006 +
3007 +
3008 +var siblings = function( n, elem ) {
3009 + var matched = [];
3010 +
3011 + for ( ; n; n = n.nextSibling ) {
3012 + if ( n.nodeType === 1 && n !== elem ) {
3013 + matched.push( n );
3014 + }
3015 + }
3016 +
3017 + return matched;
3018 +};
3019 +
3020 +
3021 +var rneedsContext = jQuery.expr.match.needsContext;
3022 +
3023 +
3024 +
3025 +function nodeName( elem, name ) {
3026 +
3027 + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
3028 +
3029 +};
3030 +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
3031 +
3032 +
3033 +
3034 +// Implement the identical functionality for filter and not
3035 +function winnow( elements, qualifier, not ) {
3036 + if ( isFunction( qualifier ) ) {
3037 + return jQuery.grep( elements, function( elem, i ) {
3038 + return !!qualifier.call( elem, i, elem ) !== not;
3039 + } );
3040 + }
3041 +
3042 + // Single element
3043 + if ( qualifier.nodeType ) {
3044 + return jQuery.grep( elements, function( elem ) {
3045 + return ( elem === qualifier ) !== not;
3046 + } );
3047 + }
3048 +
3049 + // Arraylike of elements (jQuery, arguments, Array)
3050 + if ( typeof qualifier !== "string" ) {
3051 + return jQuery.grep( elements, function( elem ) {
3052 + return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
3053 + } );
3054 + }
3055 +
3056 + // Filtered directly for both simple and complex selectors
3057 + return jQuery.filter( qualifier, elements, not );
3058 +}
3059 +
3060 +jQuery.filter = function( expr, elems, not ) {
3061 + var elem = elems[ 0 ];
3062 +
3063 + if ( not ) {
3064 + expr = ":not(" + expr + ")";
3065 + }
3066 +
3067 + if ( elems.length === 1 && elem.nodeType === 1 ) {
3068 + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
3069 + }
3070 +
3071 + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
3072 + return elem.nodeType === 1;
3073 + } ) );
3074 +};
3075 +
3076 +jQuery.fn.extend( {
3077 + find: function( selector ) {
3078 + var i, ret,
3079 + len = this.length,
3080 + self = this;
3081 +
3082 + if ( typeof selector !== "string" ) {
3083 + return this.pushStack( jQuery( selector ).filter( function() {
3084 + for ( i = 0; i < len; i++ ) {
3085 + if ( jQuery.contains( self[ i ], this ) ) {
3086 + return true;
3087 + }
3088 + }
3089 + } ) );
3090 + }
3091 +
3092 + ret = this.pushStack( [] );
3093 +
3094 + for ( i = 0; i < len; i++ ) {
3095 + jQuery.find( selector, self[ i ], ret );
3096 + }
3097 +
3098 + return len > 1 ? jQuery.uniqueSort( ret ) : ret;
3099 + },
3100 + filter: function( selector ) {
3101 + return this.pushStack( winnow( this, selector || [], false ) );
3102 + },
3103 + not: function( selector ) {
3104 + return this.pushStack( winnow( this, selector || [], true ) );
3105 + },
3106 + is: function( selector ) {
3107 + return !!winnow(
3108 + this,
3109 +
3110 + // If this is a positional/relative selector, check membership in the returned set
3111 + // so $("p:first").is("p:last") won't return true for a doc with two "p".
3112 + typeof selector === "string" && rneedsContext.test( selector ) ?
3113 + jQuery( selector ) :
3114 + selector || [],
3115 + false
3116 + ).length;
3117 + }
3118 +} );
3119 +
3120 +
3121 +// Initialize a jQuery object
3122 +
3123 +
3124 +// A central reference to the root jQuery(document)
3125 +var rootjQuery,
3126 +
3127 + // A simple way to check for HTML strings
3128 + // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
3129 + // Strict HTML recognition (#11290: must start with <)
3130 + // Shortcut simple #id case for speed
3131 + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
3132 +
3133 + init = jQuery.fn.init = function( selector, context, root ) {
3134 + var match, elem;
3135 +
3136 + // HANDLE: $(""), $(null), $(undefined), $(false)
3137 + if ( !selector ) {
3138 + return this;
3139 + }
3140 +
3141 + // Method init() accepts an alternate rootjQuery
3142 + // so migrate can support jQuery.sub (gh-2101)
3143 + root = root || rootjQuery;
3144 +
3145 + // Handle HTML strings
3146 + if ( typeof selector === "string" ) {
3147 + if ( selector[ 0 ] === "<" &&
3148 + selector[ selector.length - 1 ] === ">" &&
3149 + selector.length >= 3 ) {
3150 +
3151 + // Assume that strings that start and end with <> are HTML and skip the regex check
3152 + match = [ null, selector, null ];
3153 +
3154 + } else {
3155 + match = rquickExpr.exec( selector );
3156 + }
3157 +
3158 + // Match html or make sure no context is specified for #id
3159 + if ( match && ( match[ 1 ] || !context ) ) {
3160 +
3161 + // HANDLE: $(html) -> $(array)
3162 + if ( match[ 1 ] ) {
3163 + context = context instanceof jQuery ? context[ 0 ] : context;
3164 +
3165 + // Option to run scripts is true for back-compat
3166 + // Intentionally let the error be thrown if parseHTML is not present
3167 + jQuery.merge( this, jQuery.parseHTML(
3168 + match[ 1 ],
3169 + context && context.nodeType ? context.ownerDocument || context : document,
3170 + true
3171 + ) );
3172 +
3173 + // HANDLE: $(html, props)
3174 + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
3175 + for ( match in context ) {
3176 +
3177 + // Properties of context are called as methods if possible
3178 + if ( isFunction( this[ match ] ) ) {
3179 + this[ match ]( context[ match ] );
3180 +
3181 + // ...and otherwise set as attributes
3182 + } else {
3183 + this.attr( match, context[ match ] );
3184 + }
3185 + }
3186 + }
3187 +
3188 + return this;
3189 +
3190 + // HANDLE: $(#id)
3191 + } else {
3192 + elem = document.getElementById( match[ 2 ] );
3193 +
3194 + if ( elem ) {
3195 +
3196 + // Inject the element directly into the jQuery object
3197 + this[ 0 ] = elem;
3198 + this.length = 1;
3199 + }
3200 + return this;
3201 + }
3202 +
3203 + // HANDLE: $(expr, $(...))
3204 + } else if ( !context || context.jquery ) {
3205 + return ( context || root ).find( selector );
3206 +
3207 + // HANDLE: $(expr, context)
3208 + // (which is just equivalent to: $(context).find(expr)
3209 + } else {
3210 + return this.constructor( context ).find( selector );
3211 + }
3212 +
3213 + // HANDLE: $(DOMElement)
3214 + } else if ( selector.nodeType ) {
3215 + this[ 0 ] = selector;
3216 + this.length = 1;
3217 + return this;
3218 +
3219 + // HANDLE: $(function)
3220 + // Shortcut for document ready
3221 + } else if ( isFunction( selector ) ) {
3222 + return root.ready !== undefined ?
3223 + root.ready( selector ) :
3224 +
3225 + // Execute immediately if ready is not present
3226 + selector( jQuery );
3227 + }
3228 +
3229 + return jQuery.makeArray( selector, this );
3230 + };
3231 +
3232 +// Give the init function the jQuery prototype for later instantiation
3233 +init.prototype = jQuery.fn;
3234 +
3235 +// Initialize central reference
3236 +rootjQuery = jQuery( document );
3237 +
3238 +
3239 +var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3240 +
3241 + // Methods guaranteed to produce a unique set when starting from a unique set
3242 + guaranteedUnique = {
3243 + children: true,
3244 + contents: true,
3245 + next: true,
3246 + prev: true
3247 + };
3248 +
3249 +jQuery.fn.extend( {
3250 + has: function( target ) {
3251 + var targets = jQuery( target, this ),
3252 + l = targets.length;
3253 +
3254 + return this.filter( function() {
3255 + var i = 0;
3256 + for ( ; i < l; i++ ) {
3257 + if ( jQuery.contains( this, targets[ i ] ) ) {
3258 + return true;
3259 + }
3260 + }
3261 + } );
3262 + },
3263 +
3264 + closest: function( selectors, context ) {
3265 + var cur,
3266 + i = 0,
3267 + l = this.length,
3268 + matched = [],
3269 + targets = typeof selectors !== "string" && jQuery( selectors );
3270 +
3271 + // Positional selectors never match, since there's no _selection_ context
3272 + if ( !rneedsContext.test( selectors ) ) {
3273 + for ( ; i < l; i++ ) {
3274 + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
3275 +
3276 + // Always skip document fragments
3277 + if ( cur.nodeType < 11 && ( targets ?
3278 + targets.index( cur ) > -1 :
3279 +
3280 + // Don't pass non-elements to Sizzle
3281 + cur.nodeType === 1 &&
3282 + jQuery.find.matchesSelector( cur, selectors ) ) ) {
3283 +
3284 + matched.push( cur );
3285 + break;
3286 + }
3287 + }
3288 + }
3289 + }
3290 +
3291 + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
3292 + },
3293 +
3294 + // Determine the position of an element within the set
3295 + index: function( elem ) {
3296 +
3297 + // No argument, return index in parent
3298 + if ( !elem ) {
3299 + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3300 + }
3301 +
3302 + // Index in selector
3303 + if ( typeof elem === "string" ) {
3304 + return indexOf.call( jQuery( elem ), this[ 0 ] );
3305 + }
3306 +
3307 + // Locate the position of the desired element
3308 + return indexOf.call( this,
3309 +
3310 + // If it receives a jQuery object, the first element is used
3311 + elem.jquery ? elem[ 0 ] : elem
3312 + );
3313 + },
3314 +
3315 + add: function( selector, context ) {
3316 + return this.pushStack(
3317 + jQuery.uniqueSort(
3318 + jQuery.merge( this.get(), jQuery( selector, context ) )
3319 + )
3320 + );
3321 + },
3322 +
3323 + addBack: function( selector ) {
3324 + return this.add( selector == null ?
3325 + this.prevObject : this.prevObject.filter( selector )
3326 + );
3327 + }
3328 +} );
3329 +
3330 +function sibling( cur, dir ) {
3331 + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
3332 + return cur;
3333 +}
3334 +
3335 +jQuery.each( {
3336 + parent: function( elem ) {
3337 + var parent = elem.parentNode;
3338 + return parent && parent.nodeType !== 11 ? parent : null;
3339 + },
3340 + parents: function( elem ) {
3341 + return dir( elem, "parentNode" );
3342 + },
3343 + parentsUntil: function( elem, _i, until ) {
3344 + return dir( elem, "parentNode", until );
3345 + },
3346 + next: function( elem ) {
3347 + return sibling( elem, "nextSibling" );
3348 + },
3349 + prev: function( elem ) {
3350 + return sibling( elem, "previousSibling" );
3351 + },
3352 + nextAll: function( elem ) {
3353 + return dir( elem, "nextSibling" );
3354 + },
3355 + prevAll: function( elem ) {
3356 + return dir( elem, "previousSibling" );
3357 + },
3358 + nextUntil: function( elem, _i, until ) {
3359 + return dir( elem, "nextSibling", until );
3360 + },
3361 + prevUntil: function( elem, _i, until ) {
3362 + return dir( elem, "previousSibling", until );
3363 + },
3364 + siblings: function( elem ) {
3365 + return siblings( ( elem.parentNode || {} ).firstChild, elem );
3366 + },
3367 + children: function( elem ) {
3368 + return siblings( elem.firstChild );
3369 + },
3370 + contents: function( elem ) {
3371 + if ( elem.contentDocument != null &&
3372 +
3373 + // Support: IE 11+
3374 + // <object> elements with no `data` attribute has an object
3375 + // `contentDocument` with a `null` prototype.
3376 + getProto( elem.contentDocument ) ) {
3377 +
3378 + return elem.contentDocument;
3379 + }
3380 +
3381 + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
3382 + // Treat the template element as a regular one in browsers that
3383 + // don't support it.
3384 + if ( nodeName( elem, "template" ) ) {
3385 + elem = elem.content || elem;
3386 + }
3387 +
3388 + return jQuery.merge( [], elem.childNodes );
3389 + }
3390 +}, function( name, fn ) {
3391 + jQuery.fn[ name ] = function( until, selector ) {
3392 + var matched = jQuery.map( this, fn, until );
3393 +
3394 + if ( name.slice( -5 ) !== "Until" ) {
3395 + selector = until;
3396 + }
3397 +
3398 + if ( selector && typeof selector === "string" ) {
3399 + matched = jQuery.filter( selector, matched );
3400 + }
3401 +
3402 + if ( this.length > 1 ) {
3403 +
3404 + // Remove duplicates
3405 + if ( !guaranteedUnique[ name ] ) {
3406 + jQuery.uniqueSort( matched );
3407 + }
3408 +
3409 + // Reverse order for parents* and prev-derivatives
3410 + if ( rparentsprev.test( name ) ) {
3411 + matched.reverse();
3412 + }
3413 + }
3414 +
3415 + return this.pushStack( matched );
3416 + };
3417 +} );
3418 +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3419 +
3420 +
3421 +
3422 +// Convert String-formatted options into Object-formatted ones
3423 +function createOptions( options ) {
3424 + var object = {};
3425 + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3426 + object[ flag ] = true;
3427 + } );
3428 + return object;
3429 +}
3430 +
3431 +/*
3432 + * Create a callback list using the following parameters:
3433 + *
3434 + * options: an optional list of space-separated options that will change how
3435 + * the callback list behaves or a more traditional option object
3436 + *
3437 + * By default a callback list will act like an event callback list and can be
3438 + * "fired" multiple times.
3439 + *
3440 + * Possible options:
3441 + *
3442 + * once: will ensure the callback list can only be fired once (like a Deferred)
3443 + *
3444 + * memory: will keep track of previous values and will call any callback added
3445 + * after the list has been fired right away with the latest "memorized"
3446 + * values (like a Deferred)
3447 + *
3448 + * unique: will ensure a callback can only be added once (no duplicate in the list)
3449 + *
3450 + * stopOnFalse: interrupt callings when a callback returns false
3451 + *
3452 + */
3453 +jQuery.Callbacks = function( options ) {
3454 +
3455 + // Convert options from String-formatted to Object-formatted if needed
3456 + // (we check in cache first)
3457 + options = typeof options === "string" ?
3458 + createOptions( options ) :
3459 + jQuery.extend( {}, options );
3460 +
3461 + var // Flag to know if list is currently firing
3462 + firing,
3463 +
3464 + // Last fire value for non-forgettable lists
3465 + memory,
3466 +
3467 + // Flag to know if list was already fired
3468 + fired,
3469 +
3470 + // Flag to prevent firing
3471 + locked,
3472 +
3473 + // Actual callback list
3474 + list = [],
3475 +
3476 + // Queue of execution data for repeatable lists
3477 + queue = [],
3478 +
3479 + // Index of currently firing callback (modified by add/remove as needed)
3480 + firingIndex = -1,
3481 +
3482 + // Fire callbacks
3483 + fire = function() {
3484 +
3485 + // Enforce single-firing
3486 + locked = locked || options.once;
3487 +
3488 + // Execute callbacks for all pending executions,
3489 + // respecting firingIndex overrides and runtime changes
3490 + fired = firing = true;
3491 + for ( ; queue.length; firingIndex = -1 ) {
3492 + memory = queue.shift();
3493 + while ( ++firingIndex < list.length ) {
3494 +
3495 + // Run callback and check for early termination
3496 + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
3497 + options.stopOnFalse ) {
3498 +
3499 + // Jump to end and forget the data so .add doesn't re-fire
3500 + firingIndex = list.length;
3501 + memory = false;
3502 + }
3503 + }
3504 + }
3505 +
3506 + // Forget the data if we're done with it
3507 + if ( !options.memory ) {
3508 + memory = false;
3509 + }
3510 +
3511 + firing = false;
3512 +
3513 + // Clean up if we're done firing for good
3514 + if ( locked ) {
3515 +
3516 + // Keep an empty list if we have data for future add calls
3517 + if ( memory ) {
3518 + list = [];
3519 +
3520 + // Otherwise, this object is spent
3521 + } else {
3522 + list = "";
3523 + }
3524 + }
3525 + },
3526 +
3527 + // Actual Callbacks object
3528 + self = {
3529 +
3530 + // Add a callback or a collection of callbacks to the list
3531 + add: function() {
3532 + if ( list ) {
3533 +
3534 + // If we have memory from a past run, we should fire after adding
3535 + if ( memory && !firing ) {
3536 + firingIndex = list.length - 1;
3537 + queue.push( memory );
3538 + }
3539 +
3540 + ( function add( args ) {
3541 + jQuery.each( args, function( _, arg ) {
3542 + if ( isFunction( arg ) ) {
3543 + if ( !options.unique || !self.has( arg ) ) {
3544 + list.push( arg );
3545 + }
3546 + } else if ( arg && arg.length && toType( arg ) !== "string" ) {
3547 +
3548 + // Inspect recursively
3549 + add( arg );
3550 + }
3551 + } );
3552 + } )( arguments );
3553 +
3554 + if ( memory && !firing ) {
3555 + fire();
3556 + }
3557 + }
3558 + return this;
3559 + },
3560 +
3561 + // Remove a callback from the list
3562 + remove: function() {
3563 + jQuery.each( arguments, function( _, arg ) {
3564 + var index;
3565 + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3566 + list.splice( index, 1 );
3567 +
3568 + // Handle firing indexes
3569 + if ( index <= firingIndex ) {
3570 + firingIndex--;
3571 + }
3572 + }
3573 + } );
3574 + return this;
3575 + },
3576 +
3577 + // Check if a given callback is in the list.
3578 + // If no argument is given, return whether or not list has callbacks attached.
3579 + has: function( fn ) {
3580 + return fn ?
3581 + jQuery.inArray( fn, list ) > -1 :
3582 + list.length > 0;
3583 + },
3584 +
3585 + // Remove all callbacks from the list
3586 + empty: function() {
3587 + if ( list ) {
3588 + list = [];
3589 + }
3590 + return this;
3591 + },
3592 +
3593 + // Disable .fire and .add
3594 + // Abort any current/pending executions
3595 + // Clear all callbacks and values
3596 + disable: function() {
3597 + locked = queue = [];
3598 + list = memory = "";
3599 + return this;
3600 + },
3601 + disabled: function() {
3602 + return !list;
3603 + },
3604 +
3605 + // Disable .fire
3606 + // Also disable .add unless we have memory (since it would have no effect)
3607 + // Abort any pending executions
3608 + lock: function() {
3609 + locked = queue = [];
3610 + if ( !memory && !firing ) {
3611 + list = memory = "";
3612 + }
3613 + return this;
3614 + },
3615 + locked: function() {
3616 + return !!locked;
3617 + },
3618 +
3619 + // Call all callbacks with the given context and arguments
3620 + fireWith: function( context, args ) {
3621 + if ( !locked ) {
3622 + args = args || [];
3623 + args = [ context, args.slice ? args.slice() : args ];
3624 + queue.push( args );
3625 + if ( !firing ) {
3626 + fire();
3627 + }
3628 + }
3629 + return this;
3630 + },
3631 +
3632 + // Call all the callbacks with the given arguments
3633 + fire: function() {
3634 + self.fireWith( this, arguments );
3635 + return this;
3636 + },
3637 +
3638 + // To know if the callbacks have already been called at least once
3639 + fired: function() {
3640 + return !!fired;
3641 + }
3642 + };
3643 +
3644 + return self;
3645 +};
3646 +
3647 +
3648 +function Identity( v ) {
3649 + return v;
3650 +}
3651 +function Thrower( ex ) {
3652 + throw ex;
3653 +}
3654 +
3655 +function adoptValue( value, resolve, reject, noValue ) {
3656 + var method;
3657 +
3658 + try {
3659 +
3660 + // Check for promise aspect first to privilege synchronous behavior
3661 + if ( value && isFunction( ( method = value.promise ) ) ) {
3662 + method.call( value ).done( resolve ).fail( reject );
3663 +
3664 + // Other thenables
3665 + } else if ( value && isFunction( ( method = value.then ) ) ) {
3666 + method.call( value, resolve, reject );
3667 +
3668 + // Other non-thenables
3669 + } else {
3670 +
3671 + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
3672 + // * false: [ value ].slice( 0 ) => resolve( value )
3673 + // * true: [ value ].slice( 1 ) => resolve()
3674 + resolve.apply( undefined, [ value ].slice( noValue ) );
3675 + }
3676 +
3677 + // For Promises/A+, convert exceptions into rejections
3678 + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
3679 + // Deferred#then to conditionally suppress rejection.
3680 + } catch ( value ) {
3681 +
3682 + // Support: Android 4.0 only
3683 + // Strict mode functions invoked without .call/.apply get global-object context
3684 + reject.apply( undefined, [ value ] );
3685 + }
3686 +}
3687 +
3688 +jQuery.extend( {
3689 +
3690 + Deferred: function( func ) {
3691 + var tuples = [
3692 +
3693 + // action, add listener, callbacks,
3694 + // ... .then handlers, argument index, [final state]
3695 + [ "notify", "progress", jQuery.Callbacks( "memory" ),
3696 + jQuery.Callbacks( "memory" ), 2 ],
3697 + [ "resolve", "done", jQuery.Callbacks( "once memory" ),
3698 + jQuery.Callbacks( "once memory" ), 0, "resolved" ],
3699 + [ "reject", "fail", jQuery.Callbacks( "once memory" ),
3700 + jQuery.Callbacks( "once memory" ), 1, "rejected" ]
3701 + ],
3702 + state = "pending",
3703 + promise = {
3704 + state: function() {
3705 + return state;
3706 + },
3707 + always: function() {
3708 + deferred.done( arguments ).fail( arguments );
3709 + return this;
3710 + },
3711 + "catch": function( fn ) {
3712 + return promise.then( null, fn );
3713 + },
3714 +
3715 + // Keep pipe for back-compat
3716 + pipe: function( /* fnDone, fnFail, fnProgress */ ) {
3717 + var fns = arguments;
3718 +
3719 + return jQuery.Deferred( function( newDefer ) {
3720 + jQuery.each( tuples, function( _i, tuple ) {
3721 +
3722 + // Map tuples (progress, done, fail) to arguments (done, fail, progress)
3723 + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
3724 +
3725 + // deferred.progress(function() { bind to newDefer or newDefer.notify })
3726 + // deferred.done(function() { bind to newDefer or newDefer.resolve })
3727 + // deferred.fail(function() { bind to newDefer or newDefer.reject })
3728 + deferred[ tuple[ 1 ] ]( function() {
3729 + var returned = fn && fn.apply( this, arguments );
3730 + if ( returned && isFunction( returned.promise ) ) {
3731 + returned.promise()
3732 + .progress( newDefer.notify )
3733 + .done( newDefer.resolve )
3734 + .fail( newDefer.reject );
3735 + } else {
3736 + newDefer[ tuple[ 0 ] + "With" ](
3737 + this,
3738 + fn ? [ returned ] : arguments
3739 + );
3740 + }
3741 + } );
3742 + } );
3743 + fns = null;
3744 + } ).promise();
3745 + },
3746 + then: function( onFulfilled, onRejected, onProgress ) {
3747 + var maxDepth = 0;
3748 + function resolve( depth, deferred, handler, special ) {
3749 + return function() {
3750 + var that = this,
3751 + args = arguments,
3752 + mightThrow = function() {
3753 + var returned, then;
3754 +
3755 + // Support: Promises/A+ section 2.3.3.3.3
3756 + // https://promisesaplus.com/#point-59
3757 + // Ignore double-resolution attempts
3758 + if ( depth < maxDepth ) {
3759 + return;
3760 + }
3761 +
3762 + returned = handler.apply( that, args );
3763 +
3764 + // Support: Promises/A+ section 2.3.1
3765 + // https://promisesaplus.com/#point-48
3766 + if ( returned === deferred.promise() ) {
3767 + throw new TypeError( "Thenable self-resolution" );
3768 + }
3769 +
3770 + // Support: Promises/A+ sections 2.3.3.1, 3.5
3771 + // https://promisesaplus.com/#point-54
3772 + // https://promisesaplus.com/#point-75
3773 + // Retrieve `then` only once
3774 + then = returned &&
3775 +
3776 + // Support: Promises/A+ section 2.3.4
3777 + // https://promisesaplus.com/#point-64
3778 + // Only check objects and functions for thenability
3779 + ( typeof returned === "object" ||
3780 + typeof returned === "function" ) &&
3781 + returned.then;
3782 +
3783 + // Handle a returned thenable
3784 + if ( isFunction( then ) ) {
3785 +
3786 + // Special processors (notify) just wait for resolution
3787 + if ( special ) {
3788 + then.call(
3789 + returned,
3790 + resolve( maxDepth, deferred, Identity, special ),
3791 + resolve( maxDepth, deferred, Thrower, special )
3792 + );
3793 +
3794 + // Normal processors (resolve) also hook into progress
3795 + } else {
3796 +
3797 + // ...and disregard older resolution values
3798 + maxDepth++;
3799 +
3800 + then.call(
3801 + returned,
3802 + resolve( maxDepth, deferred, Identity, special ),
3803 + resolve( maxDepth, deferred, Thrower, special ),
3804 + resolve( maxDepth, deferred, Identity,
3805 + deferred.notifyWith )
3806 + );
3807 + }
3808 +
3809 + // Handle all other returned values
3810 + } else {
3811 +
3812 + // Only substitute handlers pass on context
3813 + // and multiple values (non-spec behavior)
3814 + if ( handler !== Identity ) {
3815 + that = undefined;
3816 + args = [ returned ];
3817 + }
3818 +
3819 + // Process the value(s)
3820 + // Default process is resolve
3821 + ( special || deferred.resolveWith )( that, args );
3822 + }
3823 + },
3824 +
3825 + // Only normal processors (resolve) catch and reject exceptions
3826 + process = special ?
3827 + mightThrow :
3828 + function() {
3829 + try {
3830 + mightThrow();
3831 + } catch ( e ) {
3832 +
3833 + if ( jQuery.Deferred.exceptionHook ) {
3834 + jQuery.Deferred.exceptionHook( e,
3835 + process.stackTrace );
3836 + }
3837 +
3838 + // Support: Promises/A+ section 2.3.3.3.4.1
3839 + // https://promisesaplus.com/#point-61
3840 + // Ignore post-resolution exceptions
3841 + if ( depth + 1 >= maxDepth ) {
3842 +
3843 + // Only substitute handlers pass on context
3844 + // and multiple values (non-spec behavior)
3845 + if ( handler !== Thrower ) {
3846 + that = undefined;
3847 + args = [ e ];
3848 + }
3849 +
3850 + deferred.rejectWith( that, args );
3851 + }
3852 + }
3853 + };
3854 +
3855 + // Support: Promises/A+ section 2.3.3.3.1
3856 + // https://promisesaplus.com/#point-57
3857 + // Re-resolve promises immediately to dodge false rejection from
3858 + // subsequent errors
3859 + if ( depth ) {
3860 + process();
3861 + } else {
3862 +
3863 + // Call an optional hook to record the stack, in case of exception
3864 + // since it's otherwise lost when execution goes async
3865 + if ( jQuery.Deferred.getStackHook ) {
3866 + process.stackTrace = jQuery.Deferred.getStackHook();
3867 + }
3868 + window.setTimeout( process );
3869 + }
3870 + };
3871 + }
3872 +
3873 + return jQuery.Deferred( function( newDefer ) {
3874 +
3875 + // progress_handlers.add( ... )
3876 + tuples[ 0 ][ 3 ].add(
3877 + resolve(
3878 + 0,
3879 + newDefer,
3880 + isFunction( onProgress ) ?
3881 + onProgress :
3882 + Identity,
3883 + newDefer.notifyWith
3884 + )
3885 + );
3886 +
3887 + // fulfilled_handlers.add( ... )
3888 + tuples[ 1 ][ 3 ].add(
3889 + resolve(
3890 + 0,
3891 + newDefer,
3892 + isFunction( onFulfilled ) ?
3893 + onFulfilled :
3894 + Identity
3895 + )
3896 + );
3897 +
3898 + // rejected_handlers.add( ... )
3899 + tuples[ 2 ][ 3 ].add(
3900 + resolve(
3901 + 0,
3902 + newDefer,
3903 + isFunction( onRejected ) ?
3904 + onRejected :
3905 + Thrower
3906 + )
3907 + );
3908 + } ).promise();
3909 + },
3910 +
3911 + // Get a promise for this deferred
3912 + // If obj is provided, the promise aspect is added to the object
3913 + promise: function( obj ) {
3914 + return obj != null ? jQuery.extend( obj, promise ) : promise;
3915 + }
3916 + },
3917 + deferred = {};
3918 +
3919 + // Add list-specific methods
3920 + jQuery.each( tuples, function( i, tuple ) {
3921 + var list = tuple[ 2 ],
3922 + stateString = tuple[ 5 ];
3923 +
3924 + // promise.progress = list.add
3925 + // promise.done = list.add
3926 + // promise.fail = list.add
3927 + promise[ tuple[ 1 ] ] = list.add;
3928 +
3929 + // Handle state
3930 + if ( stateString ) {
3931 + list.add(
3932 + function() {
3933 +
3934 + // state = "resolved" (i.e., fulfilled)
3935 + // state = "rejected"
3936 + state = stateString;
3937 + },
3938 +
3939 + // rejected_callbacks.disable
3940 + // fulfilled_callbacks.disable
3941 + tuples[ 3 - i ][ 2 ].disable,
3942 +
3943 + // rejected_handlers.disable
3944 + // fulfilled_handlers.disable
3945 + tuples[ 3 - i ][ 3 ].disable,
3946 +
3947 + // progress_callbacks.lock
3948 + tuples[ 0 ][ 2 ].lock,
3949 +
3950 + // progress_handlers.lock
3951 + tuples[ 0 ][ 3 ].lock
3952 + );
3953 + }
3954 +
3955 + // progress_handlers.fire
3956 + // fulfilled_handlers.fire
3957 + // rejected_handlers.fire
3958 + list.add( tuple[ 3 ].fire );
3959 +
3960 + // deferred.notify = function() { deferred.notifyWith(...) }
3961 + // deferred.resolve = function() { deferred.resolveWith(...) }
3962 + // deferred.reject = function() { deferred.rejectWith(...) }
3963 + deferred[ tuple[ 0 ] ] = function() {
3964 + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
3965 + return this;
3966 + };
3967 +
3968 + // deferred.notifyWith = list.fireWith
3969 + // deferred.resolveWith = list.fireWith
3970 + // deferred.rejectWith = list.fireWith
3971 + deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
3972 + } );
3973 +
3974 + // Make the deferred a promise
3975 + promise.promise( deferred );
3976 +
3977 + // Call given func if any
3978 + if ( func ) {
3979 + func.call( deferred, deferred );
3980 + }
3981 +
3982 + // All done!
3983 + return deferred;
3984 + },
3985 +
3986 + // Deferred helper
3987 + when: function( singleValue ) {
3988 + var
3989 +
3990 + // count of uncompleted subordinates
3991 + remaining = arguments.length,
3992 +
3993 + // count of unprocessed arguments
3994 + i = remaining,
3995 +
3996 + // subordinate fulfillment data
3997 + resolveContexts = Array( i ),
3998 + resolveValues = slice.call( arguments ),
3999 +
4000 + // the master Deferred
4001 + master = jQuery.Deferred(),
4002 +
4003 + // subordinate callback factory
4004 + updateFunc = function( i ) {
4005 + return function( value ) {
4006 + resolveContexts[ i ] = this;
4007 + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
4008 + if ( !( --remaining ) ) {
4009 + master.resolveWith( resolveContexts, resolveValues );
4010 + }
4011 + };
4012 + };
4013 +
4014 + // Single- and empty arguments are adopted like Promise.resolve
4015 + if ( remaining <= 1 ) {
4016 + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
4017 + !remaining );
4018 +
4019 + // Use .then() to unwrap secondary thenables (cf. gh-3000)
4020 + if ( master.state() === "pending" ||
4021 + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
4022 +
4023 + return master.then();
4024 + }
4025 + }
4026 +
4027 + // Multiple arguments are aggregated like Promise.all array elements
4028 + while ( i-- ) {
4029 + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
4030 + }
4031 +
4032 + return master.promise();
4033 + }
4034 +} );
4035 +
4036 +
4037 +// These usually indicate a programmer mistake during development,
4038 +// warn about them ASAP rather than swallowing them by default.
4039 +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
4040 +
4041 +jQuery.Deferred.exceptionHook = function( error, stack ) {
4042 +
4043 + // Support: IE 8 - 9 only
4044 + // Console exists when dev tools are open, which can happen at any time
4045 + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
4046 + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
4047 + }
4048 +};
4049 +
4050 +
4051 +
4052 +
4053 +jQuery.readyException = function( error ) {
4054 + window.setTimeout( function() {
4055 + throw error;
4056 + } );
4057 +};
4058 +
4059 +
4060 +
4061 +
4062 +// The deferred used on DOM ready
4063 +var readyList = jQuery.Deferred();
4064 +
4065 +jQuery.fn.ready = function( fn ) {
4066 +
4067 + readyList
4068 + .then( fn )
4069 +
4070 + // Wrap jQuery.readyException in a function so that the lookup
4071 + // happens at the time of error handling instead of callback
4072 + // registration.
4073 + .catch( function( error ) {
4074 + jQuery.readyException( error );
4075 + } );
4076 +
4077 + return this;
4078 +};
4079 +
4080 +jQuery.extend( {
4081 +
4082 + // Is the DOM ready to be used? Set to true once it occurs.
4083 + isReady: false,
4084 +
4085 + // A counter to track how many items to wait for before
4086 + // the ready event fires. See #6781
4087 + readyWait: 1,
4088 +
4089 + // Handle when the DOM is ready
4090 + ready: function( wait ) {
4091 +
4092 + // Abort if there are pending holds or we're already ready
4093 + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
4094 + return;
4095 + }
4096 +
4097 + // Remember that the DOM is ready
4098 + jQuery.isReady = true;
4099 +
4100 + // If a normal DOM Ready event fired, decrement, and wait if need be
4101 + if ( wait !== true && --jQuery.readyWait > 0 ) {
4102 + return;
4103 + }
4104 +
4105 + // If there are functions bound, to execute
4106 + readyList.resolveWith( document, [ jQuery ] );
4107 + }
4108 +} );
4109 +
4110 +jQuery.ready.then = readyList.then;
4111 +
4112 +// The ready event handler and self cleanup method
4113 +function completed() {
4114 + document.removeEventListener( "DOMContentLoaded", completed );
4115 + window.removeEventListener( "load", completed );
4116 + jQuery.ready();
4117 +}
4118 +
4119 +// Catch cases where $(document).ready() is called
4120 +// after the browser event has already occurred.
4121 +// Support: IE <=9 - 10 only
4122 +// Older IE sometimes signals "interactive" too soon
4123 +if ( document.readyState === "complete" ||
4124 + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
4125 +
4126 + // Handle it asynchronously to allow scripts the opportunity to delay ready
4127 + window.setTimeout( jQuery.ready );
4128 +
4129 +} else {
4130 +
4131 + // Use the handy event callback
4132 + document.addEventListener( "DOMContentLoaded", completed );
4133 +
4134 + // A fallback to window.onload, that will always work
4135 + window.addEventListener( "load", completed );
4136 +}
4137 +
4138 +
4139 +
4140 +
4141 +// Multifunctional method to get and set values of a collection
4142 +// The value/s can optionally be executed if it's a function
4143 +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
4144 + var i = 0,
4145 + len = elems.length,
4146 + bulk = key == null;
4147 +
4148 + // Sets many values
4149 + if ( toType( key ) === "object" ) {
4150 + chainable = true;
4151 + for ( i in key ) {
4152 + access( elems, fn, i, key[ i ], true, emptyGet, raw );
4153 + }
4154 +
4155 + // Sets one value
4156 + } else if ( value !== undefined ) {
4157 + chainable = true;
4158 +
4159 + if ( !isFunction( value ) ) {
4160 + raw = true;
4161 + }
4162 +
4163 + if ( bulk ) {
4164 +
4165 + // Bulk operations run against the entire set
4166 + if ( raw ) {
4167 + fn.call( elems, value );
4168 + fn = null;
4169 +
4170 + // ...except when executing function values
4171 + } else {
4172 + bulk = fn;
4173 + fn = function( elem, _key, value ) {
4174 + return bulk.call( jQuery( elem ), value );
4175 + };
4176 + }
4177 + }
4178 +
4179 + if ( fn ) {
4180 + for ( ; i < len; i++ ) {
4181 + fn(
4182 + elems[ i ], key, raw ?
4183 + value :
4184 + value.call( elems[ i ], i, fn( elems[ i ], key ) )
4185 + );
4186 + }
4187 + }
4188 + }
4189 +
4190 + if ( chainable ) {
4191 + return elems;
4192 + }
4193 +
4194 + // Gets
4195 + if ( bulk ) {
4196 + return fn.call( elems );
4197 + }
4198 +
4199 + return len ? fn( elems[ 0 ], key ) : emptyGet;
4200 +};
4201 +
4202 +
4203 +// Matches dashed string for camelizing
4204 +var rmsPrefix = /^-ms-/,
4205 + rdashAlpha = /-([a-z])/g;
4206 +
4207 +// Used by camelCase as callback to replace()
4208 +function fcamelCase( _all, letter ) {
4209 + return letter.toUpperCase();
4210 +}
4211 +
4212 +// Convert dashed to camelCase; used by the css and data modules
4213 +// Support: IE <=9 - 11, Edge 12 - 15
4214 +// Microsoft forgot to hump their vendor prefix (#9572)
4215 +function camelCase( string ) {
4216 + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4217 +}
4218 +var acceptData = function( owner ) {
4219 +
4220 + // Accepts only:
4221 + // - Node
4222 + // - Node.ELEMENT_NODE
4223 + // - Node.DOCUMENT_NODE
4224 + // - Object
4225 + // - Any
4226 + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
4227 +};
4228 +
4229 +
4230 +
4231 +
4232 +function Data() {
4233 + this.expando = jQuery.expando + Data.uid++;
4234 +}
4235 +
4236 +Data.uid = 1;
4237 +
4238 +Data.prototype = {
4239 +
4240 + cache: function( owner ) {
4241 +
4242 + // Check if the owner object already has a cache
4243 + var value = owner[ this.expando ];
4244 +
4245 + // If not, create one
4246 + if ( !value ) {
4247 + value = {};
4248 +
4249 + // We can accept data for non-element nodes in modern browsers,
4250 + // but we should not, see #8335.
4251 + // Always return an empty object.
4252 + if ( acceptData( owner ) ) {
4253 +
4254 + // If it is a node unlikely to be stringify-ed or looped over
4255 + // use plain assignment
4256 + if ( owner.nodeType ) {
4257 + owner[ this.expando ] = value;
4258 +
4259 + // Otherwise secure it in a non-enumerable property
4260 + // configurable must be true to allow the property to be
4261 + // deleted when data is removed
4262 + } else {
4263 + Object.defineProperty( owner, this.expando, {
4264 + value: value,
4265 + configurable: true
4266 + } );
4267 + }
4268 + }
4269 + }
4270 +
4271 + return value;
4272 + },
4273 + set: function( owner, data, value ) {
4274 + var prop,
4275 + cache = this.cache( owner );
4276 +
4277 + // Handle: [ owner, key, value ] args
4278 + // Always use camelCase key (gh-2257)
4279 + if ( typeof data === "string" ) {
4280 + cache[ camelCase( data ) ] = value;
4281 +
4282 + // Handle: [ owner, { properties } ] args
4283 + } else {
4284 +
4285 + // Copy the properties one-by-one to the cache object
4286 + for ( prop in data ) {
4287 + cache[ camelCase( prop ) ] = data[ prop ];
4288 + }
4289 + }
4290 + return cache;
4291 + },
4292 + get: function( owner, key ) {
4293 + return key === undefined ?
4294 + this.cache( owner ) :
4295 +
4296 + // Always use camelCase key (gh-2257)
4297 + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
4298 + },
4299 + access: function( owner, key, value ) {
4300 +
4301 + // In cases where either:
4302 + //
4303 + // 1. No key was specified
4304 + // 2. A string key was specified, but no value provided
4305 + //
4306 + // Take the "read" path and allow the get method to determine
4307 + // which value to return, respectively either:
4308 + //
4309 + // 1. The entire cache object
4310 + // 2. The data stored at the key
4311 + //
4312 + if ( key === undefined ||
4313 + ( ( key && typeof key === "string" ) && value === undefined ) ) {
4314 +
4315 + return this.get( owner, key );
4316 + }
4317 +
4318 + // When the key is not a string, or both a key and value
4319 + // are specified, set or extend (existing objects) with either:
4320 + //
4321 + // 1. An object of properties
4322 + // 2. A key and value
4323 + //
4324 + this.set( owner, key, value );
4325 +
4326 + // Since the "set" path can have two possible entry points
4327 + // return the expected data based on which path was taken[*]
4328 + return value !== undefined ? value : key;
4329 + },
4330 + remove: function( owner, key ) {
4331 + var i,
4332 + cache = owner[ this.expando ];
4333 +
4334 + if ( cache === undefined ) {
4335 + return;
4336 + }
4337 +
4338 + if ( key !== undefined ) {
4339 +
4340 + // Support array or space separated string of keys
4341 + if ( Array.isArray( key ) ) {
4342 +
4343 + // If key is an array of keys...
4344 + // We always set camelCase keys, so remove that.
4345 + key = key.map( camelCase );
4346 + } else {
4347 + key = camelCase( key );
4348 +
4349 + // If a key with the spaces exists, use it.
4350 + // Otherwise, create an array by matching non-whitespace
4351 + key = key in cache ?
4352 + [ key ] :
4353 + ( key.match( rnothtmlwhite ) || [] );
4354 + }
4355 +
4356 + i = key.length;
4357 +
4358 + while ( i-- ) {
4359 + delete cache[ key[ i ] ];
4360 + }
4361 + }
4362 +
4363 + // Remove the expando if there's no more data
4364 + if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
4365 +
4366 + // Support: Chrome <=35 - 45
4367 + // Webkit & Blink performance suffers when deleting properties
4368 + // from DOM nodes, so set to undefined instead
4369 + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4370 + if ( owner.nodeType ) {
4371 + owner[ this.expando ] = undefined;
4372 + } else {
4373 + delete owner[ this.expando ];
4374 + }
4375 + }
4376 + },
4377 + hasData: function( owner ) {
4378 + var cache = owner[ this.expando ];
4379 + return cache !== undefined && !jQuery.isEmptyObject( cache );
4380 + }
4381 +};
4382 +var dataPriv = new Data();
4383 +
4384 +var dataUser = new Data();
4385 +
4386 +
4387 +
4388 +// Implementation Summary
4389 +//
4390 +// 1. Enforce API surface and semantic compatibility with 1.9.x branch
4391 +// 2. Improve the module's maintainability by reducing the storage
4392 +// paths to a single mechanism.
4393 +// 3. Use the same single mechanism to support "private" and "user" data.
4394 +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4395 +// 5. Avoid exposing implementation details on user objects (eg. expando properties)
4396 +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
4397 +
4398 +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4399 + rmultiDash = /[A-Z]/g;
4400 +
4401 +function getData( data ) {
4402 + if ( data === "true" ) {
4403 + return true;
4404 + }
4405 +
4406 + if ( data === "false" ) {
4407 + return false;
4408 + }
4409 +
4410 + if ( data === "null" ) {
4411 + return null;
4412 + }
4413 +
4414 + // Only convert to a number if it doesn't change the string
4415 + if ( data === +data + "" ) {
4416 + return +data;
4417 + }
4418 +
4419 + if ( rbrace.test( data ) ) {
4420 + return JSON.parse( data );
4421 + }
4422 +
4423 + return data;
4424 +}
4425 +
4426 +function dataAttr( elem, key, data ) {
4427 + var name;
4428 +
4429 + // If nothing was found internally, try to fetch any
4430 + // data from the HTML5 data-* attribute
4431 + if ( data === undefined && elem.nodeType === 1 ) {
4432 + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
4433 + data = elem.getAttribute( name );
4434 +
4435 + if ( typeof data === "string" ) {
4436 + try {
4437 + data = getData( data );
4438 + } catch ( e ) {}
4439 +
4440 + // Make sure we set the data so it isn't changed later
4441 + dataUser.set( elem, key, data );
4442 + } else {
4443 + data = undefined;
4444 + }
4445 + }
4446 + return data;
4447 +}
4448 +
4449 +jQuery.extend( {
4450 + hasData: function( elem ) {
4451 + return dataUser.hasData( elem ) || dataPriv.hasData( elem );
4452 + },
4453 +
4454 + data: function( elem, name, data ) {
4455 + return dataUser.access( elem, name, data );
4456 + },
4457 +
4458 + removeData: function( elem, name ) {
4459 + dataUser.remove( elem, name );
4460 + },
4461 +
4462 + // TODO: Now that all calls to _data and _removeData have been replaced
4463 + // with direct calls to dataPriv methods, these can be deprecated.
4464 + _data: function( elem, name, data ) {
4465 + return dataPriv.access( elem, name, data );
4466 + },
4467 +
4468 + _removeData: function( elem, name ) {
4469 + dataPriv.remove( elem, name );
4470 + }
4471 +} );
4472 +
4473 +jQuery.fn.extend( {
4474 + data: function( key, value ) {
4475 + var i, name, data,
4476 + elem = this[ 0 ],
4477 + attrs = elem && elem.attributes;
4478 +
4479 + // Gets all values
4480 + if ( key === undefined ) {
4481 + if ( this.length ) {
4482 + data = dataUser.get( elem );
4483 +
4484 + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
4485 + i = attrs.length;
4486 + while ( i-- ) {
4487 +
4488 + // Support: IE 11 only
4489 + // The attrs elements can be null (#14894)
4490 + if ( attrs[ i ] ) {
4491 + name = attrs[ i ].name;
4492 + if ( name.indexOf( "data-" ) === 0 ) {
4493 + name = camelCase( name.slice( 5 ) );
4494 + dataAttr( elem, name, data[ name ] );
4495 + }
4496 + }
4497 + }
4498 + dataPriv.set( elem, "hasDataAttrs", true );
4499 + }
4500 + }
4501 +
4502 + return data;
4503 + }
4504 +
4505 + // Sets multiple values
4506 + if ( typeof key === "object" ) {
4507 + return this.each( function() {
4508 + dataUser.set( this, key );
4509 + } );
4510 + }
4511 +
4512 + return access( this, function( value ) {
4513 + var data;
4514 +
4515 + // The calling jQuery object (element matches) is not empty
4516 + // (and therefore has an element appears at this[ 0 ]) and the
4517 + // `value` parameter was not undefined. An empty jQuery object
4518 + // will result in `undefined` for elem = this[ 0 ] which will
4519 + // throw an exception if an attempt to read a data cache is made.
4520 + if ( elem && value === undefined ) {
4521 +
4522 + // Attempt to get data from the cache
4523 + // The key will always be camelCased in Data
4524 + data = dataUser.get( elem, key );
4525 + if ( data !== undefined ) {
4526 + return data;
4527 + }
4528 +
4529 + // Attempt to "discover" the data in
4530 + // HTML5 custom data-* attrs
4531 + data = dataAttr( elem, key );
4532 + if ( data !== undefined ) {
4533 + return data;
4534 + }
4535 +
4536 + // We tried really hard, but the data doesn't exist.
4537 + return;
4538 + }
4539 +
4540 + // Set the data...
4541 + this.each( function() {
4542 +
4543 + // We always store the camelCased key
4544 + dataUser.set( this, key, value );
4545 + } );
4546 + }, null, value, arguments.length > 1, null, true );
4547 + },
4548 +
4549 + removeData: function( key ) {
4550 + return this.each( function() {
4551 + dataUser.remove( this, key );
4552 + } );
4553 + }
4554 +} );
4555 +
4556 +
4557 +jQuery.extend( {
4558 + queue: function( elem, type, data ) {
4559 + var queue;
4560 +
4561 + if ( elem ) {
4562 + type = ( type || "fx" ) + "queue";
4563 + queue = dataPriv.get( elem, type );
4564 +
4565 + // Speed up dequeue by getting out quickly if this is just a lookup
4566 + if ( data ) {
4567 + if ( !queue || Array.isArray( data ) ) {
4568 + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
4569 + } else {
4570 + queue.push( data );
4571 + }
4572 + }
4573 + return queue || [];
4574 + }
4575 + },
4576 +
4577 + dequeue: function( elem, type ) {
4578 + type = type || "fx";
4579 +
4580 + var queue = jQuery.queue( elem, type ),
4581 + startLength = queue.length,
4582 + fn = queue.shift(),
4583 + hooks = jQuery._queueHooks( elem, type ),
4584 + next = function() {
4585 + jQuery.dequeue( elem, type );
4586 + };
4587 +
4588 + // If the fx queue is dequeued, always remove the progress sentinel
4589 + if ( fn === "inprogress" ) {
4590 + fn = queue.shift();
4591 + startLength--;
4592 + }
4593 +
4594 + if ( fn ) {
4595 +
4596 + // Add a progress sentinel to prevent the fx queue from being
4597 + // automatically dequeued
4598 + if ( type === "fx" ) {
4599 + queue.unshift( "inprogress" );
4600 + }
4601 +
4602 + // Clear up the last queue stop function
4603 + delete hooks.stop;
4604 + fn.call( elem, next, hooks );
4605 + }
4606 +
4607 + if ( !startLength && hooks ) {
4608 + hooks.empty.fire();
4609 + }
4610 + },
4611 +
4612 + // Not public - generate a queueHooks object, or return the current one
4613 + _queueHooks: function( elem, type ) {
4614 + var key = type + "queueHooks";
4615 + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
4616 + empty: jQuery.Callbacks( "once memory" ).add( function() {
4617 + dataPriv.remove( elem, [ type + "queue", key ] );
4618 + } )
4619 + } );
4620 + }
4621 +} );
4622 +
4623 +jQuery.fn.extend( {
4624 + queue: function( type, data ) {
4625 + var setter = 2;
4626 +
4627 + if ( typeof type !== "string" ) {
4628 + data = type;
4629 + type = "fx";
4630 + setter--;
4631 + }
4632 +
4633 + if ( arguments.length < setter ) {
4634 + return jQuery.queue( this[ 0 ], type );
4635 + }
4636 +
4637 + return data === undefined ?
4638 + this :
4639 + this.each( function() {
4640 + var queue = jQuery.queue( this, type, data );
4641 +
4642 + // Ensure a hooks for this queue
4643 + jQuery._queueHooks( this, type );
4644 +
4645 + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
4646 + jQuery.dequeue( this, type );
4647 + }
4648 + } );
4649 + },
4650 + dequeue: function( type ) {
4651 + return this.each( function() {
4652 + jQuery.dequeue( this, type );
4653 + } );
4654 + },
4655 + clearQueue: function( type ) {
4656 + return this.queue( type || "fx", [] );
4657 + },
4658 +
4659 + // Get a promise resolved when queues of a certain type
4660 + // are emptied (fx is the type by default)
4661 + promise: function( type, obj ) {
4662 + var tmp,
4663 + count = 1,
4664 + defer = jQuery.Deferred(),
4665 + elements = this,
4666 + i = this.length,
4667 + resolve = function() {
4668 + if ( !( --count ) ) {
4669 + defer.resolveWith( elements, [ elements ] );
4670 + }
4671 + };
4672 +
4673 + if ( typeof type !== "string" ) {
4674 + obj = type;
4675 + type = undefined;
4676 + }
4677 + type = type || "fx";
4678 +
4679 + while ( i-- ) {
4680 + tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
4681 + if ( tmp && tmp.empty ) {
4682 + count++;
4683 + tmp.empty.add( resolve );
4684 + }
4685 + }
4686 + resolve();
4687 + return defer.promise( obj );
4688 + }
4689 +} );
4690 +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
4691 +
4692 +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
4693 +
4694 +
4695 +var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4696 +
4697 +var documentElement = document.documentElement;
4698 +
4699 +
4700 +
4701 + var isAttached = function( elem ) {
4702 + return jQuery.contains( elem.ownerDocument, elem );
4703 + },
4704 + composed = { composed: true };
4705 +
4706 + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
4707 + // Check attachment across shadow DOM boundaries when possible (gh-3504)
4708 + // Support: iOS 10.0-10.2 only
4709 + // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
4710 + // leading to errors. We need to check for `getRootNode`.
4711 + if ( documentElement.getRootNode ) {
4712 + isAttached = function( elem ) {
4713 + return jQuery.contains( elem.ownerDocument, elem ) ||
4714 + elem.getRootNode( composed ) === elem.ownerDocument;
4715 + };
4716 + }
4717 +var isHiddenWithinTree = function( elem, el ) {
4718 +
4719 + // isHiddenWithinTree might be called from jQuery#filter function;
4720 + // in that case, element will be second argument
4721 + elem = el || elem;
4722 +
4723 + // Inline style trumps all
4724 + return elem.style.display === "none" ||
4725 + elem.style.display === "" &&
4726 +
4727 + // Otherwise, check computed style
4728 + // Support: Firefox <=43 - 45
4729 + // Disconnected elements can have computed display: none, so first confirm that elem is
4730 + // in the document.
4731 + isAttached( elem ) &&
4732 +
4733 + jQuery.css( elem, "display" ) === "none";
4734 + };
4735 +
4736 +
4737 +
4738 +function adjustCSS( elem, prop, valueParts, tween ) {
4739 + var adjusted, scale,
4740 + maxIterations = 20,
4741 + currentValue = tween ?
4742 + function() {
4743 + return tween.cur();
4744 + } :
4745 + function() {
4746 + return jQuery.css( elem, prop, "" );
4747 + },
4748 + initial = currentValue(),
4749 + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
4750 +
4751 + // Starting value computation is required for potential unit mismatches
4752 + initialInUnit = elem.nodeType &&
4753 + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
4754 + rcssNum.exec( jQuery.css( elem, prop ) );
4755 +
4756 + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
4757 +
4758 + // Support: Firefox <=54
4759 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
4760 + initial = initial / 2;
4761 +
4762 + // Trust units reported by jQuery.css
4763 + unit = unit || initialInUnit[ 3 ];
4764 +
4765 + // Iteratively approximate from a nonzero starting point
4766 + initialInUnit = +initial || 1;
4767 +
4768 + while ( maxIterations-- ) {
4769 +
4770 + // Evaluate and update our best guess (doubling guesses that zero out).
4771 + // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
4772 + jQuery.style( elem, prop, initialInUnit + unit );
4773 + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
4774 + maxIterations = 0;
4775 + }
4776 + initialInUnit = initialInUnit / scale;
4777 +
4778 + }
4779 +
4780 + initialInUnit = initialInUnit * 2;
4781 + jQuery.style( elem, prop, initialInUnit + unit );
4782 +
4783 + // Make sure we update the tween properties later on
4784 + valueParts = valueParts || [];
4785 + }
4786 +
4787 + if ( valueParts ) {
4788 + initialInUnit = +initialInUnit || +initial || 0;
4789 +
4790 + // Apply relative offset (+=/-=) if specified
4791 + adjusted = valueParts[ 1 ] ?
4792 + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
4793 + +valueParts[ 2 ];
4794 + if ( tween ) {
4795 + tween.unit = unit;
4796 + tween.start = initialInUnit;
4797 + tween.end = adjusted;
4798 + }
4799 + }
4800 + return adjusted;
4801 +}
4802 +
4803 +
4804 +var defaultDisplayMap = {};
4805 +
4806 +function getDefaultDisplay( elem ) {
4807 + var temp,
4808 + doc = elem.ownerDocument,
4809 + nodeName = elem.nodeName,
4810 + display = defaultDisplayMap[ nodeName ];
4811 +
4812 + if ( display ) {
4813 + return display;
4814 + }
4815 +
4816 + temp = doc.body.appendChild( doc.createElement( nodeName ) );
4817 + display = jQuery.css( temp, "display" );
4818 +
4819 + temp.parentNode.removeChild( temp );
4820 +
4821 + if ( display === "none" ) {
4822 + display = "block";
4823 + }
4824 + defaultDisplayMap[ nodeName ] = display;
4825 +
4826 + return display;
4827 +}
4828 +
4829 +function showHide( elements, show ) {
4830 + var display, elem,
4831 + values = [],
4832 + index = 0,
4833 + length = elements.length;
4834 +
4835 + // Determine new display value for elements that need to change
4836 + for ( ; index < length; index++ ) {
4837 + elem = elements[ index ];
4838 + if ( !elem.style ) {
4839 + continue;
4840 + }
4841 +
4842 + display = elem.style.display;
4843 + if ( show ) {
4844 +
4845 + // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
4846 + // check is required in this first loop unless we have a nonempty display value (either
4847 + // inline or about-to-be-restored)
4848 + if ( display === "none" ) {
4849 + values[ index ] = dataPriv.get( elem, "display" ) || null;
4850 + if ( !values[ index ] ) {
4851 + elem.style.display = "";
4852 + }
4853 + }
4854 + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
4855 + values[ index ] = getDefaultDisplay( elem );
4856 + }
4857 + } else {
4858 + if ( display !== "none" ) {
4859 + values[ index ] = "none";
4860 +
4861 + // Remember what we're overwriting
4862 + dataPriv.set( elem, "display", display );
4863 + }
4864 + }
4865 + }
4866 +
4867 + // Set the display of the elements in a second loop to avoid constant reflow
4868 + for ( index = 0; index < length; index++ ) {
4869 + if ( values[ index ] != null ) {
4870 + elements[ index ].style.display = values[ index ];
4871 + }
4872 + }
4873 +
4874 + return elements;
4875 +}
4876 +
4877 +jQuery.fn.extend( {
4878 + show: function() {
4879 + return showHide( this, true );
4880 + },
4881 + hide: function() {
4882 + return showHide( this );
4883 + },
4884 + toggle: function( state ) {
4885 + if ( typeof state === "boolean" ) {
4886 + return state ? this.show() : this.hide();
4887 + }
4888 +
4889 + return this.each( function() {
4890 + if ( isHiddenWithinTree( this ) ) {
4891 + jQuery( this ).show();
4892 + } else {
4893 + jQuery( this ).hide();
4894 + }
4895 + } );
4896 + }
4897 +} );
4898 +var rcheckableType = ( /^(?:checkbox|radio)$/i );
4899 +
4900 +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
4901 +
4902 +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
4903 +
4904 +
4905 +
4906 +( function() {
4907 + var fragment = document.createDocumentFragment(),
4908 + div = fragment.appendChild( document.createElement( "div" ) ),
4909 + input = document.createElement( "input" );
4910 +
4911 + // Support: Android 4.0 - 4.3 only
4912 + // Check state lost if the name is set (#11217)
4913 + // Support: Windows Web Apps (WWA)
4914 + // `name` and `type` must use .setAttribute for WWA (#14901)
4915 + input.setAttribute( "type", "radio" );
4916 + input.setAttribute( "checked", "checked" );
4917 + input.setAttribute( "name", "t" );
4918 +
4919 + div.appendChild( input );
4920 +
4921 + // Support: Android <=4.1 only
4922 + // Older WebKit doesn't clone checked state correctly in fragments
4923 + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4924 +
4925 + // Support: IE <=11 only
4926 + // Make sure textarea (and checkbox) defaultValue is properly cloned
4927 + div.innerHTML = "<textarea>x</textarea>";
4928 + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4929 +
4930 + // Support: IE <=9 only
4931 + // IE <=9 replaces <option> tags with their contents when inserted outside of
4932 + // the select element.
4933 + div.innerHTML = "<option></option>";
4934 + support.option = !!div.lastChild;
4935 +} )();
4936 +
4937 +
4938 +// We have to close these tags to support XHTML (#13200)
4939 +var wrapMap = {
4940 +
4941 + // XHTML parsers do not magically insert elements in the
4942 + // same way that tag soup parsers do. So we cannot shorten
4943 + // this by omitting <tbody> or other required elements.
4944 + thead: [ 1, "<table>", "</table>" ],
4945 + col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
4946 + tr: [ 2, "<table><tbody>", "</tbody></table>" ],
4947 + td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
4948 +
4949 + _default: [ 0, "", "" ]
4950 +};
4951 +
4952 +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4953 +wrapMap.th = wrapMap.td;
4954 +
4955 +// Support: IE <=9 only
4956 +if ( !support.option ) {
4957 + wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
4958 +}
4959 +
4960 +
4961 +function getAll( context, tag ) {
4962 +
4963 + // Support: IE <=9 - 11 only
4964 + // Use typeof to avoid zero-argument method invocation on host objects (#15151)
4965 + var ret;
4966 +
4967 + if ( typeof context.getElementsByTagName !== "undefined" ) {
4968 + ret = context.getElementsByTagName( tag || "*" );
4969 +
4970 + } else if ( typeof context.querySelectorAll !== "undefined" ) {
4971 + ret = context.querySelectorAll( tag || "*" );
4972 +
4973 + } else {
4974 + ret = [];
4975 + }
4976 +
4977 + if ( tag === undefined || tag && nodeName( context, tag ) ) {
4978 + return jQuery.merge( [ context ], ret );
4979 + }
4980 +
4981 + return ret;
4982 +}
4983 +
4984 +
4985 +// Mark scripts as having already been evaluated
4986 +function setGlobalEval( elems, refElements ) {
4987 + var i = 0,
4988 + l = elems.length;
4989 +
4990 + for ( ; i < l; i++ ) {
4991 + dataPriv.set(
4992 + elems[ i ],
4993 + "globalEval",
4994 + !refElements || dataPriv.get( refElements[ i ], "globalEval" )
4995 + );
4996 + }
4997 +}
4998 +
4999 +

This file is too large to show in full.

src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/BundleConfig.cs new
+30
@@ -0,0 +1,30 @@
1 +using System.Web;
2 +using System.Web.Optimization;
3 +
4 +namespace CsprojWebApplicationNetFx
5 +{
6 + public class BundleConfig
7 + {
8 + // For more information on bundling, visit https://go.microsoft.com/fwlink/?LinkId=301862
9 + public static void RegisterBundles(BundleCollection bundles)
10 + {
11 + bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
12 + "~/Scripts/jquery-{version}.js"));
13 +
14 + bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
15 + "~/Scripts/jquery.validate*"));
16 +
17 + // Use the development version of Modernizr to develop with and learn from. Then, when you're
18 + // ready for production, use the build tool at https://modernizr.com to pick only the tests you need.
19 + bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
20 + "~/Scripts/modernizr-*"));
21 +
22 + bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
23 + "~/Scripts/bootstrap.js"));
24 +
25 + bundles.Add(new StyleBundle("~/Content/css").Include(
26 + "~/Content/bootstrap.css",
27 + "~/Content/site.css"));
28 + }
29 + }
30 +}
src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/FilterConfig.cs new
+13
@@ -0,0 +1,13 @@
1 +using System.Web;
2 +using System.Web.Mvc;
3 +
4 +namespace CsprojWebApplicationNetFx
5 +{
6 + public class FilterConfig
7 + {
8 + public static void RegisterGlobalFilters(GlobalFilterCollection filters)
9 + {
10 + filters.Add(new HandleErrorAttribute());
11 + }
12 + }
13 +}
src/test/wix/TestData/CsprojWebApplicationNetFx/App_Start/RouteConfig.cs new
+23
@@ -0,0 +1,23 @@
1 +using System;
2 +using System.Collections.Generic;
3 +using System.Linq;
4 +using System.Web;
5 +using System.Web.Mvc;
6 +using System.Web.Routing;
7 +
8 +namespace CsprojWebApplicationNetFx
9 +{
10 + public class RouteConfig
11 + {
12 + public static void RegisterRoutes(RouteCollection routes)
13 + {
14 + routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
15 +
16 + routes.MapRoute(
17 + name: "Default",
18 + url: "{controller}/{action}/{id}",
19 + defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
20 + );
21 + }
22 + }
23 +}
src/test/wix/TestData/CsprojWebApplicationNetFx/Content/Site.css new
+24
@@ -0,0 +1,24 @@
1 +body {
2 + padding-top: 50px;
3 + padding-bottom: 20px;
4 +}
5 +
6 +/* Set padding to keep content from hitting the edges */
7 +.body-content {
8 + padding-left: 15px;
9 + padding-right: 15px;
10 +}
11 +
12 +/* Override the default bootstrap behavior where horizontal description lists
13 + will truncate terms that are too long to fit in the left column
14 +*/
15 +.dl-horizontal dt {
16 + white-space: normal;
17 +}
18 +
19 +/* Set width on the form input elements since they're 100% wide by default */
20 +input,
21 +select,
22 +textarea {
23 + max-width: 280px;
24 +}
src/test/wix/TestData/CsprojWebApplicationNetFx/Content/bootstrap-theme.css new
+587
@@ -0,0 +1,587 @@
1 +/*!
2 + * Bootstrap v3.4.1 (https://getbootstrap.com/)
3 + * Copyright 2011-2019 Twitter, Inc.
4 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 + */
6 +.btn-default,
7 +.btn-primary,
8 +.btn-success,
9 +.btn-info,
10 +.btn-warning,
11 +.btn-danger {
12 + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
13 + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
14 + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
15 +}
16 +.btn-default:active,
17 +.btn-primary:active,
18 +.btn-success:active,
19 +.btn-info:active,
20 +.btn-warning:active,
21 +.btn-danger:active,
22 +.btn-default.active,
23 +.btn-primary.active,
24 +.btn-success.active,
25 +.btn-info.active,
26 +.btn-warning.active,
27 +.btn-danger.active {
28 + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
29 + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
30 +}
31 +.btn-default.disabled,
32 +.btn-primary.disabled,
33 +.btn-success.disabled,
34 +.btn-info.disabled,
35 +.btn-warning.disabled,
36 +.btn-danger.disabled,
37 +.btn-default[disabled],
38 +.btn-primary[disabled],
39 +.btn-success[disabled],
40 +.btn-info[disabled],
41 +.btn-warning[disabled],
42 +.btn-danger[disabled],
43 +fieldset[disabled] .btn-default,
44 +fieldset[disabled] .btn-primary,
45 +fieldset[disabled] .btn-success,
46 +fieldset[disabled] .btn-info,
47 +fieldset[disabled] .btn-warning,
48 +fieldset[disabled] .btn-danger {
49 + -webkit-box-shadow: none;
50 + box-shadow: none;
51 +}
52 +.btn-default .badge,
53 +.btn-primary .badge,
54 +.btn-success .badge,
55 +.btn-info .badge,
56 +.btn-warning .badge,
57 +.btn-danger .badge {
58 + text-shadow: none;
59 +}
60 +.btn:active,
61 +.btn.active {
62 + background-image: none;
63 +}
64 +.btn-default {
65 + background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
66 + background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
67 + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
68 + background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
69 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
70 + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
71 + background-repeat: repeat-x;
72 + border-color: #dbdbdb;
73 + text-shadow: 0 1px 0 #fff;
74 + border-color: #ccc;
75 +}
76 +.btn-default:hover,
77 +.btn-default:focus {
78 + background-color: #e0e0e0;
79 + background-position: 0 -15px;
80 +}
81 +.btn-default:active,
82 +.btn-default.active {
83 + background-color: #e0e0e0;
84 + border-color: #dbdbdb;
85 +}
86 +.btn-default.disabled,
87 +.btn-default[disabled],
88 +fieldset[disabled] .btn-default,
89 +.btn-default.disabled:hover,
90 +.btn-default[disabled]:hover,
91 +fieldset[disabled] .btn-default:hover,
92 +.btn-default.disabled:focus,
93 +.btn-default[disabled]:focus,
94 +fieldset[disabled] .btn-default:focus,
95 +.btn-default.disabled.focus,
96 +.btn-default[disabled].focus,
97 +fieldset[disabled] .btn-default.focus,
98 +.btn-default.disabled:active,
99 +.btn-default[disabled]:active,
100 +fieldset[disabled] .btn-default:active,
101 +.btn-default.disabled.active,
102 +.btn-default[disabled].active,
103 +fieldset[disabled] .btn-default.active {
104 + background-color: #e0e0e0;
105 + background-image: none;
106 +}
107 +.btn-primary {
108 + background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
109 + background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
110 + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
111 + background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
112 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
113 + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
114 + background-repeat: repeat-x;
115 + border-color: #245580;
116 +}
117 +.btn-primary:hover,
118 +.btn-primary:focus {
119 + background-color: #265a88;
120 + background-position: 0 -15px;
121 +}
122 +.btn-primary:active,
123 +.btn-primary.active {
124 + background-color: #265a88;
125 + border-color: #245580;
126 +}
127 +.btn-primary.disabled,
128 +.btn-primary[disabled],
129 +fieldset[disabled] .btn-primary,
130 +.btn-primary.disabled:hover,
131 +.btn-primary[disabled]:hover,
132 +fieldset[disabled] .btn-primary:hover,
133 +.btn-primary.disabled:focus,
134 +.btn-primary[disabled]:focus,
135 +fieldset[disabled] .btn-primary:focus,
136 +.btn-primary.disabled.focus,
137 +.btn-primary[disabled].focus,
138 +fieldset[disabled] .btn-primary.focus,
139 +.btn-primary.disabled:active,
140 +.btn-primary[disabled]:active,
141 +fieldset[disabled] .btn-primary:active,
142 +.btn-primary.disabled.active,
143 +.btn-primary[disabled].active,
144 +fieldset[disabled] .btn-primary.active {
145 + background-color: #265a88;
146 + background-image: none;
147 +}
148 +.btn-success {
149 + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
150 + background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
151 + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
152 + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
153 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
154 + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
155 + background-repeat: repeat-x;
156 + border-color: #3e8f3e;
157 +}
158 +.btn-success:hover,
159 +.btn-success:focus {
160 + background-color: #419641;
161 + background-position: 0 -15px;
162 +}
163 +.btn-success:active,
164 +.btn-success.active {
165 + background-color: #419641;
166 + border-color: #3e8f3e;
167 +}
168 +.btn-success.disabled,
169 +.btn-success[disabled],
170 +fieldset[disabled] .btn-success,
171 +.btn-success.disabled:hover,
172 +.btn-success[disabled]:hover,
173 +fieldset[disabled] .btn-success:hover,
174 +.btn-success.disabled:focus,
175 +.btn-success[disabled]:focus,
176 +fieldset[disabled] .btn-success:focus,
177 +.btn-success.disabled.focus,
178 +.btn-success[disabled].focus,
179 +fieldset[disabled] .btn-success.focus,
180 +.btn-success.disabled:active,
181 +.btn-success[disabled]:active,
182 +fieldset[disabled] .btn-success:active,
183 +.btn-success.disabled.active,
184 +.btn-success[disabled].active,
185 +fieldset[disabled] .btn-success.active {
186 + background-color: #419641;
187 + background-image: none;
188 +}
189 +.btn-info {
190 + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
191 + background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
192 + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
193 + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
194 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
195 + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
196 + background-repeat: repeat-x;
197 + border-color: #28a4c9;
198 +}
199 +.btn-info:hover,
200 +.btn-info:focus {
201 + background-color: #2aabd2;
202 + background-position: 0 -15px;
203 +}
204 +.btn-info:active,
205 +.btn-info.active {
206 + background-color: #2aabd2;
207 + border-color: #28a4c9;
208 +}
209 +.btn-info.disabled,
210 +.btn-info[disabled],
211 +fieldset[disabled] .btn-info,
212 +.btn-info.disabled:hover,
213 +.btn-info[disabled]:hover,
214 +fieldset[disabled] .btn-info:hover,
215 +.btn-info.disabled:focus,
216 +.btn-info[disabled]:focus,
217 +fieldset[disabled] .btn-info:focus,
218 +.btn-info.disabled.focus,
219 +.btn-info[disabled].focus,
220 +fieldset[disabled] .btn-info.focus,
221 +.btn-info.disabled:active,
222 +.btn-info[disabled]:active,
223 +fieldset[disabled] .btn-info:active,
224 +.btn-info.disabled.active,
225 +.btn-info[disabled].active,
226 +fieldset[disabled] .btn-info.active {
227 + background-color: #2aabd2;
228 + background-image: none;
229 +}
230 +.btn-warning {
231 + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
232 + background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
233 + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
234 + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
235 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
236 + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
237 + background-repeat: repeat-x;
238 + border-color: #e38d13;
239 +}
240 +.btn-warning:hover,
241 +.btn-warning:focus {
242 + background-color: #eb9316;
243 + background-position: 0 -15px;
244 +}
245 +.btn-warning:active,
246 +.btn-warning.active {
247 + background-color: #eb9316;
248 + border-color: #e38d13;
249 +}
250 +.btn-warning.disabled,
251 +.btn-warning[disabled],
252 +fieldset[disabled] .btn-warning,
253 +.btn-warning.disabled:hover,
254 +.btn-warning[disabled]:hover,
255 +fieldset[disabled] .btn-warning:hover,
256 +.btn-warning.disabled:focus,
257 +.btn-warning[disabled]:focus,
258 +fieldset[disabled] .btn-warning:focus,
259 +.btn-warning.disabled.focus,
260 +.btn-warning[disabled].focus,
261 +fieldset[disabled] .btn-warning.focus,
262 +.btn-warning.disabled:active,
263 +.btn-warning[disabled]:active,
264 +fieldset[disabled] .btn-warning:active,
265 +.btn-warning.disabled.active,
266 +.btn-warning[disabled].active,
267 +fieldset[disabled] .btn-warning.active {
268 + background-color: #eb9316;
269 + background-image: none;
270 +}
271 +.btn-danger {
272 + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
273 + background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
274 + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
275 + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
276 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
277 + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
278 + background-repeat: repeat-x;
279 + border-color: #b92c28;
280 +}
281 +.btn-danger:hover,
282 +.btn-danger:focus {
283 + background-color: #c12e2a;
284 + background-position: 0 -15px;
285 +}
286 +.btn-danger:active,
287 +.btn-danger.active {
288 + background-color: #c12e2a;
289 + border-color: #b92c28;
290 +}
291 +.btn-danger.disabled,
292 +.btn-danger[disabled],
293 +fieldset[disabled] .btn-danger,
294 +.btn-danger.disabled:hover,
295 +.btn-danger[disabled]:hover,
296 +fieldset[disabled] .btn-danger:hover,
297 +.btn-danger.disabled:focus,
298 +.btn-danger[disabled]:focus,
299 +fieldset[disabled] .btn-danger:focus,
300 +.btn-danger.disabled.focus,
301 +.btn-danger[disabled].focus,
302 +fieldset[disabled] .btn-danger.focus,
303 +.btn-danger.disabled:active,
304 +.btn-danger[disabled]:active,
305 +fieldset[disabled] .btn-danger:active,
306 +.btn-danger.disabled.active,
307 +.btn-danger[disabled].active,
308 +fieldset[disabled] .btn-danger.active {
309 + background-color: #c12e2a;
310 + background-image: none;
311 +}
312 +.thumbnail,
313 +.img-thumbnail {
314 + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
315 + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
316 +}
317 +.dropdown-menu > li > a:hover,
318 +.dropdown-menu > li > a:focus {
319 + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
320 + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
321 + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
322 + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
323 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
324 + background-repeat: repeat-x;
325 + background-color: #e8e8e8;
326 +}
327 +.dropdown-menu > .active > a,
328 +.dropdown-menu > .active > a:hover,
329 +.dropdown-menu > .active > a:focus {
330 + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
331 + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
332 + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
333 + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
334 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
335 + background-repeat: repeat-x;
336 + background-color: #2e6da4;
337 +}
338 +.navbar-default {
339 + background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
340 + background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);
341 + background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f8f8f8));
342 + background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);
343 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
344 + background-repeat: repeat-x;
345 + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
346 + border-radius: 4px;
347 + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
348 + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);
349 +}
350 +.navbar-default .navbar-nav > .open > a,
351 +.navbar-default .navbar-nav > .active > a {
352 + background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
353 + background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
354 + background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
355 + background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
356 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
357 + background-repeat: repeat-x;
358 + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
359 + box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);
360 +}
361 +.navbar-brand,
362 +.navbar-nav > li > a {
363 + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
364 +}
365 +.navbar-inverse {
366 + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
367 + background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
368 + background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
369 + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
370 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
371 + background-repeat: repeat-x;
372 + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
373 + border-radius: 4px;
374 +}
375 +.navbar-inverse .navbar-nav > .open > a,
376 +.navbar-inverse .navbar-nav > .active > a {
377 + background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
378 + background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
379 + background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
380 + background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
381 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
382 + background-repeat: repeat-x;
383 + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
384 + box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);
385 +}
386 +.navbar-inverse .navbar-brand,
387 +.navbar-inverse .navbar-nav > li > a {
388 + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
389 +}
390 +.navbar-static-top,
391 +.navbar-fixed-top,
392 +.navbar-fixed-bottom {
393 + border-radius: 0;
394 +}
395 +@media (max-width: 767px) {
396 + .navbar .navbar-nav .open .dropdown-menu > .active > a,
397 + .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
398 + .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
399 + color: #fff;
400 + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
401 + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
402 + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
403 + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
404 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
405 + background-repeat: repeat-x;
406 + }
407 +}
408 +.alert {
409 + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
410 + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
411 + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
412 +}
413 +.alert-success {
414 + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
415 + background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
416 + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
417 + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
418 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
419 + background-repeat: repeat-x;
420 + border-color: #b2dba1;
421 +}
422 +.alert-info {
423 + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
424 + background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
425 + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
426 + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
427 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
428 + background-repeat: repeat-x;
429 + border-color: #9acfea;
430 +}
431 +.alert-warning {
432 + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
433 + background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
434 + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
435 + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
436 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
437 + background-repeat: repeat-x;
438 + border-color: #f5e79e;
439 +}
440 +.alert-danger {
441 + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
442 + background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
443 + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
444 + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
445 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
446 + background-repeat: repeat-x;
447 + border-color: #dca7a7;
448 +}
449 +.progress {
450 + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
451 + background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
452 + background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
453 + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
454 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
455 + background-repeat: repeat-x;
456 +}
457 +.progress-bar {
458 + background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
459 + background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
460 + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
461 + background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
462 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
463 + background-repeat: repeat-x;
464 +}
465 +.progress-bar-success {
466 + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
467 + background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
468 + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
469 + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
470 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
471 + background-repeat: repeat-x;
472 +}
473 +.progress-bar-info {
474 + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
475 + background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
476 + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
477 + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
478 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
479 + background-repeat: repeat-x;
480 +}
481 +.progress-bar-warning {
482 + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
483 + background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
484 + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
485 + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
486 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
487 + background-repeat: repeat-x;
488 +}
489 +.progress-bar-danger {
490 + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
491 + background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
492 + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
493 + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
494 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
495 + background-repeat: repeat-x;
496 +}
497 +.progress-bar-striped {
498 + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
499 + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
500 + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
501 +}
502 +.list-group {
503 + border-radius: 4px;
504 + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
505 + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
506 +}
507 +.list-group-item.active,
508 +.list-group-item.active:hover,
509 +.list-group-item.active:focus {
510 + text-shadow: 0 -1px 0 #286090;
511 + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
512 + background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
513 + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
514 + background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
515 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
516 + background-repeat: repeat-x;
517 + border-color: #2b669a;
518 +}
519 +.list-group-item.active .badge,
520 +.list-group-item.active:hover .badge,
521 +.list-group-item.active:focus .badge {
522 + text-shadow: none;
523 +}
524 +.panel {
525 + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
526 + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
527 +}
528 +.panel-default > .panel-heading {
529 + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
530 + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
531 + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
532 + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
533 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
534 + background-repeat: repeat-x;
535 +}
536 +.panel-primary > .panel-heading {
537 + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
538 + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
539 + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
540 + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
541 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
542 + background-repeat: repeat-x;
543 +}
544 +.panel-success > .panel-heading {
545 + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
546 + background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
547 + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
548 + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
549 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
550 + background-repeat: repeat-x;
551 +}
552 +.panel-info > .panel-heading {
553 + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
554 + background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
555 + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
556 + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
557 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
558 + background-repeat: repeat-x;
559 +}
560 +.panel-warning > .panel-heading {
561 + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
562 + background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
563 + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
564 + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
565 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
566 + background-repeat: repeat-x;
567 +}
568 +.panel-danger > .panel-heading {
569 + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
570 + background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
571 + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
572 + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
573 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
574 + background-repeat: repeat-x;
575 +}
576 +.well {
577 + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
578 + background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
579 + background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
580 + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
581 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
582 + background-repeat: repeat-x;
583 + border-color: #dcdcdc;
584 + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
585 + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);
586 +}
587 +/*# sourceMappingURL=bootstrap-theme.css.map */
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/Content/bootstrap.css new
+6834
@@ -0,0 +1,6834 @@
1 +/*!
2 + * Bootstrap v3.4.1 (https://getbootstrap.com/)
3 + * Copyright 2011-2019 Twitter, Inc.
4 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 + */
6 +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
7 +html {
8 + font-family: sans-serif;
9 + -ms-text-size-adjust: 100%;
10 + -webkit-text-size-adjust: 100%;
11 +}
12 +body {
13 + margin: 0;
14 +}
15 +article,
16 +aside,
17 +details,
18 +figcaption,
19 +figure,
20 +footer,
21 +header,
22 +hgroup,
23 +main,
24 +menu,
25 +nav,
26 +section,
27 +summary {
28 + display: block;
29 +}
30 +audio,
31 +canvas,
32 +progress,
33 +video {
34 + display: inline-block;
35 + vertical-align: baseline;
36 +}
37 +audio:not([controls]) {
38 + display: none;
39 + height: 0;
40 +}
41 +[hidden],
42 +template {
43 + display: none;
44 +}
45 +a {
46 + background-color: transparent;
47 +}
48 +a:active,
49 +a:hover {
50 + outline: 0;
51 +}
52 +abbr[title] {
53 + border-bottom: none;
54 + text-decoration: underline;
55 + -webkit-text-decoration: underline dotted;
56 + -moz-text-decoration: underline dotted;
57 + text-decoration: underline dotted;
58 +}
59 +b,
60 +strong {
61 + font-weight: bold;
62 +}
63 +dfn {
64 + font-style: italic;
65 +}
66 +h1 {
67 + font-size: 2em;
68 + margin: 0.67em 0;
69 +}
70 +mark {
71 + background: #ff0;
72 + color: #000;
73 +}
74 +small {
75 + font-size: 80%;
76 +}
77 +sub,
78 +sup {
79 + font-size: 75%;
80 + line-height: 0;
81 + position: relative;
82 + vertical-align: baseline;
83 +}
84 +sup {
85 + top: -0.5em;
86 +}
87 +sub {
88 + bottom: -0.25em;
89 +}
90 +img {
91 + border: 0;
92 +}
93 +svg:not(:root) {
94 + overflow: hidden;
95 +}
96 +figure {
97 + margin: 1em 40px;
98 +}
99 +hr {
100 + -webkit-box-sizing: content-box;
101 + -moz-box-sizing: content-box;
102 + box-sizing: content-box;
103 + height: 0;
104 +}
105 +pre {
106 + overflow: auto;
107 +}
108 +code,
109 +kbd,
110 +pre,
111 +samp {
112 + font-family: monospace, monospace;
113 + font-size: 1em;
114 +}
115 +button,
116 +input,
117 +optgroup,
118 +select,
119 +textarea {
120 + color: inherit;
121 + font: inherit;
122 + margin: 0;
123 +}
124 +button {
125 + overflow: visible;
126 +}
127 +button,
128 +select {
129 + text-transform: none;
130 +}
131 +button,
132 +html input[type="button"],
133 +input[type="reset"],
134 +input[type="submit"] {
135 + -webkit-appearance: button;
136 + cursor: pointer;
137 +}
138 +button[disabled],
139 +html input[disabled] {
140 + cursor: default;
141 +}
142 +button::-moz-focus-inner,
143 +input::-moz-focus-inner {
144 + border: 0;
145 + padding: 0;
146 +}
147 +input {
148 + line-height: normal;
149 +}
150 +input[type="checkbox"],
151 +input[type="radio"] {
152 + -webkit-box-sizing: border-box;
153 + -moz-box-sizing: border-box;
154 + box-sizing: border-box;
155 + padding: 0;
156 +}
157 +input[type="number"]::-webkit-inner-spin-button,
158 +input[type="number"]::-webkit-outer-spin-button {
159 + height: auto;
160 +}
161 +input[type="search"] {
162 + -webkit-appearance: textfield;
163 + -webkit-box-sizing: content-box;
164 + -moz-box-sizing: content-box;
165 + box-sizing: content-box;
166 +}
167 +input[type="search"]::-webkit-search-cancel-button,
168 +input[type="search"]::-webkit-search-decoration {
169 + -webkit-appearance: none;
170 +}
171 +fieldset {
172 + border: 1px solid #c0c0c0;
173 + margin: 0 2px;
174 + padding: 0.35em 0.625em 0.75em;
175 +}
176 +legend {
177 + border: 0;
178 + padding: 0;
179 +}
180 +textarea {
181 + overflow: auto;
182 +}
183 +optgroup {
184 + font-weight: bold;
185 +}
186 +table {
187 + border-collapse: collapse;
188 + border-spacing: 0;
189 +}
190 +td,
191 +th {
192 + padding: 0;
193 +}
194 +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
195 +@media print {
196 + *,
197 + *:before,
198 + *:after {
199 + color: #000 !important;
200 + text-shadow: none !important;
201 + background: transparent !important;
202 + -webkit-box-shadow: none !important;
203 + box-shadow: none !important;
204 + }
205 + a,
206 + a:visited {
207 + text-decoration: underline;
208 + }
209 + a[href]:after {
210 + content: " (" attr(href) ")";
211 + }
212 + abbr[title]:after {
213 + content: " (" attr(title) ")";
214 + }
215 + a[href^="#"]:after,
216 + a[href^="javascript:"]:after {
217 + content: "";
218 + }
219 + pre,
220 + blockquote {
221 + border: 1px solid #999;
222 + page-break-inside: avoid;
223 + }
224 + thead {
225 + display: table-header-group;
226 + }
227 + tr,
228 + img {
229 + page-break-inside: avoid;
230 + }
231 + img {
232 + max-width: 100% !important;
233 + }
234 + p,
235 + h2,
236 + h3 {
237 + orphans: 3;
238 + widows: 3;
239 + }
240 + h2,
241 + h3 {
242 + page-break-after: avoid;
243 + }
244 + .navbar {
245 + display: none;
246 + }
247 + .btn > .caret,
248 + .dropup > .btn > .caret {
249 + border-top-color: #000 !important;
250 + }
251 + .label {
252 + border: 1px solid #000;
253 + }
254 + .table {
255 + border-collapse: collapse !important;
256 + }
257 + .table td,
258 + .table th {
259 + background-color: #fff !important;
260 + }
261 + .table-bordered th,
262 + .table-bordered td {
263 + border: 1px solid #ddd !important;
264 + }
265 +}
266 +@font-face {
267 + font-family: "Glyphicons Halflings";
268 + src: url("../fonts/glyphicons-halflings-regular.eot");
269 + src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"), url("../fonts/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg");
270 +}
271 +.glyphicon {
272 + position: relative;
273 + top: 1px;
274 + display: inline-block;
275 + font-family: "Glyphicons Halflings";
276 + font-style: normal;
277 + font-weight: 400;
278 + line-height: 1;
279 + -webkit-font-smoothing: antialiased;
280 + -moz-osx-font-smoothing: grayscale;
281 +}
282 +.glyphicon-asterisk:before {
283 + content: "\002a";
284 +}
285 +.glyphicon-plus:before {
286 + content: "\002b";
287 +}
288 +.glyphicon-euro:before,
289 +.glyphicon-eur:before {
290 + content: "\20ac";
291 +}
292 +.glyphicon-minus:before {
293 + content: "\2212";
294 +}
295 +.glyphicon-cloud:before {
296 + content: "\2601";
297 +}
298 +.glyphicon-envelope:before {
299 + content: "\2709";
300 +}
301 +.glyphicon-pencil:before {
302 + content: "\270f";
303 +}
304 +.glyphicon-glass:before {
305 + content: "\e001";
306 +}
307 +.glyphicon-music:before {
308 + content: "\e002";
309 +}
310 +.glyphicon-search:before {
311 + content: "\e003";
312 +}
313 +.glyphicon-heart:before {
314 + content: "\e005";
315 +}
316 +.glyphicon-star:before {
317 + content: "\e006";
318 +}
319 +.glyphicon-star-empty:before {
320 + content: "\e007";
321 +}
322 +.glyphicon-user:before {
323 + content: "\e008";
324 +}
325 +.glyphicon-film:before {
326 + content: "\e009";
327 +}
328 +.glyphicon-th-large:before {
329 + content: "\e010";
330 +}
331 +.glyphicon-th:before {
332 + content: "\e011";
333 +}
334 +.glyphicon-th-list:before {
335 + content: "\e012";
336 +}
337 +.glyphicon-ok:before {
338 + content: "\e013";
339 +}
340 +.glyphicon-remove:before {
341 + content: "\e014";
342 +}
343 +.glyphicon-zoom-in:before {
344 + content: "\e015";
345 +}
346 +.glyphicon-zoom-out:before {
347 + content: "\e016";
348 +}
349 +.glyphicon-off:before {
350 + content: "\e017";
351 +}
352 +.glyphicon-signal:before {
353 + content: "\e018";
354 +}
355 +.glyphicon-cog:before {
356 + content: "\e019";
357 +}
358 +.glyphicon-trash:before {
359 + content: "\e020";
360 +}
361 +.glyphicon-home:before {
362 + content: "\e021";
363 +}
364 +.glyphicon-file:before {
365 + content: "\e022";
366 +}
367 +.glyphicon-time:before {
368 + content: "\e023";
369 +}
370 +.glyphicon-road:before {
371 + content: "\e024";
372 +}
373 +.glyphicon-download-alt:before {
374 + content: "\e025";
375 +}
376 +.glyphicon-download:before {
377 + content: "\e026";
378 +}
379 +.glyphicon-upload:before {
380 + content: "\e027";
381 +}
382 +.glyphicon-inbox:before {
383 + content: "\e028";
384 +}
385 +.glyphicon-play-circle:before {
386 + content: "\e029";
387 +}
388 +.glyphicon-repeat:before {
389 + content: "\e030";
390 +}
391 +.glyphicon-refresh:before {
392 + content: "\e031";
393 +}
394 +.glyphicon-list-alt:before {
395 + content: "\e032";
396 +}
397 +.glyphicon-lock:before {
398 + content: "\e033";
399 +}
400 +.glyphicon-flag:before {
401 + content: "\e034";
402 +}
403 +.glyphicon-headphones:before {
404 + content: "\e035";
405 +}
406 +.glyphicon-volume-off:before {
407 + content: "\e036";
408 +}
409 +.glyphicon-volume-down:before {
410 + content: "\e037";
411 +}
412 +.glyphicon-volume-up:before {
413 + content: "\e038";
414 +}
415 +.glyphicon-qrcode:before {
416 + content: "\e039";
417 +}
418 +.glyphicon-barcode:before {
419 + content: "\e040";
420 +}
421 +.glyphicon-tag:before {
422 + content: "\e041";
423 +}
424 +.glyphicon-tags:before {
425 + content: "\e042";
426 +}
427 +.glyphicon-book:before {
428 + content: "\e043";
429 +}
430 +.glyphicon-bookmark:before {
431 + content: "\e044";
432 +}
433 +.glyphicon-print:before {
434 + content: "\e045";
435 +}
436 +.glyphicon-camera:before {
437 + content: "\e046";
438 +}
439 +.glyphicon-font:before {
440 + content: "\e047";
441 +}
442 +.glyphicon-bold:before {
443 + content: "\e048";
444 +}
445 +.glyphicon-italic:before {
446 + content: "\e049";
447 +}
448 +.glyphicon-text-height:before {
449 + content: "\e050";
450 +}
451 +.glyphicon-text-width:before {
452 + content: "\e051";
453 +}
454 +.glyphicon-align-left:before {
455 + content: "\e052";
456 +}
457 +.glyphicon-align-center:before {
458 + content: "\e053";
459 +}
460 +.glyphicon-align-right:before {
461 + content: "\e054";
462 +}
463 +.glyphicon-align-justify:before {
464 + content: "\e055";
465 +}
466 +.glyphicon-list:before {
467 + content: "\e056";
468 +}
469 +.glyphicon-indent-left:before {
470 + content: "\e057";
471 +}
472 +.glyphicon-indent-right:before {
473 + content: "\e058";
474 +}
475 +.glyphicon-facetime-video:before {
476 + content: "\e059";
477 +}
478 +.glyphicon-picture:before {
479 + content: "\e060";
480 +}
481 +.glyphicon-map-marker:before {
482 + content: "\e062";
483 +}
484 +.glyphicon-adjust:before {
485 + content: "\e063";
486 +}
487 +.glyphicon-tint:before {
488 + content: "\e064";
489 +}
490 +.glyphicon-edit:before {
491 + content: "\e065";
492 +}
493 +.glyphicon-share:before {
494 + content: "\e066";
495 +}
496 +.glyphicon-check:before {
497 + content: "\e067";
498 +}
499 +.glyphicon-move:before {
500 + content: "\e068";
501 +}
502 +.glyphicon-step-backward:before {
503 + content: "\e069";
504 +}
505 +.glyphicon-fast-backward:before {
506 + content: "\e070";
507 +}
508 +.glyphicon-backward:before {
509 + content: "\e071";
510 +}
511 +.glyphicon-play:before {
512 + content: "\e072";
513 +}
514 +.glyphicon-pause:before {
515 + content: "\e073";
516 +}
517 +.glyphicon-stop:before {
518 + content: "\e074";
519 +}
520 +.glyphicon-forward:before {
521 + content: "\e075";
522 +}
523 +.glyphicon-fast-forward:before {
524 + content: "\e076";
525 +}
526 +.glyphicon-step-forward:before {
527 + content: "\e077";
528 +}
529 +.glyphicon-eject:before {
530 + content: "\e078";
531 +}
532 +.glyphicon-chevron-left:before {
533 + content: "\e079";
534 +}
535 +.glyphicon-chevron-right:before {
536 + content: "\e080";
537 +}
538 +.glyphicon-plus-sign:before {
539 + content: "\e081";
540 +}
541 +.glyphicon-minus-sign:before {
542 + content: "\e082";
543 +}
544 +.glyphicon-remove-sign:before {
545 + content: "\e083";
546 +}
547 +.glyphicon-ok-sign:before {
548 + content: "\e084";
549 +}
550 +.glyphicon-question-sign:before {
551 + content: "\e085";
552 +}
553 +.glyphicon-info-sign:before {
554 + content: "\e086";
555 +}
556 +.glyphicon-screenshot:before {
557 + content: "\e087";
558 +}
559 +.glyphicon-remove-circle:before {
560 + content: "\e088";
561 +}
562 +.glyphicon-ok-circle:before {
563 + content: "\e089";
564 +}
565 +.glyphicon-ban-circle:before {
566 + content: "\e090";
567 +}
568 +.glyphicon-arrow-left:before {
569 + content: "\e091";
570 +}
571 +.glyphicon-arrow-right:before {
572 + content: "\e092";
573 +}
574 +.glyphicon-arrow-up:before {
575 + content: "\e093";
576 +}
577 +.glyphicon-arrow-down:before {
578 + content: "\e094";
579 +}
580 +.glyphicon-share-alt:before {
581 + content: "\e095";
582 +}
583 +.glyphicon-resize-full:before {
584 + content: "\e096";
585 +}
586 +.glyphicon-resize-small:before {
587 + content: "\e097";
588 +}
589 +.glyphicon-exclamation-sign:before {
590 + content: "\e101";
591 +}
592 +.glyphicon-gift:before {
593 + content: "\e102";
594 +}
595 +.glyphicon-leaf:before {
596 + content: "\e103";
597 +}
598 +.glyphicon-fire:before {
599 + content: "\e104";
600 +}
601 +.glyphicon-eye-open:before {
602 + content: "\e105";
603 +}
604 +.glyphicon-eye-close:before {
605 + content: "\e106";
606 +}
607 +.glyphicon-warning-sign:before {
608 + content: "\e107";
609 +}
610 +.glyphicon-plane:before {
611 + content: "\e108";
612 +}
613 +.glyphicon-calendar:before {
614 + content: "\e109";
615 +}
616 +.glyphicon-random:before {
617 + content: "\e110";
618 +}
619 +.glyphicon-comment:before {
620 + content: "\e111";
621 +}
622 +.glyphicon-magnet:before {
623 + content: "\e112";
624 +}
625 +.glyphicon-chevron-up:before {
626 + content: "\e113";
627 +}
628 +.glyphicon-chevron-down:before {
629 + content: "\e114";
630 +}
631 +.glyphicon-retweet:before {
632 + content: "\e115";
633 +}
634 +.glyphicon-shopping-cart:before {
635 + content: "\e116";
636 +}
637 +.glyphicon-folder-close:before {
638 + content: "\e117";
639 +}
640 +.glyphicon-folder-open:before {
641 + content: "\e118";
642 +}
643 +.glyphicon-resize-vertical:before {
644 + content: "\e119";
645 +}
646 +.glyphicon-resize-horizontal:before {
647 + content: "\e120";
648 +}
649 +.glyphicon-hdd:before {
650 + content: "\e121";
651 +}
652 +.glyphicon-bullhorn:before {
653 + content: "\e122";
654 +}
655 +.glyphicon-bell:before {
656 + content: "\e123";
657 +}
658 +.glyphicon-certificate:before {
659 + content: "\e124";
660 +}
661 +.glyphicon-thumbs-up:before {
662 + content: "\e125";
663 +}
664 +.glyphicon-thumbs-down:before {
665 + content: "\e126";
666 +}
667 +.glyphicon-hand-right:before {
668 + content: "\e127";
669 +}
670 +.glyphicon-hand-left:before {
671 + content: "\e128";
672 +}
673 +.glyphicon-hand-up:before {
674 + content: "\e129";
675 +}
676 +.glyphicon-hand-down:before {
677 + content: "\e130";
678 +}
679 +.glyphicon-circle-arrow-right:before {
680 + content: "\e131";
681 +}
682 +.glyphicon-circle-arrow-left:before {
683 + content: "\e132";
684 +}
685 +.glyphicon-circle-arrow-up:before {
686 + content: "\e133";
687 +}
688 +.glyphicon-circle-arrow-down:before {
689 + content: "\e134";
690 +}
691 +.glyphicon-globe:before {
692 + content: "\e135";
693 +}
694 +.glyphicon-wrench:before {
695 + content: "\e136";
696 +}
697 +.glyphicon-tasks:before {
698 + content: "\e137";
699 +}
700 +.glyphicon-filter:before {
701 + content: "\e138";
702 +}
703 +.glyphicon-briefcase:before {
704 + content: "\e139";
705 +}
706 +.glyphicon-fullscreen:before {
707 + content: "\e140";
708 +}
709 +.glyphicon-dashboard:before {
710 + content: "\e141";
711 +}
712 +.glyphicon-paperclip:before {
713 + content: "\e142";
714 +}
715 +.glyphicon-heart-empty:before {
716 + content: "\e143";
717 +}
718 +.glyphicon-link:before {
719 + content: "\e144";
720 +}
721 +.glyphicon-phone:before {
722 + content: "\e145";
723 +}
724 +.glyphicon-pushpin:before {
725 + content: "\e146";
726 +}
727 +.glyphicon-usd:before {
728 + content: "\e148";
729 +}
730 +.glyphicon-gbp:before {
731 + content: "\e149";
732 +}
733 +.glyphicon-sort:before {
734 + content: "\e150";
735 +}
736 +.glyphicon-sort-by-alphabet:before {
737 + content: "\e151";
738 +}
739 +.glyphicon-sort-by-alphabet-alt:before {
740 + content: "\e152";
741 +}
742 +.glyphicon-sort-by-order:before {
743 + content: "\e153";
744 +}
745 +.glyphicon-sort-by-order-alt:before {
746 + content: "\e154";
747 +}
748 +.glyphicon-sort-by-attributes:before {
749 + content: "\e155";
750 +}
751 +.glyphicon-sort-by-attributes-alt:before {
752 + content: "\e156";
753 +}
754 +.glyphicon-unchecked:before {
755 + content: "\e157";
756 +}
757 +.glyphicon-expand:before {
758 + content: "\e158";
759 +}
760 +.glyphicon-collapse-down:before {
761 + content: "\e159";
762 +}
763 +.glyphicon-collapse-up:before {
764 + content: "\e160";
765 +}
766 +.glyphicon-log-in:before {
767 + content: "\e161";
768 +}
769 +.glyphicon-flash:before {
770 + content: "\e162";
771 +}
772 +.glyphicon-log-out:before {
773 + content: "\e163";
774 +}
775 +.glyphicon-new-window:before {
776 + content: "\e164";
777 +}
778 +.glyphicon-record:before {
779 + content: "\e165";
780 +}
781 +.glyphicon-save:before {
782 + content: "\e166";
783 +}
784 +.glyphicon-open:before {
785 + content: "\e167";
786 +}
787 +.glyphicon-saved:before {
788 + content: "\e168";
789 +}
790 +.glyphicon-import:before {
791 + content: "\e169";
792 +}
793 +.glyphicon-export:before {
794 + content: "\e170";
795 +}
796 +.glyphicon-send:before {
797 + content: "\e171";
798 +}
799 +.glyphicon-floppy-disk:before {
800 + content: "\e172";
801 +}
802 +.glyphicon-floppy-saved:before {
803 + content: "\e173";
804 +}
805 +.glyphicon-floppy-remove:before {
806 + content: "\e174";
807 +}
808 +.glyphicon-floppy-save:before {
809 + content: "\e175";
810 +}
811 +.glyphicon-floppy-open:before {
812 + content: "\e176";
813 +}
814 +.glyphicon-credit-card:before {
815 + content: "\e177";
816 +}
817 +.glyphicon-transfer:before {
818 + content: "\e178";
819 +}
820 +.glyphicon-cutlery:before {
821 + content: "\e179";
822 +}
823 +.glyphicon-header:before {
824 + content: "\e180";
825 +}
826 +.glyphicon-compressed:before {
827 + content: "\e181";
828 +}
829 +.glyphicon-earphone:before {
830 + content: "\e182";
831 +}
832 +.glyphicon-phone-alt:before {
833 + content: "\e183";
834 +}
835 +.glyphicon-tower:before {
836 + content: "\e184";
837 +}
838 +.glyphicon-stats:before {
839 + content: "\e185";
840 +}
841 +.glyphicon-sd-video:before {
842 + content: "\e186";
843 +}
844 +.glyphicon-hd-video:before {
845 + content: "\e187";
846 +}
847 +.glyphicon-subtitles:before {
848 + content: "\e188";
849 +}
850 +.glyphicon-sound-stereo:before {
851 + content: "\e189";
852 +}
853 +.glyphicon-sound-dolby:before {
854 + content: "\e190";
855 +}
856 +.glyphicon-sound-5-1:before {
857 + content: "\e191";
858 +}
859 +.glyphicon-sound-6-1:before {
860 + content: "\e192";
861 +}
862 +.glyphicon-sound-7-1:before {
863 + content: "\e193";
864 +}
865 +.glyphicon-copyright-mark:before {
866 + content: "\e194";
867 +}
868 +.glyphicon-registration-mark:before {
869 + content: "\e195";
870 +}
871 +.glyphicon-cloud-download:before {
872 + content: "\e197";
873 +}
874 +.glyphicon-cloud-upload:before {
875 + content: "\e198";
876 +}
877 +.glyphicon-tree-conifer:before {
878 + content: "\e199";
879 +}
880 +.glyphicon-tree-deciduous:before {
881 + content: "\e200";
882 +}
883 +.glyphicon-cd:before {
884 + content: "\e201";
885 +}
886 +.glyphicon-save-file:before {
887 + content: "\e202";
888 +}
889 +.glyphicon-open-file:before {
890 + content: "\e203";
891 +}
892 +.glyphicon-level-up:before {
893 + content: "\e204";
894 +}
895 +.glyphicon-copy:before {
896 + content: "\e205";
897 +}
898 +.glyphicon-paste:before {
899 + content: "\e206";
900 +}
901 +.glyphicon-alert:before {
902 + content: "\e209";
903 +}
904 +.glyphicon-equalizer:before {
905 + content: "\e210";
906 +}
907 +.glyphicon-king:before {
908 + content: "\e211";
909 +}
910 +.glyphicon-queen:before {
911 + content: "\e212";
912 +}
913 +.glyphicon-pawn:before {
914 + content: "\e213";
915 +}
916 +.glyphicon-bishop:before {
917 + content: "\e214";
918 +}
919 +.glyphicon-knight:before {
920 + content: "\e215";
921 +}
922 +.glyphicon-baby-formula:before {
923 + content: "\e216";
924 +}
925 +.glyphicon-tent:before {
926 + content: "\26fa";
927 +}
928 +.glyphicon-blackboard:before {
929 + content: "\e218";
930 +}
931 +.glyphicon-bed:before {
932 + content: "\e219";
933 +}
934 +.glyphicon-apple:before {
935 + content: "\f8ff";
936 +}
937 +.glyphicon-erase:before {
938 + content: "\e221";
939 +}
940 +.glyphicon-hourglass:before {
941 + content: "\231b";
942 +}
943 +.glyphicon-lamp:before {
944 + content: "\e223";
945 +}
946 +.glyphicon-duplicate:before {
947 + content: "\e224";
948 +}
949 +.glyphicon-piggy-bank:before {
950 + content: "\e225";
951 +}
952 +.glyphicon-scissors:before {
953 + content: "\e226";
954 +}
955 +.glyphicon-bitcoin:before {
956 + content: "\e227";
957 +}
958 +.glyphicon-btc:before {
959 + content: "\e227";
960 +}
961 +.glyphicon-xbt:before {
962 + content: "\e227";
963 +}
964 +.glyphicon-yen:before {
965 + content: "\00a5";
966 +}
967 +.glyphicon-jpy:before {
968 + content: "\00a5";
969 +}
970 +.glyphicon-ruble:before {
971 + content: "\20bd";
972 +}
973 +.glyphicon-rub:before {
974 + content: "\20bd";
975 +}
976 +.glyphicon-scale:before {
977 + content: "\e230";
978 +}
979 +.glyphicon-ice-lolly:before {
980 + content: "\e231";
981 +}
982 +.glyphicon-ice-lolly-tasted:before {
983 + content: "\e232";
984 +}
985 +.glyphicon-education:before {
986 + content: "\e233";
987 +}
988 +.glyphicon-option-horizontal:before {
989 + content: "\e234";
990 +}
991 +.glyphicon-option-vertical:before {
992 + content: "\e235";
993 +}
994 +.glyphicon-menu-hamburger:before {
995 + content: "\e236";
996 +}
997 +.glyphicon-modal-window:before {
998 + content: "\e237";
999 +}
1000 +.glyphicon-oil:before {
1001 + content: "\e238";
1002 +}
1003 +.glyphicon-grain:before {
1004 + content: "\e239";
1005 +}
1006 +.glyphicon-sunglasses:before {
1007 + content: "\e240";
1008 +}
1009 +.glyphicon-text-size:before {
1010 + content: "\e241";
1011 +}
1012 +.glyphicon-text-color:before {
1013 + content: "\e242";
1014 +}
1015 +.glyphicon-text-background:before {
1016 + content: "\e243";
1017 +}
1018 +.glyphicon-object-align-top:before {
1019 + content: "\e244";
1020 +}
1021 +.glyphicon-object-align-bottom:before {
1022 + content: "\e245";
1023 +}
1024 +.glyphicon-object-align-horizontal:before {
1025 + content: "\e246";
1026 +}
1027 +.glyphicon-object-align-left:before {
1028 + content: "\e247";
1029 +}
1030 +.glyphicon-object-align-vertical:before {
1031 + content: "\e248";
1032 +}
1033 +.glyphicon-object-align-right:before {
1034 + content: "\e249";
1035 +}
1036 +.glyphicon-triangle-right:before {
1037 + content: "\e250";
1038 +}
1039 +.glyphicon-triangle-left:before {
1040 + content: "\e251";
1041 +}
1042 +.glyphicon-triangle-bottom:before {
1043 + content: "\e252";
1044 +}
1045 +.glyphicon-triangle-top:before {
1046 + content: "\e253";
1047 +}
1048 +.glyphicon-console:before {
1049 + content: "\e254";
1050 +}
1051 +.glyphicon-superscript:before {
1052 + content: "\e255";
1053 +}
1054 +.glyphicon-subscript:before {
1055 + content: "\e256";
1056 +}
1057 +.glyphicon-menu-left:before {
1058 + content: "\e257";
1059 +}
1060 +.glyphicon-menu-right:before {
1061 + content: "\e258";
1062 +}
1063 +.glyphicon-menu-down:before {
1064 + content: "\e259";
1065 +}
1066 +.glyphicon-menu-up:before {
1067 + content: "\e260";
1068 +}
1069 +* {
1070 + -webkit-box-sizing: border-box;
1071 + -moz-box-sizing: border-box;
1072 + box-sizing: border-box;
1073 +}
1074 +*:before,
1075 +*:after {
1076 + -webkit-box-sizing: border-box;
1077 + -moz-box-sizing: border-box;
1078 + box-sizing: border-box;
1079 +}
1080 +html {
1081 + font-size: 10px;
1082 + -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
1083 +}
1084 +body {
1085 + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1086 + font-size: 14px;
1087 + line-height: 1.42857143;
1088 + color: #333333;
1089 + background-color: #fff;
1090 +}
1091 +input,
1092 +button,
1093 +select,
1094 +textarea {
1095 + font-family: inherit;
1096 + font-size: inherit;
1097 + line-height: inherit;
1098 +}
1099 +a {
1100 + color: #337ab7;
1101 + text-decoration: none;
1102 +}
1103 +a:hover,
1104 +a:focus {
1105 + color: #23527c;
1106 + text-decoration: underline;
1107 +}
1108 +a:focus {
1109 + outline: 5px auto -webkit-focus-ring-color;
1110 + outline-offset: -2px;
1111 +}
1112 +figure {
1113 + margin: 0;
1114 +}
1115 +img {
1116 + vertical-align: middle;
1117 +}
1118 +.img-responsive,
1119 +.thumbnail > img,
1120 +.thumbnail a > img,
1121 +.carousel-inner > .item > img,
1122 +.carousel-inner > .item > a > img {
1123 + display: block;
1124 + max-width: 100%;
1125 + height: auto;
1126 +}
1127 +.img-rounded {
1128 + border-radius: 6px;
1129 +}
1130 +.img-thumbnail {
1131 + padding: 4px;
1132 + line-height: 1.42857143;
1133 + background-color: #fff;
1134 + border: 1px solid #ddd;
1135 + border-radius: 4px;
1136 + -webkit-transition: all 0.2s ease-in-out;
1137 + -o-transition: all 0.2s ease-in-out;
1138 + transition: all 0.2s ease-in-out;
1139 + display: inline-block;
1140 + max-width: 100%;
1141 + height: auto;
1142 +}
1143 +.img-circle {
1144 + border-radius: 50%;
1145 +}
1146 +hr {
1147 + margin-top: 20px;
1148 + margin-bottom: 20px;
1149 + border: 0;
1150 + border-top: 1px solid #eeeeee;
1151 +}
1152 +.sr-only {
1153 + position: absolute;
1154 + width: 1px;
1155 + height: 1px;
1156 + padding: 0;
1157 + margin: -1px;
1158 + overflow: hidden;
1159 + clip: rect(0, 0, 0, 0);
1160 + border: 0;
1161 +}
1162 +.sr-only-focusable:active,
1163 +.sr-only-focusable:focus {
1164 + position: static;
1165 + width: auto;
1166 + height: auto;
1167 + margin: 0;
1168 + overflow: visible;
1169 + clip: auto;
1170 +}
1171 +[role="button"] {
1172 + cursor: pointer;
1173 +}
1174 +h1,
1175 +h2,
1176 +h3,
1177 +h4,
1178 +h5,
1179 +h6,
1180 +.h1,
1181 +.h2,
1182 +.h3,
1183 +.h4,
1184 +.h5,
1185 +.h6 {
1186 + font-family: inherit;
1187 + font-weight: 500;
1188 + line-height: 1.1;
1189 + color: inherit;
1190 +}
1191 +h1 small,
1192 +h2 small,
1193 +h3 small,
1194 +h4 small,
1195 +h5 small,
1196 +h6 small,
1197 +.h1 small,
1198 +.h2 small,
1199 +.h3 small,
1200 +.h4 small,
1201 +.h5 small,
1202 +.h6 small,
1203 +h1 .small,
1204 +h2 .small,
1205 +h3 .small,
1206 +h4 .small,
1207 +h5 .small,
1208 +h6 .small,
1209 +.h1 .small,
1210 +.h2 .small,
1211 +.h3 .small,
1212 +.h4 .small,
1213 +.h5 .small,
1214 +.h6 .small {
1215 + font-weight: 400;
1216 + line-height: 1;
1217 + color: #777777;
1218 +}
1219 +h1,
1220 +.h1,
1221 +h2,
1222 +.h2,
1223 +h3,
1224 +.h3 {
1225 + margin-top: 20px;
1226 + margin-bottom: 10px;
1227 +}
1228 +h1 small,
1229 +.h1 small,
1230 +h2 small,
1231 +.h2 small,
1232 +h3 small,
1233 +.h3 small,
1234 +h1 .small,
1235 +.h1 .small,
1236 +h2 .small,
1237 +.h2 .small,
1238 +h3 .small,
1239 +.h3 .small {
1240 + font-size: 65%;
1241 +}
1242 +h4,
1243 +.h4,
1244 +h5,
1245 +.h5,
1246 +h6,
1247 +.h6 {
1248 + margin-top: 10px;
1249 + margin-bottom: 10px;
1250 +}
1251 +h4 small,
1252 +.h4 small,
1253 +h5 small,
1254 +.h5 small,
1255 +h6 small,
1256 +.h6 small,
1257 +h4 .small,
1258 +.h4 .small,
1259 +h5 .small,
1260 +.h5 .small,
1261 +h6 .small,
1262 +.h6 .small {
1263 + font-size: 75%;
1264 +}
1265 +h1,
1266 +.h1 {
1267 + font-size: 36px;
1268 +}
1269 +h2,
1270 +.h2 {
1271 + font-size: 30px;
1272 +}
1273 +h3,
1274 +.h3 {
1275 + font-size: 24px;
1276 +}
1277 +h4,
1278 +.h4 {
1279 + font-size: 18px;
1280 +}
1281 +h5,
1282 +.h5 {
1283 + font-size: 14px;
1284 +}
1285 +h6,
1286 +.h6 {
1287 + font-size: 12px;
1288 +}
1289 +p {
1290 + margin: 0 0 10px;
1291 +}
1292 +.lead {
1293 + margin-bottom: 20px;
1294 + font-size: 16px;
1295 + font-weight: 300;
1296 + line-height: 1.4;
1297 +}
1298 +@media (min-width: 768px) {
1299 + .lead {
1300 + font-size: 21px;
1301 + }
1302 +}
1303 +small,
1304 +.small {
1305 + font-size: 85%;
1306 +}
1307 +mark,
1308 +.mark {
1309 + padding: 0.2em;
1310 + background-color: #fcf8e3;
1311 +}
1312 +.text-left {
1313 + text-align: left;
1314 +}
1315 +.text-right {
1316 + text-align: right;
1317 +}
1318 +.text-center {
1319 + text-align: center;
1320 +}
1321 +.text-justify {
1322 + text-align: justify;
1323 +}
1324 +.text-nowrap {
1325 + white-space: nowrap;
1326 +}
1327 +.text-lowercase {
1328 + text-transform: lowercase;
1329 +}
1330 +.text-uppercase {
1331 + text-transform: uppercase;
1332 +}
1333 +.text-capitalize {
1334 + text-transform: capitalize;
1335 +}
1336 +.text-muted {
1337 + color: #777777;
1338 +}
1339 +.text-primary {
1340 + color: #337ab7;
1341 +}
1342 +a.text-primary:hover,
1343 +a.text-primary:focus {
1344 + color: #286090;
1345 +}
1346 +.text-success {
1347 + color: #3c763d;
1348 +}
1349 +a.text-success:hover,
1350 +a.text-success:focus {
1351 + color: #2b542c;
1352 +}
1353 +.text-info {
1354 + color: #31708f;
1355 +}
1356 +a.text-info:hover,
1357 +a.text-info:focus {
1358 + color: #245269;
1359 +}
1360 +.text-warning {
1361 + color: #8a6d3b;
1362 +}
1363 +a.text-warning:hover,
1364 +a.text-warning:focus {
1365 + color: #66512c;
1366 +}
1367 +.text-danger {
1368 + color: #a94442;
1369 +}
1370 +a.text-danger:hover,
1371 +a.text-danger:focus {
1372 + color: #843534;
1373 +}
1374 +.bg-primary {
1375 + color: #fff;
1376 + background-color: #337ab7;
1377 +}
1378 +a.bg-primary:hover,
1379 +a.bg-primary:focus {
1380 + background-color: #286090;
1381 +}
1382 +.bg-success {
1383 + background-color: #dff0d8;
1384 +}
1385 +a.bg-success:hover,
1386 +a.bg-success:focus {
1387 + background-color: #c1e2b3;
1388 +}
1389 +.bg-info {
1390 + background-color: #d9edf7;
1391 +}
1392 +a.bg-info:hover,
1393 +a.bg-info:focus {
1394 + background-color: #afd9ee;
1395 +}
1396 +.bg-warning {
1397 + background-color: #fcf8e3;
1398 +}
1399 +a.bg-warning:hover,
1400 +a.bg-warning:focus {
1401 + background-color: #f7ecb5;
1402 +}
1403 +.bg-danger {
1404 + background-color: #f2dede;
1405 +}
1406 +a.bg-danger:hover,
1407 +a.bg-danger:focus {
1408 + background-color: #e4b9b9;
1409 +}
1410 +.page-header {
1411 + padding-bottom: 9px;
1412 + margin: 40px 0 20px;
1413 + border-bottom: 1px solid #eeeeee;
1414 +}
1415 +ul,
1416 +ol {
1417 + margin-top: 0;
1418 + margin-bottom: 10px;
1419 +}
1420 +ul ul,
1421 +ol ul,
1422 +ul ol,
1423 +ol ol {
1424 + margin-bottom: 0;
1425 +}
1426 +.list-unstyled {
1427 + padding-left: 0;
1428 + list-style: none;
1429 +}
1430 +.list-inline {
1431 + padding-left: 0;
1432 + list-style: none;
1433 + margin-left: -5px;
1434 +}
1435 +.list-inline > li {
1436 + display: inline-block;
1437 + padding-right: 5px;
1438 + padding-left: 5px;
1439 +}
1440 +dl {
1441 + margin-top: 0;
1442 + margin-bottom: 20px;
1443 +}
1444 +dt,
1445 +dd {
1446 + line-height: 1.42857143;
1447 +}
1448 +dt {
1449 + font-weight: 700;
1450 +}
1451 +dd {
1452 + margin-left: 0;
1453 +}
1454 +@media (min-width: 768px) {
1455 + .dl-horizontal dt {
1456 + float: left;
1457 + width: 160px;
1458 + clear: left;
1459 + text-align: right;
1460 + overflow: hidden;
1461 + text-overflow: ellipsis;
1462 + white-space: nowrap;
1463 + }
1464 + .dl-horizontal dd {
1465 + margin-left: 180px;
1466 + }
1467 +}
1468 +abbr[title],
1469 +abbr[data-original-title] {
1470 + cursor: help;
1471 +}
1472 +.initialism {
1473 + font-size: 90%;
1474 + text-transform: uppercase;
1475 +}
1476 +blockquote {
1477 + padding: 10px 20px;
1478 + margin: 0 0 20px;
1479 + font-size: 17.5px;
1480 + border-left: 5px solid #eeeeee;
1481 +}
1482 +blockquote p:last-child,
1483 +blockquote ul:last-child,
1484 +blockquote ol:last-child {
1485 + margin-bottom: 0;
1486 +}
1487 +blockquote footer,
1488 +blockquote small,
1489 +blockquote .small {
1490 + display: block;
1491 + font-size: 80%;
1492 + line-height: 1.42857143;
1493 + color: #777777;
1494 +}
1495 +blockquote footer:before,
1496 +blockquote small:before,
1497 +blockquote .small:before {
1498 + content: "\2014 \00A0";
1499 +}
1500 +.blockquote-reverse,
1501 +blockquote.pull-right {
1502 + padding-right: 15px;
1503 + padding-left: 0;
1504 + text-align: right;
1505 + border-right: 5px solid #eeeeee;
1506 + border-left: 0;
1507 +}
1508 +.blockquote-reverse footer:before,
1509 +blockquote.pull-right footer:before,
1510 +.blockquote-reverse small:before,
1511 +blockquote.pull-right small:before,
1512 +.blockquote-reverse .small:before,
1513 +blockquote.pull-right .small:before {
1514 + content: "";
1515 +}
1516 +.blockquote-reverse footer:after,
1517 +blockquote.pull-right footer:after,
1518 +.blockquote-reverse small:after,
1519 +blockquote.pull-right small:after,
1520 +.blockquote-reverse .small:after,
1521 +blockquote.pull-right .small:after {
1522 + content: "\00A0 \2014";
1523 +}
1524 +address {
1525 + margin-bottom: 20px;
1526 + font-style: normal;
1527 + line-height: 1.42857143;
1528 +}
1529 +code,
1530 +kbd,
1531 +pre,
1532 +samp {
1533 + font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
1534 +}
1535 +code {
1536 + padding: 2px 4px;
1537 + font-size: 90%;
1538 + color: #c7254e;
1539 + background-color: #f9f2f4;
1540 + border-radius: 4px;
1541 +}
1542 +kbd {
1543 + padding: 2px 4px;
1544 + font-size: 90%;
1545 + color: #fff;
1546 + background-color: #333;
1547 + border-radius: 3px;
1548 + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1549 + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1550 +}
1551 +kbd kbd {
1552 + padding: 0;
1553 + font-size: 100%;
1554 + font-weight: 700;
1555 + -webkit-box-shadow: none;
1556 + box-shadow: none;
1557 +}
1558 +pre {
1559 + display: block;
1560 + padding: 9.5px;
1561 + margin: 0 0 10px;
1562 + font-size: 13px;
1563 + line-height: 1.42857143;
1564 + color: #333333;
1565 + word-break: break-all;
1566 + word-wrap: break-word;
1567 + background-color: #f5f5f5;
1568 + border: 1px solid #ccc;
1569 + border-radius: 4px;
1570 +}
1571 +pre code {
1572 + padding: 0;
1573 + font-size: inherit;
1574 + color: inherit;
1575 + white-space: pre-wrap;
1576 + background-color: transparent;
1577 + border-radius: 0;
1578 +}
1579 +.pre-scrollable {
1580 + max-height: 340px;
1581 + overflow-y: scroll;
1582 +}
1583 +.container {
1584 + padding-right: 15px;
1585 + padding-left: 15px;
1586 + margin-right: auto;
1587 + margin-left: auto;
1588 +}
1589 +@media (min-width: 768px) {
1590 + .container {
1591 + width: 750px;
1592 + }
1593 +}
1594 +@media (min-width: 992px) {
1595 + .container {
1596 + width: 970px;
1597 + }
1598 +}
1599 +@media (min-width: 1200px) {
1600 + .container {
1601 + width: 1170px;
1602 + }
1603 +}
1604 +.container-fluid {
1605 + padding-right: 15px;
1606 + padding-left: 15px;
1607 + margin-right: auto;
1608 + margin-left: auto;
1609 +}
1610 +.row {
1611 + margin-right: -15px;
1612 + margin-left: -15px;
1613 +}
1614 +.row-no-gutters {
1615 + margin-right: 0;
1616 + margin-left: 0;
1617 +}
1618 +.row-no-gutters [class*="col-"] {
1619 + padding-right: 0;
1620 + padding-left: 0;
1621 +}
1622 +.col-xs-1,
1623 +.col-sm-1,
1624 +.col-md-1,
1625 +.col-lg-1,
1626 +.col-xs-2,
1627 +.col-sm-2,
1628 +.col-md-2,
1629 +.col-lg-2,
1630 +.col-xs-3,
1631 +.col-sm-3,
1632 +.col-md-3,
1633 +.col-lg-3,
1634 +.col-xs-4,
1635 +.col-sm-4,
1636 +.col-md-4,
1637 +.col-lg-4,
1638 +.col-xs-5,
1639 +.col-sm-5,
1640 +.col-md-5,
1641 +.col-lg-5,
1642 +.col-xs-6,
1643 +.col-sm-6,
1644 +.col-md-6,
1645 +.col-lg-6,
1646 +.col-xs-7,
1647 +.col-sm-7,
1648 +.col-md-7,
1649 +.col-lg-7,
1650 +.col-xs-8,
1651 +.col-sm-8,
1652 +.col-md-8,
1653 +.col-lg-8,
1654 +.col-xs-9,
1655 +.col-sm-9,
1656 +.col-md-9,
1657 +.col-lg-9,
1658 +.col-xs-10,
1659 +.col-sm-10,
1660 +.col-md-10,
1661 +.col-lg-10,
1662 +.col-xs-11,
1663 +.col-sm-11,
1664 +.col-md-11,
1665 +.col-lg-11,
1666 +.col-xs-12,
1667 +.col-sm-12,
1668 +.col-md-12,
1669 +.col-lg-12 {
1670 + position: relative;
1671 + min-height: 1px;
1672 + padding-right: 15px;
1673 + padding-left: 15px;
1674 +}
1675 +.col-xs-1,
1676 +.col-xs-2,
1677 +.col-xs-3,
1678 +.col-xs-4,
1679 +.col-xs-5,
1680 +.col-xs-6,
1681 +.col-xs-7,
1682 +.col-xs-8,
1683 +.col-xs-9,
1684 +.col-xs-10,
1685 +.col-xs-11,
1686 +.col-xs-12 {
1687 + float: left;
1688 +}
1689 +.col-xs-12 {
1690 + width: 100%;
1691 +}
1692 +.col-xs-11 {
1693 + width: 91.66666667%;
1694 +}
1695 +.col-xs-10 {
1696 + width: 83.33333333%;
1697 +}
1698 +.col-xs-9 {
1699 + width: 75%;
1700 +}
1701 +.col-xs-8 {
1702 + width: 66.66666667%;
1703 +}
1704 +.col-xs-7 {
1705 + width: 58.33333333%;
1706 +}
1707 +.col-xs-6 {
1708 + width: 50%;
1709 +}
1710 +.col-xs-5 {
1711 + width: 41.66666667%;
1712 +}
1713 +.col-xs-4 {
1714 + width: 33.33333333%;
1715 +}
1716 +.col-xs-3 {
1717 + width: 25%;
1718 +}
1719 +.col-xs-2 {
1720 + width: 16.66666667%;
1721 +}
1722 +.col-xs-1 {
1723 + width: 8.33333333%;
1724 +}
1725 +.col-xs-pull-12 {
1726 + right: 100%;
1727 +}
1728 +.col-xs-pull-11 {
1729 + right: 91.66666667%;
1730 +}
1731 +.col-xs-pull-10 {
1732 + right: 83.33333333%;
1733 +}
1734 +.col-xs-pull-9 {
1735 + right: 75%;
1736 +}
1737 +.col-xs-pull-8 {
1738 + right: 66.66666667%;
1739 +}
1740 +.col-xs-pull-7 {
1741 + right: 58.33333333%;
1742 +}
1743 +.col-xs-pull-6 {
1744 + right: 50%;
1745 +}
1746 +.col-xs-pull-5 {
1747 + right: 41.66666667%;
1748 +}
1749 +.col-xs-pull-4 {
1750 + right: 33.33333333%;
1751 +}
1752 +.col-xs-pull-3 {
1753 + right: 25%;
1754 +}
1755 +.col-xs-pull-2 {
1756 + right: 16.66666667%;
1757 +}
1758 +.col-xs-pull-1 {
1759 + right: 8.33333333%;
1760 +}
1761 +.col-xs-pull-0 {
1762 + right: auto;
1763 +}
1764 +.col-xs-push-12 {
1765 + left: 100%;
1766 +}
1767 +.col-xs-push-11 {
1768 + left: 91.66666667%;
1769 +}
1770 +.col-xs-push-10 {
1771 + left: 83.33333333%;
1772 +}
1773 +.col-xs-push-9 {
1774 + left: 75%;
1775 +}
1776 +.col-xs-push-8 {
1777 + left: 66.66666667%;
1778 +}
1779 +.col-xs-push-7 {
1780 + left: 58.33333333%;
1781 +}
1782 +.col-xs-push-6 {
1783 + left: 50%;
1784 +}
1785 +.col-xs-push-5 {
1786 + left: 41.66666667%;
1787 +}
1788 +.col-xs-push-4 {
1789 + left: 33.33333333%;
1790 +}
1791 +.col-xs-push-3 {
1792 + left: 25%;
1793 +}
1794 +.col-xs-push-2 {
1795 + left: 16.66666667%;
1796 +}
1797 +.col-xs-push-1 {
1798 + left: 8.33333333%;
1799 +}
1800 +.col-xs-push-0 {
1801 + left: auto;
1802 +}
1803 +.col-xs-offset-12 {
1804 + margin-left: 100%;
1805 +}
1806 +.col-xs-offset-11 {
1807 + margin-left: 91.66666667%;
1808 +}
1809 +.col-xs-offset-10 {
1810 + margin-left: 83.33333333%;
1811 +}
1812 +.col-xs-offset-9 {
1813 + margin-left: 75%;
1814 +}
1815 +.col-xs-offset-8 {
1816 + margin-left: 66.66666667%;
1817 +}
1818 +.col-xs-offset-7 {
1819 + margin-left: 58.33333333%;
1820 +}
1821 +.col-xs-offset-6 {
1822 + margin-left: 50%;
1823 +}
1824 +.col-xs-offset-5 {
1825 + margin-left: 41.66666667%;
1826 +}
1827 +.col-xs-offset-4 {
1828 + margin-left: 33.33333333%;
1829 +}
1830 +.col-xs-offset-3 {
1831 + margin-left: 25%;
1832 +}
1833 +.col-xs-offset-2 {
1834 + margin-left: 16.66666667%;
1835 +}
1836 +.col-xs-offset-1 {
1837 + margin-left: 8.33333333%;
1838 +}
1839 +.col-xs-offset-0 {
1840 + margin-left: 0%;
1841 +}
1842 +@media (min-width: 768px) {
1843 + .col-sm-1,
1844 + .col-sm-2,
1845 + .col-sm-3,
1846 + .col-sm-4,
1847 + .col-sm-5,
1848 + .col-sm-6,
1849 + .col-sm-7,
1850 + .col-sm-8,
1851 + .col-sm-9,
1852 + .col-sm-10,
1853 + .col-sm-11,
1854 + .col-sm-12 {
1855 + float: left;
1856 + }
1857 + .col-sm-12 {
1858 + width: 100%;
1859 + }
1860 + .col-sm-11 {
1861 + width: 91.66666667%;
1862 + }
1863 + .col-sm-10 {
1864 + width: 83.33333333%;
1865 + }
1866 + .col-sm-9 {
1867 + width: 75%;
1868 + }
1869 + .col-sm-8 {
1870 + width: 66.66666667%;
1871 + }
1872 + .col-sm-7 {
1873 + width: 58.33333333%;
1874 + }
1875 + .col-sm-6 {
1876 + width: 50%;
1877 + }
1878 + .col-sm-5 {
1879 + width: 41.66666667%;
1880 + }
1881 + .col-sm-4 {
1882 + width: 33.33333333%;
1883 + }
1884 + .col-sm-3 {
1885 + width: 25%;
1886 + }
1887 + .col-sm-2 {
1888 + width: 16.66666667%;
1889 + }
1890 + .col-sm-1 {
1891 + width: 8.33333333%;
1892 + }
1893 + .col-sm-pull-12 {
1894 + right: 100%;
1895 + }
1896 + .col-sm-pull-11 {
1897 + right: 91.66666667%;
1898 + }
1899 + .col-sm-pull-10 {
1900 + right: 83.33333333%;
1901 + }
1902 + .col-sm-pull-9 {
1903 + right: 75%;
1904 + }
1905 + .col-sm-pull-8 {
1906 + right: 66.66666667%;
1907 + }
1908 + .col-sm-pull-7 {
1909 + right: 58.33333333%;
1910 + }
1911 + .col-sm-pull-6 {
1912 + right: 50%;
1913 + }
1914 + .col-sm-pull-5 {
1915 + right: 41.66666667%;
1916 + }
1917 + .col-sm-pull-4 {
1918 + right: 33.33333333%;
1919 + }
1920 + .col-sm-pull-3 {
1921 + right: 25%;
1922 + }
1923 + .col-sm-pull-2 {
1924 + right: 16.66666667%;
1925 + }
1926 + .col-sm-pull-1 {
1927 + right: 8.33333333%;
1928 + }
1929 + .col-sm-pull-0 {
1930 + right: auto;
1931 + }
1932 + .col-sm-push-12 {
1933 + left: 100%;
1934 + }
1935 + .col-sm-push-11 {
1936 + left: 91.66666667%;
1937 + }
1938 + .col-sm-push-10 {
1939 + left: 83.33333333%;
1940 + }
1941 + .col-sm-push-9 {
1942 + left: 75%;
1943 + }
1944 + .col-sm-push-8 {
1945 + left: 66.66666667%;
1946 + }
1947 + .col-sm-push-7 {
1948 + left: 58.33333333%;
1949 + }
1950 + .col-sm-push-6 {
1951 + left: 50%;
1952 + }
1953 + .col-sm-push-5 {
1954 + left: 41.66666667%;
1955 + }
1956 + .col-sm-push-4 {
1957 + left: 33.33333333%;
1958 + }
1959 + .col-sm-push-3 {
1960 + left: 25%;
1961 + }
1962 + .col-sm-push-2 {
1963 + left: 16.66666667%;
1964 + }
1965 + .col-sm-push-1 {
1966 + left: 8.33333333%;
1967 + }
1968 + .col-sm-push-0 {
1969 + left: auto;
1970 + }
1971 + .col-sm-offset-12 {
1972 + margin-left: 100%;
1973 + }
1974 + .col-sm-offset-11 {
1975 + margin-left: 91.66666667%;
1976 + }
1977 + .col-sm-offset-10 {
1978 + margin-left: 83.33333333%;
1979 + }
1980 + .col-sm-offset-9 {
1981 + margin-left: 75%;
1982 + }
1983 + .col-sm-offset-8 {
1984 + margin-left: 66.66666667%;
1985 + }
1986 + .col-sm-offset-7 {
1987 + margin-left: 58.33333333%;
1988 + }
1989 + .col-sm-offset-6 {
1990 + margin-left: 50%;
1991 + }
1992 + .col-sm-offset-5 {
1993 + margin-left: 41.66666667%;
1994 + }
1995 + .col-sm-offset-4 {
1996 + margin-left: 33.33333333%;
1997 + }
1998 + .col-sm-offset-3 {
1999 + margin-left: 25%;
2000 + }
2001 + .col-sm-offset-2 {
2002 + margin-left: 16.66666667%;
2003 + }
2004 + .col-sm-offset-1 {
2005 + margin-left: 8.33333333%;
2006 + }
2007 + .col-sm-offset-0 {
2008 + margin-left: 0%;
2009 + }
2010 +}
2011 +@media (min-width: 992px) {
2012 + .col-md-1,
2013 + .col-md-2,
2014 + .col-md-3,
2015 + .col-md-4,
2016 + .col-md-5,
2017 + .col-md-6,
2018 + .col-md-7,
2019 + .col-md-8,
2020 + .col-md-9,
2021 + .col-md-10,
2022 + .col-md-11,
2023 + .col-md-12 {
2024 + float: left;
2025 + }
2026 + .col-md-12 {
2027 + width: 100%;
2028 + }
2029 + .col-md-11 {
2030 + width: 91.66666667%;
2031 + }
2032 + .col-md-10 {
2033 + width: 83.33333333%;
2034 + }
2035 + .col-md-9 {
2036 + width: 75%;
2037 + }
2038 + .col-md-8 {
2039 + width: 66.66666667%;
2040 + }
2041 + .col-md-7 {
2042 + width: 58.33333333%;
2043 + }
2044 + .col-md-6 {
2045 + width: 50%;
2046 + }
2047 + .col-md-5 {
2048 + width: 41.66666667%;
2049 + }
2050 + .col-md-4 {
2051 + width: 33.33333333%;
2052 + }
2053 + .col-md-3 {
2054 + width: 25%;
2055 + }
2056 + .col-md-2 {
2057 + width: 16.66666667%;
2058 + }
2059 + .col-md-1 {
2060 + width: 8.33333333%;
2061 + }
2062 + .col-md-pull-12 {
2063 + right: 100%;
2064 + }
2065 + .col-md-pull-11 {
2066 + right: 91.66666667%;
2067 + }
2068 + .col-md-pull-10 {
2069 + right: 83.33333333%;
2070 + }
2071 + .col-md-pull-9 {
2072 + right: 75%;
2073 + }
2074 + .col-md-pull-8 {
2075 + right: 66.66666667%;
2076 + }
2077 + .col-md-pull-7 {
2078 + right: 58.33333333%;
2079 + }
2080 + .col-md-pull-6 {
2081 + right: 50%;
2082 + }
2083 + .col-md-pull-5 {
2084 + right: 41.66666667%;
2085 + }
2086 + .col-md-pull-4 {
2087 + right: 33.33333333%;
2088 + }
2089 + .col-md-pull-3 {
2090 + right: 25%;
2091 + }
2092 + .col-md-pull-2 {
2093 + right: 16.66666667%;
2094 + }
2095 + .col-md-pull-1 {
2096 + right: 8.33333333%;
2097 + }
2098 + .col-md-pull-0 {
2099 + right: auto;
2100 + }
2101 + .col-md-push-12 {
2102 + left: 100%;
2103 + }
2104 + .col-md-push-11 {
2105 + left: 91.66666667%;
2106 + }
2107 + .col-md-push-10 {
2108 + left: 83.33333333%;
2109 + }
2110 + .col-md-push-9 {
2111 + left: 75%;
2112 + }
2113 + .col-md-push-8 {
2114 + left: 66.66666667%;
2115 + }
2116 + .col-md-push-7 {
2117 + left: 58.33333333%;
2118 + }
2119 + .col-md-push-6 {
2120 + left: 50%;
2121 + }
2122 + .col-md-push-5 {
2123 + left: 41.66666667%;
2124 + }
2125 + .col-md-push-4 {
2126 + left: 33.33333333%;
2127 + }
2128 + .col-md-push-3 {
2129 + left: 25%;
2130 + }
2131 + .col-md-push-2 {
2132 + left: 16.66666667%;
2133 + }
2134 + .col-md-push-1 {
2135 + left: 8.33333333%;
2136 + }
2137 + .col-md-push-0 {
2138 + left: auto;
2139 + }
2140 + .col-md-offset-12 {
2141 + margin-left: 100%;
2142 + }
2143 + .col-md-offset-11 {
2144 + margin-left: 91.66666667%;
2145 + }
2146 + .col-md-offset-10 {
2147 + margin-left: 83.33333333%;
2148 + }
2149 + .col-md-offset-9 {
2150 + margin-left: 75%;
2151 + }
2152 + .col-md-offset-8 {
2153 + margin-left: 66.66666667%;
2154 + }
2155 + .col-md-offset-7 {
2156 + margin-left: 58.33333333%;
2157 + }
2158 + .col-md-offset-6 {
2159 + margin-left: 50%;
2160 + }
2161 + .col-md-offset-5 {
2162 + margin-left: 41.66666667%;
2163 + }
2164 + .col-md-offset-4 {
2165 + margin-left: 33.33333333%;
2166 + }
2167 + .col-md-offset-3 {
2168 + margin-left: 25%;
2169 + }
2170 + .col-md-offset-2 {
2171 + margin-left: 16.66666667%;
2172 + }
2173 + .col-md-offset-1 {
2174 + margin-left: 8.33333333%;
2175 + }
2176 + .col-md-offset-0 {
2177 + margin-left: 0%;
2178 + }
2179 +}
2180 +@media (min-width: 1200px) {
2181 + .col-lg-1,
2182 + .col-lg-2,
2183 + .col-lg-3,
2184 + .col-lg-4,
2185 + .col-lg-5,
2186 + .col-lg-6,
2187 + .col-lg-7,
2188 + .col-lg-8,
2189 + .col-lg-9,
2190 + .col-lg-10,
2191 + .col-lg-11,
2192 + .col-lg-12 {
2193 + float: left;
2194 + }
2195 + .col-lg-12 {
2196 + width: 100%;
2197 + }
2198 + .col-lg-11 {
2199 + width: 91.66666667%;
2200 + }
2201 + .col-lg-10 {
2202 + width: 83.33333333%;
2203 + }
2204 + .col-lg-9 {
2205 + width: 75%;
2206 + }
2207 + .col-lg-8 {
2208 + width: 66.66666667%;
2209 + }
2210 + .col-lg-7 {
2211 + width: 58.33333333%;
2212 + }
2213 + .col-lg-6 {
2214 + width: 50%;
2215 + }
2216 + .col-lg-5 {
2217 + width: 41.66666667%;
2218 + }
2219 + .col-lg-4 {
2220 + width: 33.33333333%;
2221 + }
2222 + .col-lg-3 {
2223 + width: 25%;
2224 + }
2225 + .col-lg-2 {
2226 + width: 16.66666667%;
2227 + }
2228 + .col-lg-1 {
2229 + width: 8.33333333%;
2230 + }
2231 + .col-lg-pull-12 {
2232 + right: 100%;
2233 + }
2234 + .col-lg-pull-11 {
2235 + right: 91.66666667%;
2236 + }
2237 + .col-lg-pull-10 {
2238 + right: 83.33333333%;
2239 + }
2240 + .col-lg-pull-9 {
2241 + right: 75%;
2242 + }
2243 + .col-lg-pull-8 {
2244 + right: 66.66666667%;
2245 + }
2246 + .col-lg-pull-7 {
2247 + right: 58.33333333%;
2248 + }
2249 + .col-lg-pull-6 {
2250 + right: 50%;
2251 + }
2252 + .col-lg-pull-5 {
2253 + right: 41.66666667%;
2254 + }
2255 + .col-lg-pull-4 {
2256 + right: 33.33333333%;
2257 + }
2258 + .col-lg-pull-3 {
2259 + right: 25%;
2260 + }
2261 + .col-lg-pull-2 {
2262 + right: 16.66666667%;
2263 + }
2264 + .col-lg-pull-1 {
2265 + right: 8.33333333%;
2266 + }
2267 + .col-lg-pull-0 {
2268 + right: auto;
2269 + }
2270 + .col-lg-push-12 {
2271 + left: 100%;
2272 + }
2273 + .col-lg-push-11 {
2274 + left: 91.66666667%;
2275 + }
2276 + .col-lg-push-10 {
2277 + left: 83.33333333%;
2278 + }
2279 + .col-lg-push-9 {
2280 + left: 75%;
2281 + }
2282 + .col-lg-push-8 {
2283 + left: 66.66666667%;
2284 + }
2285 + .col-lg-push-7 {
2286 + left: 58.33333333%;
2287 + }
2288 + .col-lg-push-6 {
2289 + left: 50%;
2290 + }
2291 + .col-lg-push-5 {
2292 + left: 41.66666667%;
2293 + }
2294 + .col-lg-push-4 {
2295 + left: 33.33333333%;
2296 + }
2297 + .col-lg-push-3 {
2298 + left: 25%;
2299 + }
2300 + .col-lg-push-2 {
2301 + left: 16.66666667%;
2302 + }
2303 + .col-lg-push-1 {
2304 + left: 8.33333333%;
2305 + }
2306 + .col-lg-push-0 {
2307 + left: auto;
2308 + }
2309 + .col-lg-offset-12 {
2310 + margin-left: 100%;
2311 + }
2312 + .col-lg-offset-11 {
2313 + margin-left: 91.66666667%;
2314 + }
2315 + .col-lg-offset-10 {
2316 + margin-left: 83.33333333%;
2317 + }
2318 + .col-lg-offset-9 {
2319 + margin-left: 75%;
2320 + }
2321 + .col-lg-offset-8 {
2322 + margin-left: 66.66666667%;
2323 + }
2324 + .col-lg-offset-7 {
2325 + margin-left: 58.33333333%;
2326 + }
2327 + .col-lg-offset-6 {
2328 + margin-left: 50%;
2329 + }
2330 + .col-lg-offset-5 {
2331 + margin-left: 41.66666667%;
2332 + }
2333 + .col-lg-offset-4 {
2334 + margin-left: 33.33333333%;
2335 + }
2336 + .col-lg-offset-3 {
2337 + margin-left: 25%;
2338 + }
2339 + .col-lg-offset-2 {
2340 + margin-left: 16.66666667%;
2341 + }
2342 + .col-lg-offset-1 {
2343 + margin-left: 8.33333333%;
2344 + }
2345 + .col-lg-offset-0 {
2346 + margin-left: 0%;
2347 + }
2348 +}
2349 +table {
2350 + background-color: transparent;
2351 +}
2352 +table col[class*="col-"] {
2353 + position: static;
2354 + display: table-column;
2355 + float: none;
2356 +}
2357 +table td[class*="col-"],
2358 +table th[class*="col-"] {
2359 + position: static;
2360 + display: table-cell;
2361 + float: none;
2362 +}
2363 +caption {
2364 + padding-top: 8px;
2365 + padding-bottom: 8px;
2366 + color: #777777;
2367 + text-align: left;
2368 +}
2369 +th {
2370 + text-align: left;
2371 +}
2372 +.table {
2373 + width: 100%;
2374 + max-width: 100%;
2375 + margin-bottom: 20px;
2376 +}
2377 +.table > thead > tr > th,
2378 +.table > tbody > tr > th,
2379 +.table > tfoot > tr > th,
2380 +.table > thead > tr > td,
2381 +.table > tbody > tr > td,
2382 +.table > tfoot > tr > td {
2383 + padding: 8px;
2384 + line-height: 1.42857143;
2385 + vertical-align: top;
2386 + border-top: 1px solid #ddd;
2387 +}
2388 +.table > thead > tr > th {
2389 + vertical-align: bottom;
2390 + border-bottom: 2px solid #ddd;
2391 +}
2392 +.table > caption + thead > tr:first-child > th,
2393 +.table > colgroup + thead > tr:first-child > th,
2394 +.table > thead:first-child > tr:first-child > th,
2395 +.table > caption + thead > tr:first-child > td,
2396 +.table > colgroup + thead > tr:first-child > td,
2397 +.table > thead:first-child > tr:first-child > td {
2398 + border-top: 0;
2399 +}
2400 +.table > tbody + tbody {
2401 + border-top: 2px solid #ddd;
2402 +}
2403 +.table .table {
2404 + background-color: #fff;
2405 +}
2406 +.table-condensed > thead > tr > th,
2407 +.table-condensed > tbody > tr > th,
2408 +.table-condensed > tfoot > tr > th,
2409 +.table-condensed > thead > tr > td,
2410 +.table-condensed > tbody > tr > td,
2411 +.table-condensed > tfoot > tr > td {
2412 + padding: 5px;
2413 +}
2414 +.table-bordered {
2415 + border: 1px solid #ddd;
2416 +}
2417 +.table-bordered > thead > tr > th,
2418 +.table-bordered > tbody > tr > th,
2419 +.table-bordered > tfoot > tr > th,
2420 +.table-bordered > thead > tr > td,
2421 +.table-bordered > tbody > tr > td,
2422 +.table-bordered > tfoot > tr > td {
2423 + border: 1px solid #ddd;
2424 +}
2425 +.table-bordered > thead > tr > th,
2426 +.table-bordered > thead > tr > td {
2427 + border-bottom-width: 2px;
2428 +}
2429 +.table-striped > tbody > tr:nth-of-type(odd) {
2430 + background-color: #f9f9f9;
2431 +}
2432 +.table-hover > tbody > tr:hover {
2433 + background-color: #f5f5f5;
2434 +}
2435 +.table > thead > tr > td.active,
2436 +.table > tbody > tr > td.active,
2437 +.table > tfoot > tr > td.active,
2438 +.table > thead > tr > th.active,
2439 +.table > tbody > tr > th.active,
2440 +.table > tfoot > tr > th.active,
2441 +.table > thead > tr.active > td,
2442 +.table > tbody > tr.active > td,
2443 +.table > tfoot > tr.active > td,
2444 +.table > thead > tr.active > th,
2445 +.table > tbody > tr.active > th,
2446 +.table > tfoot > tr.active > th {
2447 + background-color: #f5f5f5;
2448 +}
2449 +.table-hover > tbody > tr > td.active:hover,
2450 +.table-hover > tbody > tr > th.active:hover,
2451 +.table-hover > tbody > tr.active:hover > td,
2452 +.table-hover > tbody > tr:hover > .active,
2453 +.table-hover > tbody > tr.active:hover > th {
2454 + background-color: #e8e8e8;
2455 +}
2456 +.table > thead > tr > td.success,
2457 +.table > tbody > tr > td.success,
2458 +.table > tfoot > tr > td.success,
2459 +.table > thead > tr > th.success,
2460 +.table > tbody > tr > th.success,
2461 +.table > tfoot > tr > th.success,
2462 +.table > thead > tr.success > td,
2463 +.table > tbody > tr.success > td,
2464 +.table > tfoot > tr.success > td,
2465 +.table > thead > tr.success > th,
2466 +.table > tbody > tr.success > th,
2467 +.table > tfoot > tr.success > th {
2468 + background-color: #dff0d8;
2469 +}
2470 +.table-hover > tbody > tr > td.success:hover,
2471 +.table-hover > tbody > tr > th.success:hover,
2472 +.table-hover > tbody > tr.success:hover > td,
2473 +.table-hover > tbody > tr:hover > .success,
2474 +.table-hover > tbody > tr.success:hover > th {
2475 + background-color: #d0e9c6;
2476 +}
2477 +.table > thead > tr > td.info,
2478 +.table > tbody > tr > td.info,
2479 +.table > tfoot > tr > td.info,
2480 +.table > thead > tr > th.info,
2481 +.table > tbody > tr > th.info,
2482 +.table > tfoot > tr > th.info,
2483 +.table > thead > tr.info > td,
2484 +.table > tbody > tr.info > td,
2485 +.table > tfoot > tr.info > td,
2486 +.table > thead > tr.info > th,
2487 +.table > tbody > tr.info > th,
2488 +.table > tfoot > tr.info > th {
2489 + background-color: #d9edf7;
2490 +}
2491 +.table-hover > tbody > tr > td.info:hover,
2492 +.table-hover > tbody > tr > th.info:hover,
2493 +.table-hover > tbody > tr.info:hover > td,
2494 +.table-hover > tbody > tr:hover > .info,
2495 +.table-hover > tbody > tr.info:hover > th {
2496 + background-color: #c4e3f3;
2497 +}
2498 +.table > thead > tr > td.warning,
2499 +.table > tbody > tr > td.warning,
2500 +.table > tfoot > tr > td.warning,
2501 +.table > thead > tr > th.warning,
2502 +.table > tbody > tr > th.warning,
2503 +.table > tfoot > tr > th.warning,
2504 +.table > thead > tr.warning > td,
2505 +.table > tbody > tr.warning > td,
2506 +.table > tfoot > tr.warning > td,
2507 +.table > thead > tr.warning > th,
2508 +.table > tbody > tr.warning > th,
2509 +.table > tfoot > tr.warning > th {
2510 + background-color: #fcf8e3;
2511 +}
2512 +.table-hover > tbody > tr > td.warning:hover,
2513 +.table-hover > tbody > tr > th.warning:hover,
2514 +.table-hover > tbody > tr.warning:hover > td,
2515 +.table-hover > tbody > tr:hover > .warning,
2516 +.table-hover > tbody > tr.warning:hover > th {
2517 + background-color: #faf2cc;
2518 +}
2519 +.table > thead > tr > td.danger,
2520 +.table > tbody > tr > td.danger,
2521 +.table > tfoot > tr > td.danger,
2522 +.table > thead > tr > th.danger,
2523 +.table > tbody > tr > th.danger,
2524 +.table > tfoot > tr > th.danger,
2525 +.table > thead > tr.danger > td,
2526 +.table > tbody > tr.danger > td,
2527 +.table > tfoot > tr.danger > td,
2528 +.table > thead > tr.danger > th,
2529 +.table > tbody > tr.danger > th,
2530 +.table > tfoot > tr.danger > th {
2531 + background-color: #f2dede;
2532 +}
2533 +.table-hover > tbody > tr > td.danger:hover,
2534 +.table-hover > tbody > tr > th.danger:hover,
2535 +.table-hover > tbody > tr.danger:hover > td,
2536 +.table-hover > tbody > tr:hover > .danger,
2537 +.table-hover > tbody > tr.danger:hover > th {
2538 + background-color: #ebcccc;
2539 +}
2540 +.table-responsive {
2541 + min-height: 0.01%;
2542 + overflow-x: auto;
2543 +}
2544 +@media screen and (max-width: 767px) {
2545 + .table-responsive {
2546 + width: 100%;
2547 + margin-bottom: 15px;
2548 + overflow-y: hidden;
2549 + -ms-overflow-style: -ms-autohiding-scrollbar;
2550 + border: 1px solid #ddd;
2551 + }
2552 + .table-responsive > .table {
2553 + margin-bottom: 0;
2554 + }
2555 + .table-responsive > .table > thead > tr > th,
2556 + .table-responsive > .table > tbody > tr > th,
2557 + .table-responsive > .table > tfoot > tr > th,
2558 + .table-responsive > .table > thead > tr > td,
2559 + .table-responsive > .table > tbody > tr > td,
2560 + .table-responsive > .table > tfoot > tr > td {
2561 + white-space: nowrap;
2562 + }
2563 + .table-responsive > .table-bordered {
2564 + border: 0;
2565 + }
2566 + .table-responsive > .table-bordered > thead > tr > th:first-child,
2567 + .table-responsive > .table-bordered > tbody > tr > th:first-child,
2568 + .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2569 + .table-responsive > .table-bordered > thead > tr > td:first-child,
2570 + .table-responsive > .table-bordered > tbody > tr > td:first-child,
2571 + .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2572 + border-left: 0;
2573 + }
2574 + .table-responsive > .table-bordered > thead > tr > th:last-child,
2575 + .table-responsive > .table-bordered > tbody > tr > th:last-child,
2576 + .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2577 + .table-responsive > .table-bordered > thead > tr > td:last-child,
2578 + .table-responsive > .table-bordered > tbody > tr > td:last-child,
2579 + .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2580 + border-right: 0;
2581 + }
2582 + .table-responsive > .table-bordered > tbody > tr:last-child > th,
2583 + .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2584 + .table-responsive > .table-bordered > tbody > tr:last-child > td,
2585 + .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2586 + border-bottom: 0;
2587 + }
2588 +}
2589 +fieldset {
2590 + min-width: 0;
2591 + padding: 0;
2592 + margin: 0;
2593 + border: 0;
2594 +}
2595 +legend {
2596 + display: block;
2597 + width: 100%;
2598 + padding: 0;
2599 + margin-bottom: 20px;
2600 + font-size: 21px;
2601 + line-height: inherit;
2602 + color: #333333;
2603 + border: 0;
2604 + border-bottom: 1px solid #e5e5e5;
2605 +}
2606 +label {
2607 + display: inline-block;
2608 + max-width: 100%;
2609 + margin-bottom: 5px;
2610 + font-weight: 700;
2611 +}
2612 +input[type="search"] {
2613 + -webkit-box-sizing: border-box;
2614 + -moz-box-sizing: border-box;
2615 + box-sizing: border-box;
2616 + -webkit-appearance: none;
2617 + -moz-appearance: none;
2618 + appearance: none;
2619 +}
2620 +input[type="radio"],
2621 +input[type="checkbox"] {
2622 + margin: 4px 0 0;
2623 + margin-top: 1px \9;
2624 + line-height: normal;
2625 +}
2626 +input[type="radio"][disabled],
2627 +input[type="checkbox"][disabled],
2628 +input[type="radio"].disabled,
2629 +input[type="checkbox"].disabled,
2630 +fieldset[disabled] input[type="radio"],
2631 +fieldset[disabled] input[type="checkbox"] {
2632 + cursor: not-allowed;
2633 +}
2634 +input[type="file"] {
2635 + display: block;
2636 +}
2637 +input[type="range"] {
2638 + display: block;
2639 + width: 100%;
2640 +}
2641 +select[multiple],
2642 +select[size] {
2643 + height: auto;
2644 +}
2645 +input[type="file"]:focus,
2646 +input[type="radio"]:focus,
2647 +input[type="checkbox"]:focus {
2648 + outline: 5px auto -webkit-focus-ring-color;
2649 + outline-offset: -2px;
2650 +}
2651 +output {
2652 + display: block;
2653 + padding-top: 7px;
2654 + font-size: 14px;
2655 + line-height: 1.42857143;
2656 + color: #555555;
2657 +}
2658 +.form-control {
2659 + display: block;
2660 + width: 100%;
2661 + height: 34px;
2662 + padding: 6px 12px;
2663 + font-size: 14px;
2664 + line-height: 1.42857143;
2665 + color: #555555;
2666 + background-color: #fff;
2667 + background-image: none;
2668 + border: 1px solid #ccc;
2669 + border-radius: 4px;
2670 + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2671 + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2672 + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2673 + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2674 + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2675 + transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2676 + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2677 + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2678 +}
2679 +.form-control:focus {
2680 + border-color: #66afe9;
2681 + outline: 0;
2682 + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);
2683 + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);
2684 +}
2685 +.form-control::-moz-placeholder {
2686 + color: #999;
2687 + opacity: 1;
2688 +}
2689 +.form-control:-ms-input-placeholder {
2690 + color: #999;
2691 +}
2692 +.form-control::-webkit-input-placeholder {
2693 + color: #999;
2694 +}
2695 +.form-control::-ms-expand {
2696 + background-color: transparent;
2697 + border: 0;
2698 +}
2699 +.form-control[disabled],
2700 +.form-control[readonly],
2701 +fieldset[disabled] .form-control {
2702 + background-color: #eeeeee;
2703 + opacity: 1;
2704 +}
2705 +.form-control[disabled],
2706 +fieldset[disabled] .form-control {
2707 + cursor: not-allowed;
2708 +}
2709 +textarea.form-control {
2710 + height: auto;
2711 +}
2712 +@media screen and (-webkit-min-device-pixel-ratio: 0) {
2713 + input[type="date"].form-control,
2714 + input[type="time"].form-control,
2715 + input[type="datetime-local"].form-control,
2716 + input[type="month"].form-control {
2717 + line-height: 34px;
2718 + }
2719 + input[type="date"].input-sm,
2720 + input[type="time"].input-sm,
2721 + input[type="datetime-local"].input-sm,
2722 + input[type="month"].input-sm,
2723 + .input-group-sm input[type="date"],
2724 + .input-group-sm input[type="time"],
2725 + .input-group-sm input[type="datetime-local"],
2726 + .input-group-sm input[type="month"] {
2727 + line-height: 30px;
2728 + }
2729 + input[type="date"].input-lg,
2730 + input[type="time"].input-lg,
2731 + input[type="datetime-local"].input-lg,
2732 + input[type="month"].input-lg,
2733 + .input-group-lg input[type="date"],
2734 + .input-group-lg input[type="time"],
2735 + .input-group-lg input[type="datetime-local"],
2736 + .input-group-lg input[type="month"] {
2737 + line-height: 46px;
2738 + }
2739 +}
2740 +.form-group {
2741 + margin-bottom: 15px;
2742 +}
2743 +.radio,
2744 +.checkbox {
2745 + position: relative;
2746 + display: block;
2747 + margin-top: 10px;
2748 + margin-bottom: 10px;
2749 +}
2750 +.radio.disabled label,
2751 +.checkbox.disabled label,
2752 +fieldset[disabled] .radio label,
2753 +fieldset[disabled] .checkbox label {
2754 + cursor: not-allowed;
2755 +}
2756 +.radio label,
2757 +.checkbox label {
2758 + min-height: 20px;
2759 + padding-left: 20px;
2760 + margin-bottom: 0;
2761 + font-weight: 400;
2762 + cursor: pointer;
2763 +}
2764 +.radio input[type="radio"],
2765 +.radio-inline input[type="radio"],
2766 +.checkbox input[type="checkbox"],
2767 +.checkbox-inline input[type="checkbox"] {
2768 + position: absolute;
2769 + margin-top: 4px \9;
2770 + margin-left: -20px;
2771 +}
2772 +.radio + .radio,
2773 +.checkbox + .checkbox {
2774 + margin-top: -5px;
2775 +}
2776 +.radio-inline,
2777 +.checkbox-inline {
2778 + position: relative;
2779 + display: inline-block;
2780 + padding-left: 20px;
2781 + margin-bottom: 0;
2782 + font-weight: 400;
2783 + vertical-align: middle;
2784 + cursor: pointer;
2785 +}
2786 +.radio-inline.disabled,
2787 +.checkbox-inline.disabled,
2788 +fieldset[disabled] .radio-inline,
2789 +fieldset[disabled] .checkbox-inline {
2790 + cursor: not-allowed;
2791 +}
2792 +.radio-inline + .radio-inline,
2793 +.checkbox-inline + .checkbox-inline {
2794 + margin-top: 0;
2795 + margin-left: 10px;
2796 +}
2797 +.form-control-static {
2798 + min-height: 34px;
2799 + padding-top: 7px;
2800 + padding-bottom: 7px;
2801 + margin-bottom: 0;
2802 +}
2803 +.form-control-static.input-lg,
2804 +.form-control-static.input-sm {
2805 + padding-right: 0;
2806 + padding-left: 0;
2807 +}
2808 +.input-sm {
2809 + height: 30px;
2810 + padding: 5px 10px;
2811 + font-size: 12px;
2812 + line-height: 1.5;
2813 + border-radius: 3px;
2814 +}
2815 +select.input-sm {
2816 + height: 30px;
2817 + line-height: 30px;
2818 +}
2819 +textarea.input-sm,
2820 +select[multiple].input-sm {
2821 + height: auto;
2822 +}
2823 +.form-group-sm .form-control {
2824 + height: 30px;
2825 + padding: 5px 10px;
2826 + font-size: 12px;
2827 + line-height: 1.5;
2828 + border-radius: 3px;
2829 +}
2830 +.form-group-sm select.form-control {
2831 + height: 30px;
2832 + line-height: 30px;
2833 +}
2834 +.form-group-sm textarea.form-control,
2835 +.form-group-sm select[multiple].form-control {
2836 + height: auto;
2837 +}
2838 +.form-group-sm .form-control-static {
2839 + height: 30px;
2840 + min-height: 32px;
2841 + padding: 6px 10px;
2842 + font-size: 12px;
2843 + line-height: 1.5;
2844 +}
2845 +.input-lg {
2846 + height: 46px;
2847 + padding: 10px 16px;
2848 + font-size: 18px;
2849 + line-height: 1.3333333;
2850 + border-radius: 6px;
2851 +}
2852 +select.input-lg {
2853 + height: 46px;
2854 + line-height: 46px;
2855 +}
2856 +textarea.input-lg,
2857 +select[multiple].input-lg {
2858 + height: auto;
2859 +}
2860 +.form-group-lg .form-control {
2861 + height: 46px;
2862 + padding: 10px 16px;
2863 + font-size: 18px;
2864 + line-height: 1.3333333;
2865 + border-radius: 6px;
2866 +}
2867 +.form-group-lg select.form-control {
2868 + height: 46px;
2869 + line-height: 46px;
2870 +}
2871 +.form-group-lg textarea.form-control,
2872 +.form-group-lg select[multiple].form-control {
2873 + height: auto;
2874 +}
2875 +.form-group-lg .form-control-static {
2876 + height: 46px;
2877 + min-height: 38px;
2878 + padding: 11px 16px;
2879 + font-size: 18px;
2880 + line-height: 1.3333333;
2881 +}
2882 +.has-feedback {
2883 + position: relative;
2884 +}
2885 +.has-feedback .form-control {
2886 + padding-right: 42.5px;
2887 +}
2888 +.form-control-feedback {
2889 + position: absolute;
2890 + top: 0;
2891 + right: 0;
2892 + z-index: 2;
2893 + display: block;
2894 + width: 34px;
2895 + height: 34px;
2896 + line-height: 34px;
2897 + text-align: center;
2898 + pointer-events: none;
2899 +}
2900 +.input-lg + .form-control-feedback,
2901 +.input-group-lg + .form-control-feedback,
2902 +.form-group-lg .form-control + .form-control-feedback {
2903 + width: 46px;
2904 + height: 46px;
2905 + line-height: 46px;
2906 +}
2907 +.input-sm + .form-control-feedback,
2908 +.input-group-sm + .form-control-feedback,
2909 +.form-group-sm .form-control + .form-control-feedback {
2910 + width: 30px;
2911 + height: 30px;
2912 + line-height: 30px;
2913 +}
2914 +.has-success .help-block,
2915 +.has-success .control-label,
2916 +.has-success .radio,
2917 +.has-success .checkbox,
2918 +.has-success .radio-inline,
2919 +.has-success .checkbox-inline,
2920 +.has-success.radio label,
2921 +.has-success.checkbox label,
2922 +.has-success.radio-inline label,
2923 +.has-success.checkbox-inline label {
2924 + color: #3c763d;
2925 +}
2926 +.has-success .form-control {
2927 + border-color: #3c763d;
2928 + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2929 + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2930 +}
2931 +.has-success .form-control:focus {
2932 + border-color: #2b542c;
2933 + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2934 + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2935 +}
2936 +.has-success .input-group-addon {
2937 + color: #3c763d;
2938 + background-color: #dff0d8;
2939 + border-color: #3c763d;
2940 +}
2941 +.has-success .form-control-feedback {
2942 + color: #3c763d;
2943 +}
2944 +.has-warning .help-block,
2945 +.has-warning .control-label,
2946 +.has-warning .radio,
2947 +.has-warning .checkbox,
2948 +.has-warning .radio-inline,
2949 +.has-warning .checkbox-inline,
2950 +.has-warning.radio label,
2951 +.has-warning.checkbox label,
2952 +.has-warning.radio-inline label,
2953 +.has-warning.checkbox-inline label {
2954 + color: #8a6d3b;
2955 +}
2956 +.has-warning .form-control {
2957 + border-color: #8a6d3b;
2958 + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2959 + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2960 +}
2961 +.has-warning .form-control:focus {
2962 + border-color: #66512c;
2963 + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2964 + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2965 +}
2966 +.has-warning .input-group-addon {
2967 + color: #8a6d3b;
2968 + background-color: #fcf8e3;
2969 + border-color: #8a6d3b;
2970 +}
2971 +.has-warning .form-control-feedback {
2972 + color: #8a6d3b;
2973 +}
2974 +.has-error .help-block,
2975 +.has-error .control-label,
2976 +.has-error .radio,
2977 +.has-error .checkbox,
2978 +.has-error .radio-inline,
2979 +.has-error .checkbox-inline,
2980 +.has-error.radio label,
2981 +.has-error.checkbox label,
2982 +.has-error.radio-inline label,
2983 +.has-error.checkbox-inline label {
2984 + color: #a94442;
2985 +}
2986 +.has-error .form-control {
2987 + border-color: #a94442;
2988 + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2989 + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2990 +}
2991 +.has-error .form-control:focus {
2992 + border-color: #843534;
2993 + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2994 + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2995 +}
2996 +.has-error .input-group-addon {
2997 + color: #a94442;
2998 + background-color: #f2dede;
2999 + border-color: #a94442;
3000 +}
3001 +.has-error .form-control-feedback {
3002 + color: #a94442;
3003 +}
3004 +.has-feedback label ~ .form-control-feedback {
3005 + top: 25px;
3006 +}
3007 +.has-feedback label.sr-only ~ .form-control-feedback {
3008 + top: 0;
3009 +}
3010 +.help-block {
3011 + display: block;
3012 + margin-top: 5px;
3013 + margin-bottom: 10px;
3014 + color: #737373;
3015 +}
3016 +@media (min-width: 768px) {
3017 + .form-inline .form-group {
3018 + display: inline-block;
3019 + margin-bottom: 0;
3020 + vertical-align: middle;
3021 + }
3022 + .form-inline .form-control {
3023 + display: inline-block;
3024 + width: auto;
3025 + vertical-align: middle;
3026 + }
3027 + .form-inline .form-control-static {
3028 + display: inline-block;
3029 + }
3030 + .form-inline .input-group {
3031 + display: inline-table;
3032 + vertical-align: middle;
3033 + }
3034 + .form-inline .input-group .input-group-addon,
3035 + .form-inline .input-group .input-group-btn,
3036 + .form-inline .input-group .form-control {
3037 + width: auto;
3038 + }
3039 + .form-inline .input-group > .form-control {
3040 + width: 100%;
3041 + }
3042 + .form-inline .control-label {
3043 + margin-bottom: 0;
3044 + vertical-align: middle;
3045 + }
3046 + .form-inline .radio,
3047 + .form-inline .checkbox {
3048 + display: inline-block;
3049 + margin-top: 0;
3050 + margin-bottom: 0;
3051 + vertical-align: middle;
3052 + }
3053 + .form-inline .radio label,
3054 + .form-inline .checkbox label {
3055 + padding-left: 0;
3056 + }
3057 + .form-inline .radio input[type="radio"],
3058 + .form-inline .checkbox input[type="checkbox"] {
3059 + position: relative;
3060 + margin-left: 0;
3061 + }
3062 + .form-inline .has-feedback .form-control-feedback {
3063 + top: 0;
3064 + }
3065 +}
3066 +.form-horizontal .radio,
3067 +.form-horizontal .checkbox,
3068 +.form-horizontal .radio-inline,
3069 +.form-horizontal .checkbox-inline {
3070 + padding-top: 7px;
3071 + margin-top: 0;
3072 + margin-bottom: 0;
3073 +}
3074 +.form-horizontal .radio,
3075 +.form-horizontal .checkbox {
3076 + min-height: 27px;
3077 +}
3078 +.form-horizontal .form-group {
3079 + margin-right: -15px;
3080 + margin-left: -15px;
3081 +}
3082 +@media (min-width: 768px) {
3083 + .form-horizontal .control-label {
3084 + padding-top: 7px;
3085 + margin-bottom: 0;
3086 + text-align: right;
3087 + }
3088 +}
3089 +.form-horizontal .has-feedback .form-control-feedback {
3090 + right: 15px;
3091 +}
3092 +@media (min-width: 768px) {
3093 + .form-horizontal .form-group-lg .control-label {
3094 + padding-top: 11px;
3095 + font-size: 18px;
3096 + }
3097 +}
3098 +@media (min-width: 768px) {
3099 + .form-horizontal .form-group-sm .control-label {
3100 + padding-top: 6px;
3101 + font-size: 12px;
3102 + }
3103 +}
3104 +.btn {
3105 + display: inline-block;
3106 + margin-bottom: 0;
3107 + font-weight: normal;
3108 + text-align: center;
3109 + white-space: nowrap;
3110 + vertical-align: middle;
3111 + -ms-touch-action: manipulation;
3112 + touch-action: manipulation;
3113 + cursor: pointer;
3114 + background-image: none;
3115 + border: 1px solid transparent;
3116 + padding: 6px 12px;
3117 + font-size: 14px;
3118 + line-height: 1.42857143;
3119 + border-radius: 4px;
3120 + -webkit-user-select: none;
3121 + -moz-user-select: none;
3122 + -ms-user-select: none;
3123 + user-select: none;
3124 +}
3125 +.btn:focus,
3126 +.btn:active:focus,
3127 +.btn.active:focus,
3128 +.btn.focus,
3129 +.btn:active.focus,
3130 +.btn.active.focus {
3131 + outline: 5px auto -webkit-focus-ring-color;
3132 + outline-offset: -2px;
3133 +}
3134 +.btn:hover,
3135 +.btn:focus,
3136 +.btn.focus {
3137 + color: #333;
3138 + text-decoration: none;
3139 +}
3140 +.btn:active,
3141 +.btn.active {
3142 + background-image: none;
3143 + outline: 0;
3144 + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3145 + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3146 +}
3147 +.btn.disabled,
3148 +.btn[disabled],
3149 +fieldset[disabled] .btn {
3150 + cursor: not-allowed;
3151 + filter: alpha(opacity=65);
3152 + opacity: 0.65;
3153 + -webkit-box-shadow: none;
3154 + box-shadow: none;
3155 +}
3156 +a.btn.disabled,
3157 +fieldset[disabled] a.btn {
3158 + pointer-events: none;
3159 +}
3160 +.btn-default {
3161 + color: #333;
3162 + background-color: #fff;
3163 + border-color: #ccc;
3164 +}
3165 +.btn-default:focus,
3166 +.btn-default.focus {
3167 + color: #333;
3168 + background-color: #e6e6e6;
3169 + border-color: #8c8c8c;
3170 +}
3171 +.btn-default:hover {
3172 + color: #333;
3173 + background-color: #e6e6e6;
3174 + border-color: #adadad;
3175 +}
3176 +.btn-default:active,
3177 +.btn-default.active,
3178 +.open > .dropdown-toggle.btn-default {
3179 + color: #333;
3180 + background-color: #e6e6e6;
3181 + background-image: none;
3182 + border-color: #adadad;
3183 +}
3184 +.btn-default:active:hover,
3185 +.btn-default.active:hover,
3186 +.open > .dropdown-toggle.btn-default:hover,
3187 +.btn-default:active:focus,
3188 +.btn-default.active:focus,
3189 +.open > .dropdown-toggle.btn-default:focus,
3190 +.btn-default:active.focus,
3191 +.btn-default.active.focus,
3192 +.open > .dropdown-toggle.btn-default.focus {
3193 + color: #333;
3194 + background-color: #d4d4d4;
3195 + border-color: #8c8c8c;
3196 +}
3197 +.btn-default.disabled:hover,
3198 +.btn-default[disabled]:hover,
3199 +fieldset[disabled] .btn-default:hover,
3200 +.btn-default.disabled:focus,
3201 +.btn-default[disabled]:focus,
3202 +fieldset[disabled] .btn-default:focus,
3203 +.btn-default.disabled.focus,
3204 +.btn-default[disabled].focus,
3205 +fieldset[disabled] .btn-default.focus {
3206 + background-color: #fff;
3207 + border-color: #ccc;
3208 +}
3209 +.btn-default .badge {
3210 + color: #fff;
3211 + background-color: #333;
3212 +}
3213 +.btn-primary {
3214 + color: #fff;
3215 + background-color: #337ab7;
3216 + border-color: #2e6da4;
3217 +}
3218 +.btn-primary:focus,
3219 +.btn-primary.focus {
3220 + color: #fff;
3221 + background-color: #286090;
3222 + border-color: #122b40;
3223 +}
3224 +.btn-primary:hover {
3225 + color: #fff;
3226 + background-color: #286090;
3227 + border-color: #204d74;
3228 +}
3229 +.btn-primary:active,
3230 +.btn-primary.active,
3231 +.open > .dropdown-toggle.btn-primary {
3232 + color: #fff;
3233 + background-color: #286090;
3234 + background-image: none;
3235 + border-color: #204d74;
3236 +}
3237 +.btn-primary:active:hover,
3238 +.btn-primary.active:hover,
3239 +.open > .dropdown-toggle.btn-primary:hover,
3240 +.btn-primary:active:focus,
3241 +.btn-primary.active:focus,
3242 +.open > .dropdown-toggle.btn-primary:focus,
3243 +.btn-primary:active.focus,
3244 +.btn-primary.active.focus,
3245 +.open > .dropdown-toggle.btn-primary.focus {
3246 + color: #fff;
3247 + background-color: #204d74;
3248 + border-color: #122b40;
3249 +}
3250 +.btn-primary.disabled:hover,
3251 +.btn-primary[disabled]:hover,
3252 +fieldset[disabled] .btn-primary:hover,
3253 +.btn-primary.disabled:focus,
3254 +.btn-primary[disabled]:focus,
3255 +fieldset[disabled] .btn-primary:focus,
3256 +.btn-primary.disabled.focus,
3257 +.btn-primary[disabled].focus,
3258 +fieldset[disabled] .btn-primary.focus {
3259 + background-color: #337ab7;
3260 + border-color: #2e6da4;
3261 +}
3262 +.btn-primary .badge {
3263 + color: #337ab7;
3264 + background-color: #fff;
3265 +}
3266 +.btn-success {
3267 + color: #fff;
3268 + background-color: #5cb85c;
3269 + border-color: #4cae4c;
3270 +}
3271 +.btn-success:focus,
3272 +.btn-success.focus {
3273 + color: #fff;
3274 + background-color: #449d44;
3275 + border-color: #255625;
3276 +}
3277 +.btn-success:hover {
3278 + color: #fff;
3279 + background-color: #449d44;
3280 + border-color: #398439;
3281 +}
3282 +.btn-success:active,
3283 +.btn-success.active,
3284 +.open > .dropdown-toggle.btn-success {
3285 + color: #fff;
3286 + background-color: #449d44;
3287 + background-image: none;
3288 + border-color: #398439;
3289 +}
3290 +.btn-success:active:hover,
3291 +.btn-success.active:hover,
3292 +.open > .dropdown-toggle.btn-success:hover,
3293 +.btn-success:active:focus,
3294 +.btn-success.active:focus,
3295 +.open > .dropdown-toggle.btn-success:focus,
3296 +.btn-success:active.focus,
3297 +.btn-success.active.focus,
3298 +.open > .dropdown-toggle.btn-success.focus {
3299 + color: #fff;
3300 + background-color: #398439;
3301 + border-color: #255625;
3302 +}
3303 +.btn-success.disabled:hover,
3304 +.btn-success[disabled]:hover,
3305 +fieldset[disabled] .btn-success:hover,
3306 +.btn-success.disabled:focus,
3307 +.btn-success[disabled]:focus,
3308 +fieldset[disabled] .btn-success:focus,
3309 +.btn-success.disabled.focus,
3310 +.btn-success[disabled].focus,
3311 +fieldset[disabled] .btn-success.focus {
3312 + background-color: #5cb85c;
3313 + border-color: #4cae4c;
3314 +}
3315 +.btn-success .badge {
3316 + color: #5cb85c;
3317 + background-color: #fff;
3318 +}
3319 +.btn-info {
3320 + color: #fff;
3321 + background-color: #5bc0de;
3322 + border-color: #46b8da;
3323 +}
3324 +.btn-info:focus,
3325 +.btn-info.focus {
3326 + color: #fff;
3327 + background-color: #31b0d5;
3328 + border-color: #1b6d85;
3329 +}
3330 +.btn-info:hover {
3331 + color: #fff;
3332 + background-color: #31b0d5;
3333 + border-color: #269abc;
3334 +}
3335 +.btn-info:active,
3336 +.btn-info.active,
3337 +.open > .dropdown-toggle.btn-info {
3338 + color: #fff;
3339 + background-color: #31b0d5;
3340 + background-image: none;
3341 + border-color: #269abc;
3342 +}
3343 +.btn-info:active:hover,
3344 +.btn-info.active:hover,
3345 +.open > .dropdown-toggle.btn-info:hover,
3346 +.btn-info:active:focus,
3347 +.btn-info.active:focus,
3348 +.open > .dropdown-toggle.btn-info:focus,
3349 +.btn-info:active.focus,
3350 +.btn-info.active.focus,
3351 +.open > .dropdown-toggle.btn-info.focus {
3352 + color: #fff;
3353 + background-color: #269abc;
3354 + border-color: #1b6d85;
3355 +}
3356 +.btn-info.disabled:hover,
3357 +.btn-info[disabled]:hover,
3358 +fieldset[disabled] .btn-info:hover,
3359 +.btn-info.disabled:focus,
3360 +.btn-info[disabled]:focus,
3361 +fieldset[disabled] .btn-info:focus,
3362 +.btn-info.disabled.focus,
3363 +.btn-info[disabled].focus,
3364 +fieldset[disabled] .btn-info.focus {
3365 + background-color: #5bc0de;
3366 + border-color: #46b8da;
3367 +}
3368 +.btn-info .badge {
3369 + color: #5bc0de;
3370 + background-color: #fff;
3371 +}
3372 +.btn-warning {
3373 + color: #fff;
3374 + background-color: #f0ad4e;
3375 + border-color: #eea236;
3376 +}
3377 +.btn-warning:focus,
3378 +.btn-warning.focus {
3379 + color: #fff;
3380 + background-color: #ec971f;
3381 + border-color: #985f0d;
3382 +}
3383 +.btn-warning:hover {
3384 + color: #fff;
3385 + background-color: #ec971f;
3386 + border-color: #d58512;
3387 +}
3388 +.btn-warning:active,
3389 +.btn-warning.active,
3390 +.open > .dropdown-toggle.btn-warning {
3391 + color: #fff;
3392 + background-color: #ec971f;
3393 + background-image: none;
3394 + border-color: #d58512;
3395 +}
3396 +.btn-warning:active:hover,
3397 +.btn-warning.active:hover,
3398 +.open > .dropdown-toggle.btn-warning:hover,
3399 +.btn-warning:active:focus,
3400 +.btn-warning.active:focus,
3401 +.open > .dropdown-toggle.btn-warning:focus,
3402 +.btn-warning:active.focus,
3403 +.btn-warning.active.focus,
3404 +.open > .dropdown-toggle.btn-warning.focus {
3405 + color: #fff;
3406 + background-color: #d58512;
3407 + border-color: #985f0d;
3408 +}
3409 +.btn-warning.disabled:hover,
3410 +.btn-warning[disabled]:hover,
3411 +fieldset[disabled] .btn-warning:hover,
3412 +.btn-warning.disabled:focus,
3413 +.btn-warning[disabled]:focus,
3414 +fieldset[disabled] .btn-warning:focus,
3415 +.btn-warning.disabled.focus,
3416 +.btn-warning[disabled].focus,
3417 +fieldset[disabled] .btn-warning.focus {
3418 + background-color: #f0ad4e;
3419 + border-color: #eea236;
3420 +}
3421 +.btn-warning .badge {
3422 + color: #f0ad4e;
3423 + background-color: #fff;
3424 +}
3425 +.btn-danger {
3426 + color: #fff;
3427 + background-color: #d9534f;
3428 + border-color: #d43f3a;
3429 +}
3430 +.btn-danger:focus,
3431 +.btn-danger.focus {
3432 + color: #fff;
3433 + background-color: #c9302c;
3434 + border-color: #761c19;
3435 +}
3436 +.btn-danger:hover {
3437 + color: #fff;
3438 + background-color: #c9302c;
3439 + border-color: #ac2925;
3440 +}
3441 +.btn-danger:active,
3442 +.btn-danger.active,
3443 +.open > .dropdown-toggle.btn-danger {
3444 + color: #fff;
3445 + background-color: #c9302c;
3446 + background-image: none;
3447 + border-color: #ac2925;
3448 +}
3449 +.btn-danger:active:hover,
3450 +.btn-danger.active:hover,
3451 +.open > .dropdown-toggle.btn-danger:hover,
3452 +.btn-danger:active:focus,
3453 +.btn-danger.active:focus,
3454 +.open > .dropdown-toggle.btn-danger:focus,
3455 +.btn-danger:active.focus,
3456 +.btn-danger.active.focus,
3457 +.open > .dropdown-toggle.btn-danger.focus {
3458 + color: #fff;
3459 + background-color: #ac2925;
3460 + border-color: #761c19;
3461 +}
3462 +.btn-danger.disabled:hover,
3463 +.btn-danger[disabled]:hover,
3464 +fieldset[disabled] .btn-danger:hover,
3465 +.btn-danger.disabled:focus,
3466 +.btn-danger[disabled]:focus,
3467 +fieldset[disabled] .btn-danger:focus,
3468 +.btn-danger.disabled.focus,
3469 +.btn-danger[disabled].focus,
3470 +fieldset[disabled] .btn-danger.focus {
3471 + background-color: #d9534f;
3472 + border-color: #d43f3a;
3473 +}
3474 +.btn-danger .badge {
3475 + color: #d9534f;
3476 + background-color: #fff;
3477 +}
3478 +.btn-link {
3479 + font-weight: 400;
3480 + color: #337ab7;
3481 + border-radius: 0;
3482 +}
3483 +.btn-link,
3484 +.btn-link:active,
3485 +.btn-link.active,
3486 +.btn-link[disabled],
3487 +fieldset[disabled] .btn-link {
3488 + background-color: transparent;
3489 + -webkit-box-shadow: none;
3490 + box-shadow: none;
3491 +}
3492 +.btn-link,
3493 +.btn-link:hover,
3494 +.btn-link:focus,
3495 +.btn-link:active {
3496 + border-color: transparent;
3497 +}
3498 +.btn-link:hover,
3499 +.btn-link:focus {
3500 + color: #23527c;
3501 + text-decoration: underline;
3502 + background-color: transparent;
3503 +}
3504 +.btn-link[disabled]:hover,
3505 +fieldset[disabled] .btn-link:hover,
3506 +.btn-link[disabled]:focus,
3507 +fieldset[disabled] .btn-link:focus {
3508 + color: #777777;
3509 + text-decoration: none;
3510 +}
3511 +.btn-lg,
3512 +.btn-group-lg > .btn {
3513 + padding: 10px 16px;
3514 + font-size: 18px;
3515 + line-height: 1.3333333;
3516 + border-radius: 6px;
3517 +}
3518 +.btn-sm,
3519 +.btn-group-sm > .btn {
3520 + padding: 5px 10px;
3521 + font-size: 12px;
3522 + line-height: 1.5;
3523 + border-radius: 3px;
3524 +}
3525 +.btn-xs,
3526 +.btn-group-xs > .btn {
3527 + padding: 1px 5px;
3528 + font-size: 12px;
3529 + line-height: 1.5;
3530 + border-radius: 3px;
3531 +}
3532 +.btn-block {
3533 + display: block;
3534 + width: 100%;
3535 +}
3536 +.btn-block + .btn-block {
3537 + margin-top: 5px;
3538 +}
3539 +input[type="submit"].btn-block,
3540 +input[type="reset"].btn-block,
3541 +input[type="button"].btn-block {
3542 + width: 100%;
3543 +}
3544 +.fade {
3545 + opacity: 0;
3546 + -webkit-transition: opacity 0.15s linear;
3547 + -o-transition: opacity 0.15s linear;
3548 + transition: opacity 0.15s linear;
3549 +}
3550 +.fade.in {
3551 + opacity: 1;
3552 +}
3553 +.collapse {
3554 + display: none;
3555 +}
3556 +.collapse.in {
3557 + display: block;
3558 +}
3559 +tr.collapse.in {
3560 + display: table-row;
3561 +}
3562 +tbody.collapse.in {
3563 + display: table-row-group;
3564 +}
3565 +.collapsing {
3566 + position: relative;
3567 + height: 0;
3568 + overflow: hidden;
3569 + -webkit-transition-property: height, visibility;
3570 + -o-transition-property: height, visibility;
3571 + transition-property: height, visibility;
3572 + -webkit-transition-duration: 0.35s;
3573 + -o-transition-duration: 0.35s;
3574 + transition-duration: 0.35s;
3575 + -webkit-transition-timing-function: ease;
3576 + -o-transition-timing-function: ease;
3577 + transition-timing-function: ease;
3578 +}
3579 +.caret {
3580 + display: inline-block;
3581 + width: 0;
3582 + height: 0;
3583 + margin-left: 2px;
3584 + vertical-align: middle;
3585 + border-top: 4px dashed;
3586 + border-top: 4px solid \9;
3587 + border-right: 4px solid transparent;
3588 + border-left: 4px solid transparent;
3589 +}
3590 +.dropup,
3591 +.dropdown {
3592 + position: relative;
3593 +}
3594 +.dropdown-toggle:focus {
3595 + outline: 0;
3596 +}
3597 +.dropdown-menu {
3598 + position: absolute;
3599 + top: 100%;
3600 + left: 0;
3601 + z-index: 1000;
3602 + display: none;
3603 + float: left;
3604 + min-width: 160px;
3605 + padding: 5px 0;
3606 + margin: 2px 0 0;
3607 + font-size: 14px;
3608 + text-align: left;
3609 + list-style: none;
3610 + background-color: #fff;
3611 + background-clip: padding-box;
3612 + border: 1px solid #ccc;
3613 + border: 1px solid rgba(0, 0, 0, 0.15);
3614 + border-radius: 4px;
3615 + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3616 + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3617 +}
3618 +.dropdown-menu.pull-right {
3619 + right: 0;
3620 + left: auto;
3621 +}
3622 +.dropdown-menu .divider {
3623 + height: 1px;
3624 + margin: 9px 0;
3625 + overflow: hidden;
3626 + background-color: #e5e5e5;
3627 +}
3628 +.dropdown-menu > li > a {
3629 + display: block;
3630 + padding: 3px 20px;
3631 + clear: both;
3632 + font-weight: 400;
3633 + line-height: 1.42857143;
3634 + color: #333333;
3635 + white-space: nowrap;
3636 +}
3637 +.dropdown-menu > li > a:hover,
3638 +.dropdown-menu > li > a:focus {
3639 + color: #262626;
3640 + text-decoration: none;
3641 + background-color: #f5f5f5;
3642 +}
3643 +.dropdown-menu > .active > a,
3644 +.dropdown-menu > .active > a:hover,
3645 +.dropdown-menu > .active > a:focus {
3646 + color: #fff;
3647 + text-decoration: none;
3648 + background-color: #337ab7;
3649 + outline: 0;
3650 +}
3651 +.dropdown-menu > .disabled > a,
3652 +.dropdown-menu > .disabled > a:hover,
3653 +.dropdown-menu > .disabled > a:focus {
3654 + color: #777777;
3655 +}
3656 +.dropdown-menu > .disabled > a:hover,
3657 +.dropdown-menu > .disabled > a:focus {
3658 + text-decoration: none;
3659 + cursor: not-allowed;
3660 + background-color: transparent;
3661 + background-image: none;
3662 + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3663 +}
3664 +.open > .dropdown-menu {
3665 + display: block;
3666 +}
3667 +.open > a {
3668 + outline: 0;
3669 +}
3670 +.dropdown-menu-right {
3671 + right: 0;
3672 + left: auto;
3673 +}
3674 +.dropdown-menu-left {
3675 + right: auto;
3676 + left: 0;
3677 +}
3678 +.dropdown-header {
3679 + display: block;
3680 + padding: 3px 20px;
3681 + font-size: 12px;
3682 + line-height: 1.42857143;
3683 + color: #777777;
3684 + white-space: nowrap;
3685 +}
3686 +.dropdown-backdrop {
3687 + position: fixed;
3688 + top: 0;
3689 + right: 0;
3690 + bottom: 0;
3691 + left: 0;
3692 + z-index: 990;
3693 +}
3694 +.pull-right > .dropdown-menu {
3695 + right: 0;
3696 + left: auto;
3697 +}
3698 +.dropup .caret,
3699 +.navbar-fixed-bottom .dropdown .caret {
3700 + content: "";
3701 + border-top: 0;
3702 + border-bottom: 4px dashed;
3703 + border-bottom: 4px solid \9;
3704 +}
3705 +.dropup .dropdown-menu,
3706 +.navbar-fixed-bottom .dropdown .dropdown-menu {
3707 + top: auto;
3708 + bottom: 100%;
3709 + margin-bottom: 2px;
3710 +}
3711 +@media (min-width: 768px) {
3712 + .navbar-right .dropdown-menu {
3713 + right: 0;
3714 + left: auto;
3715 + }
3716 + .navbar-right .dropdown-menu-left {
3717 + right: auto;
3718 + left: 0;
3719 + }
3720 +}
3721 +.btn-group,
3722 +.btn-group-vertical {
3723 + position: relative;
3724 + display: inline-block;
3725 + vertical-align: middle;
3726 +}
3727 +.btn-group > .btn,
3728 +.btn-group-vertical > .btn {
3729 + position: relative;
3730 + float: left;
3731 +}
3732 +.btn-group > .btn:hover,
3733 +.btn-group-vertical > .btn:hover,
3734 +.btn-group > .btn:focus,
3735 +.btn-group-vertical > .btn:focus,
3736 +.btn-group > .btn:active,
3737 +.btn-group-vertical > .btn:active,
3738 +.btn-group > .btn.active,
3739 +.btn-group-vertical > .btn.active {
3740 + z-index: 2;
3741 +}
3742 +.btn-group .btn + .btn,
3743 +.btn-group .btn + .btn-group,
3744 +.btn-group .btn-group + .btn,
3745 +.btn-group .btn-group + .btn-group {
3746 + margin-left: -1px;
3747 +}
3748 +.btn-toolbar {
3749 + margin-left: -5px;
3750 +}
3751 +.btn-toolbar .btn,
3752 +.btn-toolbar .btn-group,
3753 +.btn-toolbar .input-group {
3754 + float: left;
3755 +}
3756 +.btn-toolbar > .btn,
3757 +.btn-toolbar > .btn-group,
3758 +.btn-toolbar > .input-group {
3759 + margin-left: 5px;
3760 +}
3761 +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3762 + border-radius: 0;
3763 +}
3764 +.btn-group > .btn:first-child {
3765 + margin-left: 0;
3766 +}
3767 +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3768 + border-top-right-radius: 0;
3769 + border-bottom-right-radius: 0;
3770 +}
3771 +.btn-group > .btn:last-child:not(:first-child),
3772 +.btn-group > .dropdown-toggle:not(:first-child) {
3773 + border-top-left-radius: 0;
3774 + border-bottom-left-radius: 0;
3775 +}
3776 +.btn-group > .btn-group {
3777 + float: left;
3778 +}
3779 +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3780 + border-radius: 0;
3781 +}
3782 +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
3783 +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3784 + border-top-right-radius: 0;
3785 + border-bottom-right-radius: 0;
3786 +}
3787 +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
3788 + border-top-left-radius: 0;
3789 + border-bottom-left-radius: 0;
3790 +}
3791 +.btn-group .dropdown-toggle:active,
3792 +.btn-group.open .dropdown-toggle {
3793 + outline: 0;
3794 +}
3795 +.btn-group > .btn + .dropdown-toggle {
3796 + padding-right: 8px;
3797 + padding-left: 8px;
3798 +}
3799 +.btn-group > .btn-lg + .dropdown-toggle {
3800 + padding-right: 12px;
3801 + padding-left: 12px;
3802 +}
3803 +.btn-group.open .dropdown-toggle {
3804 + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3805 + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3806 +}
3807 +.btn-group.open .dropdown-toggle.btn-link {
3808 + -webkit-box-shadow: none;
3809 + box-shadow: none;
3810 +}
3811 +.btn .caret {
3812 + margin-left: 0;
3813 +}
3814 +.btn-lg .caret {
3815 + border-width: 5px 5px 0;
3816 + border-bottom-width: 0;
3817 +}
3818 +.dropup .btn-lg .caret {
3819 + border-width: 0 5px 5px;
3820 +}
3821 +.btn-group-vertical > .btn,
3822 +.btn-group-vertical > .btn-group,
3823 +.btn-group-vertical > .btn-group > .btn {
3824 + display: block;
3825 + float: none;
3826 + width: 100%;
3827 + max-width: 100%;
3828 +}
3829 +.btn-group-vertical > .btn-group > .btn {
3830 + float: none;
3831 +}
3832 +.btn-group-vertical > .btn + .btn,
3833 +.btn-group-vertical > .btn + .btn-group,
3834 +.btn-group-vertical > .btn-group + .btn,
3835 +.btn-group-vertical > .btn-group + .btn-group {
3836 + margin-top: -1px;
3837 + margin-left: 0;
3838 +}
3839 +.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3840 + border-radius: 0;
3841 +}
3842 +.btn-group-vertical > .btn:first-child:not(:last-child) {
3843 + border-top-left-radius: 4px;
3844 + border-top-right-radius: 4px;
3845 + border-bottom-right-radius: 0;
3846 + border-bottom-left-radius: 0;
3847 +}
3848 +.btn-group-vertical > .btn:last-child:not(:first-child) {
3849 + border-top-left-radius: 0;
3850 + border-top-right-radius: 0;
3851 + border-bottom-right-radius: 4px;
3852 + border-bottom-left-radius: 4px;
3853 +}
3854 +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3855 + border-radius: 0;
3856 +}
3857 +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3858 +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3859 + border-bottom-right-radius: 0;
3860 + border-bottom-left-radius: 0;
3861 +}
3862 +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3863 + border-top-left-radius: 0;
3864 + border-top-right-radius: 0;
3865 +}
3866 +.btn-group-justified {
3867 + display: table;
3868 + width: 100%;
3869 + table-layout: fixed;
3870 + border-collapse: separate;
3871 +}
3872 +.btn-group-justified > .btn,
3873 +.btn-group-justified > .btn-group {
3874 + display: table-cell;
3875 + float: none;
3876 + width: 1%;
3877 +}
3878 +.btn-group-justified > .btn-group .btn {
3879 + width: 100%;
3880 +}
3881 +.btn-group-justified > .btn-group .dropdown-menu {
3882 + left: auto;
3883 +}
3884 +[data-toggle="buttons"] > .btn input[type="radio"],
3885 +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3886 +[data-toggle="buttons"] > .btn input[type="checkbox"],
3887 +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3888 + position: absolute;
3889 + clip: rect(0, 0, 0, 0);
3890 + pointer-events: none;
3891 +}
3892 +.input-group {
3893 + position: relative;
3894 + display: table;
3895 + border-collapse: separate;
3896 +}
3897 +.input-group[class*="col-"] {
3898 + float: none;
3899 + padding-right: 0;
3900 + padding-left: 0;
3901 +}
3902 +.input-group .form-control {
3903 + position: relative;
3904 + z-index: 2;
3905 + float: left;
3906 + width: 100%;
3907 + margin-bottom: 0;
3908 +}
3909 +.input-group .form-control:focus {
3910 + z-index: 3;
3911 +}
3912 +.input-group-lg > .form-control,
3913 +.input-group-lg > .input-group-addon,
3914 +.input-group-lg > .input-group-btn > .btn {
3915 + height: 46px;
3916 + padding: 10px 16px;
3917 + font-size: 18px;
3918 + line-height: 1.3333333;
3919 + border-radius: 6px;
3920 +}
3921 +select.input-group-lg > .form-control,
3922 +select.input-group-lg > .input-group-addon,
3923 +select.input-group-lg > .input-group-btn > .btn {
3924 + height: 46px;
3925 + line-height: 46px;
3926 +}
3927 +textarea.input-group-lg > .form-control,
3928 +textarea.input-group-lg > .input-group-addon,
3929 +textarea.input-group-lg > .input-group-btn > .btn,
3930 +select[multiple].input-group-lg > .form-control,
3931 +select[multiple].input-group-lg > .input-group-addon,
3932 +select[multiple].input-group-lg > .input-group-btn > .btn {
3933 + height: auto;
3934 +}
3935 +.input-group-sm > .form-control,
3936 +.input-group-sm > .input-group-addon,
3937 +.input-group-sm > .input-group-btn > .btn {
3938 + height: 30px;
3939 + padding: 5px 10px;
3940 + font-size: 12px;
3941 + line-height: 1.5;
3942 + border-radius: 3px;
3943 +}
3944 +select.input-group-sm > .form-control,
3945 +select.input-group-sm > .input-group-addon,
3946 +select.input-group-sm > .input-group-btn > .btn {
3947 + height: 30px;
3948 + line-height: 30px;
3949 +}
3950 +textarea.input-group-sm > .form-control,
3951 +textarea.input-group-sm > .input-group-addon,
3952 +textarea.input-group-sm > .input-group-btn > .btn,
3953 +select[multiple].input-group-sm > .form-control,
3954 +select[multiple].input-group-sm > .input-group-addon,
3955 +select[multiple].input-group-sm > .input-group-btn > .btn {
3956 + height: auto;
3957 +}
3958 +.input-group-addon,
3959 +.input-group-btn,
3960 +.input-group .form-control {
3961 + display: table-cell;
3962 +}
3963 +.input-group-addon:not(:first-child):not(:last-child),
3964 +.input-group-btn:not(:first-child):not(:last-child),
3965 +.input-group .form-control:not(:first-child):not(:last-child) {
3966 + border-radius: 0;
3967 +}
3968 +.input-group-addon,
3969 +.input-group-btn {
3970 + width: 1%;
3971 + white-space: nowrap;
3972 + vertical-align: middle;
3973 +}
3974 +.input-group-addon {
3975 + padding: 6px 12px;
3976 + font-size: 14px;
3977 + font-weight: 400;
3978 + line-height: 1;
3979 + color: #555555;
3980 + text-align: center;
3981 + background-color: #eeeeee;
3982 + border: 1px solid #ccc;
3983 + border-radius: 4px;
3984 +}
3985 +.input-group-addon.input-sm {
3986 + padding: 5px 10px;
3987 + font-size: 12px;
3988 + border-radius: 3px;
3989 +}
3990 +.input-group-addon.input-lg {
3991 + padding: 10px 16px;
3992 + font-size: 18px;
3993 + border-radius: 6px;
3994 +}
3995 +.input-group-addon input[type="radio"],
3996 +.input-group-addon input[type="checkbox"] {
3997 + margin-top: 0;
3998 +}
3999 +.input-group .form-control:first-child,
4000 +.input-group-addon:first-child,
4001 +.input-group-btn:first-child > .btn,
4002 +.input-group-btn:first-child > .btn-group > .btn,
4003 +.input-group-btn:first-child > .dropdown-toggle,
4004 +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
4005 +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
4006 + border-top-right-radius: 0;
4007 + border-bottom-right-radius: 0;
4008 +}
4009 +.input-group-addon:first-child {
4010 + border-right: 0;
4011 +}
4012 +.input-group .form-control:last-child,
4013 +.input-group-addon:last-child,
4014 +.input-group-btn:last-child > .btn,
4015 +.input-group-btn:last-child > .btn-group > .btn,
4016 +.input-group-btn:last-child > .dropdown-toggle,
4017 +.input-group-btn:first-child > .btn:not(:first-child),
4018 +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
4019 + border-top-left-radius: 0;
4020 + border-bottom-left-radius: 0;
4021 +}
4022 +.input-group-addon:last-child {
4023 + border-left: 0;
4024 +}
4025 +.input-group-btn {
4026 + position: relative;
4027 + font-size: 0;
4028 + white-space: nowrap;
4029 +}
4030 +.input-group-btn > .btn {
4031 + position: relative;
4032 +}
4033 +.input-group-btn > .btn + .btn {
4034 + margin-left: -1px;
4035 +}
4036 +.input-group-btn > .btn:hover,
4037 +.input-group-btn > .btn:focus,
4038 +.input-group-btn > .btn:active {
4039 + z-index: 2;
4040 +}
4041 +.input-group-btn:first-child > .btn,
4042 +.input-group-btn:first-child > .btn-group {
4043 + margin-right: -1px;
4044 +}
4045 +.input-group-btn:last-child > .btn,
4046 +.input-group-btn:last-child > .btn-group {
4047 + z-index: 2;
4048 + margin-left: -1px;
4049 +}
4050 +.nav {
4051 + padding-left: 0;
4052 + margin-bottom: 0;
4053 + list-style: none;
4054 +}
4055 +.nav > li {
4056 + position: relative;
4057 + display: block;
4058 +}
4059 +.nav > li > a {
4060 + position: relative;
4061 + display: block;
4062 + padding: 10px 15px;
4063 +}
4064 +.nav > li > a:hover,
4065 +.nav > li > a:focus {
4066 + text-decoration: none;
4067 + background-color: #eeeeee;
4068 +}
4069 +.nav > li.disabled > a {
4070 + color: #777777;
4071 +}
4072 +.nav > li.disabled > a:hover,
4073 +.nav > li.disabled > a:focus {
4074 + color: #777777;
4075 + text-decoration: none;
4076 + cursor: not-allowed;
4077 + background-color: transparent;
4078 +}
4079 +.nav .open > a,
4080 +.nav .open > a:hover,
4081 +.nav .open > a:focus {
4082 + background-color: #eeeeee;
4083 + border-color: #337ab7;
4084 +}
4085 +.nav .nav-divider {
4086 + height: 1px;
4087 + margin: 9px 0;
4088 + overflow: hidden;
4089 + background-color: #e5e5e5;
4090 +}
4091 +.nav > li > a > img {
4092 + max-width: none;
4093 +}
4094 +.nav-tabs {
4095 + border-bottom: 1px solid #ddd;
4096 +}
4097 +.nav-tabs > li {
4098 + float: left;
4099 + margin-bottom: -1px;
4100 +}
4101 +.nav-tabs > li > a {
4102 + margin-right: 2px;
4103 + line-height: 1.42857143;
4104 + border: 1px solid transparent;
4105 + border-radius: 4px 4px 0 0;
4106 +}
4107 +.nav-tabs > li > a:hover {
4108 + border-color: #eeeeee #eeeeee #ddd;
4109 +}
4110 +.nav-tabs > li.active > a,
4111 +.nav-tabs > li.active > a:hover,
4112 +.nav-tabs > li.active > a:focus {
4113 + color: #555555;
4114 + cursor: default;
4115 + background-color: #fff;
4116 + border: 1px solid #ddd;
4117 + border-bottom-color: transparent;
4118 +}
4119 +.nav-tabs.nav-justified {
4120 + width: 100%;
4121 + border-bottom: 0;
4122 +}
4123 +.nav-tabs.nav-justified > li {
4124 + float: none;
4125 +}
4126 +.nav-tabs.nav-justified > li > a {
4127 + margin-bottom: 5px;
4128 + text-align: center;
4129 +}
4130 +.nav-tabs.nav-justified > .dropdown .dropdown-menu {
4131 + top: auto;
4132 + left: auto;
4133 +}
4134 +@media (min-width: 768px) {
4135 + .nav-tabs.nav-justified > li {
4136 + display: table-cell;
4137 + width: 1%;
4138 + }
4139 + .nav-tabs.nav-justified > li > a {
4140 + margin-bottom: 0;
4141 + }
4142 +}
4143 +.nav-tabs.nav-justified > li > a {
4144 + margin-right: 0;
4145 + border-radius: 4px;
4146 +}
4147 +.nav-tabs.nav-justified > .active > a,
4148 +.nav-tabs.nav-justified > .active > a:hover,
4149 +.nav-tabs.nav-justified > .active > a:focus {
4150 + border: 1px solid #ddd;
4151 +}
4152 +@media (min-width: 768px) {
4153 + .nav-tabs.nav-justified > li > a {
4154 + border-bottom: 1px solid #ddd;
4155 + border-radius: 4px 4px 0 0;
4156 + }
4157 + .nav-tabs.nav-justified > .active > a,
4158 + .nav-tabs.nav-justified > .active > a:hover,
4159 + .nav-tabs.nav-justified > .active > a:focus {
4160 + border-bottom-color: #fff;
4161 + }
4162 +}
4163 +.nav-pills > li {
4164 + float: left;
4165 +}
4166 +.nav-pills > li > a {
4167 + border-radius: 4px;
4168 +}
4169 +.nav-pills > li + li {
4170 + margin-left: 2px;
4171 +}
4172 +.nav-pills > li.active > a,
4173 +.nav-pills > li.active > a:hover,
4174 +.nav-pills > li.active > a:focus {
4175 + color: #fff;
4176 + background-color: #337ab7;
4177 +}
4178 +.nav-stacked > li {
4179 + float: none;
4180 +}
4181 +.nav-stacked > li + li {
4182 + margin-top: 2px;
4183 + margin-left: 0;
4184 +}
4185 +.nav-justified {
4186 + width: 100%;
4187 +}
4188 +.nav-justified > li {
4189 + float: none;
4190 +}
4191 +.nav-justified > li > a {
4192 + margin-bottom: 5px;
4193 + text-align: center;
4194 +}
4195 +.nav-justified > .dropdown .dropdown-menu {
4196 + top: auto;
4197 + left: auto;
4198 +}
4199 +@media (min-width: 768px) {
4200 + .nav-justified > li {
4201 + display: table-cell;
4202 + width: 1%;
4203 + }
4204 + .nav-justified > li > a {
4205 + margin-bottom: 0;
4206 + }
4207 +}
4208 +.nav-tabs-justified {
4209 + border-bottom: 0;
4210 +}
4211 +.nav-tabs-justified > li > a {
4212 + margin-right: 0;
4213 + border-radius: 4px;
4214 +}
4215 +.nav-tabs-justified > .active > a,
4216 +.nav-tabs-justified > .active > a:hover,
4217 +.nav-tabs-justified > .active > a:focus {
4218 + border: 1px solid #ddd;
4219 +}
4220 +@media (min-width: 768px) {
4221 + .nav-tabs-justified > li > a {
4222 + border-bottom: 1px solid #ddd;
4223 + border-radius: 4px 4px 0 0;
4224 + }
4225 + .nav-tabs-justified > .active > a,
4226 + .nav-tabs-justified > .active > a:hover,
4227 + .nav-tabs-justified > .active > a:focus {
4228 + border-bottom-color: #fff;
4229 + }
4230 +}
4231 +.tab-content > .tab-pane {
4232 + display: none;
4233 +}
4234 +.tab-content > .active {
4235 + display: block;
4236 +}
4237 +.nav-tabs .dropdown-menu {
4238 + margin-top: -1px;
4239 + border-top-left-radius: 0;
4240 + border-top-right-radius: 0;
4241 +}
4242 +.navbar {
4243 + position: relative;
4244 + min-height: 50px;
4245 + margin-bottom: 20px;
4246 + border: 1px solid transparent;
4247 +}
4248 +@media (min-width: 768px) {
4249 + .navbar {
4250 + border-radius: 4px;
4251 + }
4252 +}
4253 +@media (min-width: 768px) {
4254 + .navbar-header {
4255 + float: left;
4256 + }
4257 +}
4258 +.navbar-collapse {
4259 + padding-right: 15px;
4260 + padding-left: 15px;
4261 + overflow-x: visible;
4262 + border-top: 1px solid transparent;
4263 + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
4264 + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
4265 + -webkit-overflow-scrolling: touch;
4266 +}
4267 +.navbar-collapse.in {
4268 + overflow-y: auto;
4269 +}
4270 +@media (min-width: 768px) {
4271 + .navbar-collapse {
4272 + width: auto;
4273 + border-top: 0;
4274 + -webkit-box-shadow: none;
4275 + box-shadow: none;
4276 + }
4277 + .navbar-collapse.collapse {
4278 + display: block !important;
4279 + height: auto !important;
4280 + padding-bottom: 0;
4281 + overflow: visible !important;
4282 + }
4283 + .navbar-collapse.in {
4284 + overflow-y: visible;
4285 + }
4286 + .navbar-fixed-top .navbar-collapse,
4287 + .navbar-static-top .navbar-collapse,
4288 + .navbar-fixed-bottom .navbar-collapse {
4289 + padding-right: 0;
4290 + padding-left: 0;
4291 + }
4292 +}
4293 +.navbar-fixed-top,
4294 +.navbar-fixed-bottom {
4295 + position: fixed;
4296 + right: 0;
4297 + left: 0;
4298 + z-index: 1030;
4299 +}
4300 +.navbar-fixed-top .navbar-collapse,
4301 +.navbar-fixed-bottom .navbar-collapse {
4302 + max-height: 340px;
4303 +}
4304 +@media (max-device-width: 480px) and (orientation: landscape) {
4305 + .navbar-fixed-top .navbar-collapse,
4306 + .navbar-fixed-bottom .navbar-collapse {
4307 + max-height: 200px;
4308 + }
4309 +}
4310 +@media (min-width: 768px) {
4311 + .navbar-fixed-top,
4312 + .navbar-fixed-bottom {
4313 + border-radius: 0;
4314 + }
4315 +}
4316 +.navbar-fixed-top {
4317 + top: 0;
4318 + border-width: 0 0 1px;
4319 +}
4320 +.navbar-fixed-bottom {
4321 + bottom: 0;
4322 + margin-bottom: 0;
4323 + border-width: 1px 0 0;
4324 +}
4325 +.container > .navbar-header,
4326 +.container-fluid > .navbar-header,
4327 +.container > .navbar-collapse,
4328 +.container-fluid > .navbar-collapse {
4329 + margin-right: -15px;
4330 + margin-left: -15px;
4331 +}
4332 +@media (min-width: 768px) {
4333 + .container > .navbar-header,
4334 + .container-fluid > .navbar-header,
4335 + .container > .navbar-collapse,
4336 + .container-fluid > .navbar-collapse {
4337 + margin-right: 0;
4338 + margin-left: 0;
4339 + }
4340 +}
4341 +.navbar-static-top {
4342 + z-index: 1000;
4343 + border-width: 0 0 1px;
4344 +}
4345 +@media (min-width: 768px) {
4346 + .navbar-static-top {
4347 + border-radius: 0;
4348 + }
4349 +}
4350 +.navbar-brand {
4351 + float: left;
4352 + height: 50px;
4353 + padding: 15px 15px;
4354 + font-size: 18px;
4355 + line-height: 20px;
4356 +}
4357 +.navbar-brand:hover,
4358 +.navbar-brand:focus {
4359 + text-decoration: none;
4360 +}
4361 +.navbar-brand > img {
4362 + display: block;
4363 +}
4364 +@media (min-width: 768px) {
4365 + .navbar > .container .navbar-brand,
4366 + .navbar > .container-fluid .navbar-brand {
4367 + margin-left: -15px;
4368 + }
4369 +}
4370 +.navbar-toggle {
4371 + position: relative;
4372 + float: right;
4373 + padding: 9px 10px;
4374 + margin-right: 15px;
4375 + margin-top: 8px;
4376 + margin-bottom: 8px;
4377 + background-color: transparent;
4378 + background-image: none;
4379 + border: 1px solid transparent;
4380 + border-radius: 4px;
4381 +}
4382 +.navbar-toggle:focus {
4383 + outline: 0;
4384 +}
4385 +.navbar-toggle .icon-bar {
4386 + display: block;
4387 + width: 22px;
4388 + height: 2px;
4389 + border-radius: 1px;
4390 +}
4391 +.navbar-toggle .icon-bar + .icon-bar {
4392 + margin-top: 4px;
4393 +}
4394 +@media (min-width: 768px) {
4395 + .navbar-toggle {
4396 + display: none;
4397 + }
4398 +}
4399 +.navbar-nav {
4400 + margin: 7.5px -15px;
4401 +}
4402 +.navbar-nav > li > a {
4403 + padding-top: 10px;
4404 + padding-bottom: 10px;
4405 + line-height: 20px;
4406 +}
4407 +@media (max-width: 767px) {
4408 + .navbar-nav .open .dropdown-menu {
4409 + position: static;
4410 + float: none;
4411 + width: auto;
4412 + margin-top: 0;
4413 + background-color: transparent;
4414 + border: 0;
4415 + -webkit-box-shadow: none;
4416 + box-shadow: none;
4417 + }
4418 + .navbar-nav .open .dropdown-menu > li > a,
4419 + .navbar-nav .open .dropdown-menu .dropdown-header {
4420 + padding: 5px 15px 5px 25px;
4421 + }
4422 + .navbar-nav .open .dropdown-menu > li > a {
4423 + line-height: 20px;
4424 + }
4425 + .navbar-nav .open .dropdown-menu > li > a:hover,
4426 + .navbar-nav .open .dropdown-menu > li > a:focus {
4427 + background-image: none;
4428 + }
4429 +}
4430 +@media (min-width: 768px) {
4431 + .navbar-nav {
4432 + float: left;
4433 + margin: 0;
4434 + }
4435 + .navbar-nav > li {
4436 + float: left;
4437 + }
4438 + .navbar-nav > li > a {
4439 + padding-top: 15px;
4440 + padding-bottom: 15px;
4441 + }
4442 +}
4443 +.navbar-form {
4444 + padding: 10px 15px;
4445 + margin-right: -15px;
4446 + margin-left: -15px;
4447 + border-top: 1px solid transparent;
4448 + border-bottom: 1px solid transparent;
4449 + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4450 + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4451 + margin-top: 8px;
4452 + margin-bottom: 8px;
4453 +}
4454 +@media (min-width: 768px) {
4455 + .navbar-form .form-group {
4456 + display: inline-block;
4457 + margin-bottom: 0;
4458 + vertical-align: middle;
4459 + }
4460 + .navbar-form .form-control {
4461 + display: inline-block;
4462 + width: auto;
4463 + vertical-align: middle;
4464 + }
4465 + .navbar-form .form-control-static {
4466 + display: inline-block;
4467 + }
4468 + .navbar-form .input-group {
4469 + display: inline-table;
4470 + vertical-align: middle;
4471 + }
4472 + .navbar-form .input-group .input-group-addon,
4473 + .navbar-form .input-group .input-group-btn,
4474 + .navbar-form .input-group .form-control {
4475 + width: auto;
4476 + }
4477 + .navbar-form .input-group > .form-control {
4478 + width: 100%;
4479 + }
4480 + .navbar-form .control-label {
4481 + margin-bottom: 0;
4482 + vertical-align: middle;
4483 + }
4484 + .navbar-form .radio,
4485 + .navbar-form .checkbox {
4486 + display: inline-block;
4487 + margin-top: 0;
4488 + margin-bottom: 0;
4489 + vertical-align: middle;
4490 + }
4491 + .navbar-form .radio label,
4492 + .navbar-form .checkbox label {
4493 + padding-left: 0;
4494 + }
4495 + .navbar-form .radio input[type="radio"],
4496 + .navbar-form .checkbox input[type="checkbox"] {
4497 + position: relative;
4498 + margin-left: 0;
4499 + }
4500 + .navbar-form .has-feedback .form-control-feedback {
4501 + top: 0;
4502 + }
4503 +}
4504 +@media (max-width: 767px) {
4505 + .navbar-form .form-group {
4506 + margin-bottom: 5px;
4507 + }
4508 + .navbar-form .form-group:last-child {
4509 + margin-bottom: 0;
4510 + }
4511 +}
4512 +@media (min-width: 768px) {
4513 + .navbar-form {
4514 + width: auto;
4515 + padding-top: 0;
4516 + padding-bottom: 0;
4517 + margin-right: 0;
4518 + margin-left: 0;
4519 + border: 0;
4520 + -webkit-box-shadow: none;
4521 + box-shadow: none;
4522 + }
4523 +}
4524 +.navbar-nav > li > .dropdown-menu {
4525 + margin-top: 0;
4526 + border-top-left-radius: 0;
4527 + border-top-right-radius: 0;
4528 +}
4529 +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4530 + margin-bottom: 0;
4531 + border-top-left-radius: 4px;
4532 + border-top-right-radius: 4px;
4533 + border-bottom-right-radius: 0;
4534 + border-bottom-left-radius: 0;
4535 +}
4536 +.navbar-btn {
4537 + margin-top: 8px;
4538 + margin-bottom: 8px;
4539 +}
4540 +.navbar-btn.btn-sm {
4541 + margin-top: 10px;
4542 + margin-bottom: 10px;
4543 +}
4544 +.navbar-btn.btn-xs {
4545 + margin-top: 14px;
4546 + margin-bottom: 14px;
4547 +}
4548 +.navbar-text {
4549 + margin-top: 15px;
4550 + margin-bottom: 15px;
4551 +}
4552 +@media (min-width: 768px) {
4553 + .navbar-text {
4554 + float: left;
4555 + margin-right: 15px;
4556 + margin-left: 15px;
4557 + }
4558 +}
4559 +@media (min-width: 768px) {
4560 + .navbar-left {
4561 + float: left !important;
4562 + }
4563 + .navbar-right {
4564 + float: right !important;
4565 + margin-right: -15px;
4566 + }
4567 + .navbar-right ~ .navbar-right {
4568 + margin-right: 0;
4569 + }
4570 +}
4571 +.navbar-default {
4572 + background-color: #f8f8f8;
4573 + border-color: #e7e7e7;
4574 +}
4575 +.navbar-default .navbar-brand {
4576 + color: #777;
4577 +}
4578 +.navbar-default .navbar-brand:hover,
4579 +.navbar-default .navbar-brand:focus {
4580 + color: #5e5e5e;
4581 + background-color: transparent;
4582 +}
4583 +.navbar-default .navbar-text {
4584 + color: #777;
4585 +}
4586 +.navbar-default .navbar-nav > li > a {
4587 + color: #777;
4588 +}
4589 +.navbar-default .navbar-nav > li > a:hover,
4590 +.navbar-default .navbar-nav > li > a:focus {
4591 + color: #333;
4592 + background-color: transparent;
4593 +}
4594 +.navbar-default .navbar-nav > .active > a,
4595 +.navbar-default .navbar-nav > .active > a:hover,
4596 +.navbar-default .navbar-nav > .active > a:focus {
4597 + color: #555;
4598 + background-color: #e7e7e7;
4599 +}
4600 +.navbar-default .navbar-nav > .disabled > a,
4601 +.navbar-default .navbar-nav > .disabled > a:hover,
4602 +.navbar-default .navbar-nav > .disabled > a:focus {
4603 + color: #ccc;
4604 + background-color: transparent;
4605 +}
4606 +.navbar-default .navbar-nav > .open > a,
4607 +.navbar-default .navbar-nav > .open > a:hover,
4608 +.navbar-default .navbar-nav > .open > a:focus {
4609 + color: #555;
4610 + background-color: #e7e7e7;
4611 +}
4612 +@media (max-width: 767px) {
4613 + .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4614 + color: #777;
4615 + }
4616 + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4617 + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4618 + color: #333;
4619 + background-color: transparent;
4620 + }
4621 + .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4622 + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4623 + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4624 + color: #555;
4625 + background-color: #e7e7e7;
4626 + }
4627 + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4628 + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4629 + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4630 + color: #ccc;
4631 + background-color: transparent;
4632 + }
4633 +}
4634 +.navbar-default .navbar-toggle {
4635 + border-color: #ddd;
4636 +}
4637 +.navbar-default .navbar-toggle:hover,
4638 +.navbar-default .navbar-toggle:focus {
4639 + background-color: #ddd;
4640 +}
4641 +.navbar-default .navbar-toggle .icon-bar {
4642 + background-color: #888;
4643 +}
4644 +.navbar-default .navbar-collapse,
4645 +.navbar-default .navbar-form {
4646 + border-color: #e7e7e7;
4647 +}
4648 +.navbar-default .navbar-link {
4649 + color: #777;
4650 +}
4651 +.navbar-default .navbar-link:hover {
4652 + color: #333;
4653 +}
4654 +.navbar-default .btn-link {
4655 + color: #777;
4656 +}
4657 +.navbar-default .btn-link:hover,
4658 +.navbar-default .btn-link:focus {
4659 + color: #333;
4660 +}
4661 +.navbar-default .btn-link[disabled]:hover,
4662 +fieldset[disabled] .navbar-default .btn-link:hover,
4663 +.navbar-default .btn-link[disabled]:focus,
4664 +fieldset[disabled] .navbar-default .btn-link:focus {
4665 + color: #ccc;
4666 +}
4667 +.navbar-inverse {
4668 + background-color: #222;
4669 + border-color: #080808;
4670 +}
4671 +.navbar-inverse .navbar-brand {
4672 + color: #9d9d9d;
4673 +}
4674 +.navbar-inverse .navbar-brand:hover,
4675 +.navbar-inverse .navbar-brand:focus {
4676 + color: #fff;
4677 + background-color: transparent;
4678 +}
4679 +.navbar-inverse .navbar-text {
4680 + color: #9d9d9d;
4681 +}
4682 +.navbar-inverse .navbar-nav > li > a {
4683 + color: #9d9d9d;
4684 +}
4685 +.navbar-inverse .navbar-nav > li > a:hover,
4686 +.navbar-inverse .navbar-nav > li > a:focus {
4687 + color: #fff;
4688 + background-color: transparent;
4689 +}
4690 +.navbar-inverse .navbar-nav > .active > a,
4691 +.navbar-inverse .navbar-nav > .active > a:hover,
4692 +.navbar-inverse .navbar-nav > .active > a:focus {
4693 + color: #fff;
4694 + background-color: #080808;
4695 +}
4696 +.navbar-inverse .navbar-nav > .disabled > a,
4697 +.navbar-inverse .navbar-nav > .disabled > a:hover,
4698 +.navbar-inverse .navbar-nav > .disabled > a:focus {
4699 + color: #444;
4700 + background-color: transparent;
4701 +}
4702 +.navbar-inverse .navbar-nav > .open > a,
4703 +.navbar-inverse .navbar-nav > .open > a:hover,
4704 +.navbar-inverse .navbar-nav > .open > a:focus {
4705 + color: #fff;
4706 + background-color: #080808;
4707 +}
4708 +@media (max-width: 767px) {
4709 + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4710 + border-color: #080808;
4711 + }
4712 + .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4713 + background-color: #080808;
4714 + }
4715 + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4716 + color: #9d9d9d;
4717 + }
4718 + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4719 + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4720 + color: #fff;
4721 + background-color: transparent;
4722 + }
4723 + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4724 + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4725 + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4726 + color: #fff;
4727 + background-color: #080808;
4728 + }
4729 + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4730 + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4731 + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4732 + color: #444;
4733 + background-color: transparent;
4734 + }
4735 +}
4736 +.navbar-inverse .navbar-toggle {
4737 + border-color: #333;
4738 +}
4739 +.navbar-inverse .navbar-toggle:hover,
4740 +.navbar-inverse .navbar-toggle:focus {
4741 + background-color: #333;
4742 +}
4743 +.navbar-inverse .navbar-toggle .icon-bar {
4744 + background-color: #fff;
4745 +}
4746 +.navbar-inverse .navbar-collapse,
4747 +.navbar-inverse .navbar-form {
4748 + border-color: #101010;
4749 +}
4750 +.navbar-inverse .navbar-link {
4751 + color: #9d9d9d;
4752 +}
4753 +.navbar-inverse .navbar-link:hover {
4754 + color: #fff;
4755 +}
4756 +.navbar-inverse .btn-link {
4757 + color: #9d9d9d;
4758 +}
4759 +.navbar-inverse .btn-link:hover,
4760 +.navbar-inverse .btn-link:focus {
4761 + color: #fff;
4762 +}
4763 +.navbar-inverse .btn-link[disabled]:hover,
4764 +fieldset[disabled] .navbar-inverse .btn-link:hover,
4765 +.navbar-inverse .btn-link[disabled]:focus,
4766 +fieldset[disabled] .navbar-inverse .btn-link:focus {
4767 + color: #444;
4768 +}
4769 +.breadcrumb {
4770 + padding: 8px 15px;
4771 + margin-bottom: 20px;
4772 + list-style: none;
4773 + background-color: #f5f5f5;
4774 + border-radius: 4px;
4775 +}
4776 +.breadcrumb > li {
4777 + display: inline-block;
4778 +}
4779 +.breadcrumb > li + li:before {
4780 + padding: 0 5px;
4781 + color: #ccc;
4782 + content: "/\00a0";
4783 +}
4784 +.breadcrumb > .active {
4785 + color: #777777;
4786 +}
4787 +.pagination {
4788 + display: inline-block;
4789 + padding-left: 0;
4790 + margin: 20px 0;
4791 + border-radius: 4px;
4792 +}
4793 +.pagination > li {
4794 + display: inline;
4795 +}
4796 +.pagination > li > a,
4797 +.pagination > li > span {
4798 + position: relative;
4799 + float: left;
4800 + padding: 6px 12px;
4801 + margin-left: -1px;
4802 + line-height: 1.42857143;
4803 + color: #337ab7;
4804 + text-decoration: none;
4805 + background-color: #fff;
4806 + border: 1px solid #ddd;
4807 +}
4808 +.pagination > li > a:hover,
4809 +.pagination > li > span:hover,
4810 +.pagination > li > a:focus,
4811 +.pagination > li > span:focus {
4812 + z-index: 2;
4813 + color: #23527c;
4814 + background-color: #eeeeee;
4815 + border-color: #ddd;
4816 +}
4817 +.pagination > li:first-child > a,
4818 +.pagination > li:first-child > span {
4819 + margin-left: 0;
4820 + border-top-left-radius: 4px;
4821 + border-bottom-left-radius: 4px;
4822 +}
4823 +.pagination > li:last-child > a,
4824 +.pagination > li:last-child > span {
4825 + border-top-right-radius: 4px;
4826 + border-bottom-right-radius: 4px;
4827 +}
4828 +.pagination > .active > a,
4829 +.pagination > .active > span,
4830 +.pagination > .active > a:hover,
4831 +.pagination > .active > span:hover,
4832 +.pagination > .active > a:focus,
4833 +.pagination > .active > span:focus {
4834 + z-index: 3;
4835 + color: #fff;
4836 + cursor: default;
4837 + background-color: #337ab7;
4838 + border-color: #337ab7;
4839 +}
4840 +.pagination > .disabled > span,
4841 +.pagination > .disabled > span:hover,
4842 +.pagination > .disabled > span:focus,
4843 +.pagination > .disabled > a,
4844 +.pagination > .disabled > a:hover,
4845 +.pagination > .disabled > a:focus {
4846 + color: #777777;
4847 + cursor: not-allowed;
4848 + background-color: #fff;
4849 + border-color: #ddd;
4850 +}
4851 +.pagination-lg > li > a,
4852 +.pagination-lg > li > span {
4853 + padding: 10px 16px;
4854 + font-size: 18px;
4855 + line-height: 1.3333333;
4856 +}
4857 +.pagination-lg > li:first-child > a,
4858 +.pagination-lg > li:first-child > span {
4859 + border-top-left-radius: 6px;
4860 + border-bottom-left-radius: 6px;
4861 +}
4862 +.pagination-lg > li:last-child > a,
4863 +.pagination-lg > li:last-child > span {
4864 + border-top-right-radius: 6px;
4865 + border-bottom-right-radius: 6px;
4866 +}
4867 +.pagination-sm > li > a,
4868 +.pagination-sm > li > span {
4869 + padding: 5px 10px;
4870 + font-size: 12px;
4871 + line-height: 1.5;
4872 +}
4873 +.pagination-sm > li:first-child > a,
4874 +.pagination-sm > li:first-child > span {
4875 + border-top-left-radius: 3px;
4876 + border-bottom-left-radius: 3px;
4877 +}
4878 +.pagination-sm > li:last-child > a,
4879 +.pagination-sm > li:last-child > span {
4880 + border-top-right-radius: 3px;
4881 + border-bottom-right-radius: 3px;
4882 +}
4883 +.pager {
4884 + padding-left: 0;
4885 + margin: 20px 0;
4886 + text-align: center;
4887 + list-style: none;
4888 +}
4889 +.pager li {
4890 + display: inline;
4891 +}
4892 +.pager li > a,
4893 +.pager li > span {
4894 + display: inline-block;
4895 + padding: 5px 14px;
4896 + background-color: #fff;
4897 + border: 1px solid #ddd;
4898 + border-radius: 15px;
4899 +}
4900 +.pager li > a:hover,
4901 +.pager li > a:focus {
4902 + text-decoration: none;
4903 + background-color: #eeeeee;
4904 +}
4905 +.pager .next > a,
4906 +.pager .next > span {
4907 + float: right;
4908 +}
4909 +.pager .previous > a,
4910 +.pager .previous > span {
4911 + float: left;
4912 +}
4913 +.pager .disabled > a,
4914 +.pager .disabled > a:hover,
4915 +.pager .disabled > a:focus,
4916 +.pager .disabled > span {
4917 + color: #777777;
4918 + cursor: not-allowed;
4919 + background-color: #fff;
4920 +}
4921 +.label {
4922 + display: inline;
4923 + padding: 0.2em 0.6em 0.3em;
4924 + font-size: 75%;
4925 + font-weight: 700;
4926 + line-height: 1;
4927 + color: #fff;
4928 + text-align: center;
4929 + white-space: nowrap;
4930 + vertical-align: baseline;
4931 + border-radius: 0.25em;
4932 +}
4933 +a.label:hover,
4934 +a.label:focus {
4935 + color: #fff;
4936 + text-decoration: none;
4937 + cursor: pointer;
4938 +}
4939 +.label:empty {
4940 + display: none;
4941 +}
4942 +.btn .label {
4943 + position: relative;
4944 + top: -1px;
4945 +}
4946 +.label-default {
4947 + background-color: #777777;
4948 +}
4949 +.label-default[href]:hover,
4950 +.label-default[href]:focus {
4951 + background-color: #5e5e5e;
4952 +}
4953 +.label-primary {
4954 + background-color: #337ab7;
4955 +}
4956 +.label-primary[href]:hover,
4957 +.label-primary[href]:focus {
4958 + background-color: #286090;
4959 +}
4960 +.label-success {
4961 + background-color: #5cb85c;
4962 +}
4963 +.label-success[href]:hover,
4964 +.label-success[href]:focus {
4965 + background-color: #449d44;
4966 +}
4967 +.label-info {
4968 + background-color: #5bc0de;
4969 +}
4970 +.label-info[href]:hover,
4971 +.label-info[href]:focus {
4972 + background-color: #31b0d5;
4973 +}
4974 +.label-warning {
4975 + background-color: #f0ad4e;
4976 +}
4977 +.label-warning[href]:hover,
4978 +.label-warning[href]:focus {
4979 + background-color: #ec971f;
4980 +}
4981 +.label-danger {
4982 + background-color: #d9534f;
4983 +}
4984 +.label-danger[href]:hover,
4985 +.label-danger[href]:focus {
4986 + background-color: #c9302c;
4987 +}
4988 +.badge {
4989 + display: inline-block;
4990 + min-width: 10px;
4991 + padding: 3px 7px;
4992 + font-size: 12px;
4993 + font-weight: bold;
4994 + line-height: 1;
4995 + color: #fff;
4996 + text-align: center;
4997 + white-space: nowrap;
4998 + vertical-align: middle;
4999 + background-color: #777777;

This file is too large to show in full.

src/test/wix/TestData/CsprojWebApplicationNetFx/Controllers/HomeController.cs new
+30
@@ -0,0 +1,30 @@
1 +using System;
2 +using System.Collections.Generic;
3 +using System.Linq;
4 +using System.Web;
5 +using System.Web.Mvc;
6 +
7 +namespace CsprojWebApplicationNetFx.Controllers
8 +{
9 + public class HomeController : Controller
10 + {
11 + public ActionResult Index()
12 + {
13 + return View();
14 + }
15 +
16 + public ActionResult About()
17 + {
18 + ViewBag.Message = "Your application description page.";
19 +
20 + return View();
21 + }
22 +
23 + public ActionResult Contact()
24 + {
25 + ViewBag.Message = "Your contact page.";
26 +
27 + return View();
28 + }
29 + }
30 +}
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/CsprojWebApplicationNetFx.csproj new
+219
@@ -0,0 +1,219 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <Import Project="..\..\..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
4 + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
5 + <PropertyGroup>
6 + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
7 + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
8 + <ProductVersion>
9 + </ProductVersion>
10 + <SchemaVersion>2.0</SchemaVersion>
11 + <ProjectGuid>{3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}</ProjectGuid>
12 + <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
13 + <OutputType>Library</OutputType>
14 + <AppDesignerFolder>Properties</AppDesignerFolder>
15 + <RootNamespace>CsprojWebApplicationNetFx</RootNamespace>
16 + <AssemblyName>CsprojWebApplicationNetFx</AssemblyName>
17 + <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
18 + <MvcBuildViews>false</MvcBuildViews>
19 + <UseIISExpress>true</UseIISExpress>
20 + <Use64BitIISExpress />
21 + <IISExpressSSLPort />
22 + <IISExpressAnonymousAuthentication />
23 + <IISExpressWindowsAuthentication />
24 + <IISExpressUseClassicPipelineMode />
25 + <UseGlobalApplicationHostFile />
26 + <NuGetPackageImportStamp>
27 + </NuGetPackageImportStamp>
28 + </PropertyGroup>
29 + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
30 + <DebugSymbols>true</DebugSymbols>
31 + <DebugType>full</DebugType>
32 + <Optimize>false</Optimize>
33 + <OutputPath>bin\</OutputPath>
34 + <DefineConstants>DEBUG;TRACE</DefineConstants>
35 + <ErrorReport>prompt</ErrorReport>
36 + <WarningLevel>4</WarningLevel>
37 + </PropertyGroup>
38 + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
39 + <DebugSymbols>true</DebugSymbols>
40 + <DebugType>pdbonly</DebugType>
41 + <Optimize>true</Optimize>
42 + <OutputPath>bin\</OutputPath>
43 + <DefineConstants>TRACE</DefineConstants>
44 + <ErrorReport>prompt</ErrorReport>
45 + <WarningLevel>4</WarningLevel>
46 + </PropertyGroup>
47 + <ItemGroup>
48 + <Reference Include="Microsoft.CSharp" />
49 + <Reference Include="System" />
50 + <Reference Include="System.Data" />
51 + <Reference Include="System.Drawing" />
52 + <Reference Include="System.Web.DynamicData" />
53 + <Reference Include="System.Web.Entity" />
54 + <Reference Include="System.Web.ApplicationServices" />
55 + <Reference Include="System.ComponentModel.DataAnnotations" />
56 + <Reference Include="System.Core" />
57 + <Reference Include="System.Data.DataSetExtensions" />
58 + <Reference Include="System.Xml.Linq" />
59 + <Reference Include="System.Web" />
60 + <Reference Include="System.Web.Extensions" />
61 + <Reference Include="System.Web.Abstractions" />
62 + <Reference Include="System.Web.Routing" />
63 + <Reference Include="System.Xml" />
64 + <Reference Include="System.Configuration" />
65 + <Reference Include="System.Web.Services" />
66 + <Reference Include="System.EnterpriseServices" />
67 + <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
68 + <Private>True</Private>
69 + <HintPath>..\..\..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
70 + </Reference>
71 + <Reference Include="System.Net.Http">
72 + </Reference>
73 + <Reference Include="System.Net.Http.WebRequest">
74 + </Reference>
75 + <Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
76 + <Private>True</Private>
77 + <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll</HintPath>
78 + </Reference>
79 + <Reference Include="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
80 + <Private>True</Private>
81 + <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll</HintPath>
82 + </Reference>
83 + <Reference Include="System.Web.Optimization">
84 + <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath>
85 + </Reference>
86 + <Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
87 + <Private>True</Private>
88 + <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll</HintPath>
89 + </Reference>
90 + <Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
91 + <Private>True</Private>
92 + <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll</HintPath>
93 + </Reference>
94 + <Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
95 + <Private>True</Private>
96 + <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
97 + </Reference>
98 + <Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
99 + <Private>True</Private>
100 + <HintPath>..\..\..\..\..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
101 + </Reference>
102 + <Reference Include="Newtonsoft.Json">
103 + <HintPath>..\..\..\..\..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
104 + </Reference>
105 + <Reference Include="WebGrease">
106 + <Private>True</Private>
107 + <HintPath>..\..\..\..\..\packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath>
108 + </Reference>
109 + <Reference Include="Antlr3.Runtime">
110 + <Private>True</Private>
111 + <HintPath>..\..\..\..\..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
112 + </Reference>
113 + </ItemGroup>
114 + <ItemGroup>
115 + <Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform">
116 + <HintPath>..\..\..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
117 + </Reference>
118 + </ItemGroup>
119 + <ItemGroup>
120 + <Compile Include="App_Start\BundleConfig.cs" />
121 + <Compile Include="App_Start\FilterConfig.cs" />
122 + <Compile Include="App_Start\RouteConfig.cs" />
123 + <Compile Include="Controllers\HomeController.cs" />
124 + <Compile Include="Global.asax.cs">
125 + <DependentUpon>Global.asax</DependentUpon>
126 + </Compile>
127 + <Compile Include="Properties\AssemblyInfo.cs" />
128 + </ItemGroup>
129 + <ItemGroup>
130 + <Content Include="Content\bootstrap-theme.css" />
131 + <Content Include="Content\bootstrap.css" />
132 + <Content Include="favicon.ico" />
133 + <Content Include="fonts\glyphicons-halflings-regular.svg" />
134 + <Content Include="Global.asax" />
135 + <Content Include="Content\Site.css" />
136 + <Content Include="Scripts\bootstrap.js" />
137 + <Content Include="Scripts\bootstrap.min.js" />
138 + <None Include="Scripts\jquery-3.4.1.intellisense.js" />
139 + <Content Include="Scripts\jquery-3.4.1.js" />
140 + <Content Include="Scripts\jquery-3.4.1.min.js" />
141 + <Content Include="Scripts\jquery-3.4.1.slim.js" />
142 + <Content Include="Scripts\jquery-3.4.1.slim.min.js" />
143 + <None Include="Scripts\jquery.validate-vsdoc.js" />
144 + <Content Include="Scripts\jquery.validate.js" />
145 + <Content Include="Scripts\jquery.validate.min.js" />
146 + <Content Include="Scripts\jquery.validate.unobtrusive.js" />
147 + <Content Include="Scripts\jquery.validate.unobtrusive.min.js" />
148 + <Content Include="Scripts\modernizr-2.8.3.js" />
149 + <Content Include="Web.config" />
150 + <Content Include="Web.Debug.config">
151 + <DependentUpon>Web.config</DependentUpon>
152 + </Content>
153 + <Content Include="Web.Release.config">
154 + <DependentUpon>Web.config</DependentUpon>
155 + </Content>
156 + <Content Include="Views\Web.config" />
157 + <Content Include="Views\_ViewStart.cshtml" />
158 + <Content Include="Views\Shared\Error.cshtml" />
159 + <Content Include="Views\Shared\_Layout.cshtml" />
160 + <Content Include="Views\Home\About.cshtml" />
161 + <Content Include="Views\Home\Contact.cshtml" />
162 + <Content Include="Views\Home\Index.cshtml" />
163 + </ItemGroup>
164 + <ItemGroup>
165 + <Folder Include="App_Data\" />
166 + <Folder Include="Models\" />
167 + </ItemGroup>
168 + <ItemGroup>
169 + <None Include="packages.config" />
170 + <Content Include="Scripts\jquery-3.4.1.slim.min.map" />
171 + <Content Include="Scripts\jquery-3.4.1.min.map" />
172 + </ItemGroup>
173 + <ItemGroup>
174 + <ProjectReference Include="..\CsprojClassLibraryNetFx\CsprojClassLibraryNetFx.csproj">
175 + <Project>{984d615d-adb1-49b4-ae0b-4496ed963881}</Project>
176 + <Name>CsprojClassLibraryNetFx</Name>
177 + </ProjectReference>
178 + </ItemGroup>
179 + <PropertyGroup>
180 + <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
181 + <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
182 + </PropertyGroup>
183 + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
184 + <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
185 + <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
186 + <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
187 + <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
188 + </Target>
189 + <ProjectExtensions>
190 + <VisualStudio>
191 + <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
192 + <WebProjectProperties>
193 + <UseIIS>True</UseIIS>
194 + <AutoAssignPort>True</AutoAssignPort>
195 + <DevelopmentServerPort>62308</DevelopmentServerPort>
196 + <DevelopmentServerVPath>/</DevelopmentServerVPath>
197 + <IISUrl>http://localhost:62308/</IISUrl>
198 + <NTLMAuthentication>False</NTLMAuthentication>
199 + <UseCustomServer>False</UseCustomServer>
200 + <CustomServerUrl>
201 + </CustomServerUrl>
202 + <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
203 + </WebProjectProperties>
204 + </FlavorProperties>
205 + </VisualStudio>
206 + </ProjectExtensions>
207 + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
208 + <PropertyGroup>
209 + <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
210 + </PropertyGroup>
211 + <Error Condition="!Exists('..\..\..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
212 + </Target>
213 + <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
214 + Other similar extension points exist, see Microsoft.Common.targets.
215 + <Target Name="BeforeBuild">
216 + </Target>
217 + <Target Name="AfterBuild">
218 + </Target> -->
219 +</Project>
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/Global.asax new
+1
@@ -0,0 +1 @@
1 +<%@ Application Codebehind="Global.asax.cs" Inherits="CsprojWebApplicationNetFx.MvcApplication" Language="C#" %>
src/test/wix/TestData/CsprojWebApplicationNetFx/Global.asax.cs new
+21
@@ -0,0 +1,21 @@
1 +using System;
2 +using System.Collections.Generic;
3 +using System.Linq;
4 +using System.Web;
5 +using System.Web.Mvc;
6 +using System.Web.Optimization;
7 +using System.Web.Routing;
8 +
9 +namespace CsprojWebApplicationNetFx
10 +{
11 + public class MvcApplication : System.Web.HttpApplication
12 + {
13 + protected void Application_Start()
14 + {
15 + AreaRegistration.RegisterAllAreas();
16 + FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
17 + RouteConfig.RegisterRoutes(RouteTable.Routes);
18 + BundleConfig.RegisterBundles(BundleTable.Bundles);
19 + }
20 + }
21 +}
src/test/wix/TestData/CsprojWebApplicationNetFx/Properties/AssemblyInfo.cs new
+35
@@ -0,0 +1,35 @@
1 +using System.Reflection;
2 +using System.Runtime.CompilerServices;
3 +using System.Runtime.InteropServices;
4 +
5 +// General Information about an assembly is controlled through the following
6 +// set of attributes. Change these attribute values to modify the information
7 +// associated with an assembly.
8 +[assembly: AssemblyTitle("CsprojWebApplicationNetFx")]
9 +[assembly: AssemblyDescription("")]
10 +[assembly: AssemblyConfiguration("")]
11 +[assembly: AssemblyCompany("")]
12 +[assembly: AssemblyProduct("CsprojWebApplicationNetFx")]
13 +[assembly: AssemblyCopyright("Copyright © 2021")]
14 +[assembly: AssemblyTrademark("")]
15 +[assembly: AssemblyCulture("")]
16 +
17 +// Setting ComVisible to false makes the types in this assembly not visible
18 +// to COM components. If you need to access a type in this assembly from
19 +// COM, set the ComVisible attribute to true on that type.
20 +[assembly: ComVisible(false)]
21 +
22 +// The following GUID is for the ID of the typelib if this project is exposed to COM
23 +[assembly: Guid("2de793d7-a95c-4194-abff-df050a941817")]
24 +
25 +// Version information for an assembly consists of the following four values:
26 +//
27 +// Major Version
28 +// Minor Version
29 +// Build Number
30 +// Revision
31 +//
32 +// You can specify all the values or you can default the Revision and Build Numbers
33 +// by using the '*' as shown below:
34 +[assembly: AssemblyVersion("1.0.0.0")]
35 +[assembly: AssemblyFileVersion("1.0.0.0")]
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/bootstrap.js new
+2580
@@ -0,0 +1,2580 @@
1 +/*!
2 + * Bootstrap v3.4.1 (https://getbootstrap.com/)
3 + * Copyright 2011-2019 Twitter, Inc.
4 + * Licensed under the MIT license
5 + */
6 +
7 +if (typeof jQuery === 'undefined') {
8 + throw new Error('Bootstrap\'s JavaScript requires jQuery')
9 +}
10 +
11 ++function ($) {
12 + 'use strict';
13 + var version = $.fn.jquery.split(' ')[0].split('.')
14 + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
15 + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
16 + }
17 +}(jQuery);
18 +
19 +/* ========================================================================
20 + * Bootstrap: transition.js v3.4.1
21 + * https://getbootstrap.com/docs/3.4/javascript/#transitions
22 + * ========================================================================
23 + * Copyright 2011-2019 Twitter, Inc.
24 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
25 + * ======================================================================== */
26 +
27 +
28 ++function ($) {
29 + 'use strict';
30 +
31 + // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)
32 + // ============================================================
33 +
34 + function transitionEnd() {
35 + var el = document.createElement('bootstrap')
36 +
37 + var transEndEventNames = {
38 + WebkitTransition : 'webkitTransitionEnd',
39 + MozTransition : 'transitionend',
40 + OTransition : 'oTransitionEnd otransitionend',
41 + transition : 'transitionend'
42 + }
43 +
44 + for (var name in transEndEventNames) {
45 + if (el.style[name] !== undefined) {
46 + return { end: transEndEventNames[name] }
47 + }
48 + }
49 +
50 + return false // explicit for ie8 ( ._.)
51 + }
52 +
53 + // https://blog.alexmaccaw.com/css-transitions
54 + $.fn.emulateTransitionEnd = function (duration) {
55 + var called = false
56 + var $el = this
57 + $(this).one('bsTransitionEnd', function () { called = true })
58 + var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
59 + setTimeout(callback, duration)
60 + return this
61 + }
62 +
63 + $(function () {
64 + $.support.transition = transitionEnd()
65 +
66 + if (!$.support.transition) return
67 +
68 + $.event.special.bsTransitionEnd = {
69 + bindType: $.support.transition.end,
70 + delegateType: $.support.transition.end,
71 + handle: function (e) {
72 + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
73 + }
74 + }
75 + })
76 +
77 +}(jQuery);
78 +
79 +/* ========================================================================
80 + * Bootstrap: alert.js v3.4.1
81 + * https://getbootstrap.com/docs/3.4/javascript/#alerts
82 + * ========================================================================
83 + * Copyright 2011-2019 Twitter, Inc.
84 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
85 + * ======================================================================== */
86 +
87 +
88 ++function ($) {
89 + 'use strict';
90 +
91 + // ALERT CLASS DEFINITION
92 + // ======================
93 +
94 + var dismiss = '[data-dismiss="alert"]'
95 + var Alert = function (el) {
96 + $(el).on('click', dismiss, this.close)
97 + }
98 +
99 + Alert.VERSION = '3.4.1'
100 +
101 + Alert.TRANSITION_DURATION = 150
102 +
103 + Alert.prototype.close = function (e) {
104 + var $this = $(this)
105 + var selector = $this.attr('data-target')
106 +
107 + if (!selector) {
108 + selector = $this.attr('href')
109 + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
110 + }
111 +
112 + selector = selector === '#' ? [] : selector
113 + var $parent = $(document).find(selector)
114 +
115 + if (e) e.preventDefault()
116 +
117 + if (!$parent.length) {
118 + $parent = $this.closest('.alert')
119 + }
120 +
121 + $parent.trigger(e = $.Event('close.bs.alert'))
122 +
123 + if (e.isDefaultPrevented()) return
124 +
125 + $parent.removeClass('in')
126 +
127 + function removeElement() {
128 + // detach from parent, fire event then clean up data
129 + $parent.detach().trigger('closed.bs.alert').remove()
130 + }
131 +
132 + $.support.transition && $parent.hasClass('fade') ?
133 + $parent
134 + .one('bsTransitionEnd', removeElement)
135 + .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
136 + removeElement()
137 + }
138 +
139 +
140 + // ALERT PLUGIN DEFINITION
141 + // =======================
142 +
143 + function Plugin(option) {
144 + return this.each(function () {
145 + var $this = $(this)
146 + var data = $this.data('bs.alert')
147 +
148 + if (!data) $this.data('bs.alert', (data = new Alert(this)))
149 + if (typeof option == 'string') data[option].call($this)
150 + })
151 + }
152 +
153 + var old = $.fn.alert
154 +
155 + $.fn.alert = Plugin
156 + $.fn.alert.Constructor = Alert
157 +
158 +
159 + // ALERT NO CONFLICT
160 + // =================
161 +
162 + $.fn.alert.noConflict = function () {
163 + $.fn.alert = old
164 + return this
165 + }
166 +
167 +
168 + // ALERT DATA-API
169 + // ==============
170 +
171 + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
172 +
173 +}(jQuery);
174 +
175 +/* ========================================================================
176 + * Bootstrap: button.js v3.4.1
177 + * https://getbootstrap.com/docs/3.4/javascript/#buttons
178 + * ========================================================================
179 + * Copyright 2011-2019 Twitter, Inc.
180 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
181 + * ======================================================================== */
182 +
183 +
184 ++function ($) {
185 + 'use strict';
186 +
187 + // BUTTON PUBLIC CLASS DEFINITION
188 + // ==============================
189 +
190 + var Button = function (element, options) {
191 + this.$element = $(element)
192 + this.options = $.extend({}, Button.DEFAULTS, options)
193 + this.isLoading = false
194 + }
195 +
196 + Button.VERSION = '3.4.1'
197 +
198 + Button.DEFAULTS = {
199 + loadingText: 'loading...'
200 + }
201 +
202 + Button.prototype.setState = function (state) {
203 + var d = 'disabled'
204 + var $el = this.$element
205 + var val = $el.is('input') ? 'val' : 'html'
206 + var data = $el.data()
207 +
208 + state += 'Text'
209 +
210 + if (data.resetText == null) $el.data('resetText', $el[val]())
211 +
212 + // push to event loop to allow forms to submit
213 + setTimeout($.proxy(function () {
214 + $el[val](data[state] == null ? this.options[state] : data[state])
215 +
216 + if (state == 'loadingText') {
217 + this.isLoading = true
218 + $el.addClass(d).attr(d, d).prop(d, true)
219 + } else if (this.isLoading) {
220 + this.isLoading = false
221 + $el.removeClass(d).removeAttr(d).prop(d, false)
222 + }
223 + }, this), 0)
224 + }
225 +
226 + Button.prototype.toggle = function () {
227 + var changed = true
228 + var $parent = this.$element.closest('[data-toggle="buttons"]')
229 +
230 + if ($parent.length) {
231 + var $input = this.$element.find('input')
232 + if ($input.prop('type') == 'radio') {
233 + if ($input.prop('checked')) changed = false
234 + $parent.find('.active').removeClass('active')
235 + this.$element.addClass('active')
236 + } else if ($input.prop('type') == 'checkbox') {
237 + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
238 + this.$element.toggleClass('active')
239 + }
240 + $input.prop('checked', this.$element.hasClass('active'))
241 + if (changed) $input.trigger('change')
242 + } else {
243 + this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
244 + this.$element.toggleClass('active')
245 + }
246 + }
247 +
248 +
249 + // BUTTON PLUGIN DEFINITION
250 + // ========================
251 +
252 + function Plugin(option) {
253 + return this.each(function () {
254 + var $this = $(this)
255 + var data = $this.data('bs.button')
256 + var options = typeof option == 'object' && option
257 +
258 + if (!data) $this.data('bs.button', (data = new Button(this, options)))
259 +
260 + if (option == 'toggle') data.toggle()
261 + else if (option) data.setState(option)
262 + })
263 + }
264 +
265 + var old = $.fn.button
266 +
267 + $.fn.button = Plugin
268 + $.fn.button.Constructor = Button
269 +
270 +
271 + // BUTTON NO CONFLICT
272 + // ==================
273 +
274 + $.fn.button.noConflict = function () {
275 + $.fn.button = old
276 + return this
277 + }
278 +
279 +
280 + // BUTTON DATA-API
281 + // ===============
282 +
283 + $(document)
284 + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
285 + var $btn = $(e.target).closest('.btn')
286 + Plugin.call($btn, 'toggle')
287 + if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
288 + // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
289 + e.preventDefault()
290 + // The target component still receive the focus
291 + if ($btn.is('input,button')) $btn.trigger('focus')
292 + else $btn.find('input:visible,button:visible').first().trigger('focus')
293 + }
294 + })
295 + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
296 + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
297 + })
298 +
299 +}(jQuery);
300 +
301 +/* ========================================================================
302 + * Bootstrap: carousel.js v3.4.1
303 + * https://getbootstrap.com/docs/3.4/javascript/#carousel
304 + * ========================================================================
305 + * Copyright 2011-2019 Twitter, Inc.
306 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
307 + * ======================================================================== */
308 +
309 +
310 ++function ($) {
311 + 'use strict';
312 +
313 + // CAROUSEL CLASS DEFINITION
314 + // =========================
315 +
316 + var Carousel = function (element, options) {
317 + this.$element = $(element)
318 + this.$indicators = this.$element.find('.carousel-indicators')
319 + this.options = options
320 + this.paused = null
321 + this.sliding = null
322 + this.interval = null
323 + this.$active = null
324 + this.$items = null
325 +
326 + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
327 +
328 + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
329 + .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
330 + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
331 + }
332 +
333 + Carousel.VERSION = '3.4.1'
334 +
335 + Carousel.TRANSITION_DURATION = 600
336 +
337 + Carousel.DEFAULTS = {
338 + interval: 5000,
339 + pause: 'hover',
340 + wrap: true,
341 + keyboard: true
342 + }
343 +
344 + Carousel.prototype.keydown = function (e) {
345 + if (/input|textarea/i.test(e.target.tagName)) return
346 + switch (e.which) {
347 + case 37: this.prev(); break
348 + case 39: this.next(); break
349 + default: return
350 + }
351 +
352 + e.preventDefault()
353 + }
354 +
355 + Carousel.prototype.cycle = function (e) {
356 + e || (this.paused = false)
357 +
358 + this.interval && clearInterval(this.interval)
359 +
360 + this.options.interval
361 + && !this.paused
362 + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
363 +
364 + return this
365 + }
366 +
367 + Carousel.prototype.getItemIndex = function (item) {
368 + this.$items = item.parent().children('.item')
369 + return this.$items.index(item || this.$active)
370 + }
371 +
372 + Carousel.prototype.getItemForDirection = function (direction, active) {
373 + var activeIndex = this.getItemIndex(active)
374 + var willWrap = (direction == 'prev' && activeIndex === 0)
375 + || (direction == 'next' && activeIndex == (this.$items.length - 1))
376 + if (willWrap && !this.options.wrap) return active
377 + var delta = direction == 'prev' ? -1 : 1
378 + var itemIndex = (activeIndex + delta) % this.$items.length
379 + return this.$items.eq(itemIndex)
380 + }
381 +
382 + Carousel.prototype.to = function (pos) {
383 + var that = this
384 + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
385 +
386 + if (pos > (this.$items.length - 1) || pos < 0) return
387 +
388 + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
389 + if (activeIndex == pos) return this.pause().cycle()
390 +
391 + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
392 + }
393 +
394 + Carousel.prototype.pause = function (e) {
395 + e || (this.paused = true)
396 +
397 + if (this.$element.find('.next, .prev').length && $.support.transition) {
398 + this.$element.trigger($.support.transition.end)
399 + this.cycle(true)
400 + }
401 +
402 + this.interval = clearInterval(this.interval)
403 +
404 + return this
405 + }
406 +
407 + Carousel.prototype.next = function () {
408 + if (this.sliding) return
409 + return this.slide('next')
410 + }
411 +
412 + Carousel.prototype.prev = function () {
413 + if (this.sliding) return
414 + return this.slide('prev')
415 + }
416 +
417 + Carousel.prototype.slide = function (type, next) {
418 + var $active = this.$element.find('.item.active')
419 + var $next = next || this.getItemForDirection(type, $active)
420 + var isCycling = this.interval
421 + var direction = type == 'next' ? 'left' : 'right'
422 + var that = this
423 +
424 + if ($next.hasClass('active')) return (this.sliding = false)
425 +
426 + var relatedTarget = $next[0]
427 + var slideEvent = $.Event('slide.bs.carousel', {
428 + relatedTarget: relatedTarget,
429 + direction: direction
430 + })
431 + this.$element.trigger(slideEvent)
432 + if (slideEvent.isDefaultPrevented()) return
433 +
434 + this.sliding = true
435 +
436 + isCycling && this.pause()
437 +
438 + if (this.$indicators.length) {
439 + this.$indicators.find('.active').removeClass('active')
440 + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
441 + $nextIndicator && $nextIndicator.addClass('active')
442 + }
443 +
444 + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
445 + if ($.support.transition && this.$element.hasClass('slide')) {
446 + $next.addClass(type)
447 + if (typeof $next === 'object' && $next.length) {
448 + $next[0].offsetWidth // force reflow
449 + }
450 + $active.addClass(direction)
451 + $next.addClass(direction)
452 + $active
453 + .one('bsTransitionEnd', function () {
454 + $next.removeClass([type, direction].join(' ')).addClass('active')
455 + $active.removeClass(['active', direction].join(' '))
456 + that.sliding = false
457 + setTimeout(function () {
458 + that.$element.trigger(slidEvent)
459 + }, 0)
460 + })
461 + .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
462 + } else {
463 + $active.removeClass('active')
464 + $next.addClass('active')
465 + this.sliding = false
466 + this.$element.trigger(slidEvent)
467 + }
468 +
469 + isCycling && this.cycle()
470 +
471 + return this
472 + }
473 +
474 +
475 + // CAROUSEL PLUGIN DEFINITION
476 + // ==========================
477 +
478 + function Plugin(option) {
479 + return this.each(function () {
480 + var $this = $(this)
481 + var data = $this.data('bs.carousel')
482 + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
483 + var action = typeof option == 'string' ? option : options.slide
484 +
485 + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
486 + if (typeof option == 'number') data.to(option)
487 + else if (action) data[action]()
488 + else if (options.interval) data.pause().cycle()
489 + })
490 + }
491 +
492 + var old = $.fn.carousel
493 +
494 + $.fn.carousel = Plugin
495 + $.fn.carousel.Constructor = Carousel
496 +
497 +
498 + // CAROUSEL NO CONFLICT
499 + // ====================
500 +
501 + $.fn.carousel.noConflict = function () {
502 + $.fn.carousel = old
503 + return this
504 + }
505 +
506 +
507 + // CAROUSEL DATA-API
508 + // =================
509 +
510 + var clickHandler = function (e) {
511 + var $this = $(this)
512 + var href = $this.attr('href')
513 + if (href) {
514 + href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
515 + }
516 +
517 + var target = $this.attr('data-target') || href
518 + var $target = $(document).find(target)
519 +
520 + if (!$target.hasClass('carousel')) return
521 +
522 + var options = $.extend({}, $target.data(), $this.data())
523 + var slideIndex = $this.attr('data-slide-to')
524 + if (slideIndex) options.interval = false
525 +
526 + Plugin.call($target, options)
527 +
528 + if (slideIndex) {
529 + $target.data('bs.carousel').to(slideIndex)
530 + }
531 +
532 + e.preventDefault()
533 + }
534 +
535 + $(document)
536 + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
537 + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
538 +
539 + $(window).on('load', function () {
540 + $('[data-ride="carousel"]').each(function () {
541 + var $carousel = $(this)
542 + Plugin.call($carousel, $carousel.data())
543 + })
544 + })
545 +
546 +}(jQuery);
547 +
548 +/* ========================================================================
549 + * Bootstrap: collapse.js v3.4.1
550 + * https://getbootstrap.com/docs/3.4/javascript/#collapse
551 + * ========================================================================
552 + * Copyright 2011-2019 Twitter, Inc.
553 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
554 + * ======================================================================== */
555 +
556 +/* jshint latedef: false */
557 +
558 ++function ($) {
559 + 'use strict';
560 +
561 + // COLLAPSE PUBLIC CLASS DEFINITION
562 + // ================================
563 +
564 + var Collapse = function (element, options) {
565 + this.$element = $(element)
566 + this.options = $.extend({}, Collapse.DEFAULTS, options)
567 + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
568 + '[data-toggle="collapse"][data-target="#' + element.id + '"]')
569 + this.transitioning = null
570 +
571 + if (this.options.parent) {
572 + this.$parent = this.getParent()
573 + } else {
574 + this.addAriaAndCollapsedClass(this.$element, this.$trigger)
575 + }
576 +
577 + if (this.options.toggle) this.toggle()
578 + }
579 +
580 + Collapse.VERSION = '3.4.1'
581 +
582 + Collapse.TRANSITION_DURATION = 350
583 +
584 + Collapse.DEFAULTS = {
585 + toggle: true
586 + }
587 +
588 + Collapse.prototype.dimension = function () {
589 + var hasWidth = this.$element.hasClass('width')
590 + return hasWidth ? 'width' : 'height'
591 + }
592 +
593 + Collapse.prototype.show = function () {
594 + if (this.transitioning || this.$element.hasClass('in')) return
595 +
596 + var activesData
597 + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
598 +
599 + if (actives && actives.length) {
600 + activesData = actives.data('bs.collapse')
601 + if (activesData && activesData.transitioning) return
602 + }
603 +
604 + var startEvent = $.Event('show.bs.collapse')
605 + this.$element.trigger(startEvent)
606 + if (startEvent.isDefaultPrevented()) return
607 +
608 + if (actives && actives.length) {
609 + Plugin.call(actives, 'hide')
610 + activesData || actives.data('bs.collapse', null)
611 + }
612 +
613 + var dimension = this.dimension()
614 +
615 + this.$element
616 + .removeClass('collapse')
617 + .addClass('collapsing')[dimension](0)
618 + .attr('aria-expanded', true)
619 +
620 + this.$trigger
621 + .removeClass('collapsed')
622 + .attr('aria-expanded', true)
623 +
624 + this.transitioning = 1
625 +
626 + var complete = function () {
627 + this.$element
628 + .removeClass('collapsing')
629 + .addClass('collapse in')[dimension]('')
630 + this.transitioning = 0
631 + this.$element
632 + .trigger('shown.bs.collapse')
633 + }
634 +
635 + if (!$.support.transition) return complete.call(this)
636 +
637 + var scrollSize = $.camelCase(['scroll', dimension].join('-'))
638 +
639 + this.$element
640 + .one('bsTransitionEnd', $.proxy(complete, this))
641 + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
642 + }
643 +
644 + Collapse.prototype.hide = function () {
645 + if (this.transitioning || !this.$element.hasClass('in')) return
646 +
647 + var startEvent = $.Event('hide.bs.collapse')
648 + this.$element.trigger(startEvent)
649 + if (startEvent.isDefaultPrevented()) return
650 +
651 + var dimension = this.dimension()
652 +
653 + this.$element[dimension](this.$element[dimension]())[0].offsetHeight
654 +
655 + this.$element
656 + .addClass('collapsing')
657 + .removeClass('collapse in')
658 + .attr('aria-expanded', false)
659 +
660 + this.$trigger
661 + .addClass('collapsed')
662 + .attr('aria-expanded', false)
663 +
664 + this.transitioning = 1
665 +
666 + var complete = function () {
667 + this.transitioning = 0
668 + this.$element
669 + .removeClass('collapsing')
670 + .addClass('collapse')
671 + .trigger('hidden.bs.collapse')
672 + }
673 +
674 + if (!$.support.transition) return complete.call(this)
675 +
676 + this.$element
677 + [dimension](0)
678 + .one('bsTransitionEnd', $.proxy(complete, this))
679 + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
680 + }
681 +
682 + Collapse.prototype.toggle = function () {
683 + this[this.$element.hasClass('in') ? 'hide' : 'show']()
684 + }
685 +
686 + Collapse.prototype.getParent = function () {
687 + return $(document).find(this.options.parent)
688 + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
689 + .each($.proxy(function (i, element) {
690 + var $element = $(element)
691 + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
692 + }, this))
693 + .end()
694 + }
695 +
696 + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
697 + var isOpen = $element.hasClass('in')
698 +
699 + $element.attr('aria-expanded', isOpen)
700 + $trigger
701 + .toggleClass('collapsed', !isOpen)
702 + .attr('aria-expanded', isOpen)
703 + }
704 +
705 + function getTargetFromTrigger($trigger) {
706 + var href
707 + var target = $trigger.attr('data-target')
708 + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
709 +
710 + return $(document).find(target)
711 + }
712 +
713 +
714 + // COLLAPSE PLUGIN DEFINITION
715 + // ==========================
716 +
717 + function Plugin(option) {
718 + return this.each(function () {
719 + var $this = $(this)
720 + var data = $this.data('bs.collapse')
721 + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
722 +
723 + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
724 + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
725 + if (typeof option == 'string') data[option]()
726 + })
727 + }
728 +
729 + var old = $.fn.collapse
730 +
731 + $.fn.collapse = Plugin
732 + $.fn.collapse.Constructor = Collapse
733 +
734 +
735 + // COLLAPSE NO CONFLICT
736 + // ====================
737 +
738 + $.fn.collapse.noConflict = function () {
739 + $.fn.collapse = old
740 + return this
741 + }
742 +
743 +
744 + // COLLAPSE DATA-API
745 + // =================
746 +
747 + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
748 + var $this = $(this)
749 +
750 + if (!$this.attr('data-target')) e.preventDefault()
751 +
752 + var $target = getTargetFromTrigger($this)
753 + var data = $target.data('bs.collapse')
754 + var option = data ? 'toggle' : $this.data()
755 +
756 + Plugin.call($target, option)
757 + })
758 +
759 +}(jQuery);
760 +
761 +/* ========================================================================
762 + * Bootstrap: dropdown.js v3.4.1
763 + * https://getbootstrap.com/docs/3.4/javascript/#dropdowns
764 + * ========================================================================
765 + * Copyright 2011-2019 Twitter, Inc.
766 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
767 + * ======================================================================== */
768 +
769 +
770 ++function ($) {
771 + 'use strict';
772 +
773 + // DROPDOWN CLASS DEFINITION
774 + // =========================
775 +
776 + var backdrop = '.dropdown-backdrop'
777 + var toggle = '[data-toggle="dropdown"]'
778 + var Dropdown = function (element) {
779 + $(element).on('click.bs.dropdown', this.toggle)
780 + }
781 +
782 + Dropdown.VERSION = '3.4.1'
783 +
784 + function getParent($this) {
785 + var selector = $this.attr('data-target')
786 +
787 + if (!selector) {
788 + selector = $this.attr('href')
789 + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
790 + }
791 +
792 + var $parent = selector !== '#' ? $(document).find(selector) : null
793 +
794 + return $parent && $parent.length ? $parent : $this.parent()
795 + }
796 +
797 + function clearMenus(e) {
798 + if (e && e.which === 3) return
799 + $(backdrop).remove()
800 + $(toggle).each(function () {
801 + var $this = $(this)
802 + var $parent = getParent($this)
803 + var relatedTarget = { relatedTarget: this }
804 +
805 + if (!$parent.hasClass('open')) return
806 +
807 + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
808 +
809 + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
810 +
811 + if (e.isDefaultPrevented()) return
812 +
813 + $this.attr('aria-expanded', 'false')
814 + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
815 + })
816 + }
817 +
818 + Dropdown.prototype.toggle = function (e) {
819 + var $this = $(this)
820 +
821 + if ($this.is('.disabled, :disabled')) return
822 +
823 + var $parent = getParent($this)
824 + var isActive = $parent.hasClass('open')
825 +
826 + clearMenus()
827 +
828 + if (!isActive) {
829 + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
830 + // if mobile we use a backdrop because click events don't delegate
831 + $(document.createElement('div'))
832 + .addClass('dropdown-backdrop')
833 + .insertAfter($(this))
834 + .on('click', clearMenus)
835 + }
836 +
837 + var relatedTarget = { relatedTarget: this }
838 + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
839 +
840 + if (e.isDefaultPrevented()) return
841 +
842 + $this
843 + .trigger('focus')
844 + .attr('aria-expanded', 'true')
845 +
846 + $parent
847 + .toggleClass('open')
848 + .trigger($.Event('shown.bs.dropdown', relatedTarget))
849 + }
850 +
851 + return false
852 + }
853 +
854 + Dropdown.prototype.keydown = function (e) {
855 + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
856 +
857 + var $this = $(this)
858 +
859 + e.preventDefault()
860 + e.stopPropagation()
861 +
862 + if ($this.is('.disabled, :disabled')) return
863 +
864 + var $parent = getParent($this)
865 + var isActive = $parent.hasClass('open')
866 +
867 + if (!isActive && e.which != 27 || isActive && e.which == 27) {
868 + if (e.which == 27) $parent.find(toggle).trigger('focus')
869 + return $this.trigger('click')
870 + }
871 +
872 + var desc = ' li:not(.disabled):visible a'
873 + var $items = $parent.find('.dropdown-menu' + desc)
874 +
875 + if (!$items.length) return
876 +
877 + var index = $items.index(e.target)
878 +
879 + if (e.which == 38 && index > 0) index-- // up
880 + if (e.which == 40 && index < $items.length - 1) index++ // down
881 + if (!~index) index = 0
882 +
883 + $items.eq(index).trigger('focus')
884 + }
885 +
886 +
887 + // DROPDOWN PLUGIN DEFINITION
888 + // ==========================
889 +
890 + function Plugin(option) {
891 + return this.each(function () {
892 + var $this = $(this)
893 + var data = $this.data('bs.dropdown')
894 +
895 + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
896 + if (typeof option == 'string') data[option].call($this)
897 + })
898 + }
899 +
900 + var old = $.fn.dropdown
901 +
902 + $.fn.dropdown = Plugin
903 + $.fn.dropdown.Constructor = Dropdown
904 +
905 +
906 + // DROPDOWN NO CONFLICT
907 + // ====================
908 +
909 + $.fn.dropdown.noConflict = function () {
910 + $.fn.dropdown = old
911 + return this
912 + }
913 +
914 +
915 + // APPLY TO STANDARD DROPDOWN ELEMENTS
916 + // ===================================
917 +
918 + $(document)
919 + .on('click.bs.dropdown.data-api', clearMenus)
920 + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
921 + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
922 + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
923 + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
924 +
925 +}(jQuery);
926 +
927 +/* ========================================================================
928 + * Bootstrap: modal.js v3.4.1
929 + * https://getbootstrap.com/docs/3.4/javascript/#modals
930 + * ========================================================================
931 + * Copyright 2011-2019 Twitter, Inc.
932 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
933 + * ======================================================================== */
934 +
935 +
936 ++function ($) {
937 + 'use strict';
938 +
939 + // MODAL CLASS DEFINITION
940 + // ======================
941 +
942 + var Modal = function (element, options) {
943 + this.options = options
944 + this.$body = $(document.body)
945 + this.$element = $(element)
946 + this.$dialog = this.$element.find('.modal-dialog')
947 + this.$backdrop = null
948 + this.isShown = null
949 + this.originalBodyPad = null
950 + this.scrollbarWidth = 0
951 + this.ignoreBackdropClick = false
952 + this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
953 +
954 + if (this.options.remote) {
955 + this.$element
956 + .find('.modal-content')
957 + .load(this.options.remote, $.proxy(function () {
958 + this.$element.trigger('loaded.bs.modal')
959 + }, this))
960 + }
961 + }
962 +
963 + Modal.VERSION = '3.4.1'
964 +
965 + Modal.TRANSITION_DURATION = 300
966 + Modal.BACKDROP_TRANSITION_DURATION = 150
967 +
968 + Modal.DEFAULTS = {
969 + backdrop: true,
970 + keyboard: true,
971 + show: true
972 + }
973 +
974 + Modal.prototype.toggle = function (_relatedTarget) {
975 + return this.isShown ? this.hide() : this.show(_relatedTarget)
976 + }
977 +
978 + Modal.prototype.show = function (_relatedTarget) {
979 + var that = this
980 + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
981 +
982 + this.$element.trigger(e)
983 +
984 + if (this.isShown || e.isDefaultPrevented()) return
985 +
986 + this.isShown = true
987 +
988 + this.checkScrollbar()
989 + this.setScrollbar()
990 + this.$body.addClass('modal-open')
991 +
992 + this.escape()
993 + this.resize()
994 +
995 + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
996 +
997 + this.$dialog.on('mousedown.dismiss.bs.modal', function () {
998 + that.$element.one('mouseup.dismiss.bs.modal', function (e) {
999 + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
1000 + })
1001 + })
1002 +
1003 + this.backdrop(function () {
1004 + var transition = $.support.transition && that.$element.hasClass('fade')
1005 +
1006 + if (!that.$element.parent().length) {
1007 + that.$element.appendTo(that.$body) // don't move modals dom position
1008 + }
1009 +
1010 + that.$element
1011 + .show()
1012 + .scrollTop(0)
1013 +
1014 + that.adjustDialog()
1015 +
1016 + if (transition) {
1017 + that.$element[0].offsetWidth // force reflow
1018 + }
1019 +
1020 + that.$element.addClass('in')
1021 +
1022 + that.enforceFocus()
1023 +
1024 + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
1025 +
1026 + transition ?
1027 + that.$dialog // wait for modal to slide in
1028 + .one('bsTransitionEnd', function () {
1029 + that.$element.trigger('focus').trigger(e)
1030 + })
1031 + .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
1032 + that.$element.trigger('focus').trigger(e)
1033 + })
1034 + }
1035 +
1036 + Modal.prototype.hide = function (e) {
1037 + if (e) e.preventDefault()
1038 +
1039 + e = $.Event('hide.bs.modal')
1040 +
1041 + this.$element.trigger(e)
1042 +
1043 + if (!this.isShown || e.isDefaultPrevented()) return
1044 +
1045 + this.isShown = false
1046 +
1047 + this.escape()
1048 + this.resize()
1049 +
1050 + $(document).off('focusin.bs.modal')
1051 +
1052 + this.$element
1053 + .removeClass('in')
1054 + .off('click.dismiss.bs.modal')
1055 + .off('mouseup.dismiss.bs.modal')
1056 +
1057 + this.$dialog.off('mousedown.dismiss.bs.modal')
1058 +
1059 + $.support.transition && this.$element.hasClass('fade') ?
1060 + this.$element
1061 + .one('bsTransitionEnd', $.proxy(this.hideModal, this))
1062 + .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
1063 + this.hideModal()
1064 + }
1065 +
1066 + Modal.prototype.enforceFocus = function () {
1067 + $(document)
1068 + .off('focusin.bs.modal') // guard against infinite focus loop
1069 + .on('focusin.bs.modal', $.proxy(function (e) {
1070 + if (document !== e.target &&
1071 + this.$element[0] !== e.target &&
1072 + !this.$element.has(e.target).length) {
1073 + this.$element.trigger('focus')
1074 + }
1075 + }, this))
1076 + }
1077 +
1078 + Modal.prototype.escape = function () {
1079 + if (this.isShown && this.options.keyboard) {
1080 + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
1081 + e.which == 27 && this.hide()
1082 + }, this))
1083 + } else if (!this.isShown) {
1084 + this.$element.off('keydown.dismiss.bs.modal')
1085 + }
1086 + }
1087 +
1088 + Modal.prototype.resize = function () {
1089 + if (this.isShown) {
1090 + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
1091 + } else {
1092 + $(window).off('resize.bs.modal')
1093 + }
1094 + }
1095 +
1096 + Modal.prototype.hideModal = function () {
1097 + var that = this
1098 + this.$element.hide()
1099 + this.backdrop(function () {
1100 + that.$body.removeClass('modal-open')
1101 + that.resetAdjustments()
1102 + that.resetScrollbar()
1103 + that.$element.trigger('hidden.bs.modal')
1104 + })
1105 + }
1106 +
1107 + Modal.prototype.removeBackdrop = function () {
1108 + this.$backdrop && this.$backdrop.remove()
1109 + this.$backdrop = null
1110 + }
1111 +
1112 + Modal.prototype.backdrop = function (callback) {
1113 + var that = this
1114 + var animate = this.$element.hasClass('fade') ? 'fade' : ''
1115 +
1116 + if (this.isShown && this.options.backdrop) {
1117 + var doAnimate = $.support.transition && animate
1118 +
1119 + this.$backdrop = $(document.createElement('div'))
1120 + .addClass('modal-backdrop ' + animate)
1121 + .appendTo(this.$body)
1122 +
1123 + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
1124 + if (this.ignoreBackdropClick) {
1125 + this.ignoreBackdropClick = false
1126 + return
1127 + }
1128 + if (e.target !== e.currentTarget) return
1129 + this.options.backdrop == 'static'
1130 + ? this.$element[0].focus()
1131 + : this.hide()
1132 + }, this))
1133 +
1134 + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
1135 +
1136 + this.$backdrop.addClass('in')
1137 +
1138 + if (!callback) return
1139 +
1140 + doAnimate ?
1141 + this.$backdrop
1142 + .one('bsTransitionEnd', callback)
1143 + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
1144 + callback()
1145 +
1146 + } else if (!this.isShown && this.$backdrop) {
1147 + this.$backdrop.removeClass('in')
1148 +
1149 + var callbackRemove = function () {
1150 + that.removeBackdrop()
1151 + callback && callback()
1152 + }
1153 + $.support.transition && this.$element.hasClass('fade') ?
1154 + this.$backdrop
1155 + .one('bsTransitionEnd', callbackRemove)
1156 + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
1157 + callbackRemove()
1158 +
1159 + } else if (callback) {
1160 + callback()
1161 + }
1162 + }
1163 +
1164 + // these following methods are used to handle overflowing modals
1165 +
1166 + Modal.prototype.handleUpdate = function () {
1167 + this.adjustDialog()
1168 + }
1169 +
1170 + Modal.prototype.adjustDialog = function () {
1171 + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
1172 +
1173 + this.$element.css({
1174 + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
1175 + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
1176 + })
1177 + }
1178 +
1179 + Modal.prototype.resetAdjustments = function () {
1180 + this.$element.css({
1181 + paddingLeft: '',
1182 + paddingRight: ''
1183 + })
1184 + }
1185 +
1186 + Modal.prototype.checkScrollbar = function () {
1187 + var fullWindowWidth = window.innerWidth
1188 + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
1189 + var documentElementRect = document.documentElement.getBoundingClientRect()
1190 + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
1191 + }
1192 + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
1193 + this.scrollbarWidth = this.measureScrollbar()
1194 + }
1195 +
1196 + Modal.prototype.setScrollbar = function () {
1197 + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
1198 + this.originalBodyPad = document.body.style.paddingRight || ''
1199 + var scrollbarWidth = this.scrollbarWidth
1200 + if (this.bodyIsOverflowing) {
1201 + this.$body.css('padding-right', bodyPad + scrollbarWidth)
1202 + $(this.fixedContent).each(function (index, element) {
1203 + var actualPadding = element.style.paddingRight
1204 + var calculatedPadding = $(element).css('padding-right')
1205 + $(element)
1206 + .data('padding-right', actualPadding)
1207 + .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
1208 + })
1209 + }
1210 + }
1211 +
1212 + Modal.prototype.resetScrollbar = function () {
1213 + this.$body.css('padding-right', this.originalBodyPad)
1214 + $(this.fixedContent).each(function (index, element) {
1215 + var padding = $(element).data('padding-right')
1216 + $(element).removeData('padding-right')
1217 + element.style.paddingRight = padding ? padding : ''
1218 + })
1219 + }
1220 +
1221 + Modal.prototype.measureScrollbar = function () { // thx walsh
1222 + var scrollDiv = document.createElement('div')
1223 + scrollDiv.className = 'modal-scrollbar-measure'
1224 + this.$body.append(scrollDiv)
1225 + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
1226 + this.$body[0].removeChild(scrollDiv)
1227 + return scrollbarWidth
1228 + }
1229 +
1230 +
1231 + // MODAL PLUGIN DEFINITION
1232 + // =======================
1233 +
1234 + function Plugin(option, _relatedTarget) {
1235 + return this.each(function () {
1236 + var $this = $(this)
1237 + var data = $this.data('bs.modal')
1238 + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
1239 +
1240 + if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
1241 + if (typeof option == 'string') data[option](_relatedTarget)
1242 + else if (options.show) data.show(_relatedTarget)
1243 + })
1244 + }
1245 +
1246 + var old = $.fn.modal
1247 +
1248 + $.fn.modal = Plugin
1249 + $.fn.modal.Constructor = Modal
1250 +
1251 +
1252 + // MODAL NO CONFLICT
1253 + // =================
1254 +
1255 + $.fn.modal.noConflict = function () {
1256 + $.fn.modal = old
1257 + return this
1258 + }
1259 +
1260 +
1261 + // MODAL DATA-API
1262 + // ==============
1263 +
1264 + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
1265 + var $this = $(this)
1266 + var href = $this.attr('href')
1267 + var target = $this.attr('data-target') ||
1268 + (href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
1269 +
1270 + var $target = $(document).find(target)
1271 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
1272 +
1273 + if ($this.is('a')) e.preventDefault()
1274 +
1275 + $target.one('show.bs.modal', function (showEvent) {
1276 + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
1277 + $target.one('hidden.bs.modal', function () {
1278 + $this.is(':visible') && $this.trigger('focus')
1279 + })
1280 + })
1281 + Plugin.call($target, option, this)
1282 + })
1283 +
1284 +}(jQuery);
1285 +
1286 +/* ========================================================================
1287 + * Bootstrap: tooltip.js v3.4.1
1288 + * https://getbootstrap.com/docs/3.4/javascript/#tooltip
1289 + * Inspired by the original jQuery.tipsy by Jason Frame
1290 + * ========================================================================
1291 + * Copyright 2011-2019 Twitter, Inc.
1292 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1293 + * ======================================================================== */
1294 +
1295 ++function ($) {
1296 + 'use strict';
1297 +
1298 + var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
1299 +
1300 + var uriAttrs = [
1301 + 'background',
1302 + 'cite',
1303 + 'href',
1304 + 'itemtype',
1305 + 'longdesc',
1306 + 'poster',
1307 + 'src',
1308 + 'xlink:href'
1309 + ]
1310 +
1311 + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
1312 +
1313 + var DefaultWhitelist = {
1314 + // Global attributes allowed on any supplied element below.
1315 + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
1316 + a: ['target', 'href', 'title', 'rel'],
1317 + area: [],
1318 + b: [],
1319 + br: [],
1320 + col: [],
1321 + code: [],
1322 + div: [],
1323 + em: [],
1324 + hr: [],
1325 + h1: [],
1326 + h2: [],
1327 + h3: [],
1328 + h4: [],
1329 + h5: [],
1330 + h6: [],
1331 + i: [],
1332 + img: ['src', 'alt', 'title', 'width', 'height'],
1333 + li: [],
1334 + ol: [],
1335 + p: [],
1336 + pre: [],
1337 + s: [],
1338 + small: [],
1339 + span: [],
1340 + sub: [],
1341 + sup: [],
1342 + strong: [],
1343 + u: [],
1344 + ul: []
1345 + }
1346 +
1347 + /**
1348 + * A pattern that recognizes a commonly useful subset of URLs that are safe.
1349 + *
1350 + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
1351 + */
1352 + var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
1353 +
1354 + /**
1355 + * A pattern that matches safe data URLs. Only matches image, video and audio types.
1356 + *
1357 + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
1358 + */
1359 + var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
1360 +
1361 + function allowedAttribute(attr, allowedAttributeList) {
1362 + var attrName = attr.nodeName.toLowerCase()
1363 +
1364 + if ($.inArray(attrName, allowedAttributeList) !== -1) {
1365 + if ($.inArray(attrName, uriAttrs) !== -1) {
1366 + return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
1367 + }
1368 +
1369 + return true
1370 + }
1371 +
1372 + var regExp = $(allowedAttributeList).filter(function (index, value) {
1373 + return value instanceof RegExp
1374 + })
1375 +
1376 + // Check if a regular expression validates the attribute.
1377 + for (var i = 0, l = regExp.length; i < l; i++) {
1378 + if (attrName.match(regExp[i])) {
1379 + return true
1380 + }
1381 + }
1382 +
1383 + return false
1384 + }
1385 +
1386 + function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
1387 + if (unsafeHtml.length === 0) {
1388 + return unsafeHtml
1389 + }
1390 +
1391 + if (sanitizeFn && typeof sanitizeFn === 'function') {
1392 + return sanitizeFn(unsafeHtml)
1393 + }
1394 +
1395 + // IE 8 and below don't support createHTMLDocument
1396 + if (!document.implementation || !document.implementation.createHTMLDocument) {
1397 + return unsafeHtml
1398 + }
1399 +
1400 + var createdDocument = document.implementation.createHTMLDocument('sanitization')
1401 + createdDocument.body.innerHTML = unsafeHtml
1402 +
1403 + var whitelistKeys = $.map(whiteList, function (el, i) { return i })
1404 + var elements = $(createdDocument.body).find('*')
1405 +
1406 + for (var i = 0, len = elements.length; i < len; i++) {
1407 + var el = elements[i]
1408 + var elName = el.nodeName.toLowerCase()
1409 +
1410 + if ($.inArray(elName, whitelistKeys) === -1) {
1411 + el.parentNode.removeChild(el)
1412 +
1413 + continue
1414 + }
1415 +
1416 + var attributeList = $.map(el.attributes, function (el) { return el })
1417 + var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
1418 +
1419 + for (var j = 0, len2 = attributeList.length; j < len2; j++) {
1420 + if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
1421 + el.removeAttribute(attributeList[j].nodeName)
1422 + }
1423 + }
1424 + }
1425 +
1426 + return createdDocument.body.innerHTML
1427 + }
1428 +
1429 + // TOOLTIP PUBLIC CLASS DEFINITION
1430 + // ===============================
1431 +
1432 + var Tooltip = function (element, options) {
1433 + this.type = null
1434 + this.options = null
1435 + this.enabled = null
1436 + this.timeout = null
1437 + this.hoverState = null
1438 + this.$element = null
1439 + this.inState = null
1440 +
1441 + this.init('tooltip', element, options)
1442 + }
1443 +
1444 + Tooltip.VERSION = '3.4.1'
1445 +
1446 + Tooltip.TRANSITION_DURATION = 150
1447 +
1448 + Tooltip.DEFAULTS = {
1449 + animation: true,
1450 + placement: 'top',
1451 + selector: false,
1452 + template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
1453 + trigger: 'hover focus',
1454 + title: '',
1455 + delay: 0,
1456 + html: false,
1457 + container: false,
1458 + viewport: {
1459 + selector: 'body',
1460 + padding: 0
1461 + },
1462 + sanitize : true,
1463 + sanitizeFn : null,
1464 + whiteList : DefaultWhitelist
1465 + }
1466 +
1467 + Tooltip.prototype.init = function (type, element, options) {
1468 + this.enabled = true
1469 + this.type = type
1470 + this.$element = $(element)
1471 + this.options = this.getOptions(options)
1472 + this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
1473 + this.inState = { click: false, hover: false, focus: false }
1474 +
1475 + if (this.$element[0] instanceof document.constructor && !this.options.selector) {
1476 + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
1477 + }
1478 +
1479 + var triggers = this.options.trigger.split(' ')
1480 +
1481 + for (var i = triggers.length; i--;) {
1482 + var trigger = triggers[i]
1483 +
1484 + if (trigger == 'click') {
1485 + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1486 + } else if (trigger != 'manual') {
1487 + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
1488 + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
1489 +
1490 + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1491 + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1492 + }
1493 + }
1494 +
1495 + this.options.selector ?
1496 + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1497 + this.fixTitle()
1498 + }
1499 +
1500 + Tooltip.prototype.getDefaults = function () {
1501 + return Tooltip.DEFAULTS
1502 + }
1503 +
1504 + Tooltip.prototype.getOptions = function (options) {
1505 + var dataAttributes = this.$element.data()
1506 +
1507 + for (var dataAttr in dataAttributes) {
1508 + if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
1509 + delete dataAttributes[dataAttr]
1510 + }
1511 + }
1512 +
1513 + options = $.extend({}, this.getDefaults(), dataAttributes, options)
1514 +
1515 + if (options.delay && typeof options.delay == 'number') {
1516 + options.delay = {
1517 + show: options.delay,
1518 + hide: options.delay
1519 + }
1520 + }
1521 +
1522 + if (options.sanitize) {
1523 + options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
1524 + }
1525 +
1526 + return options
1527 + }
1528 +
1529 + Tooltip.prototype.getDelegateOptions = function () {
1530 + var options = {}
1531 + var defaults = this.getDefaults()
1532 +
1533 + this._options && $.each(this._options, function (key, value) {
1534 + if (defaults[key] != value) options[key] = value
1535 + })
1536 +
1537 + return options
1538 + }
1539 +
1540 + Tooltip.prototype.enter = function (obj) {
1541 + var self = obj instanceof this.constructor ?
1542 + obj : $(obj.currentTarget).data('bs.' + this.type)
1543 +
1544 + if (!self) {
1545 + self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1546 + $(obj.currentTarget).data('bs.' + this.type, self)
1547 + }
1548 +
1549 + if (obj instanceof $.Event) {
1550 + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
1551 + }
1552 +
1553 + if (self.tip().hasClass('in') || self.hoverState == 'in') {
1554 + self.hoverState = 'in'
1555 + return
1556 + }
1557 +
1558 + clearTimeout(self.timeout)
1559 +
1560 + self.hoverState = 'in'
1561 +
1562 + if (!self.options.delay || !self.options.delay.show) return self.show()
1563 +
1564 + self.timeout = setTimeout(function () {
1565 + if (self.hoverState == 'in') self.show()
1566 + }, self.options.delay.show)
1567 + }
1568 +
1569 + Tooltip.prototype.isInStateTrue = function () {
1570 + for (var key in this.inState) {
1571 + if (this.inState[key]) return true
1572 + }
1573 +
1574 + return false
1575 + }
1576 +
1577 + Tooltip.prototype.leave = function (obj) {
1578 + var self = obj instanceof this.constructor ?
1579 + obj : $(obj.currentTarget).data('bs.' + this.type)
1580 +
1581 + if (!self) {
1582 + self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1583 + $(obj.currentTarget).data('bs.' + this.type, self)
1584 + }
1585 +
1586 + if (obj instanceof $.Event) {
1587 + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
1588 + }
1589 +
1590 + if (self.isInStateTrue()) return
1591 +
1592 + clearTimeout(self.timeout)
1593 +
1594 + self.hoverState = 'out'
1595 +
1596 + if (!self.options.delay || !self.options.delay.hide) return self.hide()
1597 +
1598 + self.timeout = setTimeout(function () {
1599 + if (self.hoverState == 'out') self.hide()
1600 + }, self.options.delay.hide)
1601 + }
1602 +
1603 + Tooltip.prototype.show = function () {
1604 + var e = $.Event('show.bs.' + this.type)
1605 +
1606 + if (this.hasContent() && this.enabled) {
1607 + this.$element.trigger(e)
1608 +
1609 + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
1610 + if (e.isDefaultPrevented() || !inDom) return
1611 + var that = this
1612 +
1613 + var $tip = this.tip()
1614 +
1615 + var tipId = this.getUID(this.type)
1616 +
1617 + this.setContent()
1618 + $tip.attr('id', tipId)
1619 + this.$element.attr('aria-describedby', tipId)
1620 +
1621 + if (this.options.animation) $tip.addClass('fade')
1622 +
1623 + var placement = typeof this.options.placement == 'function' ?
1624 + this.options.placement.call(this, $tip[0], this.$element[0]) :
1625 + this.options.placement
1626 +
1627 + var autoToken = /\s?auto?\s?/i
1628 + var autoPlace = autoToken.test(placement)
1629 + if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
1630 +
1631 + $tip
1632 + .detach()
1633 + .css({ top: 0, left: 0, display: 'block' })
1634 + .addClass(placement)
1635 + .data('bs.' + this.type, this)
1636 +
1637 + this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
1638 + this.$element.trigger('inserted.bs.' + this.type)
1639 +
1640 + var pos = this.getPosition()
1641 + var actualWidth = $tip[0].offsetWidth
1642 + var actualHeight = $tip[0].offsetHeight
1643 +
1644 + if (autoPlace) {
1645 + var orgPlacement = placement
1646 + var viewportDim = this.getPosition(this.$viewport)
1647 +
1648 + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
1649 + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
1650 + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
1651 + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
1652 + placement
1653 +
1654 + $tip
1655 + .removeClass(orgPlacement)
1656 + .addClass(placement)
1657 + }
1658 +
1659 + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
1660 +
1661 + this.applyPlacement(calculatedOffset, placement)
1662 +
1663 + var complete = function () {
1664 + var prevHoverState = that.hoverState
1665 + that.$element.trigger('shown.bs.' + that.type)
1666 + that.hoverState = null
1667 +
1668 + if (prevHoverState == 'out') that.leave(that)
1669 + }
1670 +
1671 + $.support.transition && this.$tip.hasClass('fade') ?
1672 + $tip
1673 + .one('bsTransitionEnd', complete)
1674 + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1675 + complete()
1676 + }
1677 + }
1678 +
1679 + Tooltip.prototype.applyPlacement = function (offset, placement) {
1680 + var $tip = this.tip()
1681 + var width = $tip[0].offsetWidth
1682 + var height = $tip[0].offsetHeight
1683 +
1684 + // manually read margins because getBoundingClientRect includes difference
1685 + var marginTop = parseInt($tip.css('margin-top'), 10)
1686 + var marginLeft = parseInt($tip.css('margin-left'), 10)
1687 +
1688 + // we must check for NaN for ie 8/9
1689 + if (isNaN(marginTop)) marginTop = 0
1690 + if (isNaN(marginLeft)) marginLeft = 0
1691 +
1692 + offset.top += marginTop
1693 + offset.left += marginLeft
1694 +
1695 + // $.fn.offset doesn't round pixel values
1696 + // so we use setOffset directly with our own function B-0
1697 + $.offset.setOffset($tip[0], $.extend({
1698 + using: function (props) {
1699 + $tip.css({
1700 + top: Math.round(props.top),
1701 + left: Math.round(props.left)
1702 + })
1703 + }
1704 + }, offset), 0)
1705 +
1706 + $tip.addClass('in')
1707 +
1708 + // check to see if placing tip in new offset caused the tip to resize itself
1709 + var actualWidth = $tip[0].offsetWidth
1710 + var actualHeight = $tip[0].offsetHeight
1711 +
1712 + if (placement == 'top' && actualHeight != height) {
1713 + offset.top = offset.top + height - actualHeight
1714 + }
1715 +
1716 + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
1717 +
1718 + if (delta.left) offset.left += delta.left
1719 + else offset.top += delta.top
1720 +
1721 + var isVertical = /top|bottom/.test(placement)
1722 + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
1723 + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
1724 +
1725 + $tip.offset(offset)
1726 + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
1727 + }
1728 +
1729 + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
1730 + this.arrow()
1731 + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
1732 + .css(isVertical ? 'top' : 'left', '')
1733 + }
1734 +
1735 + Tooltip.prototype.setContent = function () {
1736 + var $tip = this.tip()
1737 + var title = this.getTitle()
1738 +
1739 + if (this.options.html) {
1740 + if (this.options.sanitize) {
1741 + title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
1742 + }
1743 +
1744 + $tip.find('.tooltip-inner').html(title)
1745 + } else {
1746 + $tip.find('.tooltip-inner').text(title)
1747 + }
1748 +
1749 + $tip.removeClass('fade in top bottom left right')
1750 + }
1751 +
1752 + Tooltip.prototype.hide = function (callback) {
1753 + var that = this
1754 + var $tip = $(this.$tip)
1755 + var e = $.Event('hide.bs.' + this.type)
1756 +
1757 + function complete() {
1758 + if (that.hoverState != 'in') $tip.detach()
1759 + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
1760 + that.$element
1761 + .removeAttr('aria-describedby')
1762 + .trigger('hidden.bs.' + that.type)
1763 + }
1764 + callback && callback()
1765 + }
1766 +
1767 + this.$element.trigger(e)
1768 +
1769 + if (e.isDefaultPrevented()) return
1770 +
1771 + $tip.removeClass('in')
1772 +
1773 + $.support.transition && $tip.hasClass('fade') ?
1774 + $tip
1775 + .one('bsTransitionEnd', complete)
1776 + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
1777 + complete()
1778 +
1779 + this.hoverState = null
1780 +
1781 + return this
1782 + }
1783 +
1784 + Tooltip.prototype.fixTitle = function () {
1785 + var $e = this.$element
1786 + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
1787 + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1788 + }
1789 + }
1790 +
1791 + Tooltip.prototype.hasContent = function () {
1792 + return this.getTitle()
1793 + }
1794 +
1795 + Tooltip.prototype.getPosition = function ($element) {
1796 + $element = $element || this.$element
1797 +
1798 + var el = $element[0]
1799 + var isBody = el.tagName == 'BODY'
1800 +
1801 + var elRect = el.getBoundingClientRect()
1802 + if (elRect.width == null) {
1803 + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
1804 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
1805 + }
1806 + var isSvg = window.SVGElement && el instanceof window.SVGElement
1807 + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
1808 + // See https://github.com/twbs/bootstrap/issues/20280
1809 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
1810 + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
1811 + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
1812 +
1813 + return $.extend({}, elRect, scroll, outerDims, elOffset)
1814 + }
1815 +
1816 + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
1817 + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1818 + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1819 + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
1820 + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
1821 +
1822 + }
1823 +
1824 + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
1825 + var delta = { top: 0, left: 0 }
1826 + if (!this.$viewport) return delta
1827 +
1828 + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
1829 + var viewportDimensions = this.getPosition(this.$viewport)
1830 +
1831 + if (/right|left/.test(placement)) {
1832 + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
1833 + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
1834 + if (topEdgeOffset < viewportDimensions.top) { // top overflow
1835 + delta.top = viewportDimensions.top - topEdgeOffset
1836 + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
1837 + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
1838 + }
1839 + } else {
1840 + var leftEdgeOffset = pos.left - viewportPadding
1841 + var rightEdgeOffset = pos.left + viewportPadding + actualWidth
1842 + if (leftEdgeOffset < viewportDimensions.left) { // left overflow
1843 + delta.left = viewportDimensions.left - leftEdgeOffset
1844 + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
1845 + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
1846 + }
1847 + }
1848 +
1849 + return delta
1850 + }
1851 +
1852 + Tooltip.prototype.getTitle = function () {
1853 + var title
1854 + var $e = this.$element
1855 + var o = this.options
1856 +
1857 + title = $e.attr('data-original-title')
1858 + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1859 +
1860 + return title
1861 + }
1862 +
1863 + Tooltip.prototype.getUID = function (prefix) {
1864 + do prefix += ~~(Math.random() * 1000000)
1865 + while (document.getElementById(prefix))
1866 + return prefix
1867 + }
1868 +
1869 + Tooltip.prototype.tip = function () {
1870 + if (!this.$tip) {
1871 + this.$tip = $(this.options.template)
1872 + if (this.$tip.length != 1) {
1873 + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
1874 + }
1875 + }
1876 + return this.$tip
1877 + }
1878 +
1879 + Tooltip.prototype.arrow = function () {
1880 + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
1881 + }
1882 +
1883 + Tooltip.prototype.enable = function () {
1884 + this.enabled = true
1885 + }
1886 +
1887 + Tooltip.prototype.disable = function () {
1888 + this.enabled = false
1889 + }
1890 +
1891 + Tooltip.prototype.toggleEnabled = function () {
1892 + this.enabled = !this.enabled
1893 + }
1894 +
1895 + Tooltip.prototype.toggle = function (e) {
1896 + var self = this
1897 + if (e) {
1898 + self = $(e.currentTarget).data('bs.' + this.type)
1899 + if (!self) {
1900 + self = new this.constructor(e.currentTarget, this.getDelegateOptions())
1901 + $(e.currentTarget).data('bs.' + this.type, self)
1902 + }
1903 + }
1904 +
1905 + if (e) {
1906 + self.inState.click = !self.inState.click
1907 + if (self.isInStateTrue()) self.enter(self)
1908 + else self.leave(self)
1909 + } else {
1910 + self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
1911 + }
1912 + }
1913 +
1914 + Tooltip.prototype.destroy = function () {
1915 + var that = this
1916 + clearTimeout(this.timeout)
1917 + this.hide(function () {
1918 + that.$element.off('.' + that.type).removeData('bs.' + that.type)
1919 + if (that.$tip) {
1920 + that.$tip.detach()
1921 + }
1922 + that.$tip = null
1923 + that.$arrow = null
1924 + that.$viewport = null
1925 + that.$element = null
1926 + })
1927 + }
1928 +
1929 + Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {
1930 + return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
1931 + }
1932 +
1933 + // TOOLTIP PLUGIN DEFINITION
1934 + // =========================
1935 +
1936 + function Plugin(option) {
1937 + return this.each(function () {
1938 + var $this = $(this)
1939 + var data = $this.data('bs.tooltip')
1940 + var options = typeof option == 'object' && option
1941 +
1942 + if (!data && /destroy|hide/.test(option)) return
1943 + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
1944 + if (typeof option == 'string') data[option]()
1945 + })
1946 + }
1947 +
1948 + var old = $.fn.tooltip
1949 +
1950 + $.fn.tooltip = Plugin
1951 + $.fn.tooltip.Constructor = Tooltip
1952 +
1953 +
1954 + // TOOLTIP NO CONFLICT
1955 + // ===================
1956 +
1957 + $.fn.tooltip.noConflict = function () {
1958 + $.fn.tooltip = old
1959 + return this
1960 + }
1961 +
1962 +}(jQuery);
1963 +
1964 +/* ========================================================================
1965 + * Bootstrap: popover.js v3.4.1
1966 + * https://getbootstrap.com/docs/3.4/javascript/#popovers
1967 + * ========================================================================
1968 + * Copyright 2011-2019 Twitter, Inc.
1969 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1970 + * ======================================================================== */
1971 +
1972 +
1973 ++function ($) {
1974 + 'use strict';
1975 +
1976 + // POPOVER PUBLIC CLASS DEFINITION
1977 + // ===============================
1978 +
1979 + var Popover = function (element, options) {
1980 + this.init('popover', element, options)
1981 + }
1982 +
1983 + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1984 +
1985 + Popover.VERSION = '3.4.1'
1986 +
1987 + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
1988 + placement: 'right',
1989 + trigger: 'click',
1990 + content: '',
1991 + template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
1992 + })
1993 +
1994 +
1995 + // NOTE: POPOVER EXTENDS tooltip.js
1996 + // ================================
1997 +
1998 + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
1999 +
2000 + Popover.prototype.constructor = Popover
2001 +
2002 + Popover.prototype.getDefaults = function () {
2003 + return Popover.DEFAULTS
2004 + }
2005 +
2006 + Popover.prototype.setContent = function () {
2007 + var $tip = this.tip()
2008 + var title = this.getTitle()
2009 + var content = this.getContent()
2010 +
2011 + if (this.options.html) {
2012 + var typeContent = typeof content
2013 +
2014 + if (this.options.sanitize) {
2015 + title = this.sanitizeHtml(title)
2016 +
2017 + if (typeContent === 'string') {
2018 + content = this.sanitizeHtml(content)
2019 + }
2020 + }
2021 +
2022 + $tip.find('.popover-title').html(title)
2023 + $tip.find('.popover-content').children().detach().end()[
2024 + typeContent === 'string' ? 'html' : 'append'
2025 + ](content)
2026 + } else {
2027 + $tip.find('.popover-title').text(title)
2028 + $tip.find('.popover-content').children().detach().end().text(content)
2029 + }
2030 +
2031 + $tip.removeClass('fade top bottom left right in')
2032 +
2033 + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
2034 + // this manually by checking the contents.
2035 + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
2036 + }
2037 +
2038 + Popover.prototype.hasContent = function () {
2039 + return this.getTitle() || this.getContent()
2040 + }
2041 +
2042 + Popover.prototype.getContent = function () {
2043 + var $e = this.$element
2044 + var o = this.options
2045 +
2046 + return $e.attr('data-content')
2047 + || (typeof o.content == 'function' ?
2048 + o.content.call($e[0]) :
2049 + o.content)
2050 + }
2051 +
2052 + Popover.prototype.arrow = function () {
2053 + return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
2054 + }
2055 +
2056 +
2057 + // POPOVER PLUGIN DEFINITION
2058 + // =========================
2059 +
2060 + function Plugin(option) {
2061 + return this.each(function () {
2062 + var $this = $(this)
2063 + var data = $this.data('bs.popover')
2064 + var options = typeof option == 'object' && option
2065 +
2066 + if (!data && /destroy|hide/.test(option)) return
2067 + if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
2068 + if (typeof option == 'string') data[option]()
2069 + })
2070 + }
2071 +
2072 + var old = $.fn.popover
2073 +
2074 + $.fn.popover = Plugin
2075 + $.fn.popover.Constructor = Popover
2076 +
2077 +
2078 + // POPOVER NO CONFLICT
2079 + // ===================
2080 +
2081 + $.fn.popover.noConflict = function () {
2082 + $.fn.popover = old
2083 + return this
2084 + }
2085 +
2086 +}(jQuery);
2087 +
2088 +/* ========================================================================
2089 + * Bootstrap: scrollspy.js v3.4.1
2090 + * https://getbootstrap.com/docs/3.4/javascript/#scrollspy
2091 + * ========================================================================
2092 + * Copyright 2011-2019 Twitter, Inc.
2093 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2094 + * ======================================================================== */
2095 +
2096 +
2097 ++function ($) {
2098 + 'use strict';
2099 +
2100 + // SCROLLSPY CLASS DEFINITION
2101 + // ==========================
2102 +
2103 + function ScrollSpy(element, options) {
2104 + this.$body = $(document.body)
2105 + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
2106 + this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
2107 + this.selector = (this.options.target || '') + ' .nav li > a'
2108 + this.offsets = []
2109 + this.targets = []
2110 + this.activeTarget = null
2111 + this.scrollHeight = 0
2112 +
2113 + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
2114 + this.refresh()
2115 + this.process()
2116 + }
2117 +
2118 + ScrollSpy.VERSION = '3.4.1'
2119 +
2120 + ScrollSpy.DEFAULTS = {
2121 + offset: 10
2122 + }
2123 +
2124 + ScrollSpy.prototype.getScrollHeight = function () {
2125 + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
2126 + }
2127 +
2128 + ScrollSpy.prototype.refresh = function () {
2129 + var that = this
2130 + var offsetMethod = 'offset'
2131 + var offsetBase = 0
2132 +
2133 + this.offsets = []
2134 + this.targets = []
2135 + this.scrollHeight = this.getScrollHeight()
2136 +
2137 + if (!$.isWindow(this.$scrollElement[0])) {
2138 + offsetMethod = 'position'
2139 + offsetBase = this.$scrollElement.scrollTop()
2140 + }
2141 +
2142 + this.$body
2143 + .find(this.selector)
2144 + .map(function () {
2145 + var $el = $(this)
2146 + var href = $el.data('target') || $el.attr('href')
2147 + var $href = /^#./.test(href) && $(href)
2148 +
2149 + return ($href
2150 + && $href.length
2151 + && $href.is(':visible')
2152 + && [[$href[offsetMethod]().top + offsetBase, href]]) || null
2153 + })
2154 + .sort(function (a, b) { return a[0] - b[0] })
2155 + .each(function () {
2156 + that.offsets.push(this[0])
2157 + that.targets.push(this[1])
2158 + })
2159 + }
2160 +
2161 + ScrollSpy.prototype.process = function () {
2162 + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
2163 + var scrollHeight = this.getScrollHeight()
2164 + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
2165 + var offsets = this.offsets
2166 + var targets = this.targets
2167 + var activeTarget = this.activeTarget
2168 + var i
2169 +
2170 + if (this.scrollHeight != scrollHeight) {
2171 + this.refresh()
2172 + }
2173 +
2174 + if (scrollTop >= maxScroll) {
2175 + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
2176 + }
2177 +
2178 + if (activeTarget && scrollTop < offsets[0]) {
2179 + this.activeTarget = null
2180 + return this.clear()
2181 + }
2182 +
2183 + for (i = offsets.length; i--;) {
2184 + activeTarget != targets[i]
2185 + && scrollTop >= offsets[i]
2186 + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
2187 + && this.activate(targets[i])
2188 + }
2189 + }
2190 +
2191 + ScrollSpy.prototype.activate = function (target) {
2192 + this.activeTarget = target
2193 +
2194 + this.clear()
2195 +
2196 + var selector = this.selector +
2197 + '[data-target="' + target + '"],' +
2198 + this.selector + '[href="' + target + '"]'
2199 +
2200 + var active = $(selector)
2201 + .parents('li')
2202 + .addClass('active')
2203 +
2204 + if (active.parent('.dropdown-menu').length) {
2205 + active = active
2206 + .closest('li.dropdown')
2207 + .addClass('active')
2208 + }
2209 +
2210 + active.trigger('activate.bs.scrollspy')
2211 + }
2212 +
2213 + ScrollSpy.prototype.clear = function () {
2214 + $(this.selector)
2215 + .parentsUntil(this.options.target, '.active')
2216 + .removeClass('active')
2217 + }
2218 +
2219 +
2220 + // SCROLLSPY PLUGIN DEFINITION
2221 + // ===========================
2222 +
2223 + function Plugin(option) {
2224 + return this.each(function () {
2225 + var $this = $(this)
2226 + var data = $this.data('bs.scrollspy')
2227 + var options = typeof option == 'object' && option
2228 +
2229 + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
2230 + if (typeof option == 'string') data[option]()
2231 + })
2232 + }
2233 +
2234 + var old = $.fn.scrollspy
2235 +
2236 + $.fn.scrollspy = Plugin
2237 + $.fn.scrollspy.Constructor = ScrollSpy
2238 +
2239 +
2240 + // SCROLLSPY NO CONFLICT
2241 + // =====================
2242 +
2243 + $.fn.scrollspy.noConflict = function () {
2244 + $.fn.scrollspy = old
2245 + return this
2246 + }
2247 +
2248 +
2249 + // SCROLLSPY DATA-API
2250 + // ==================
2251 +
2252 + $(window).on('load.bs.scrollspy.data-api', function () {
2253 + $('[data-spy="scroll"]').each(function () {
2254 + var $spy = $(this)
2255 + Plugin.call($spy, $spy.data())
2256 + })
2257 + })
2258 +
2259 +}(jQuery);
2260 +
2261 +/* ========================================================================
2262 + * Bootstrap: tab.js v3.4.1
2263 + * https://getbootstrap.com/docs/3.4/javascript/#tabs
2264 + * ========================================================================
2265 + * Copyright 2011-2019 Twitter, Inc.
2266 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2267 + * ======================================================================== */
2268 +
2269 +
2270 ++function ($) {
2271 + 'use strict';
2272 +
2273 + // TAB CLASS DEFINITION
2274 + // ====================
2275 +
2276 + var Tab = function (element) {
2277 + // jscs:disable requireDollarBeforejQueryAssignment
2278 + this.element = $(element)
2279 + // jscs:enable requireDollarBeforejQueryAssignment
2280 + }
2281 +
2282 + Tab.VERSION = '3.4.1'
2283 +
2284 + Tab.TRANSITION_DURATION = 150
2285 +
2286 + Tab.prototype.show = function () {
2287 + var $this = this.element
2288 + var $ul = $this.closest('ul:not(.dropdown-menu)')
2289 + var selector = $this.data('target')
2290 +
2291 + if (!selector) {
2292 + selector = $this.attr('href')
2293 + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
2294 + }
2295 +
2296 + if ($this.parent('li').hasClass('active')) return
2297 +
2298 + var $previous = $ul.find('.active:last a')
2299 + var hideEvent = $.Event('hide.bs.tab', {
2300 + relatedTarget: $this[0]
2301 + })
2302 + var showEvent = $.Event('show.bs.tab', {
2303 + relatedTarget: $previous[0]
2304 + })
2305 +
2306 + $previous.trigger(hideEvent)
2307 + $this.trigger(showEvent)
2308 +
2309 + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
2310 +
2311 + var $target = $(document).find(selector)
2312 +
2313 + this.activate($this.closest('li'), $ul)
2314 + this.activate($target, $target.parent(), function () {
2315 + $previous.trigger({
2316 + type: 'hidden.bs.tab',
2317 + relatedTarget: $this[0]
2318 + })
2319 + $this.trigger({
2320 + type: 'shown.bs.tab',
2321 + relatedTarget: $previous[0]
2322 + })
2323 + })
2324 + }
2325 +
2326 + Tab.prototype.activate = function (element, container, callback) {
2327 + var $active = container.find('> .active')
2328 + var transition = callback
2329 + && $.support.transition
2330 + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
2331 +
2332 + function next() {
2333 + $active
2334 + .removeClass('active')
2335 + .find('> .dropdown-menu > .active')
2336 + .removeClass('active')
2337 + .end()
2338 + .find('[data-toggle="tab"]')
2339 + .attr('aria-expanded', false)
2340 +
2341 + element
2342 + .addClass('active')
2343 + .find('[data-toggle="tab"]')
2344 + .attr('aria-expanded', true)
2345 +
2346 + if (transition) {
2347 + element[0].offsetWidth // reflow for transition
2348 + element.addClass('in')
2349 + } else {
2350 + element.removeClass('fade')
2351 + }
2352 +
2353 + if (element.parent('.dropdown-menu').length) {
2354 + element
2355 + .closest('li.dropdown')
2356 + .addClass('active')
2357 + .end()
2358 + .find('[data-toggle="tab"]')
2359 + .attr('aria-expanded', true)
2360 + }
2361 +
2362 + callback && callback()
2363 + }
2364 +
2365 + $active.length && transition ?
2366 + $active
2367 + .one('bsTransitionEnd', next)
2368 + .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
2369 + next()
2370 +
2371 + $active.removeClass('in')
2372 + }
2373 +
2374 +
2375 + // TAB PLUGIN DEFINITION
2376 + // =====================
2377 +
2378 + function Plugin(option) {
2379 + return this.each(function () {
2380 + var $this = $(this)
2381 + var data = $this.data('bs.tab')
2382 +
2383 + if (!data) $this.data('bs.tab', (data = new Tab(this)))
2384 + if (typeof option == 'string') data[option]()
2385 + })
2386 + }
2387 +
2388 + var old = $.fn.tab
2389 +
2390 + $.fn.tab = Plugin
2391 + $.fn.tab.Constructor = Tab
2392 +
2393 +
2394 + // TAB NO CONFLICT
2395 + // ===============
2396 +
2397 + $.fn.tab.noConflict = function () {
2398 + $.fn.tab = old
2399 + return this
2400 + }
2401 +
2402 +
2403 + // TAB DATA-API
2404 + // ============
2405 +
2406 + var clickHandler = function (e) {
2407 + e.preventDefault()
2408 + Plugin.call($(this), 'show')
2409 + }
2410 +
2411 + $(document)
2412 + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
2413 + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
2414 +
2415 +}(jQuery);
2416 +
2417 +/* ========================================================================
2418 + * Bootstrap: affix.js v3.4.1
2419 + * https://getbootstrap.com/docs/3.4/javascript/#affix
2420 + * ========================================================================
2421 + * Copyright 2011-2019 Twitter, Inc.
2422 + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2423 + * ======================================================================== */
2424 +
2425 +
2426 ++function ($) {
2427 + 'use strict';
2428 +
2429 + // AFFIX CLASS DEFINITION
2430 + // ======================
2431 +
2432 + var Affix = function (element, options) {
2433 + this.options = $.extend({}, Affix.DEFAULTS, options)
2434 +
2435 + var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
2436 +
2437 + this.$target = target
2438 + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
2439 + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
2440 +
2441 + this.$element = $(element)
2442 + this.affixed = null
2443 + this.unpin = null
2444 + this.pinnedOffset = null
2445 +
2446 + this.checkPosition()
2447 + }
2448 +
2449 + Affix.VERSION = '3.4.1'
2450 +
2451 + Affix.RESET = 'affix affix-top affix-bottom'
2452 +
2453 + Affix.DEFAULTS = {
2454 + offset: 0,
2455 + target: window
2456 + }
2457 +
2458 + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
2459 + var scrollTop = this.$target.scrollTop()
2460 + var position = this.$element.offset()
2461 + var targetHeight = this.$target.height()
2462 +
2463 + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
2464 +
2465 + if (this.affixed == 'bottom') {
2466 + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
2467 + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
2468 + }
2469 +
2470 + var initializing = this.affixed == null
2471 + var colliderTop = initializing ? scrollTop : position.top
2472 + var colliderHeight = initializing ? targetHeight : height
2473 +
2474 + if (offsetTop != null && scrollTop <= offsetTop) return 'top'
2475 + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
2476 +
2477 + return false
2478 + }
2479 +
2480 + Affix.prototype.getPinnedOffset = function () {
2481 + if (this.pinnedOffset) return this.pinnedOffset
2482 + this.$element.removeClass(Affix.RESET).addClass('affix')
2483 + var scrollTop = this.$target.scrollTop()
2484 + var position = this.$element.offset()
2485 + return (this.pinnedOffset = position.top - scrollTop)
2486 + }
2487 +
2488 + Affix.prototype.checkPositionWithEventLoop = function () {
2489 + setTimeout($.proxy(this.checkPosition, this), 1)
2490 + }
2491 +
2492 + Affix.prototype.checkPosition = function () {
2493 + if (!this.$element.is(':visible')) return
2494 +
2495 + var height = this.$element.height()
2496 + var offset = this.options.offset
2497 + var offsetTop = offset.top
2498 + var offsetBottom = offset.bottom
2499 + var scrollHeight = Math.max($(document).height(), $(document.body).height())
2500 +
2501 + if (typeof offset != 'object') offsetBottom = offsetTop = offset
2502 + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
2503 + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
2504 +
2505 + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
2506 +
2507 + if (this.affixed != affix) {
2508 + if (this.unpin != null) this.$element.css('top', '')
2509 +
2510 + var affixType = 'affix' + (affix ? '-' + affix : '')
2511 + var e = $.Event(affixType + '.bs.affix')
2512 +
2513 + this.$element.trigger(e)
2514 +
2515 + if (e.isDefaultPrevented()) return
2516 +
2517 + this.affixed = affix
2518 + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
2519 +
2520 + this.$element
2521 + .removeClass(Affix.RESET)
2522 + .addClass(affixType)
2523 + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
2524 + }
2525 +
2526 + if (affix == 'bottom') {
2527 + this.$element.offset({
2528 + top: scrollHeight - height - offsetBottom
2529 + })
2530 + }
2531 + }
2532 +
2533 +
2534 + // AFFIX PLUGIN DEFINITION
2535 + // =======================
2536 +
2537 + function Plugin(option) {
2538 + return this.each(function () {
2539 + var $this = $(this)
2540 + var data = $this.data('bs.affix')
2541 + var options = typeof option == 'object' && option
2542 +
2543 + if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
2544 + if (typeof option == 'string') data[option]()
2545 + })
2546 + }
2547 +
2548 + var old = $.fn.affix
2549 +
2550 + $.fn.affix = Plugin
2551 + $.fn.affix.Constructor = Affix
2552 +
2553 +
2554 + // AFFIX NO CONFLICT
2555 + // =================
2556 +
2557 + $.fn.affix.noConflict = function () {
2558 + $.fn.affix = old
2559 + return this
2560 + }
2561 +
2562 +
2563 + // AFFIX DATA-API
2564 + // ==============
2565 +
2566 + $(window).on('load', function () {
2567 + $('[data-spy="affix"]').each(function () {
2568 + var $spy = $(this)
2569 + var data = $spy.data()
2570 +
2571 + data.offset = data.offset || {}
2572 +
2573 + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
2574 + if (data.offsetTop != null) data.offset.top = data.offsetTop
2575 +
2576 + Plugin.call($spy, data)
2577 + })
2578 + })
2579 +
2580 +}(jQuery);
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/bootstrap.min.js new
+6
@@ -0,0 +1,6 @@
1 +/*!
2 + * Bootstrap v3.4.1 (https://getbootstrap.com/)
3 + * Copyright 2011-2019 Twitter, Inc.
4 + * Licensed under the MIT license
5 + */
6 +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");!function(t){"use strict";var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||3<e[0])throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(),function(n){"use strict";n.fn.emulateTransitionEnd=function(t){var e=!1,i=this;n(this).one("bsTransitionEnd",function(){e=!0});return setTimeout(function(){e||n(i).trigger(n.support.transition.end)},t),this},n(function(){n.support.transition=function o(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(t.style[i]!==undefined)return{end:e[i]};return!1}(),n.support.transition&&(n.event.special.bsTransitionEnd={bindType:n.support.transition.end,delegateType:n.support.transition.end,handle:function(t){if(n(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}})})}(jQuery),function(s){"use strict";var e='[data-dismiss="alert"]',a=function(t){s(t).on("click",e,this.close)};a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.close=function(t){var e=s(this),i=e.attr("data-target");i||(i=(i=e.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),i="#"===i?[]:i;var o=s(document).find(i);function n(){o.detach().trigger("closed.bs.alert").remove()}t&&t.preventDefault(),o.length||(o=e.closest(".alert")),o.trigger(t=s.Event("close.bs.alert")),t.isDefaultPrevented()||(o.removeClass("in"),s.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",n).emulateTransitionEnd(a.TRANSITION_DURATION):n())};var t=s.fn.alert;s.fn.alert=function o(i){return this.each(function(){var t=s(this),e=t.data("bs.alert");e||t.data("bs.alert",e=new a(this)),"string"==typeof i&&e[i].call(t)})},s.fn.alert.Constructor=a,s.fn.alert.noConflict=function(){return s.fn.alert=t,this},s(document).on("click.bs.alert.data-api",e,a.prototype.close)}(jQuery),function(s){"use strict";var n=function(t,e){this.$element=s(t),this.options=s.extend({},n.DEFAULTS,e),this.isLoading=!1};function i(o){return this.each(function(){var t=s(this),e=t.data("bs.button"),i="object"==typeof o&&o;e||t.data("bs.button",e=new n(this,i)),"toggle"==o?e.toggle():o&&e.setState(o)})}n.VERSION="3.4.1",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(t){var e="disabled",i=this.$element,o=i.is("input")?"val":"html",n=i.data();t+="Text",null==n.resetText&&i.data("resetText",i[o]()),setTimeout(s.proxy(function(){i[o](null==n[t]?this.options[t]:n[t]),"loadingText"==t?(this.isLoading=!0,i.addClass(e).attr(e,e).prop(e,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(e).removeAttr(e).prop(e,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")?(i.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==i.prop("type")&&(i.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),i.prop("checked",this.$element.hasClass("active")),t&&i.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var t=s.fn.button;s.fn.button=i,s.fn.button.Constructor=n,s.fn.button.noConflict=function(){return s.fn.button=t,this},s(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(t){var e=s(t.target).closest(".btn");i.call(e,"toggle"),s(t.target).is('input[type="radio"], input[type="checkbox"]')||(t.preventDefault(),e.is("input,button")?e.trigger("focus"):e.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(t){s(t.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(t.type))})}(jQuery),function(p){"use strict";var c=function(t,e){this.$element=p(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=e,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",p.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",p.proxy(this.pause,this)).on("mouseleave.bs.carousel",p.proxy(this.cycle,this))};function r(n){return this.each(function(){var t=p(this),e=t.data("bs.carousel"),i=p.extend({},c.DEFAULTS,t.data(),"object"==typeof n&&n),o="string"==typeof n?n:i.slide;e||t.data("bs.carousel",e=new c(this,i)),"number"==typeof n?e.to(n):o?e[o]():i.interval&&e.pause().cycle()})}c.VERSION="3.4.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},c.prototype.cycle=function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(p.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},c.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e);if(("prev"==t&&0===i||"next"==t&&i==this.$items.length-1)&&!this.options.wrap)return e;var o=(i+("prev"==t?-1:1))%this.$items.length;return this.$items.eq(o)},c.prototype.to=function(t){var e=this,i=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(i<t?"next":"prev",this.$items.eq(t))},c.prototype.pause=function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&p.support.transition&&(this.$element.trigger(p.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(t,e){var i=this.$element.find(".item.active"),o=e||this.getItemForDirection(t,i),n=this.interval,s="next"==t?"left":"right",a=this;if(o.hasClass("active"))return this.sliding=!1;var r=o[0],l=p.Event("slide.bs.carousel",{relatedTarget:r,direction:s});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,n&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=p(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=p.Event("slid.bs.carousel",{relatedTarget:r,direction:s});return p.support.transition&&this.$element.hasClass("slide")?(o.addClass(t),"object"==typeof o&&o.length&&o[0].offsetWidth,i.addClass(s),o.addClass(s),i.one("bsTransitionEnd",function(){o.removeClass([t,s].join(" ")).addClass("active"),i.removeClass(["active",s].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger(d)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(i.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),n&&this.cycle(),this}};var t=p.fn.carousel;p.fn.carousel=r,p.fn.carousel.Constructor=c,p.fn.carousel.noConflict=function(){return p.fn.carousel=t,this};var e=function(t){var e=p(this),i=e.attr("href");i&&(i=i.replace(/.*(?=#[^\s]+$)/,""));var o=e.attr("data-target")||i,n=p(document).find(o);if(n.hasClass("carousel")){var s=p.extend({},n.data(),e.data()),a=e.attr("data-slide-to");a&&(s.interval=!1),r.call(n,s),a&&n.data("bs.carousel").to(a),t.preventDefault()}};p(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),p(window).on("load",function(){p('[data-ride="carousel"]').each(function(){var t=p(this);r.call(t,t.data())})})}(jQuery),function(a){"use strict";var r=function(t,e){this.$element=a(t),this.options=a.extend({},r.DEFAULTS,e),this.$trigger=a('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};function n(t){var e,i=t.attr("data-target")||(e=t.attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"");return a(document).find(i)}function l(o){return this.each(function(){var t=a(this),e=t.data("bs.collapse"),i=a.extend({},r.DEFAULTS,t.data(),"object"==typeof o&&o);!e&&i.toggle&&/show|hide/.test(o)&&(i.toggle=!1),e||t.data("bs.collapse",e=new r(this,i)),"string"==typeof o&&e[o]()})}r.VERSION="3.4.1",r.TRANSITION_DURATION=350,r.DEFAULTS={toggle:!0},r.prototype.dimension=function(){return this.$element.hasClass("width")?"width":"height"},r.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var t,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(t=e.data("bs.collapse"))&&t.transitioning)){var i=a.Event("show.bs.collapse");if(this.$element.trigger(i),!i.isDefaultPrevented()){e&&e.length&&(l.call(e,"hide"),t||e.data("bs.collapse",null));var o=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[o](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var n=function(){this.$element.removeClass("collapsing").addClass("collapse in")[o](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return n.call(this);var s=a.camelCase(["scroll",o].join("-"));this.$element.one("bsTransitionEnd",a.proxy(n,this)).emulateTransitionEnd(r.TRANSITION_DURATION)[o](this.$element[0][s])}}}},r.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var t=a.Event("hide.bs.collapse");if(this.$element.trigger(t),!t.isDefaultPrevented()){var e=this.dimension();this.$element[e](this.$element[e]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var i=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};if(!a.support.transition)return i.call(this);this.$element[e](0).one("bsTransitionEnd",a.proxy(i,this)).emulateTransitionEnd(r.TRANSITION_DURATION)}}},r.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},r.prototype.getParent=function(){return a(document).find(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(t,e){var i=a(e);this.addAriaAndCollapsedClass(n(i),i)},this)).end()},r.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass("in");t.attr("aria-expanded",i),e.toggleClass("collapsed",!i).attr("aria-expanded",i)};var t=a.fn.collapse;a.fn.collapse=l,a.fn.collapse.Constructor=r,a.fn.collapse.noConflict=function(){return a.fn.collapse=t,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(t){var e=a(this);e.attr("data-target")||t.preventDefault();var i=n(e),o=i.data("bs.collapse")?"toggle":e.data();l.call(i,o)})}(jQuery),function(a){"use strict";var r='[data-toggle="dropdown"]',o=function(t){a(t).on("click.bs.dropdown",this.toggle)};function l(t){var e=t.attr("data-target");e||(e=(e=t.attr("href"))&&/#[A-Za-z]/.test(e)&&e.replace(/.*(?=#[^\s]*$)/,""));var i="#"!==e?a(document).find(e):null;return i&&i.length?i:t.parent()}function s(o){o&&3===o.which||(a(".dropdown-backdrop").remove(),a(r).each(function(){var t=a(this),e=l(t),i={relatedTarget:this};e.hasClass("open")&&(o&&"click"==o.type&&/input|textarea/i.test(o.target.tagName)&&a.contains(e[0],o.target)||(e.trigger(o=a.Event("hide.bs.dropdown",i)),o.isDefaultPrevented()||(t.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",i)))))}))}o.VERSION="3.4.1",o.prototype.toggle=function(t){var e=a(this);if(!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(s(),!o){"ontouchstart"in document.documentElement&&!i.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",s);var n={relatedTarget:this};if(i.trigger(t=a.Event("show.bs.dropdown",n)),t.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),i.toggleClass("open").trigger(a.Event("shown.bs.dropdown",n))}return!1}},o.prototype.keydown=function(t){if(/(38|40|27|32)/.test(t.which)&&!/input|textarea/i.test(t.target.tagName)){var e=a(this);if(t.preventDefault(),t.stopPropagation(),!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(!o&&27!=t.which||o&&27==t.which)return 27==t.which&&i.find(r).trigger("focus"),e.trigger("click");var n=i.find(".dropdown-menu li:not(.disabled):visible a");if(n.length){var s=n.index(t.target);38==t.which&&0<s&&s--,40==t.which&&s<n.length-1&&s++,~s||(s=0),n.eq(s).trigger("focus")}}}};var t=a.fn.dropdown;a.fn.dropdown=function e(i){return this.each(function(){var t=a(this),e=t.data("bs.dropdown");e||t.data("bs.dropdown",e=new o(this)),"string"==typeof i&&e[i].call(t)})},a.fn.dropdown.Constructor=o,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=t,this},a(document).on("click.bs.dropdown.data-api",s).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",r,o.prototype.toggle).on("keydown.bs.dropdown.data-api",r,o.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",o.prototype.keydown)}(jQuery),function(a){"use strict";var s=function(t,e){this.options=e,this.$body=a(document.body),this.$element=a(t),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.fixedContent=".navbar-fixed-top, .navbar-fixed-bottom",this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};function r(o,n){return this.each(function(){var t=a(this),e=t.data("bs.modal"),i=a.extend({},s.DEFAULTS,t.data(),"object"==typeof o&&o);e||t.data("bs.modal",e=new s(this,i)),"string"==typeof o?e[o](n):i.show&&e.show(n)})}s.VERSION="3.4.1",s.TRANSITION_DURATION=300,s.BACKDROP_TRANSITION_DURATION=150,s.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},s.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},s.prototype.show=function(i){var o=this,t=a.Event("show.bs.modal",{relatedTarget:i});this.$element.trigger(t),this.isShown||t.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){o.$element.one("mouseup.dismiss.bs.modal",function(t){a(t.target).is(o.$element)&&(o.ignoreBackdropClick=!0)})}),this.backdrop(function(){var t=a.support.transition&&o.$element.hasClass("fade");o.$element.parent().length||o.$element.appendTo(o.$body),o.$element.show().scrollTop(0),o.adjustDialog(),t&&o.$element[0].offsetWidth,o.$element.addClass("in"),o.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:i});t?o.$dialog.one("bsTransitionEnd",function(){o.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(s.TRANSITION_DURATION):o.$element.trigger("focus").trigger(e)}))},s.prototype.hide=function(t){t&&t.preventDefault(),t=a.Event("hide.bs.modal"),this.$element.trigger(t),this.isShown&&!t.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(s.TRANSITION_DURATION):this.hideModal())},s.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},s.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},s.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},s.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},s.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},s.prototype.backdrop=function(t){var e=this,i=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=a.support.transition&&i;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+i).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(t){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide())},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!t)return;o?this.$backdrop.one("bsTransitionEnd",t).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):t()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var n=function(){e.removeBackdrop(),t&&t()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",n).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):n()}else t&&t()},s.prototype.handleUpdate=function(){this.adjustDialog()},s.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},s.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},s.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},s.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"";var n=this.scrollbarWidth;this.bodyIsOverflowing&&(this.$body.css("padding-right",t+n),a(this.fixedContent).each(function(t,e){var i=e.style.paddingRight,o=a(e).css("padding-right");a(e).data("padding-right",i).css("padding-right",parseFloat(o)+n+"px")}))},s.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad),a(this.fixedContent).each(function(t,e){var i=a(e).data("padding-right");a(e).removeData("padding-right"),e.style.paddingRight=i||""})},s.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var t=a.fn.modal;a.fn.modal=r,a.fn.modal.Constructor=s,a.fn.modal.noConflict=function(){return a.fn.modal=t,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(t){var e=a(this),i=e.attr("href"),o=e.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,""),n=a(document).find(o),s=n.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(i)&&i},n.data(),e.data());e.is("a")&&t.preventDefault(),n.one("show.bs.modal",function(t){t.isDefaultPrevented()||n.one("hidden.bs.modal",function(){e.is(":visible")&&e.trigger("focus")})}),r.call(n,s,this)})}(jQuery),function(g){"use strict";var o=["sanitize","whiteList","sanitizeFn"],a=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],t={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},r=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,l=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function u(t,e){var i=t.nodeName.toLowerCase();if(-1!==g.inArray(i,e))return-1===g.inArray(i,a)||Boolean(t.nodeValue.match(r)||t.nodeValue.match(l));for(var o=g(e).filter(function(t,e){return e instanceof RegExp}),n=0,s=o.length;n<s;n++)if(i.match(o[n]))return!0;return!1}function n(t,e,i){if(0===t.length)return t;if(i&&"function"==typeof i)return i(t);if(!document.implementation||!document.implementation.createHTMLDocument)return t;var o=document.implementation.createHTMLDocument("sanitization");o.body.innerHTML=t;for(var n=g.map(e,function(t,e){return e}),s=g(o.body).find("*"),a=0,r=s.length;a<r;a++){var l=s[a],h=l.nodeName.toLowerCase();if(-1!==g.inArray(h,n))for(var d=g.map(l.attributes,function(t){return t}),p=[].concat(e["*"]||[],e[h]||[]),c=0,f=d.length;c<f;c++)u(d[c],p)||l.removeAttribute(d[c].nodeName);else l.parentNode.removeChild(l)}return o.body.innerHTML}var m=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};m.VERSION="3.4.1",m.TRANSITION_DURATION=150,m.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:t},m.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=g(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&g(document).find(g.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var o=this.options.trigger.split(" "),n=o.length;n--;){var s=o[n];if("click"==s)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else if("manual"!=s){var a="hover"==s?"mouseenter":"focusin",r="hover"==s?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,g.proxy(this.enter,this)),this.$element.on(r+"."+this.type,this.options.selector,g.proxy(this.leave,this))}}this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},m.prototype.getDefaults=function(){return m.DEFAULTS},m.prototype.getOptions=function(t){var e=this.$element.data();for(var i in e)e.hasOwnProperty(i)&&-1!==g.inArray(i,o)&&delete e[i];return(t=g.extend({},this.getDefaults(),e,t)).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t.sanitize&&(t.template=n(t.template,t.whiteList,t.sanitizeFn)),t},m.prototype.getDelegateOptions=function(){var i={},o=this.getDefaults();return this._options&&g.each(this._options,function(t,e){o[t]!=e&&(i[t]=e)}),i},m.prototype.enter=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusin"==t.type?"focus":"hover"]=!0),e.tip().hasClass("in")||"in"==e.hoverState)e.hoverState="in";else{if(clearTimeout(e.timeout),e.hoverState="in",!e.options.delay||!e.options.delay.show)return e.show();e.timeout=setTimeout(function(){"in"==e.hoverState&&e.show()},e.options.delay.show)}},m.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},m.prototype.leave=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusout"==t.type?"focus":"hover"]=!1),!e.isInStateTrue()){if(clearTimeout(e.timeout),e.hoverState="out",!e.options.delay||!e.options.delay.hide)return e.hide();e.timeout=setTimeout(function(){"out"==e.hoverState&&e.hide()},e.options.delay.hide)}},m.prototype.show=function(){var t=g.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var e=g.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!e)return;var i=this,o=this.tip(),n=this.getUID(this.type);this.setContent(),o.attr("id",n),this.$element.attr("aria-describedby",n),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,a=/\s?auto?\s?/i,r=a.test(s);r&&(s=s.replace(a,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(g(document).find(this.options.container)):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var l=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(r){var p=s,c=this.getPosition(this.$viewport);s="bottom"==s&&l.bottom+d>c.bottom?"top":"top"==s&&l.top-d<c.top?"bottom":"right"==s&&l.right+h>c.width?"left":"left"==s&&l.left-h<c.left?"right":s,o.removeClass(p).addClass(s)}var f=this.getCalculatedOffset(s,l,h,d);this.applyPlacement(f,s);var u=function(){var t=i.hoverState;i.$element.trigger("shown.bs."+i.type),i.hoverState=null,"out"==t&&i.leave(i)};g.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",u).emulateTransitionEnd(m.TRANSITION_DURATION):u()}},m.prototype.applyPlacement=function(t,e){var i=this.tip(),o=i[0].offsetWidth,n=i[0].offsetHeight,s=parseInt(i.css("margin-top"),10),a=parseInt(i.css("margin-left"),10);isNaN(s)&&(s=0),isNaN(a)&&(a=0),t.top+=s,t.left+=a,g.offset.setOffset(i[0],g.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},t),0),i.addClass("in");var r=i[0].offsetWidth,l=i[0].offsetHeight;"top"==e&&l!=n&&(t.top=t.top+n-l);var h=this.getViewportAdjustedDelta(e,t,r,l);h.left?t.left+=h.left:t.top+=h.top;var d=/top|bottom/.test(e),p=d?2*h.left-o+r:2*h.top-n+l,c=d?"offsetWidth":"offsetHeight";i.offset(t),this.replaceArrow(p,i[0][c],d)},m.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?"left":"top",50*(1-t/e)+"%").css(i?"top":"left","")},m.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();this.options.html?(this.options.sanitize&&(e=n(e,this.options.whiteList,this.options.sanitizeFn)),t.find(".tooltip-inner").html(e)):t.find(".tooltip-inner").text(e),t.removeClass("fade in top bottom left right")},m.prototype.hide=function(t){var e=this,i=g(this.$tip),o=g.Event("hide.bs."+this.type);function n(){"in"!=e.hoverState&&i.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),t&&t()}if(this.$element.trigger(o),!o.isDefaultPrevented())return i.removeClass("in"),g.support.transition&&i.hasClass("fade")?i.one("bsTransitionEnd",n).emulateTransitionEnd(m.TRANSITION_DURATION):n(),this.hoverState=null,this},m.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},m.prototype.hasContent=function(){return this.getTitle()},m.prototype.getPosition=function(t){var e=(t=t||this.$element)[0],i="BODY"==e.tagName,o=e.getBoundingClientRect();null==o.width&&(o=g.extend({},o,{width:o.right-o.left,height:o.bottom-o.top}));var n=window.SVGElement&&e instanceof window.SVGElement,s=i?{top:0,left:0}:n?null:t.offset(),a={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop()},r=i?{width:g(window).width(),height:g(window).height()}:null;return g.extend({},o,a,r,s)},m.prototype.getCalculatedOffset=function(t,e,i,o){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-i/2}:"top"==t?{top:e.top-o,left:e.left+e.width/2-i/2}:"left"==t?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}},m.prototype.getViewportAdjustedDelta=function(t,e,i,o){var n={top:0,left:0};if(!this.$viewport)return n;var s=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var r=e.top-s-a.scroll,l=e.top+s-a.scroll+o;r<a.top?n.top=a.top-r:l>a.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;h<a.left?n.left=a.left-h:d>a.right&&(n.left=a.left+a.width-d)}return n},m.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},m.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},m.prototype.tip=function(){if(!this.$tip&&(this.$tip=g(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},m.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},m.prototype.enable=function(){this.enabled=!0},m.prototype.disable=function(){this.enabled=!1},m.prototype.toggleEnabled=function(){this.enabled=!this.enabled},m.prototype.toggle=function(t){var e=this;t&&((e=g(t.currentTarget).data("bs."+this.type))||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e))),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass("in")?e.leave(e):e.enter(e)},m.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})},m.prototype.sanitizeHtml=function(t){return n(t,this.options.whiteList,this.options.sanitizeFn)};var e=g.fn.tooltip;g.fn.tooltip=function i(o){return this.each(function(){var t=g(this),e=t.data("bs.tooltip"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.tooltip",e=new m(this,i)),"string"==typeof o&&e[o]())})},g.fn.tooltip.Constructor=m,g.fn.tooltip.noConflict=function(){return g.fn.tooltip=e,this}}(jQuery),function(n){"use strict";var s=function(t,e){this.init("popover",t,e)};if(!n.fn.tooltip)throw new Error("Popover requires tooltip.js");s.VERSION="3.4.1",s.DEFAULTS=n.extend({},n.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),((s.prototype=n.extend({},n.fn.tooltip.Constructor.prototype)).constructor=s).prototype.getDefaults=function(){return s.DEFAULTS},s.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();if(this.options.html){var o=typeof i;this.options.sanitize&&(e=this.sanitizeHtml(e),"string"===o&&(i=this.sanitizeHtml(i))),t.find(".popover-title").html(e),t.find(".popover-content").children().detach().end()["string"===o?"html":"append"](i)}else t.find(".popover-title").text(e),t.find(".popover-content").children().detach().end().text(i);t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},s.prototype.hasContent=function(){return this.getTitle()||this.getContent()},s.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var t=n.fn.popover;n.fn.popover=function e(o){return this.each(function(){var t=n(this),e=t.data("bs.popover"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.popover",e=new s(this,i)),"string"==typeof o&&e[o]())})},n.fn.popover.Constructor=s,n.fn.popover.noConflict=function(){return n.fn.popover=t,this}}(jQuery),function(s){"use strict";function n(t,e){this.$body=s(document.body),this.$scrollElement=s(t).is(document.body)?s(window):s(t),this.options=s.extend({},n.DEFAULTS,e),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",s.proxy(this.process,this)),this.refresh(),this.process()}function e(o){return this.each(function(){var t=s(this),e=t.data("bs.scrollspy"),i="object"==typeof o&&o;e||t.data("bs.scrollspy",e=new n(this,i)),"string"==typeof o&&e[o]()})}n.VERSION="3.4.1",n.DEFAULTS={offset:10},n.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},n.prototype.refresh=function(){var t=this,o="offset",n=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),s.isWindow(this.$scrollElement[0])||(o="position",n=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=s(this),e=t.data("target")||t.attr("href"),i=/^#./.test(e)&&s(e);return i&&i.length&&i.is(":visible")&&[[i[o]().top+n,e]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},n.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),o<=e)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e<n[0])return this.activeTarget=null,this.clear();for(t=n.length;t--;)a!=s[t]&&e>=n[t]&&(n[t+1]===undefined||e<n[t+1])&&this.activate(s[t])},n.prototype.activate=function(t){this.activeTarget=t,this.clear();var e=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',i=s(e).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},n.prototype.clear=function(){s(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var t=s.fn.scrollspy;s.fn.scrollspy=e,s.fn.scrollspy.Constructor=n,s.fn.scrollspy.noConflict=function(){return s.fn.scrollspy=t,this},s(window).on("load.bs.scrollspy.data-api",function(){s('[data-spy="scroll"]').each(function(){var t=s(this);e.call(t,t.data())})})}(jQuery),function(r){"use strict";var a=function(t){this.element=r(t)};function e(i){return this.each(function(){var t=r(this),e=t.data("bs.tab");e||t.data("bs.tab",e=new a(this)),"string"==typeof i&&e[i]()})}a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.show=function(){var t=this.element,e=t.closest("ul:not(.dropdown-menu)"),i=t.data("target");if(i||(i=(i=t.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),!t.parent("li").hasClass("active")){var o=e.find(".active:last a"),n=r.Event("hide.bs.tab",{relatedTarget:t[0]}),s=r.Event("show.bs.tab",{relatedTarget:o[0]});if(o.trigger(n),t.trigger(s),!s.isDefaultPrevented()&&!n.isDefaultPrevented()){var a=r(document).find(i);this.activate(t.closest("li"),e),this.activate(a,a.parent(),function(){o.trigger({type:"hidden.bs.tab",relatedTarget:t[0]}),t.trigger({type:"shown.bs.tab",relatedTarget:o[0]})})}}},a.prototype.activate=function(t,e,i){var o=e.find("> .active"),n=i&&r.support.transition&&(o.length&&o.hasClass("fade")||!!e.find("> .fade").length);function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),t.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),n?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu").length&&t.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}o.length&&n?o.one("bsTransitionEnd",s).emulateTransitionEnd(a.TRANSITION_DURATION):s(),o.removeClass("in")};var t=r.fn.tab;r.fn.tab=e,r.fn.tab.Constructor=a,r.fn.tab.noConflict=function(){return r.fn.tab=t,this};var i=function(t){t.preventDefault(),e.call(r(this),"show")};r(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(l){"use strict";var h=function(t,e){this.options=l.extend({},h.DEFAULTS,e);var i=this.options.target===h.DEFAULTS.target?l(this.options.target):l(document).find(this.options.target);this.$target=i.on("scroll.bs.affix.data-api",l.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",l.proxy(this.checkPositionWithEventLoop,this)),this.$element=l(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function i(o){return this.each(function(){var t=l(this),e=t.data("bs.affix"),i="object"==typeof o&&o;e||t.data("bs.affix",e=new h(this,i)),"string"==typeof o&&e[o]()})}h.VERSION="3.4.1",h.RESET="affix affix-top affix-bottom",h.DEFAULTS={offset:0,target:window},h.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return n<i&&"top";if("bottom"==this.affixed)return null!=i?!(n+this.unpin<=s.top)&&"bottom":!(n+a<=t-o)&&"bottom";var r=null==this.affixed,l=r?n:s.top;return null!=i&&n<=i?"top":null!=o&&t-o<=l+(r?a:e)&&"bottom"},h.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(h.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},h.prototype.checkPositionWithEventLoop=function(){setTimeout(l.proxy(this.checkPosition,this),1)},h.prototype.checkPosition=function(){if(this.$element.is(":visible")){var t=this.$element.height(),e=this.options.offset,i=e.top,o=e.bottom,n=Math.max(l(document).height(),l(document.body).height());"object"!=typeof e&&(o=i=e),"function"==typeof i&&(i=e.top(this.$element)),"function"==typeof o&&(o=e.bottom(this.$element));var s=this.getState(n,t,i,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var a="affix"+(s?"-"+s:""),r=l.Event(a+".bs.affix");if(this.$element.trigger(r),r.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(h.RESET).addClass(a).trigger(a.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:n-t-o})}};var t=l.fn.affix;l.fn.affix=i,l.fn.affix.Constructor=h,l.fn.affix.noConflict=function(){return l.fn.affix=t,this},l(window).on("load",function(){l('[data-spy="affix"]').each(function(){var t=l(this),e=t.data();e.offset=e.offset||{},null!=e.offsetBottom&&(e.offset.bottom=e.offsetBottom),null!=e.offsetTop&&(e.offset.top=e.offsetTop),i.call(t,e)})})}(jQuery);
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.intellisense.js new
+2670
@@ -0,0 +1,2670 @@
1 +intellisense.annotate(jQuery, {
2 + 'ajax': function() {
3 + /// <signature>
4 + /// <summary>Perform an asynchronous HTTP (Ajax) request.</summary>
5 + /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
6 + /// <param name="settings" type="PlainObject">A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings.</param>
7 + /// <returns type="jqXHR" />
8 + /// </signature>
9 + /// <signature>
10 + /// <summary>Perform an asynchronous HTTP (Ajax) request.</summary>
11 + /// <param name="settings" type="PlainObject">A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup().</param>
12 + /// <returns type="jqXHR" />
13 + /// </signature>
14 + },
15 + 'ajaxPrefilter': function() {
16 + /// <signature>
17 + /// <summary>Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax().</summary>
18 + /// <param name="dataTypes" type="String">An optional string containing one or more space-separated dataTypes</param>
19 + /// <param name="handler(options, originalOptions, jqXHR)" type="Function">A handler to set default values for future Ajax requests.</param>
20 + /// </signature>
21 + },
22 + 'ajaxSetup': function() {
23 + /// <signature>
24 + /// <summary>Set default values for future Ajax requests. Its use is not recommended.</summary>
25 + /// <param name="options" type="PlainObject">A set of key/value pairs that configure the default Ajax request. All options are optional.</param>
26 + /// </signature>
27 + },
28 + 'ajaxTransport': function() {
29 + /// <signature>
30 + /// <summary>Creates an object that handles the actual transmission of Ajax data.</summary>
31 + /// <param name="dataType" type="String">A string identifying the data type to use</param>
32 + /// <param name="handler(options, originalOptions, jqXHR)" type="Function">A handler to return the new transport object to use with the data type provided in the first argument.</param>
33 + /// </signature>
34 + },
35 + 'boxModel': function() {
36 + /// <summary>Deprecated in jQuery 1.3 (see jQuery.support). States if the current page, in the user's browser, is being rendered using the W3C CSS Box Model.</summary>
37 + /// <returns type="Boolean" />
38 + },
39 + 'browser': function() {
40 + /// <summary>Contains flags for the useragent, read from navigator.userAgent. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin. Please try to use feature detection instead.</summary>
41 + /// <returns type="PlainObject" />
42 + },
43 + 'browser.version': function() {
44 + /// <summary>The version number of the rendering engine for the user's browser. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin.</summary>
45 + /// <returns type="String" />
46 + },
47 + 'Callbacks': function() {
48 + /// <signature>
49 + /// <summary>A multi-purpose callbacks list object that provides a powerful way to manage callback lists.</summary>
50 + /// <param name="flags" type="String">An optional list of space-separated flags that change how the callback list behaves.</param>
51 + /// <returns type="Callbacks" />
52 + /// </signature>
53 + },
54 + 'contains': function() {
55 + /// <signature>
56 + /// <summary>Check to see if a DOM element is a descendant of another DOM element.</summary>
57 + /// <param name="container" type="Element">The DOM element that may contain the other element.</param>
58 + /// <param name="contained" type="Element">The DOM element that may be contained by (a descendant of) the other element.</param>
59 + /// <returns type="Boolean" />
60 + /// </signature>
61 + },
62 + 'cssHooks': function() {
63 + /// <summary>Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize CSS property naming, or create custom properties.</summary>
64 + /// <returns type="Object" />
65 + },
66 + 'data': function() {
67 + /// <signature>
68 + /// <summary>Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element.</summary>
69 + /// <param name="element" type="Element">The DOM element to query for the data.</param>
70 + /// <param name="key" type="String">Name of the data stored.</param>
71 + /// <returns type="Object" />
72 + /// </signature>
73 + /// <signature>
74 + /// <summary>Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element.</summary>
75 + /// <param name="element" type="Element">The DOM element to query for the data.</param>
76 + /// <returns type="Object" />
77 + /// </signature>
78 + },
79 + 'Deferred': function() {
80 + /// <signature>
81 + /// <summary>A constructor function that returns a chainable utility object with methods to register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function.</summary>
82 + /// <param name="beforeStart" type="Function">A function that is called just before the constructor returns.</param>
83 + /// <returns type="Deferred" />
84 + /// </signature>
85 + },
86 + 'dequeue': function() {
87 + /// <signature>
88 + /// <summary>Execute the next function on the queue for the matched element.</summary>
89 + /// <param name="element" type="Element">A DOM element from which to remove and execute a queued function.</param>
90 + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
91 + /// </signature>
92 + },
93 + 'each': function() {
94 + /// <signature>
95 + /// <summary>A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties.</summary>
96 + /// <param name="collection" type="Object">The object or array to iterate over.</param>
97 + /// <param name="callback(indexInArray, valueOfElement)" type="Function">The function that will be executed on every object.</param>
98 + /// <returns type="Object" />
99 + /// </signature>
100 + },
101 + 'error': function() {
102 + /// <signature>
103 + /// <summary>Takes a string and throws an exception containing it.</summary>
104 + /// <param name="message" type="String">The message to send out.</param>
105 + /// </signature>
106 + },
107 + 'extend': function() {
108 + /// <signature>
109 + /// <summary>Merge the contents of two or more objects together into the first object.</summary>
110 + /// <param name="target" type="Object">An object that will receive the new properties if additional objects are passed in or that will extend the jQuery namespace if it is the sole argument.</param>
111 + /// <param name="object1" type="Object">An object containing additional properties to merge in.</param>
112 + /// <param name="objectN" type="Object">Additional objects containing properties to merge in.</param>
113 + /// <returns type="Object" />
114 + /// </signature>
115 + /// <signature>
116 + /// <summary>Merge the contents of two or more objects together into the first object.</summary>
117 + /// <param name="deep" type="Boolean">If true, the merge becomes recursive (aka. deep copy).</param>
118 + /// <param name="target" type="Object">The object to extend. It will receive the new properties.</param>
119 + /// <param name="object1" type="Object">An object containing additional properties to merge in.</param>
120 + /// <param name="objectN" type="Object">Additional objects containing properties to merge in.</param>
121 + /// <returns type="Object" />
122 + /// </signature>
123 + },
124 + 'fn.extend': function() {
125 + /// <signature>
126 + /// <summary>Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods.</summary>
127 + /// <param name="object" type="Object">An object to merge onto the jQuery prototype.</param>
128 + /// <returns type="Object" />
129 + /// </signature>
130 + },
131 + 'get': function() {
132 + /// <signature>
133 + /// <summary>Load data from the server using a HTTP GET request.</summary>
134 + /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
135 + /// <param name="data" type="">A plain object or string that is sent to the server with the request.</param>
136 + /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
137 + /// <param name="dataType" type="String">The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html).</param>
138 + /// <returns type="jqXHR" />
139 + /// </signature>
140 + },
141 + 'getJSON': function() {
142 + /// <signature>
143 + /// <summary>Load JSON-encoded data from the server using a GET HTTP request.</summary>
144 + /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
145 + /// <param name="data" type="PlainObject">A plain object or string that is sent to the server with the request.</param>
146 + /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
147 + /// <returns type="jqXHR" />
148 + /// </signature>
149 + },
150 + 'getScript': function() {
151 + /// <signature>
152 + /// <summary>Load a JavaScript file from the server using a GET HTTP request, then execute it.</summary>
153 + /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
154 + /// <param name="success(script, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds.</param>
155 + /// <returns type="jqXHR" />
156 + /// </signature>
157 + },
158 + 'globalEval': function() {
159 + /// <signature>
160 + /// <summary>Execute some JavaScript code globally.</summary>
161 + /// <param name="code" type="String">The JavaScript code to execute.</param>
162 + /// </signature>
163 + },
164 + 'grep': function() {
165 + /// <signature>
166 + /// <summary>Finds the elements of an array which satisfy a filter function. The original array is not affected.</summary>
167 + /// <param name="array" type="Array">The array to search through.</param>
168 + /// <param name="function(elementOfArray, indexInArray)" type="Function">The function to process each item against. The first argument to the function is the item, and the second argument is the index. The function should return a Boolean value. this will be the global window object.</param>
169 + /// <param name="invert" type="Boolean">If "invert" is false, or not provided, then the function returns an array consisting of all elements for which "callback" returns true. If "invert" is true, then the function returns an array consisting of all elements for which "callback" returns false.</param>
170 + /// <returns type="Array" />
171 + /// </signature>
172 + },
173 + 'hasData': function() {
174 + /// <signature>
175 + /// <summary>Determine whether an element has any jQuery data associated with it.</summary>
176 + /// <param name="element" type="Element">A DOM element to be checked for data.</param>
177 + /// <returns type="Boolean" />
178 + /// </signature>
179 + },
180 + 'holdReady': function() {
181 + /// <signature>
182 + /// <summary>Holds or releases the execution of jQuery's ready event.</summary>
183 + /// <param name="hold" type="Boolean">Indicates whether the ready hold is being requested or released</param>
184 + /// </signature>
185 + },
186 + 'inArray': function() {
187 + /// <signature>
188 + /// <summary>Search for a specified value within an array and return its index (or -1 if not found).</summary>
189 + /// <param name="value" type="Anything">The value to search for.</param>
190 + /// <param name="array" type="Array">An array through which to search.</param>
191 + /// <param name="fromIndex" type="Number">The index of the array at which to begin the search. The default is 0, which will search the whole array.</param>
192 + /// <returns type="Number" />
193 + /// </signature>
194 + },
195 + 'isArray': function() {
196 + /// <signature>
197 + /// <summary>Determine whether the argument is an array.</summary>
198 + /// <param name="obj" type="Object">Object to test whether or not it is an array.</param>
199 + /// <returns type="Boolean" />
200 + /// </signature>
201 + },
202 + 'isEmptyObject': function() {
203 + /// <signature>
204 + /// <summary>Check to see if an object is empty (contains no enumerable properties).</summary>
205 + /// <param name="object" type="Object">The object that will be checked to see if it's empty.</param>
206 + /// <returns type="Boolean" />
207 + /// </signature>
208 + },
209 + 'isFunction': function() {
210 + /// <signature>
211 + /// <summary>Determine if the argument passed is a Javascript function object.</summary>
212 + /// <param name="obj" type="PlainObject">Object to test whether or not it is a function.</param>
213 + /// <returns type="Boolean" />
214 + /// </signature>
215 + },
216 + 'isNumeric': function() {
217 + /// <signature>
218 + /// <summary>Determines whether its argument is a number.</summary>
219 + /// <param name="value" type="PlainObject">The value to be tested.</param>
220 + /// <returns type="Boolean" />
221 + /// </signature>
222 + },
223 + 'isPlainObject': function() {
224 + /// <signature>
225 + /// <summary>Check to see if an object is a plain object (created using "{}" or "new Object").</summary>
226 + /// <param name="object" type="PlainObject">The object that will be checked to see if it's a plain object.</param>
227 + /// <returns type="Boolean" />
228 + /// </signature>
229 + },
230 + 'isWindow': function() {
231 + /// <signature>
232 + /// <summary>Determine whether the argument is a window.</summary>
233 + /// <param name="obj" type="PlainObject">Object to test whether or not it is a window.</param>
234 + /// <returns type="Boolean" />
235 + /// </signature>
236 + },
237 + 'isXMLDoc': function() {
238 + /// <signature>
239 + /// <summary>Check to see if a DOM node is within an XML document (or is an XML document).</summary>
240 + /// <param name="node" type="Element">The DOM node that will be checked to see if it's in an XML document.</param>
241 + /// <returns type="Boolean" />
242 + /// </signature>
243 + },
244 + 'makeArray': function() {
245 + /// <signature>
246 + /// <summary>Convert an array-like object into a true JavaScript array.</summary>
247 + /// <param name="obj" type="PlainObject">Any object to turn into a native Array.</param>
248 + /// <returns type="Array" />
249 + /// </signature>
250 + },
251 + 'map': function() {
252 + /// <signature>
253 + /// <summary>Translate all items in an array or object to new array of items.</summary>
254 + /// <param name="array" type="Array">The Array to translate.</param>
255 + /// <param name="callback(elementOfArray, indexInArray)" type="Function">The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object.</param>
256 + /// <returns type="Array" />
257 + /// </signature>
258 + /// <signature>
259 + /// <summary>Translate all items in an array or object to new array of items.</summary>
260 + /// <param name="arrayOrObject" type="">The Array or Object to translate.</param>
261 + /// <param name="callback( value, indexOrKey )" type="Function">The function to process each item against. The first argument to the function is the value; the second argument is the index or key of the array or object property. The function can return any value to add to the array. A returned array will be flattened into the resulting array. Within the function, this refers to the global (window) object.</param>
262 + /// <returns type="Array" />
263 + /// </signature>
264 + },
265 + 'merge': function() {
266 + /// <signature>
267 + /// <summary>Merge the contents of two arrays together into the first array.</summary>
268 + /// <param name="first" type="Array">The first array to merge, the elements of second added.</param>
269 + /// <param name="second" type="Array">The second array to merge into the first, unaltered.</param>
270 + /// <returns type="Array" />
271 + /// </signature>
272 + },
273 + 'noConflict': function() {
274 + /// <signature>
275 + /// <summary>Relinquish jQuery's control of the $ variable.</summary>
276 + /// <param name="removeAll" type="Boolean">A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself).</param>
277 + /// <returns type="Object" />
278 + /// </signature>
279 + },
280 + 'noop': function() {
281 + /// <summary>An empty function.</summary>
282 + },
283 + 'now': function() {
284 + /// <summary>Return a number representing the current time.</summary>
285 + /// <returns type="Number" />
286 + },
287 + 'param': function() {
288 + /// <signature>
289 + /// <summary>Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request.</summary>
290 + /// <param name="obj" type="">An array or object to serialize.</param>
291 + /// <returns type="String" />
292 + /// </signature>
293 + /// <signature>
294 + /// <summary>Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request.</summary>
295 + /// <param name="obj" type="">An array or object to serialize.</param>
296 + /// <param name="traditional" type="Boolean">A Boolean indicating whether to perform a traditional "shallow" serialization.</param>
297 + /// <returns type="String" />
298 + /// </signature>
299 + },
300 + 'parseHTML': function() {
301 + /// <signature>
302 + /// <summary>Parses a string into an array of DOM nodes.</summary>
303 + /// <param name="data" type="String">HTML string to be parsed</param>
304 + /// <param name="context" type="Element">Document element to serve as the context in which the HTML fragment will be created</param>
305 + /// <param name="keepScripts" type="Boolean">A Boolean indicating whether to include scripts passed in the HTML string</param>
306 + /// <returns type="Array" />
307 + /// </signature>
308 + },
309 + 'parseJSON': function() {
310 + /// <signature>
311 + /// <summary>Takes a well-formed JSON string and returns the resulting JavaScript object.</summary>
312 + /// <param name="json" type="String">The JSON string to parse.</param>
313 + /// <returns type="Object" />
314 + /// </signature>
315 + },
316 + 'parseXML': function() {
317 + /// <signature>
318 + /// <summary>Parses a string into an XML document.</summary>
319 + /// <param name="data" type="String">a well-formed XML string to be parsed</param>
320 + /// <returns type="XMLDocument" />
321 + /// </signature>
322 + },
323 + 'post': function() {
324 + /// <signature>
325 + /// <summary>Load data from the server using a HTTP POST request.</summary>
326 + /// <param name="url" type="String">A string containing the URL to which the request is sent.</param>
327 + /// <param name="data" type="">A plain object or string that is sent to the server with the request.</param>
328 + /// <param name="success(data, textStatus, jqXHR)" type="Function">A callback function that is executed if the request succeeds. Required if dataType is provided, but can be null in that case.</param>
329 + /// <param name="dataType" type="String">The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).</param>
330 + /// <returns type="jqXHR" />
331 + /// </signature>
332 + },
333 + 'proxy': function() {
334 + /// <signature>
335 + /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
336 + /// <param name="function" type="Function">The function whose context will be changed.</param>
337 + /// <param name="context" type="PlainObject">The object to which the context (this) of the function should be set.</param>
338 + /// <returns type="Function" />
339 + /// </signature>
340 + /// <signature>
341 + /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
342 + /// <param name="context" type="PlainObject">The object to which the context of the function should be set.</param>
343 + /// <param name="name" type="String">The name of the function whose context will be changed (should be a property of the context object).</param>
344 + /// <returns type="Function" />
345 + /// </signature>
346 + /// <signature>
347 + /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
348 + /// <param name="function" type="Function">The function whose context will be changed.</param>
349 + /// <param name="context" type="PlainObject">The object to which the context (this) of the function should be set.</param>
350 + /// <param name="additionalArguments" type="Anything">Any number of arguments to be passed to the function referenced in the function argument.</param>
351 + /// <returns type="Function" />
352 + /// </signature>
353 + /// <signature>
354 + /// <summary>Takes a function and returns a new one that will always have a particular context.</summary>
355 + /// <param name="context" type="PlainObject">The object to which the context of the function should be set.</param>
356 + /// <param name="name" type="String">The name of the function whose context will be changed (should be a property of the context object).</param>
357 + /// <param name="additionalArguments" type="Anything">Any number of arguments to be passed to the function named in the name argument.</param>
358 + /// <returns type="Function" />
359 + /// </signature>
360 + },
361 + 'queue': function() {
362 + /// <signature>
363 + /// <summary>Manipulate the queue of functions to be executed on the matched element.</summary>
364 + /// <param name="element" type="Element">A DOM element where the array of queued functions is attached.</param>
365 + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
366 + /// <param name="newQueue" type="Array">An array of functions to replace the current queue contents.</param>
367 + /// <returns type="jQuery" />
368 + /// </signature>
369 + /// <signature>
370 + /// <summary>Manipulate the queue of functions to be executed on the matched element.</summary>
371 + /// <param name="element" type="Element">A DOM element on which to add a queued function.</param>
372 + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
373 + /// <param name="callback()" type="Function">The new function to add to the queue.</param>
374 + /// <returns type="jQuery" />
375 + /// </signature>
376 + },
377 + 'removeData': function() {
378 + /// <signature>
379 + /// <summary>Remove a previously-stored piece of data.</summary>
380 + /// <param name="element" type="Element">A DOM element from which to remove data.</param>
381 + /// <param name="name" type="String">A string naming the piece of data to remove.</param>
382 + /// <returns type="jQuery" />
383 + /// </signature>
384 + },
385 + 'sub': function() {
386 + /// <summary>Creates a new copy of jQuery whose properties and methods can be modified without affecting the original jQuery object.</summary>
387 + /// <returns type="jQuery" />
388 + },
389 + 'support': function() {
390 + /// <summary>A collection of properties that represent the presence of different browser features or bugs. Primarily intended for jQuery's internal use; specific properties may be removed when they are no longer needed internally to improve page startup performance.</summary>
391 + /// <returns type="Object" />
392 + },
393 + 'trim': function() {
394 + /// <signature>
395 + /// <summary>Remove the whitespace from the beginning and end of a string.</summary>
396 + /// <param name="str" type="String">The string to trim.</param>
397 + /// <returns type="String" />
398 + /// </signature>
399 + },
400 + 'type': function() {
401 + /// <signature>
402 + /// <summary>Determine the internal JavaScript [[Class]] of an object.</summary>
403 + /// <param name="obj" type="PlainObject">Object to get the internal JavaScript [[Class]] of.</param>
404 + /// <returns type="String" />
405 + /// </signature>
406 + },
407 + 'unique': function() {
408 + /// <signature>
409 + /// <summary>Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers.</summary>
410 + /// <param name="array" type="Array">The Array of DOM elements.</param>
411 + /// <returns type="Array" />
412 + /// </signature>
413 + },
414 + 'when': function() {
415 + /// <signature>
416 + /// <summary>Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events.</summary>
417 + /// <param name="deferreds" type="Deferred">One or more Deferred objects, or plain JavaScript objects.</param>
418 + /// <returns type="Promise" />
419 + /// </signature>
420 + },
421 +});
422 +
423 +var _1228819969 = jQuery.Callbacks;
424 +jQuery.Callbacks = function(flags) {
425 +var _object = _1228819969(flags);
426 +intellisense.annotate(_object, {
427 + 'add': function() {
428 + /// <signature>
429 + /// <summary>Add a callback or a collection of callbacks to a callback list.</summary>
430 + /// <param name="callbacks" type="">A function, or array of functions, that are to be added to the callback list.</param>
431 + /// <returns type="Callbacks" />
432 + /// </signature>
433 + },
434 + 'disable': function() {
435 + /// <summary>Disable a callback list from doing anything more.</summary>
436 + /// <returns type="Callbacks" />
437 + },
438 + 'disabled': function() {
439 + /// <summary>Determine if the callbacks list has been disabled.</summary>
440 + /// <returns type="Boolean" />
441 + },
442 + 'empty': function() {
443 + /// <summary>Remove all of the callbacks from a list.</summary>
444 + /// <returns type="Callbacks" />
445 + },
446 + 'fire': function() {
447 + /// <signature>
448 + /// <summary>Call all of the callbacks with the given arguments</summary>
449 + /// <param name="arguments" type="Anything">The argument or list of arguments to pass back to the callback list.</param>
450 + /// <returns type="Callbacks" />
451 + /// </signature>
452 + },
453 + 'fired': function() {
454 + /// <summary>Determine if the callbacks have already been called at least once.</summary>
455 + /// <returns type="Boolean" />
456 + },
457 + 'fireWith': function() {
458 + /// <signature>
459 + /// <summary>Call all callbacks in a list with the given context and arguments.</summary>
460 + /// <param name="context" type="">A reference to the context in which the callbacks in the list should be fired.</param>
461 + /// <param name="args" type="">An argument, or array of arguments, to pass to the callbacks in the list.</param>
462 + /// <returns type="Callbacks" />
463 + /// </signature>
464 + },
465 + 'has': function() {
466 + /// <signature>
467 + /// <summary>Determine whether a supplied callback is in a list</summary>
468 + /// <param name="callback" type="Function">The callback to search for.</param>
469 + /// <returns type="Boolean" />
470 + /// </signature>
471 + },
472 + 'lock': function() {
473 + /// <summary>Lock a callback list in its current state.</summary>
474 + /// <returns type="Callbacks" />
475 + },
476 + 'locked': function() {
477 + /// <summary>Determine if the callbacks list has been locked.</summary>
478 + /// <returns type="Boolean" />
479 + },
480 + 'remove': function() {
481 + /// <signature>
482 + /// <summary>Remove a callback or a collection of callbacks from a callback list.</summary>
483 + /// <param name="callbacks" type="">A function, or array of functions, that are to be removed from the callback list.</param>
484 + /// <returns type="Callbacks" />
485 + /// </signature>
486 + },
487 +});
488 +
489 +return _object;
490 +};
491 +intellisense.redirectDefinition(jQuery.Callbacks, _1228819969);
492 +
493 +var _731531622 = jQuery.Deferred;
494 +jQuery.Deferred = function(func) {
495 +var _object = _731531622(func);
496 +intellisense.annotate(_object, {
497 + 'always': function() {
498 + /// <signature>
499 + /// <summary>Add handlers to be called when the Deferred object is either resolved or rejected.</summary>
500 + /// <param name="alwaysCallbacks" type="Function">A function, or array of functions, that is called when the Deferred is resolved or rejected.</param>
501 + /// <param name="alwaysCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected.</param>
502 + /// <returns type="Deferred" />
503 + /// </signature>
504 + },
505 + 'done': function() {
506 + /// <signature>
507 + /// <summary>Add handlers to be called when the Deferred object is resolved.</summary>
508 + /// <param name="doneCallbacks" type="Function">A function, or array of functions, that are called when the Deferred is resolved.</param>
509 + /// <param name="doneCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is resolved.</param>
510 + /// <returns type="Deferred" />
511 + /// </signature>
512 + },
513 + 'fail': function() {
514 + /// <signature>
515 + /// <summary>Add handlers to be called when the Deferred object is rejected.</summary>
516 + /// <param name="failCallbacks" type="Function">A function, or array of functions, that are called when the Deferred is rejected.</param>
517 + /// <param name="failCallbacks" type="Function">Optional additional functions, or arrays of functions, that are called when the Deferred is rejected.</param>
518 + /// <returns type="Deferred" />
519 + /// </signature>
520 + },
521 + 'isRejected': function() {
522 + /// <summary>Determine whether a Deferred object has been rejected.</summary>
523 + /// <returns type="Boolean" />
524 + },
525 + 'isResolved': function() {
526 + /// <summary>Determine whether a Deferred object has been resolved.</summary>
527 + /// <returns type="Boolean" />
528 + },
529 + 'notify': function() {
530 + /// <signature>
531 + /// <summary>Call the progressCallbacks on a Deferred object with the given args.</summary>
532 + /// <param name="args" type="Object">Optional arguments that are passed to the progressCallbacks.</param>
533 + /// <returns type="Deferred" />
534 + /// </signature>
535 + },
536 + 'notifyWith': function() {
537 + /// <signature>
538 + /// <summary>Call the progressCallbacks on a Deferred object with the given context and args.</summary>
539 + /// <param name="context" type="Object">Context passed to the progressCallbacks as the this object.</param>
540 + /// <param name="args" type="Object">Optional arguments that are passed to the progressCallbacks.</param>
541 + /// <returns type="Deferred" />
542 + /// </signature>
543 + },
544 + 'pipe': function() {
545 + /// <signature>
546 + /// <summary>Utility method to filter and/or chain Deferreds.</summary>
547 + /// <param name="doneFilter" type="Function">An optional function that is called when the Deferred is resolved.</param>
548 + /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param>
549 + /// <returns type="Promise" />
550 + /// </signature>
551 + /// <signature>
552 + /// <summary>Utility method to filter and/or chain Deferreds.</summary>
553 + /// <param name="doneFilter" type="Function">An optional function that is called when the Deferred is resolved.</param>
554 + /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param>
555 + /// <param name="progressFilter" type="Function">An optional function that is called when progress notifications are sent to the Deferred.</param>
556 + /// <returns type="Promise" />
557 + /// </signature>
558 + },
559 + 'progress': function() {
560 + /// <signature>
561 + /// <summary>Add handlers to be called when the Deferred object generates progress notifications.</summary>
562 + /// <param name="progressCallbacks" type="">A function, or array of functions, to be called when the Deferred generates progress notifications.</param>
563 + /// <returns type="Deferred" />
564 + /// </signature>
565 + },
566 + 'promise': function() {
567 + /// <signature>
568 + /// <summary>Return a Deferred's Promise object.</summary>
569 + /// <param name="target" type="Object">Object onto which the promise methods have to be attached</param>
570 + /// <returns type="Promise" />
571 + /// </signature>
572 + },
573 + 'reject': function() {
574 + /// <signature>
575 + /// <summary>Reject a Deferred object and call any failCallbacks with the given args.</summary>
576 + /// <param name="args" type="Anything">Optional arguments that are passed to the failCallbacks.</param>
577 + /// <returns type="Deferred" />
578 + /// </signature>
579 + },
580 + 'rejectWith': function() {
581 + /// <signature>
582 + /// <summary>Reject a Deferred object and call any failCallbacks with the given context and args.</summary>
583 + /// <param name="context" type="Object">Context passed to the failCallbacks as the this object.</param>
584 + /// <param name="args" type="Array">An optional array of arguments that are passed to the failCallbacks.</param>
585 + /// <returns type="Deferred" />
586 + /// </signature>
587 + },
588 + 'resolve': function() {
589 + /// <signature>
590 + /// <summary>Resolve a Deferred object and call any doneCallbacks with the given args.</summary>
591 + /// <param name="args" type="Anything">Optional arguments that are passed to the doneCallbacks.</param>
592 + /// <returns type="Deferred" />
593 + /// </signature>
594 + },
595 + 'resolveWith': function() {
596 + /// <signature>
597 + /// <summary>Resolve a Deferred object and call any doneCallbacks with the given context and args.</summary>
598 + /// <param name="context" type="Object">Context passed to the doneCallbacks as the this object.</param>
599 + /// <param name="args" type="Array">An optional array of arguments that are passed to the doneCallbacks.</param>
600 + /// <returns type="Deferred" />
601 + /// </signature>
602 + },
603 + 'state': function() {
604 + /// <summary>Determine the current state of a Deferred object.</summary>
605 + /// <returns type="String" />
606 + },
607 + 'then': function() {
608 + /// <signature>
609 + /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary>
610 + /// <param name="doneFilter" type="Function">A function that is called when the Deferred is resolved.</param>
611 + /// <param name="failFilter" type="Function">An optional function that is called when the Deferred is rejected.</param>
612 + /// <param name="progressFilter" type="Function">An optional function that is called when progress notifications are sent to the Deferred.</param>
613 + /// <returns type="Promise" />
614 + /// </signature>
615 + /// <signature>
616 + /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary>
617 + /// <param name="doneCallbacks" type="Function">A function, or array of functions, called when the Deferred is resolved.</param>
618 + /// <param name="failCallbacks" type="Function">A function, or array of functions, called when the Deferred is rejected.</param>
619 + /// <returns type="Promise" />
620 + /// </signature>
621 + /// <signature>
622 + /// <summary>Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.</summary>
623 + /// <param name="doneCallbacks" type="Function">A function, or array of functions, called when the Deferred is resolved.</param>
624 + /// <param name="failCallbacks" type="Function">A function, or array of functions, called when the Deferred is rejected.</param>
625 + /// <param name="progressCallbacks" type="Function">A function, or array of functions, called when the Deferred notifies progress.</param>
626 + /// <returns type="Promise" />
627 + /// </signature>
628 + },
629 +});
630 +
631 +return _object;
632 +};
633 +intellisense.redirectDefinition(jQuery.Callbacks, _731531622);
634 +
635 +intellisense.annotate(jQuery.Event.prototype, {
636 + 'currentTarget': function() {
637 + /// <summary>The current DOM element within the event bubbling phase.</summary>
638 + /// <returns type="Element" />
639 + },
640 + 'data': function() {
641 + /// <summary>An optional object of data passed to an event method when the current executing handler is bound.</summary>
642 + /// <returns type="Object" />
643 + },
644 + 'delegateTarget': function() {
645 + /// <summary>The element where the currently-called jQuery event handler was attached.</summary>
646 + /// <returns type="Element" />
647 + },
648 + 'isDefaultPrevented': function() {
649 + /// <summary>Returns whether event.preventDefault() was ever called on this event object.</summary>
650 + /// <returns type="Boolean" />
651 + },
652 + 'isImmediatePropagationStopped': function() {
653 + /// <summary>Returns whether event.stopImmediatePropagation() was ever called on this event object.</summary>
654 + /// <returns type="Boolean" />
655 + },
656 + 'isPropagationStopped': function() {
657 + /// <summary>Returns whether event.stopPropagation() was ever called on this event object.</summary>
658 + /// <returns type="Boolean" />
659 + },
660 + 'metaKey': function() {
661 + /// <summary>Indicates whether the META key was pressed when the event fired.</summary>
662 + /// <returns type="Boolean" />
663 + },
664 + 'namespace': function() {
665 + /// <summary>The namespace specified when the event was triggered.</summary>
666 + /// <returns type="String" />
667 + },
668 + 'pageX': function() {
669 + /// <summary>The mouse position relative to the left edge of the document.</summary>
670 + /// <returns type="Number" />
671 + },
672 + 'pageY': function() {
673 + /// <summary>The mouse position relative to the top edge of the document.</summary>
674 + /// <returns type="Number" />
675 + },
676 + 'preventDefault': function() {
677 + /// <summary>If this method is called, the default action of the event will not be triggered.</summary>
678 + },
679 + 'relatedTarget': function() {
680 + /// <summary>The other DOM element involved in the event, if any.</summary>
681 + /// <returns type="Element" />
682 + },
683 + 'result': function() {
684 + /// <summary>The last value returned by an event handler that was triggered by this event, unless the value was undefined.</summary>
685 + /// <returns type="Object" />
686 + },
687 + 'stopImmediatePropagation': function() {
688 + /// <summary>Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree.</summary>
689 + },
690 + 'stopPropagation': function() {
691 + /// <summary>Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event.</summary>
692 + },
693 + 'target': function() {
694 + /// <summary>The DOM element that initiated the event.</summary>
695 + /// <returns type="Element" />
696 + },
697 + 'timeStamp': function() {
698 + /// <summary>The difference in milliseconds between the time the browser created the event and January 1, 1970.</summary>
699 + /// <returns type="Number" />
700 + },
701 + 'type': function() {
702 + /// <summary>Describes the nature of the event.</summary>
703 + /// <returns type="String" />
704 + },
705 + 'which': function() {
706 + /// <summary>For key or mouse events, this property indicates the specific key or button that was pressed.</summary>
707 + /// <returns type="Number" />
708 + },
709 +});
710 +
711 +intellisense.annotate(jQuery.fn, {
712 + 'add': function() {
713 + /// <signature>
714 + /// <summary>Add elements to the set of matched elements.</summary>
715 + /// <param name="selector" type="String">A string representing a selector expression to find additional elements to add to the set of matched elements.</param>
716 + /// <returns type="jQuery" />
717 + /// </signature>
718 + /// <signature>
719 + /// <summary>Add elements to the set of matched elements.</summary>
720 + /// <param name="elements" type="Array">One or more elements to add to the set of matched elements.</param>
721 + /// <returns type="jQuery" />
722 + /// </signature>
723 + /// <signature>
724 + /// <summary>Add elements to the set of matched elements.</summary>
725 + /// <param name="html" type="htmlString">An HTML fragment to add to the set of matched elements.</param>
726 + /// <returns type="jQuery" />
727 + /// </signature>
728 + /// <signature>
729 + /// <summary>Add elements to the set of matched elements.</summary>
730 + /// <param name="jQuery object" type="jQuery object ">An existing jQuery object to add to the set of matched elements.</param>
731 + /// <returns type="jQuery" />
732 + /// </signature>
733 + /// <signature>
734 + /// <summary>Add elements to the set of matched elements.</summary>
735 + /// <param name="selector" type="String">A string representing a selector expression to find additional elements to add to the set of matched elements.</param>
736 + /// <param name="context" type="Element">The point in the document at which the selector should begin matching; similar to the context argument of the $(selector, context) method.</param>
737 + /// <returns type="jQuery" />
738 + /// </signature>
739 + },
740 + 'addBack': function() {
741 + /// <signature>
742 + /// <summary>Add the previous set of elements on the stack to the current set, optionally filtered by a selector.</summary>
743 + /// <param name="selector" type="String">A string containing a selector expression to match the current set of elements against.</param>
744 + /// <returns type="jQuery" />
745 + /// </signature>
746 + },
747 + 'addClass': function() {
748 + /// <signature>
749 + /// <summary>Adds the specified class(es) to each of the set of matched elements.</summary>
750 + /// <param name="className" type="String">One or more space-separated classes to be added to the class attribute of each matched element.</param>
751 + /// <returns type="jQuery" />
752 + /// </signature>
753 + /// <signature>
754 + /// <summary>Adds the specified class(es) to each of the set of matched elements.</summary>
755 + /// <param name="function(index, currentClass)" type="Function">A function returning one or more space-separated class names to be added to the existing class name(s). Receives the index position of the element in the set and the existing class name(s) as arguments. Within the function, this refers to the current element in the set.</param>
756 + /// <returns type="jQuery" />
757 + /// </signature>
758 + },
759 + 'after': function() {
760 + /// <signature>
761 + /// <summary>Insert content, specified by the parameter, after each element in the set of matched elements.</summary>
762 + /// <param name="content" type="">HTML string, DOM element, or jQuery object to insert after each element in the set of matched elements.</param>
763 + /// <param name="content" type="">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert after each element in the set of matched elements.</param>
764 + /// <returns type="jQuery" />
765 + /// </signature>
766 + /// <signature>
767 + /// <summary>Insert content, specified by the parameter, after each element in the set of matched elements.</summary>
768 + /// <param name="function(index)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert after each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
769 + /// <returns type="jQuery" />
770 + /// </signature>
771 + },
772 + 'ajaxComplete': function() {
773 + /// <signature>
774 + /// <summary>Register a handler to be called when Ajax requests complete. This is an AjaxEvent.</summary>
775 + /// <param name="handler(event, XMLHttpRequest, ajaxOptions)" type="Function">The function to be invoked.</param>
776 + /// <returns type="jQuery" />
777 + /// </signature>
778 + },
779 + 'ajaxError': function() {
780 + /// <signature>
781 + /// <summary>Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event.</summary>
782 + /// <param name="handler(event, jqXHR, ajaxSettings, thrownError)" type="Function">The function to be invoked.</param>
783 + /// <returns type="jQuery" />
784 + /// </signature>
785 + },
786 + 'ajaxSend': function() {
787 + /// <signature>
788 + /// <summary>Attach a function to be executed before an Ajax request is sent. This is an Ajax Event.</summary>
789 + /// <param name="handler(event, jqXHR, ajaxOptions)" type="Function">The function to be invoked.</param>
790 + /// <returns type="jQuery" />
791 + /// </signature>
792 + },
793 + 'ajaxStart': function() {
794 + /// <signature>
795 + /// <summary>Register a handler to be called when the first Ajax request begins. This is an Ajax Event.</summary>
796 + /// <param name="handler()" type="Function">The function to be invoked.</param>
797 + /// <returns type="jQuery" />
798 + /// </signature>
799 + },
800 + 'ajaxStop': function() {
801 + /// <signature>
802 + /// <summary>Register a handler to be called when all Ajax requests have completed. This is an Ajax Event.</summary>
803 + /// <param name="handler()" type="Function">The function to be invoked.</param>
804 + /// <returns type="jQuery" />
805 + /// </signature>
806 + },
807 + 'ajaxSuccess': function() {
808 + /// <signature>
809 + /// <summary>Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event.</summary>
810 + /// <param name="handler(event, XMLHttpRequest, ajaxOptions)" type="Function">The function to be invoked.</param>
811 + /// <returns type="jQuery" />
812 + /// </signature>
813 + },
814 + 'all': function() {
815 + /// <summary>Selects all elements.</summary>
816 + },
817 + 'andSelf': function() {
818 + /// <summary>Add the previous set of elements on the stack to the current set.</summary>
819 + /// <returns type="jQuery" />
820 + },
821 + 'animate': function() {
822 + /// <signature>
823 + /// <summary>Perform a custom animation of a set of CSS properties.</summary>
824 + /// <param name="properties" type="PlainObject">An object of CSS properties and values that the animation will move toward.</param>
825 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
826 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
827 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
828 + /// <returns type="jQuery" />
829 + /// </signature>
830 + /// <signature>
831 + /// <summary>Perform a custom animation of a set of CSS properties.</summary>
832 + /// <param name="properties" type="PlainObject">An object of CSS properties and values that the animation will move toward.</param>
833 + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
834 + /// <returns type="jQuery" />
835 + /// </signature>
836 + },
837 + 'animated': function() {
838 + /// <summary>Select all elements that are in the progress of an animation at the time the selector is run.</summary>
839 + },
840 + 'append': function() {
841 + /// <signature>
842 + /// <summary>Insert content, specified by the parameter, to the end of each element in the set of matched elements.</summary>
843 + /// <param name="content" type="">DOM element, HTML string, or jQuery object to insert at the end of each element in the set of matched elements.</param>
844 + /// <param name="content" type="">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the end of each element in the set of matched elements.</param>
845 + /// <returns type="jQuery" />
846 + /// </signature>
847 + /// <signature>
848 + /// <summary>Insert content, specified by the parameter, to the end of each element in the set of matched elements.</summary>
849 + /// <param name="function(index, html)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert at the end of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set.</param>
850 + /// <returns type="jQuery" />
851 + /// </signature>
852 + },
853 + 'appendTo': function() {
854 + /// <signature>
855 + /// <summary>Insert every element in the set of matched elements to the end of the target.</summary>
856 + /// <param name="target" type="">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the end of the element(s) specified by this parameter.</param>
857 + /// <returns type="jQuery" />
858 + /// </signature>
859 + },
860 + 'attr': function() {
861 + /// <signature>
862 + /// <summary>Set one or more attributes for the set of matched elements.</summary>
863 + /// <param name="attributeName" type="String">The name of the attribute to set.</param>
864 + /// <param name="value" type="">A value to set for the attribute.</param>
865 + /// <returns type="jQuery" />
866 + /// </signature>
867 + /// <signature>
868 + /// <summary>Set one or more attributes for the set of matched elements.</summary>
869 + /// <param name="attributes" type="PlainObject">An object of attribute-value pairs to set.</param>
870 + /// <returns type="jQuery" />
871 + /// </signature>
872 + /// <signature>
873 + /// <summary>Set one or more attributes for the set of matched elements.</summary>
874 + /// <param name="attributeName" type="String">The name of the attribute to set.</param>
875 + /// <param name="function(index, attr)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old attribute value as arguments.</param>
876 + /// <returns type="jQuery" />
877 + /// </signature>
878 + },
879 + 'attributeContains': function() {
880 + /// <signature>
881 + /// <summary>Selects elements that have the specified attribute with a value containing the a given substring.</summary>
882 + /// <param name="attribute" type="String">An attribute name.</param>
883 + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
884 + /// </signature>
885 + },
886 + 'attributeContainsPrefix': function() {
887 + /// <signature>
888 + /// <summary>Selects elements that have the specified attribute with a value either equal to a given string or starting with that string followed by a hyphen (-).</summary>
889 + /// <param name="attribute" type="String">An attribute name.</param>
890 + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
891 + /// </signature>
892 + },
893 + 'attributeContainsWord': function() {
894 + /// <signature>
895 + /// <summary>Selects elements that have the specified attribute with a value containing a given word, delimited by spaces.</summary>
896 + /// <param name="attribute" type="String">An attribute name.</param>
897 + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
898 + /// </signature>
899 + },
900 + 'attributeEndsWith': function() {
901 + /// <signature>
902 + /// <summary>Selects elements that have the specified attribute with a value ending exactly with a given string. The comparison is case sensitive.</summary>
903 + /// <param name="attribute" type="String">An attribute name.</param>
904 + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
905 + /// </signature>
906 + },
907 + 'attributeEquals': function() {
908 + /// <signature>
909 + /// <summary>Selects elements that have the specified attribute with a value exactly equal to a certain value.</summary>
910 + /// <param name="attribute" type="String">An attribute name.</param>
911 + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
912 + /// </signature>
913 + },
914 + 'attributeHas': function() {
915 + /// <signature>
916 + /// <summary>Selects elements that have the specified attribute, with any value.</summary>
917 + /// <param name="attribute" type="String">An attribute name.</param>
918 + /// </signature>
919 + },
920 + 'attributeMultiple': function() {
921 + /// <signature>
922 + /// <summary>Matches elements that match all of the specified attribute filters.</summary>
923 + /// <param name="attributeFilter1" type="String">An attribute filter.</param>
924 + /// <param name="attributeFilter2" type="String">Another attribute filter, reducing the selection even more</param>
925 + /// <param name="attributeFilterN" type="String">As many more attribute filters as necessary</param>
926 + /// </signature>
927 + },
928 + 'attributeNotEqual': function() {
929 + /// <signature>
930 + /// <summary>Select elements that either don't have the specified attribute, or do have the specified attribute but not with a certain value.</summary>
931 + /// <param name="attribute" type="String">An attribute name.</param>
932 + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
933 + /// </signature>
934 + },
935 + 'attributeStartsWith': function() {
936 + /// <signature>
937 + /// <summary>Selects elements that have the specified attribute with a value beginning exactly with a given string.</summary>
938 + /// <param name="attribute" type="String">An attribute name.</param>
939 + /// <param name="value" type="String">An attribute value. Can be either an unquoted single word or a quoted string.</param>
940 + /// </signature>
941 + },
942 + 'before': function() {
943 + /// <signature>
944 + /// <summary>Insert content, specified by the parameter, before each element in the set of matched elements.</summary>
945 + /// <param name="content" type="">HTML string, DOM element, or jQuery object to insert before each element in the set of matched elements.</param>
946 + /// <param name="content" type="">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert before each element in the set of matched elements.</param>
947 + /// <returns type="jQuery" />
948 + /// </signature>
949 + /// <signature>
950 + /// <summary>Insert content, specified by the parameter, before each element in the set of matched elements.</summary>
951 + /// <param name="function" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert before each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
952 + /// <returns type="jQuery" />
953 + /// </signature>
954 + },
955 + 'bind': function() {
956 + /// <signature>
957 + /// <summary>Attach a handler to an event for the elements.</summary>
958 + /// <param name="eventType" type="String">A string containing one or more DOM event types, such as "click" or "submit," or custom event names.</param>
959 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
960 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
961 + /// <returns type="jQuery" />
962 + /// </signature>
963 + /// <signature>
964 + /// <summary>Attach a handler to an event for the elements.</summary>
965 + /// <param name="eventType" type="String">A string containing one or more DOM event types, such as "click" or "submit," or custom event names.</param>
966 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
967 + /// <param name="preventBubble" type="Boolean">Setting the third argument to false will attach a function that prevents the default action from occurring and stops the event from bubbling. The default is true.</param>
968 + /// <returns type="jQuery" />
969 + /// </signature>
970 + /// <signature>
971 + /// <summary>Attach a handler to an event for the elements.</summary>
972 + /// <param name="events" type="Object">An object containing one or more DOM event types and functions to execute for them.</param>
973 + /// <returns type="jQuery" />
974 + /// </signature>
975 + },
976 + 'blur': function() {
977 + /// <signature>
978 + /// <summary>Bind an event handler to the "blur" JavaScript event, or trigger that event on an element.</summary>
979 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
980 + /// <returns type="jQuery" />
981 + /// </signature>
982 + /// <signature>
983 + /// <summary>Bind an event handler to the "blur" JavaScript event, or trigger that event on an element.</summary>
984 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
985 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
986 + /// <returns type="jQuery" />
987 + /// </signature>
988 + },
989 + 'button': function() {
990 + /// <summary>Selects all button elements and elements of type button.</summary>
991 + },
992 + 'change': function() {
993 + /// <signature>
994 + /// <summary>Bind an event handler to the "change" JavaScript event, or trigger that event on an element.</summary>
995 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
996 + /// <returns type="jQuery" />
997 + /// </signature>
998 + /// <signature>
999 + /// <summary>Bind an event handler to the "change" JavaScript event, or trigger that event on an element.</summary>
1000 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1001 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1002 + /// <returns type="jQuery" />
1003 + /// </signature>
1004 + },
1005 + 'checkbox': function() {
1006 + /// <summary>Selects all elements of type checkbox.</summary>
1007 + },
1008 + 'checked': function() {
1009 + /// <summary>Matches all elements that are checked or selected.</summary>
1010 + },
1011 + 'child': function() {
1012 + /// <signature>
1013 + /// <summary>Selects all direct child elements specified by "child" of elements specified by "parent".</summary>
1014 + /// <param name="parent" type="String">Any valid selector.</param>
1015 + /// <param name="child" type="String">A selector to filter the child elements.</param>
1016 + /// </signature>
1017 + },
1018 + 'children': function() {
1019 + /// <signature>
1020 + /// <summary>Get the children of each element in the set of matched elements, optionally filtered by a selector.</summary>
1021 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1022 + /// <returns type="jQuery" />
1023 + /// </signature>
1024 + },
1025 + 'class': function() {
1026 + /// <signature>
1027 + /// <summary>Selects all elements with the given class.</summary>
1028 + /// <param name="class" type="String">A class to search for. An element can have multiple classes; only one of them must match.</param>
1029 + /// </signature>
1030 + },
1031 + 'clearQueue': function() {
1032 + /// <signature>
1033 + /// <summary>Remove from the queue all items that have not yet been run.</summary>
1034 + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
1035 + /// <returns type="jQuery" />
1036 + /// </signature>
1037 + },
1038 + 'click': function() {
1039 + /// <signature>
1040 + /// <summary>Bind an event handler to the "click" JavaScript event, or trigger that event on an element.</summary>
1041 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1042 + /// <returns type="jQuery" />
1043 + /// </signature>
1044 + /// <signature>
1045 + /// <summary>Bind an event handler to the "click" JavaScript event, or trigger that event on an element.</summary>
1046 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1047 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1048 + /// <returns type="jQuery" />
1049 + /// </signature>
1050 + },
1051 + 'clone': function() {
1052 + /// <signature>
1053 + /// <summary>Create a deep copy of the set of matched elements.</summary>
1054 + /// <param name="withDataAndEvents" type="Boolean">A Boolean indicating whether event handlers should be copied along with the elements. As of jQuery 1.4, element data will be copied as well.</param>
1055 + /// <returns type="jQuery" />
1056 + /// </signature>
1057 + /// <signature>
1058 + /// <summary>Create a deep copy of the set of matched elements.</summary>
1059 + /// <param name="withDataAndEvents" type="Boolean">A Boolean indicating whether event handlers and data should be copied along with the elements. The default value is false. *In jQuery 1.5.0 the default value was incorrectly true; it was changed back to false in 1.5.1 and up.</param>
1060 + /// <param name="deepWithDataAndEvents" type="Boolean">A Boolean indicating whether event handlers and data for all children of the cloned element should be copied. By default its value matches the first argument's value (which defaults to false).</param>
1061 + /// <returns type="jQuery" />
1062 + /// </signature>
1063 + },
1064 + 'closest': function() {
1065 + /// <signature>
1066 + /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
1067 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1068 + /// <returns type="jQuery" />
1069 + /// </signature>
1070 + /// <signature>
1071 + /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
1072 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1073 + /// <param name="context" type="Element">A DOM element within which a matching element may be found. If no context is passed in then the context of the jQuery set will be used instead.</param>
1074 + /// <returns type="jQuery" />
1075 + /// </signature>
1076 + /// <signature>
1077 + /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
1078 + /// <param name="jQuery object" type="jQuery">A jQuery object to match elements against.</param>
1079 + /// <returns type="jQuery" />
1080 + /// </signature>
1081 + /// <signature>
1082 + /// <summary>For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.</summary>
1083 + /// <param name="element" type="Element">An element to match elements against.</param>
1084 + /// <returns type="jQuery" />
1085 + /// </signature>
1086 + },
1087 + 'contains': function() {
1088 + /// <signature>
1089 + /// <summary>Select all elements that contain the specified text.</summary>
1090 + /// <param name="text" type="String">A string of text to look for. It's case sensitive.</param>
1091 + /// </signature>
1092 + },
1093 + 'contents': function() {
1094 + /// <summary>Get the children of each element in the set of matched elements, including text and comment nodes.</summary>
1095 + /// <returns type="jQuery" />
1096 + },
1097 + 'context': function() {
1098 + /// <summary>The DOM node context originally passed to jQuery(); if none was passed then context will likely be the document.</summary>
1099 + /// <returns type="Element" />
1100 + },
1101 + 'css': function() {
1102 + /// <signature>
1103 + /// <summary>Set one or more CSS properties for the set of matched elements.</summary>
1104 + /// <param name="propertyName" type="String">A CSS property name.</param>
1105 + /// <param name="value" type="">A value to set for the property.</param>
1106 + /// <returns type="jQuery" />
1107 + /// </signature>
1108 + /// <signature>
1109 + /// <summary>Set one or more CSS properties for the set of matched elements.</summary>
1110 + /// <param name="propertyName" type="String">A CSS property name.</param>
1111 + /// <param name="function(index, value)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments.</param>
1112 + /// <returns type="jQuery" />
1113 + /// </signature>
1114 + /// <signature>
1115 + /// <summary>Set one or more CSS properties for the set of matched elements.</summary>
1116 + /// <param name="properties" type="PlainObject">An object of property-value pairs to set.</param>
1117 + /// <returns type="jQuery" />
1118 + /// </signature>
1119 + },
1120 + 'data': function() {
1121 + /// <signature>
1122 + /// <summary>Store arbitrary data associated with the matched elements.</summary>
1123 + /// <param name="key" type="String">A string naming the piece of data to set.</param>
1124 + /// <param name="value" type="Object">The new data value; it can be any Javascript type including Array or Object.</param>
1125 + /// <returns type="jQuery" />
1126 + /// </signature>
1127 + /// <signature>
1128 + /// <summary>Store arbitrary data associated with the matched elements.</summary>
1129 + /// <param name="obj" type="Object">An object of key-value pairs of data to update.</param>
1130 + /// <returns type="jQuery" />
1131 + /// </signature>
1132 + },
1133 + 'dblclick': function() {
1134 + /// <signature>
1135 + /// <summary>Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element.</summary>
1136 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1137 + /// <returns type="jQuery" />
1138 + /// </signature>
1139 + /// <signature>
1140 + /// <summary>Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element.</summary>
1141 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1142 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1143 + /// <returns type="jQuery" />
1144 + /// </signature>
1145 + },
1146 + 'delay': function() {
1147 + /// <signature>
1148 + /// <summary>Set a timer to delay execution of subsequent items in the queue.</summary>
1149 + /// <param name="duration" type="Number">An integer indicating the number of milliseconds to delay execution of the next item in the queue.</param>
1150 + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
1151 + /// <returns type="jQuery" />
1152 + /// </signature>
1153 + },
1154 + 'delegate': function() {
1155 + /// <signature>
1156 + /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary>
1157 + /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param>
1158 + /// <param name="eventType" type="String">A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names.</param>
1159 + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
1160 + /// <returns type="jQuery" />
1161 + /// </signature>
1162 + /// <signature>
1163 + /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary>
1164 + /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param>
1165 + /// <param name="eventType" type="String">A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names.</param>
1166 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1167 + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
1168 + /// <returns type="jQuery" />
1169 + /// </signature>
1170 + /// <signature>
1171 + /// <summary>Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.</summary>
1172 + /// <param name="selector" type="String">A selector to filter the elements that trigger the event.</param>
1173 + /// <param name="events" type="PlainObject">A plain object of one or more event types and functions to execute for them.</param>
1174 + /// <returns type="jQuery" />
1175 + /// </signature>
1176 + },
1177 + 'dequeue': function() {
1178 + /// <signature>
1179 + /// <summary>Execute the next function on the queue for the matched elements.</summary>
1180 + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
1181 + /// <returns type="jQuery" />
1182 + /// </signature>
1183 + },
1184 + 'descendant': function() {
1185 + /// <signature>
1186 + /// <summary>Selects all elements that are descendants of a given ancestor.</summary>
1187 + /// <param name="ancestor" type="String">Any valid selector.</param>
1188 + /// <param name="descendant" type="String">A selector to filter the descendant elements.</param>
1189 + /// </signature>
1190 + },
1191 + 'detach': function() {
1192 + /// <signature>
1193 + /// <summary>Remove the set of matched elements from the DOM.</summary>
1194 + /// <param name="selector" type="String">A selector expression that filters the set of matched elements to be removed.</param>
1195 + /// <returns type="jQuery" />
1196 + /// </signature>
1197 + },
1198 + 'die': function() {
1199 + /// <signature>
1200 + /// <summary>Remove event handlers previously attached using .live() from the elements.</summary>
1201 + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or keydown.</param>
1202 + /// <param name="handler" type="String">The function that is no longer to be executed.</param>
1203 + /// <returns type="jQuery" />
1204 + /// </signature>
1205 + /// <signature>
1206 + /// <summary>Remove event handlers previously attached using .live() from the elements.</summary>
1207 + /// <param name="events" type="PlainObject">A plain object of one or more event types, such as click or keydown and their corresponding functions that are no longer to be executed.</param>
1208 + /// <returns type="jQuery" />
1209 + /// </signature>
1210 + },
1211 + 'disabled': function() {
1212 + /// <summary>Selects all elements that are disabled.</summary>
1213 + },
1214 + 'each': function() {
1215 + /// <signature>
1216 + /// <summary>Iterate over a jQuery object, executing a function for each matched element.</summary>
1217 + /// <param name="function(index, Element)" type="Function">A function to execute for each matched element.</param>
1218 + /// <returns type="jQuery" />
1219 + /// </signature>
1220 + },
1221 + 'element': function() {
1222 + /// <signature>
1223 + /// <summary>Selects all elements with the given tag name.</summary>
1224 + /// <param name="element" type="String">An element to search for. Refers to the tagName of DOM nodes.</param>
1225 + /// </signature>
1226 + },
1227 + 'empty': function() {
1228 + /// <summary>Select all elements that have no children (including text nodes).</summary>
1229 + },
1230 + 'enabled': function() {
1231 + /// <summary>Selects all elements that are enabled.</summary>
1232 + },
1233 + 'end': function() {
1234 + /// <summary>End the most recent filtering operation in the current chain and return the set of matched elements to its previous state.</summary>
1235 + /// <returns type="jQuery" />
1236 + },
1237 + 'eq': function() {
1238 + /// <signature>
1239 + /// <summary>Select the element at index n within the matched set.</summary>
1240 + /// <param name="index" type="Number">Zero-based index of the element to match.</param>
1241 + /// </signature>
1242 + /// <signature>
1243 + /// <summary>Select the element at index n within the matched set.</summary>
1244 + /// <param name="-index" type="Number">Zero-based index of the element to match, counting backwards from the last element.</param>
1245 + /// </signature>
1246 + },
1247 + 'error': function() {
1248 + /// <signature>
1249 + /// <summary>Bind an event handler to the "error" JavaScript event.</summary>
1250 + /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param>
1251 + /// <returns type="jQuery" />
1252 + /// </signature>
1253 + /// <signature>
1254 + /// <summary>Bind an event handler to the "error" JavaScript event.</summary>
1255 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1256 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1257 + /// <returns type="jQuery" />
1258 + /// </signature>
1259 + },
1260 + 'even': function() {
1261 + /// <summary>Selects even elements, zero-indexed. See also odd.</summary>
1262 + },
1263 + 'fadeIn': function() {
1264 + /// <signature>
1265 + /// <summary>Display the matched elements by fading them to opaque.</summary>
1266 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1267 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1268 + /// <returns type="jQuery" />
1269 + /// </signature>
1270 + /// <signature>
1271 + /// <summary>Display the matched elements by fading them to opaque.</summary>
1272 + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
1273 + /// <returns type="jQuery" />
1274 + /// </signature>
1275 + /// <signature>
1276 + /// <summary>Display the matched elements by fading them to opaque.</summary>
1277 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1278 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
1279 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1280 + /// <returns type="jQuery" />
1281 + /// </signature>
1282 + },
1283 + 'fadeOut': function() {
1284 + /// <signature>
1285 + /// <summary>Hide the matched elements by fading them to transparent.</summary>
1286 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1287 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1288 + /// <returns type="jQuery" />
1289 + /// </signature>
1290 + /// <signature>
1291 + /// <summary>Hide the matched elements by fading them to transparent.</summary>
1292 + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
1293 + /// <returns type="jQuery" />
1294 + /// </signature>
1295 + /// <signature>
1296 + /// <summary>Hide the matched elements by fading them to transparent.</summary>
1297 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1298 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
1299 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1300 + /// <returns type="jQuery" />
1301 + /// </signature>
1302 + },
1303 + 'fadeTo': function() {
1304 + /// <signature>
1305 + /// <summary>Adjust the opacity of the matched elements.</summary>
1306 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1307 + /// <param name="opacity" type="Number">A number between 0 and 1 denoting the target opacity.</param>
1308 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1309 + /// <returns type="jQuery" />
1310 + /// </signature>
1311 + /// <signature>
1312 + /// <summary>Adjust the opacity of the matched elements.</summary>
1313 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1314 + /// <param name="opacity" type="Number">A number between 0 and 1 denoting the target opacity.</param>
1315 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
1316 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1317 + /// <returns type="jQuery" />
1318 + /// </signature>
1319 + },
1320 + 'fadeToggle': function() {
1321 + /// <signature>
1322 + /// <summary>Display or hide the matched elements by animating their opacity.</summary>
1323 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1324 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
1325 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1326 + /// <returns type="jQuery" />
1327 + /// </signature>
1328 + /// <signature>
1329 + /// <summary>Display or hide the matched elements by animating their opacity.</summary>
1330 + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
1331 + /// <returns type="jQuery" />
1332 + /// </signature>
1333 + },
1334 + 'file': function() {
1335 + /// <summary>Selects all elements of type file.</summary>
1336 + },
1337 + 'filter': function() {
1338 + /// <signature>
1339 + /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
1340 + /// <param name="selector" type="String">A string containing a selector expression to match the current set of elements against.</param>
1341 + /// <returns type="jQuery" />
1342 + /// </signature>
1343 + /// <signature>
1344 + /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
1345 + /// <param name="function(index)" type="Function">A function used as a test for each element in the set. this is the current DOM element.</param>
1346 + /// <returns type="jQuery" />
1347 + /// </signature>
1348 + /// <signature>
1349 + /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
1350 + /// <param name="element" type="Element">An element to match the current set of elements against.</param>
1351 + /// <returns type="jQuery" />
1352 + /// </signature>
1353 + /// <signature>
1354 + /// <summary>Reduce the set of matched elements to those that match the selector or pass the function's test.</summary>
1355 + /// <param name="jQuery object" type="Object">An existing jQuery object to match the current set of elements against.</param>
1356 + /// <returns type="jQuery" />
1357 + /// </signature>
1358 + },
1359 + 'find': function() {
1360 + /// <signature>
1361 + /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary>
1362 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1363 + /// <returns type="jQuery" />
1364 + /// </signature>
1365 + /// <signature>
1366 + /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary>
1367 + /// <param name="jQuery object" type="Object">A jQuery object to match elements against.</param>
1368 + /// <returns type="jQuery" />
1369 + /// </signature>
1370 + /// <signature>
1371 + /// <summary>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</summary>
1372 + /// <param name="element" type="Element">An element to match elements against.</param>
1373 + /// <returns type="jQuery" />
1374 + /// </signature>
1375 + },
1376 + 'finish': function() {
1377 + /// <signature>
1378 + /// <summary>Stop the currently-running animation, remove all queued animations, and complete all animations for the matched elements.</summary>
1379 + /// <param name="queue" type="String">The name of the queue in which to stop animations.</param>
1380 + /// <returns type="jQuery" />
1381 + /// </signature>
1382 + },
1383 + 'first': function() {
1384 + /// <summary>Selects the first matched element.</summary>
1385 + },
1386 + 'first-child': function() {
1387 + /// <summary>Selects all elements that are the first child of their parent.</summary>
1388 + },
1389 + 'first-of-type': function() {
1390 + /// <summary>Selects all elements that are the first among siblings of the same element name.</summary>
1391 + },
1392 + 'focus': function() {
1393 + /// <signature>
1394 + /// <summary>Bind an event handler to the "focus" JavaScript event, or trigger that event on an element.</summary>
1395 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1396 + /// <returns type="jQuery" />
1397 + /// </signature>
1398 + /// <signature>
1399 + /// <summary>Bind an event handler to the "focus" JavaScript event, or trigger that event on an element.</summary>
1400 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1401 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1402 + /// <returns type="jQuery" />
1403 + /// </signature>
1404 + },
1405 + 'focusin': function() {
1406 + /// <signature>
1407 + /// <summary>Bind an event handler to the "focusin" event.</summary>
1408 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1409 + /// <returns type="jQuery" />
1410 + /// </signature>
1411 + /// <signature>
1412 + /// <summary>Bind an event handler to the "focusin" event.</summary>
1413 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1414 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1415 + /// <returns type="jQuery" />
1416 + /// </signature>
1417 + },
1418 + 'focusout': function() {
1419 + /// <signature>
1420 + /// <summary>Bind an event handler to the "focusout" JavaScript event.</summary>
1421 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1422 + /// <returns type="jQuery" />
1423 + /// </signature>
1424 + /// <signature>
1425 + /// <summary>Bind an event handler to the "focusout" JavaScript event.</summary>
1426 + /// <param name="eventData" type="Object">An object containing data that will be passed to the event handler.</param>
1427 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1428 + /// <returns type="jQuery" />
1429 + /// </signature>
1430 + },
1431 + 'get': function() {
1432 + /// <signature>
1433 + /// <summary>Retrieve one of the DOM elements matched by the jQuery object.</summary>
1434 + /// <param name="index" type="Number">A zero-based integer indicating which element to retrieve.</param>
1435 + /// <returns type="Element" />
1436 + /// </signature>
1437 + },
1438 + 'gt': function() {
1439 + /// <signature>
1440 + /// <summary>Select all elements at an index greater than index within the matched set.</summary>
1441 + /// <param name="index" type="Number">Zero-based index.</param>
1442 + /// </signature>
1443 + /// <signature>
1444 + /// <summary>Select all elements at an index greater than index within the matched set.</summary>
1445 + /// <param name="-index" type="Number">Zero-based index, counting backwards from the last element.</param>
1446 + /// </signature>
1447 + },
1448 + 'has': function() {
1449 + /// <signature>
1450 + /// <summary>Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.</summary>
1451 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1452 + /// <returns type="jQuery" />
1453 + /// </signature>
1454 + /// <signature>
1455 + /// <summary>Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.</summary>
1456 + /// <param name="contained" type="Element">A DOM element to match elements against.</param>
1457 + /// <returns type="jQuery" />
1458 + /// </signature>
1459 + },
1460 + 'hasClass': function() {
1461 + /// <signature>
1462 + /// <summary>Determine whether any of the matched elements are assigned the given class.</summary>
1463 + /// <param name="className" type="String">The class name to search for.</param>
1464 + /// <returns type="Boolean" />
1465 + /// </signature>
1466 + },
1467 + 'header': function() {
1468 + /// <summary>Selects all elements that are headers, like h1, h2, h3 and so on.</summary>
1469 + },
1470 + 'height': function() {
1471 + /// <signature>
1472 + /// <summary>Set the CSS height of every matched element.</summary>
1473 + /// <param name="value" type="">An integer representing the number of pixels, or an integer with an optional unit of measure appended (as a string).</param>
1474 + /// <returns type="jQuery" />
1475 + /// </signature>
1476 + /// <signature>
1477 + /// <summary>Set the CSS height of every matched element.</summary>
1478 + /// <param name="function(index, height)" type="Function">A function returning the height to set. Receives the index position of the element in the set and the old height as arguments. Within the function, this refers to the current element in the set.</param>
1479 + /// <returns type="jQuery" />
1480 + /// </signature>
1481 + },
1482 + 'hidden': function() {
1483 + /// <summary>Selects all elements that are hidden.</summary>
1484 + },
1485 + 'hide': function() {
1486 + /// <signature>
1487 + /// <summary>Hide the matched elements.</summary>
1488 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1489 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1490 + /// <returns type="jQuery" />
1491 + /// </signature>
1492 + /// <signature>
1493 + /// <summary>Hide the matched elements.</summary>
1494 + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
1495 + /// <returns type="jQuery" />
1496 + /// </signature>
1497 + /// <signature>
1498 + /// <summary>Hide the matched elements.</summary>
1499 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
1500 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
1501 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
1502 + /// <returns type="jQuery" />
1503 + /// </signature>
1504 + },
1505 + 'hover': function() {
1506 + /// <signature>
1507 + /// <summary>Bind two handlers to the matched elements, to be executed when the mouse pointer enters and leaves the elements.</summary>
1508 + /// <param name="handlerIn(eventObject)" type="Function">A function to execute when the mouse pointer enters the element.</param>
1509 + /// <param name="handlerOut(eventObject)" type="Function">A function to execute when the mouse pointer leaves the element.</param>
1510 + /// <returns type="jQuery" />
1511 + /// </signature>
1512 + },
1513 + 'html': function() {
1514 + /// <signature>
1515 + /// <summary>Set the HTML contents of each element in the set of matched elements.</summary>
1516 + /// <param name="htmlString" type="htmlString">A string of HTML to set as the content of each matched element.</param>
1517 + /// <returns type="jQuery" />
1518 + /// </signature>
1519 + /// <signature>
1520 + /// <summary>Set the HTML contents of each element in the set of matched elements.</summary>
1521 + /// <param name="function(index, oldhtml)" type="Function">A function returning the HTML content to set. Receives the index position of the element in the set and the old HTML value as arguments. jQuery empties the element before calling the function; use the oldhtml argument to reference the previous content. Within the function, this refers to the current element in the set.</param>
1522 + /// <returns type="jQuery" />
1523 + /// </signature>
1524 + },
1525 + 'id': function() {
1526 + /// <signature>
1527 + /// <summary>Selects a single element with the given id attribute.</summary>
1528 + /// <param name="id" type="String">An ID to search for, specified via the id attribute of an element.</param>
1529 + /// </signature>
1530 + },
1531 + 'image': function() {
1532 + /// <summary>Selects all elements of type image.</summary>
1533 + },
1534 + 'index': function() {
1535 + /// <signature>
1536 + /// <summary>Search for a given element from among the matched elements.</summary>
1537 + /// <param name="selector" type="String">A selector representing a jQuery collection in which to look for an element.</param>
1538 + /// <returns type="Number" />
1539 + /// </signature>
1540 + /// <signature>
1541 + /// <summary>Search for a given element from among the matched elements.</summary>
1542 + /// <param name="element" type="">The DOM element or first element within the jQuery object to look for.</param>
1543 + /// <returns type="Number" />
1544 + /// </signature>
1545 + },
1546 + 'init': function() {
1547 + /// <signature>
1548 + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
1549 + /// <param name="selector" type="String">A string containing a selector expression</param>
1550 + /// <param name="context" type="">A DOM Element, Document, or jQuery to use as context</param>
1551 + /// <returns type="jQuery" />
1552 + /// </signature>
1553 + /// <signature>
1554 + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
1555 + /// <param name="element" type="Element">A DOM element to wrap in a jQuery object.</param>
1556 + /// <returns type="jQuery" />
1557 + /// </signature>
1558 + /// <signature>
1559 + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
1560 + /// <param name="elementArray" type="Array">An array containing a set of DOM elements to wrap in a jQuery object.</param>
1561 + /// <returns type="jQuery" />
1562 + /// </signature>
1563 + /// <signature>
1564 + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
1565 + /// <param name="object" type="PlainObject">A plain object to wrap in a jQuery object.</param>
1566 + /// <returns type="jQuery" />
1567 + /// </signature>
1568 + /// <signature>
1569 + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
1570 + /// <param name="jQuery object" type="PlainObject">An existing jQuery object to clone.</param>
1571 + /// <returns type="jQuery" />
1572 + /// </signature>
1573 + },
1574 + 'innerHeight': function() {
1575 + /// <summary>Get the current computed height for the first element in the set of matched elements, including padding but not border.</summary>
1576 + /// <returns type="Number" />
1577 + },
1578 + 'innerWidth': function() {
1579 + /// <summary>Get the current computed width for the first element in the set of matched elements, including padding but not border.</summary>
1580 + /// <returns type="Number" />
1581 + },
1582 + 'input': function() {
1583 + /// <summary>Selects all input, textarea, select and button elements.</summary>
1584 + },
1585 + 'insertAfter': function() {
1586 + /// <signature>
1587 + /// <summary>Insert every element in the set of matched elements after the target.</summary>
1588 + /// <param name="target" type="">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted after the element(s) specified by this parameter.</param>
1589 + /// <returns type="jQuery" />
1590 + /// </signature>
1591 + },
1592 + 'insertBefore': function() {
1593 + /// <signature>
1594 + /// <summary>Insert every element in the set of matched elements before the target.</summary>
1595 + /// <param name="target" type="">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted before the element(s) specified by this parameter.</param>
1596 + /// <returns type="jQuery" />
1597 + /// </signature>
1598 + },
1599 + 'is': function() {
1600 + /// <signature>
1601 + /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
1602 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1603 + /// <returns type="Boolean" />
1604 + /// </signature>
1605 + /// <signature>
1606 + /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
1607 + /// <param name="function(index)" type="Function">A function used as a test for the set of elements. It accepts one argument, index, which is the element's index in the jQuery collection.Within the function, this refers to the current DOM element.</param>
1608 + /// <returns type="Boolean" />
1609 + /// </signature>
1610 + /// <signature>
1611 + /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
1612 + /// <param name="jQuery object" type="Object">An existing jQuery object to match the current set of elements against.</param>
1613 + /// <returns type="Boolean" />
1614 + /// </signature>
1615 + /// <signature>
1616 + /// <summary>Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments.</summary>
1617 + /// <param name="element" type="Element">An element to match the current set of elements against.</param>
1618 + /// <returns type="Boolean" />
1619 + /// </signature>
1620 + },
1621 + 'jquery': function() {
1622 + /// <summary>A string containing the jQuery version number.</summary>
1623 + /// <returns type="String" />
1624 + },
1625 + 'keydown': function() {
1626 + /// <signature>
1627 + /// <summary>Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element.</summary>
1628 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1629 + /// <returns type="jQuery" />
1630 + /// </signature>
1631 + /// <signature>
1632 + /// <summary>Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element.</summary>
1633 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1634 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1635 + /// <returns type="jQuery" />
1636 + /// </signature>
1637 + },
1638 + 'keypress': function() {
1639 + /// <signature>
1640 + /// <summary>Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element.</summary>
1641 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1642 + /// <returns type="jQuery" />
1643 + /// </signature>
1644 + /// <signature>
1645 + /// <summary>Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element.</summary>
1646 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1647 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1648 + /// <returns type="jQuery" />
1649 + /// </signature>
1650 + },
1651 + 'keyup': function() {
1652 + /// <signature>
1653 + /// <summary>Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element.</summary>
1654 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1655 + /// <returns type="jQuery" />
1656 + /// </signature>
1657 + /// <signature>
1658 + /// <summary>Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element.</summary>
1659 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1660 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1661 + /// <returns type="jQuery" />
1662 + /// </signature>
1663 + },
1664 + 'lang': function() {
1665 + /// <signature>
1666 + /// <summary>Selects all elements of the specified language.</summary>
1667 + /// <param name="language" type="String">A language code.</param>
1668 + /// </signature>
1669 + },
1670 + 'last': function() {
1671 + /// <summary>Selects the last matched element.</summary>
1672 + },
1673 + 'last-child': function() {
1674 + /// <summary>Selects all elements that are the last child of their parent.</summary>
1675 + },
1676 + 'last-of-type': function() {
1677 + /// <summary>Selects all elements that are the last among siblings of the same element name.</summary>
1678 + },
1679 + 'length': function() {
1680 + /// <summary>The number of elements in the jQuery object.</summary>
1681 + /// <returns type="Number" />
1682 + },
1683 + 'live': function() {
1684 + /// <signature>
1685 + /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary>
1686 + /// <param name="events" type="String">A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names.</param>
1687 + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
1688 + /// <returns type="jQuery" />
1689 + /// </signature>
1690 + /// <signature>
1691 + /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary>
1692 + /// <param name="events" type="String">A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names.</param>
1693 + /// <param name="data" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1694 + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
1695 + /// <returns type="jQuery" />
1696 + /// </signature>
1697 + /// <signature>
1698 + /// <summary>Attach an event handler for all elements which match the current selector, now and in the future.</summary>
1699 + /// <param name="events" type="PlainObject">A plain object of one or more JavaScript event types and functions to execute for them.</param>
1700 + /// <returns type="jQuery" />
1701 + /// </signature>
1702 + },
1703 + 'load': function() {
1704 + /// <signature>
1705 + /// <summary>Bind an event handler to the "load" JavaScript event.</summary>
1706 + /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param>
1707 + /// <returns type="jQuery" />
1708 + /// </signature>
1709 + /// <signature>
1710 + /// <summary>Bind an event handler to the "load" JavaScript event.</summary>
1711 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1712 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1713 + /// <returns type="jQuery" />
1714 + /// </signature>
1715 + },
1716 + 'lt': function() {
1717 + /// <signature>
1718 + /// <summary>Select all elements at an index less than index within the matched set.</summary>
1719 + /// <param name="index" type="Number">Zero-based index.</param>
1720 + /// </signature>
1721 + /// <signature>
1722 + /// <summary>Select all elements at an index less than index within the matched set.</summary>
1723 + /// <param name="-index" type="Number">Zero-based index, counting backwards from the last element.</param>
1724 + /// </signature>
1725 + },
1726 + 'map': function() {
1727 + /// <signature>
1728 + /// <summary>Pass each element in the current matched set through a function, producing a new jQuery object containing the return values.</summary>
1729 + /// <param name="callback(index, domElement)" type="Function">A function object that will be invoked for each element in the current set.</param>
1730 + /// <returns type="jQuery" />
1731 + /// </signature>
1732 + },
1733 + 'mousedown': function() {
1734 + /// <signature>
1735 + /// <summary>Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element.</summary>
1736 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1737 + /// <returns type="jQuery" />
1738 + /// </signature>
1739 + /// <signature>
1740 + /// <summary>Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element.</summary>
1741 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1742 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1743 + /// <returns type="jQuery" />
1744 + /// </signature>
1745 + },
1746 + 'mouseenter': function() {
1747 + /// <signature>
1748 + /// <summary>Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element.</summary>
1749 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1750 + /// <returns type="jQuery" />
1751 + /// </signature>
1752 + /// <signature>
1753 + /// <summary>Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element.</summary>
1754 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1755 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1756 + /// <returns type="jQuery" />
1757 + /// </signature>
1758 + },
1759 + 'mouseleave': function() {
1760 + /// <signature>
1761 + /// <summary>Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element.</summary>
1762 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1763 + /// <returns type="jQuery" />
1764 + /// </signature>
1765 + /// <signature>
1766 + /// <summary>Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element.</summary>
1767 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1768 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1769 + /// <returns type="jQuery" />
1770 + /// </signature>
1771 + },
1772 + 'mousemove': function() {
1773 + /// <signature>
1774 + /// <summary>Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element.</summary>
1775 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1776 + /// <returns type="jQuery" />
1777 + /// </signature>
1778 + /// <signature>
1779 + /// <summary>Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element.</summary>
1780 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1781 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1782 + /// <returns type="jQuery" />
1783 + /// </signature>
1784 + },
1785 + 'mouseout': function() {
1786 + /// <signature>
1787 + /// <summary>Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element.</summary>
1788 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1789 + /// <returns type="jQuery" />
1790 + /// </signature>
1791 + /// <signature>
1792 + /// <summary>Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element.</summary>
1793 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1794 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1795 + /// <returns type="jQuery" />
1796 + /// </signature>
1797 + },
1798 + 'mouseover': function() {
1799 + /// <signature>
1800 + /// <summary>Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element.</summary>
1801 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1802 + /// <returns type="jQuery" />
1803 + /// </signature>
1804 + /// <signature>
1805 + /// <summary>Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element.</summary>
1806 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1807 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1808 + /// <returns type="jQuery" />
1809 + /// </signature>
1810 + },
1811 + 'mouseup': function() {
1812 + /// <signature>
1813 + /// <summary>Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element.</summary>
1814 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1815 + /// <returns type="jQuery" />
1816 + /// </signature>
1817 + /// <signature>
1818 + /// <summary>Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element.</summary>
1819 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1820 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
1821 + /// <returns type="jQuery" />
1822 + /// </signature>
1823 + },
1824 + 'multiple': function() {
1825 + /// <signature>
1826 + /// <summary>Selects the combined results of all the specified selectors.</summary>
1827 + /// <param name="selector1" type="String">Any valid selector.</param>
1828 + /// <param name="selector2" type="String">Another valid selector.</param>
1829 + /// <param name="selectorN" type="String">As many more valid selectors as you like.</param>
1830 + /// </signature>
1831 + },
1832 + 'next': function() {
1833 + /// <signature>
1834 + /// <summary>Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector.</summary>
1835 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1836 + /// <returns type="jQuery" />
1837 + /// </signature>
1838 + },
1839 + 'next adjacent': function() {
1840 + /// <signature>
1841 + /// <summary>Selects all next elements matching "next" that are immediately preceded by a sibling "prev".</summary>
1842 + /// <param name="prev" type="String">Any valid selector.</param>
1843 + /// <param name="next" type="String">A selector to match the element that is next to the first selector.</param>
1844 + /// </signature>
1845 + },
1846 + 'next siblings': function() {
1847 + /// <signature>
1848 + /// <summary>Selects all sibling elements that follow after the "prev" element, have the same parent, and match the filtering "siblings" selector.</summary>
1849 + /// <param name="prev" type="String">Any valid selector.</param>
1850 + /// <param name="siblings" type="String">A selector to filter elements that are the following siblings of the first selector.</param>
1851 + /// </signature>
1852 + },
1853 + 'nextAll': function() {
1854 + /// <signature>
1855 + /// <summary>Get all following siblings of each element in the set of matched elements, optionally filtered by a selector.</summary>
1856 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1857 + /// <returns type="jQuery" />
1858 + /// </signature>
1859 + },
1860 + 'nextUntil': function() {
1861 + /// <signature>
1862 + /// <summary>Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed.</summary>
1863 + /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching following sibling elements.</param>
1864 + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
1865 + /// <returns type="jQuery" />
1866 + /// </signature>
1867 + /// <signature>
1868 + /// <summary>Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed.</summary>
1869 + /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching following sibling elements.</param>
1870 + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
1871 + /// <returns type="jQuery" />
1872 + /// </signature>
1873 + },
1874 + 'not': function() {
1875 + /// <signature>
1876 + /// <summary>Remove elements from the set of matched elements.</summary>
1877 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
1878 + /// <returns type="jQuery" />
1879 + /// </signature>
1880 + /// <signature>
1881 + /// <summary>Remove elements from the set of matched elements.</summary>
1882 + /// <param name="elements" type="Array">One or more DOM elements to remove from the matched set.</param>
1883 + /// <returns type="jQuery" />
1884 + /// </signature>
1885 + /// <signature>
1886 + /// <summary>Remove elements from the set of matched elements.</summary>
1887 + /// <param name="function(index)" type="Function">A function used as a test for each element in the set. this is the current DOM element.</param>
1888 + /// <returns type="jQuery" />
1889 + /// </signature>
1890 + /// <signature>
1891 + /// <summary>Remove elements from the set of matched elements.</summary>
1892 + /// <param name="jQuery object" type="PlainObject">An existing jQuery object to match the current set of elements against.</param>
1893 + /// <returns type="jQuery" />
1894 + /// </signature>
1895 + },
1896 + 'nth-child': function() {
1897 + /// <signature>
1898 + /// <summary>Selects all elements that are the nth-child of their parent.</summary>
1899 + /// <param name="index" type="String">The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-child(even), :nth-child(4n) )</param>
1900 + /// </signature>
1901 + },
1902 + 'nth-last-child': function() {
1903 + /// <signature>
1904 + /// <summary>Selects all elements that are the nth-child of their parent, counting from the last element to the first.</summary>
1905 + /// <param name="index" type="String">The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) )</param>
1906 + /// </signature>
1907 + },
1908 + 'nth-last-of-type': function() {
1909 + /// <signature>
1910 + /// <summary>Selects all elements that are the nth-child of their parent, counting from the last element to the first.</summary>
1911 + /// <param name="index" type="String">The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-of-type(even), :nth-last-of-type(4n) )</param>
1912 + /// </signature>
1913 + },
1914 + 'nth-of-type': function() {
1915 + /// <signature>
1916 + /// <summary>Selects all elements that are the nth child of their parent in relation to siblings with the same element name.</summary>
1917 + /// <param name="index" type="String">The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-of-type(even), :nth-of-type(4n) )</param>
1918 + /// </signature>
1919 + },
1920 + 'odd': function() {
1921 + /// <summary>Selects odd elements, zero-indexed. See also even.</summary>
1922 + },
1923 + 'off': function() {
1924 + /// <signature>
1925 + /// <summary>Remove an event handler.</summary>
1926 + /// <param name="events" type="String">One or more space-separated event types and optional namespaces, or just namespaces, such as "click", "keydown.myPlugin", or ".myPlugin".</param>
1927 + /// <param name="selector" type="String">A selector which should match the one originally passed to .on() when attaching event handlers.</param>
1928 + /// <param name="handler(eventObject)" type="Function">A handler function previously attached for the event(s), or the special value false.</param>
1929 + /// <returns type="jQuery" />
1930 + /// </signature>
1931 + /// <signature>
1932 + /// <summary>Remove an event handler.</summary>
1933 + /// <param name="events" type="PlainObject">An object where the string keys represent one or more space-separated event types and optional namespaces, and the values represent handler functions previously attached for the event(s).</param>
1934 + /// <param name="selector" type="String">A selector which should match the one originally passed to .on() when attaching event handlers.</param>
1935 + /// <returns type="jQuery" />
1936 + /// </signature>
1937 + },
1938 + 'offset': function() {
1939 + /// <signature>
1940 + /// <summary>Set the current coordinates of every element in the set of matched elements, relative to the document.</summary>
1941 + /// <param name="coordinates" type="PlainObject">An object containing the properties top and left, which are integers indicating the new top and left coordinates for the elements.</param>
1942 + /// <returns type="jQuery" />
1943 + /// </signature>
1944 + /// <signature>
1945 + /// <summary>Set the current coordinates of every element in the set of matched elements, relative to the document.</summary>
1946 + /// <param name="function(index, coords)" type="Function">A function to return the coordinates to set. Receives the index of the element in the collection as the first argument and the current coordinates as the second argument. The function should return an object with the new top and left properties.</param>
1947 + /// <returns type="jQuery" />
1948 + /// </signature>
1949 + },
1950 + 'offsetParent': function() {
1951 + /// <summary>Get the closest ancestor element that is positioned.</summary>
1952 + /// <returns type="jQuery" />
1953 + },
1954 + 'on': function() {
1955 + /// <signature>
1956 + /// <summary>Attach an event handler function for one or more events to the selected elements.</summary>
1957 + /// <param name="events" type="String">One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".</param>
1958 + /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element.</param>
1959 + /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event is triggered.</param>
1960 + /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false.</param>
1961 + /// <returns type="jQuery" />
1962 + /// </signature>
1963 + /// <signature>
1964 + /// <summary>Attach an event handler function for one or more events to the selected elements.</summary>
1965 + /// <param name="events" type="PlainObject">An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s).</param>
1966 + /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element.</param>
1967 + /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event occurs.</param>
1968 + /// <returns type="jQuery" />
1969 + /// </signature>
1970 + },
1971 + 'one': function() {
1972 + /// <signature>
1973 + /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary>
1974 + /// <param name="events" type="String">A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names.</param>
1975 + /// <param name="data" type="PlainObject">An object containing data that will be passed to the event handler.</param>
1976 + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
1977 + /// <returns type="jQuery" />
1978 + /// </signature>
1979 + /// <signature>
1980 + /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary>
1981 + /// <param name="events" type="String">One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin".</param>
1982 + /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element.</param>
1983 + /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event is triggered.</param>
1984 + /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false.</param>
1985 + /// <returns type="jQuery" />
1986 + /// </signature>
1987 + /// <signature>
1988 + /// <summary>Attach a handler to an event for the elements. The handler is executed at most once per element.</summary>
1989 + /// <param name="events" type="PlainObject">An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s).</param>
1990 + /// <param name="selector" type="String">A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element.</param>
1991 + /// <param name="data" type="Anything">Data to be passed to the handler in event.data when an event occurs.</param>
1992 + /// <returns type="jQuery" />
1993 + /// </signature>
1994 + },
1995 + 'only-child': function() {
1996 + /// <summary>Selects all elements that are the only child of their parent.</summary>
1997 + },
1998 + 'only-of-type': function() {
1999 + /// <summary>Selects all elements that have no siblings with the same element name.</summary>
2000 + },
2001 + 'outerHeight': function() {
2002 + /// <signature>
2003 + /// <summary>Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. Returns an integer (without "px") representation of the value or null if called on an empty set of elements.</summary>
2004 + /// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param>
2005 + /// <returns type="Number" />
2006 + /// </signature>
2007 + },
2008 + 'outerWidth': function() {
2009 + /// <signature>
2010 + /// <summary>Get the current computed width for the first element in the set of matched elements, including padding and border.</summary>
2011 + /// <param name="includeMargin" type="Boolean">A Boolean indicating whether to include the element's margin in the calculation.</param>
2012 + /// <returns type="Number" />
2013 + /// </signature>
2014 + },
2015 + 'parent': function() {
2016 + /// <signature>
2017 + /// <summary>Get the parent of each element in the current set of matched elements, optionally filtered by a selector.</summary>
2018 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
2019 + /// <returns type="jQuery" />
2020 + /// </signature>
2021 + },
2022 + 'parents': function() {
2023 + /// <signature>
2024 + /// <summary>Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector.</summary>
2025 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
2026 + /// <returns type="jQuery" />
2027 + /// </signature>
2028 + },
2029 + 'parentsUntil': function() {
2030 + /// <signature>
2031 + /// <summary>Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
2032 + /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching ancestor elements.</param>
2033 + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
2034 + /// <returns type="jQuery" />
2035 + /// </signature>
2036 + /// <signature>
2037 + /// <summary>Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
2038 + /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching ancestor elements.</param>
2039 + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
2040 + /// <returns type="jQuery" />
2041 + /// </signature>
2042 + },
2043 + 'password': function() {
2044 + /// <summary>Selects all elements of type password.</summary>
2045 + },
2046 + 'position': function() {
2047 + /// <summary>Get the current coordinates of the first element in the set of matched elements, relative to the offset parent.</summary>
2048 + /// <returns type="Object" />
2049 + },
2050 + 'prepend': function() {
2051 + /// <signature>
2052 + /// <summary>Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.</summary>
2053 + /// <param name="content" type="">DOM element, array of elements, HTML string, or jQuery object to insert at the beginning of each element in the set of matched elements.</param>
2054 + /// <param name="content" type="">One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the beginning of each element in the set of matched elements.</param>
2055 + /// <returns type="jQuery" />
2056 + /// </signature>
2057 + /// <signature>
2058 + /// <summary>Insert content, specified by the parameter, to the beginning of each element in the set of matched elements.</summary>
2059 + /// <param name="function(index, html)" type="Function">A function that returns an HTML string, DOM element(s), or jQuery object to insert at the beginning of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set.</param>
2060 + /// <returns type="jQuery" />
2061 + /// </signature>
2062 + },
2063 + 'prependTo': function() {
2064 + /// <signature>
2065 + /// <summary>Insert every element in the set of matched elements to the beginning of the target.</summary>
2066 + /// <param name="target" type="">A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the beginning of the element(s) specified by this parameter.</param>
2067 + /// <returns type="jQuery" />
2068 + /// </signature>
2069 + },
2070 + 'prev': function() {
2071 + /// <signature>
2072 + /// <summary>Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector.</summary>
2073 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
2074 + /// <returns type="jQuery" />
2075 + /// </signature>
2076 + },
2077 + 'prevAll': function() {
2078 + /// <signature>
2079 + /// <summary>Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector.</summary>
2080 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
2081 + /// <returns type="jQuery" />
2082 + /// </signature>
2083 + },
2084 + 'prevUntil': function() {
2085 + /// <signature>
2086 + /// <summary>Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
2087 + /// <param name="selector" type="String">A string containing a selector expression to indicate where to stop matching preceding sibling elements.</param>
2088 + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
2089 + /// <returns type="jQuery" />
2090 + /// </signature>
2091 + /// <signature>
2092 + /// <summary>Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object.</summary>
2093 + /// <param name="element" type="Element">A DOM node or jQuery object indicating where to stop matching preceding sibling elements.</param>
2094 + /// <param name="filter" type="String">A string containing a selector expression to match elements against.</param>
2095 + /// <returns type="jQuery" />
2096 + /// </signature>
2097 + },
2098 + 'promise': function() {
2099 + /// <signature>
2100 + /// <summary>Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished.</summary>
2101 + /// <param name="type" type="String">The type of queue that needs to be observed.</param>
2102 + /// <param name="target" type="PlainObject">Object onto which the promise methods have to be attached</param>
2103 + /// <returns type="Promise" />
2104 + /// </signature>
2105 + },
2106 + 'prop': function() {
2107 + /// <signature>
2108 + /// <summary>Set one or more properties for the set of matched elements.</summary>
2109 + /// <param name="propertyName" type="String">The name of the property to set.</param>
2110 + /// <param name="value" type="">A value to set for the property.</param>
2111 + /// <returns type="jQuery" />
2112 + /// </signature>
2113 + /// <signature>
2114 + /// <summary>Set one or more properties for the set of matched elements.</summary>
2115 + /// <param name="properties" type="PlainObject">An object of property-value pairs to set.</param>
2116 + /// <returns type="jQuery" />
2117 + /// </signature>
2118 + /// <signature>
2119 + /// <summary>Set one or more properties for the set of matched elements.</summary>
2120 + /// <param name="propertyName" type="String">The name of the property to set.</param>
2121 + /// <param name="function(index, oldPropertyValue)" type="Function">A function returning the value to set. Receives the index position of the element in the set and the old property value as arguments. Within the function, the keyword this refers to the current element.</param>
2122 + /// <returns type="jQuery" />
2123 + /// </signature>
2124 + },
2125 + 'pushStack': function() {
2126 + /// <signature>
2127 + /// <summary>Add a collection of DOM elements onto the jQuery stack.</summary>
2128 + /// <param name="elements" type="Array">An array of elements to push onto the stack and make into a new jQuery object.</param>
2129 + /// <returns type="jQuery" />
2130 + /// </signature>
2131 + /// <signature>
2132 + /// <summary>Add a collection of DOM elements onto the jQuery stack.</summary>
2133 + /// <param name="elements" type="Array">An array of elements to push onto the stack and make into a new jQuery object.</param>
2134 + /// <param name="name" type="String">The name of a jQuery method that generated the array of elements.</param>
2135 + /// <param name="arguments" type="Array">The arguments that were passed in to the jQuery method (for serialization).</param>
2136 + /// <returns type="jQuery" />
2137 + /// </signature>
2138 + },
2139 + 'queue': function() {
2140 + /// <signature>
2141 + /// <summary>Manipulate the queue of functions to be executed, once for each matched element.</summary>
2142 + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
2143 + /// <param name="newQueue" type="Array">An array of functions to replace the current queue contents.</param>
2144 + /// <returns type="jQuery" />
2145 + /// </signature>
2146 + /// <signature>
2147 + /// <summary>Manipulate the queue of functions to be executed, once for each matched element.</summary>
2148 + /// <param name="queueName" type="String">A string containing the name of the queue. Defaults to fx, the standard effects queue.</param>
2149 + /// <param name="callback( next )" type="Function">The new function to add to the queue, with a function to call that will dequeue the next item.</param>
2150 + /// <returns type="jQuery" />
2151 + /// </signature>
2152 + },
2153 + 'radio': function() {
2154 + /// <summary>Selects all elements of type radio.</summary>
2155 + },
2156 + 'ready': function() {
2157 + /// <signature>
2158 + /// <summary>Specify a function to execute when the DOM is fully loaded.</summary>
2159 + /// <param name="handler" type="Function">A function to execute after the DOM is ready.</param>
2160 + /// <returns type="jQuery" />
2161 + /// </signature>
2162 + },
2163 + 'remove': function() {
2164 + /// <signature>
2165 + /// <summary>Remove the set of matched elements from the DOM.</summary>
2166 + /// <param name="selector" type="String">A selector expression that filters the set of matched elements to be removed.</param>
2167 + /// <returns type="jQuery" />
2168 + /// </signature>
2169 + },
2170 + 'removeAttr': function() {
2171 + /// <signature>
2172 + /// <summary>Remove an attribute from each element in the set of matched elements.</summary>
2173 + /// <param name="attributeName" type="String">An attribute to remove; as of version 1.7, it can be a space-separated list of attributes.</param>
2174 + /// <returns type="jQuery" />
2175 + /// </signature>
2176 + },
2177 + 'removeClass': function() {
2178 + /// <signature>
2179 + /// <summary>Remove a single class, multiple classes, or all classes from each element in the set of matched elements.</summary>
2180 + /// <param name="className" type="String">One or more space-separated classes to be removed from the class attribute of each matched element.</param>
2181 + /// <returns type="jQuery" />
2182 + /// </signature>
2183 + /// <signature>
2184 + /// <summary>Remove a single class, multiple classes, or all classes from each element in the set of matched elements.</summary>
2185 + /// <param name="function(index, class)" type="Function">A function returning one or more space-separated class names to be removed. Receives the index position of the element in the set and the old class value as arguments.</param>
2186 + /// <returns type="jQuery" />
2187 + /// </signature>
2188 + },
2189 + 'removeData': function() {
2190 + /// <signature>
2191 + /// <summary>Remove a previously-stored piece of data.</summary>
2192 + /// <param name="name" type="String">A string naming the piece of data to delete.</param>
2193 + /// <returns type="jQuery" />
2194 + /// </signature>
2195 + /// <signature>
2196 + /// <summary>Remove a previously-stored piece of data.</summary>
2197 + /// <param name="list" type="">An array or space-separated string naming the pieces of data to delete.</param>
2198 + /// <returns type="jQuery" />
2199 + /// </signature>
2200 + },
2201 + 'removeProp': function() {
2202 + /// <signature>
2203 + /// <summary>Remove a property for the set of matched elements.</summary>
2204 + /// <param name="propertyName" type="String">The name of the property to remove.</param>
2205 + /// <returns type="jQuery" />
2206 + /// </signature>
2207 + },
2208 + 'replaceAll': function() {
2209 + /// <signature>
2210 + /// <summary>Replace each target element with the set of matched elements.</summary>
2211 + /// <param name="target" type="">A selector string, jQuery object, or DOM element reference indicating which element(s) to replace.</param>
2212 + /// <returns type="jQuery" />
2213 + /// </signature>
2214 + },
2215 + 'replaceWith': function() {
2216 + /// <signature>
2217 + /// <summary>Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed.</summary>
2218 + /// <param name="newContent" type="">The content to insert. May be an HTML string, DOM element, or jQuery object.</param>
2219 + /// <returns type="jQuery" />
2220 + /// </signature>
2221 + /// <signature>
2222 + /// <summary>Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed.</summary>
2223 + /// <param name="function" type="Function">A function that returns content with which to replace the set of matched elements.</param>
2224 + /// <returns type="jQuery" />
2225 + /// </signature>
2226 + },
2227 + 'reset': function() {
2228 + /// <summary>Selects all elements of type reset.</summary>
2229 + },
2230 + 'resize': function() {
2231 + /// <signature>
2232 + /// <summary>Bind an event handler to the "resize" JavaScript event, or trigger that event on an element.</summary>
2233 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2234 + /// <returns type="jQuery" />
2235 + /// </signature>
2236 + /// <signature>
2237 + /// <summary>Bind an event handler to the "resize" JavaScript event, or trigger that event on an element.</summary>
2238 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
2239 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2240 + /// <returns type="jQuery" />
2241 + /// </signature>
2242 + },
2243 + 'root': function() {
2244 + /// <summary>Selects the element that is the root of the document.</summary>
2245 + },
2246 + 'scroll': function() {
2247 + /// <signature>
2248 + /// <summary>Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element.</summary>
2249 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2250 + /// <returns type="jQuery" />
2251 + /// </signature>
2252 + /// <signature>
2253 + /// <summary>Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element.</summary>
2254 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
2255 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2256 + /// <returns type="jQuery" />
2257 + /// </signature>
2258 + },
2259 + 'scrollLeft': function() {
2260 + /// <signature>
2261 + /// <summary>Set the current horizontal position of the scroll bar for each of the set of matched elements.</summary>
2262 + /// <param name="value" type="Number">An integer indicating the new position to set the scroll bar to.</param>
2263 + /// <returns type="jQuery" />
2264 + /// </signature>
2265 + },
2266 + 'scrollTop': function() {
2267 + /// <signature>
2268 + /// <summary>Set the current vertical position of the scroll bar for each of the set of matched elements.</summary>
2269 + /// <param name="value" type="Number">An integer indicating the new position to set the scroll bar to.</param>
2270 + /// <returns type="jQuery" />
2271 + /// </signature>
2272 + },
2273 + 'select': function() {
2274 + /// <signature>
2275 + /// <summary>Bind an event handler to the "select" JavaScript event, or trigger that event on an element.</summary>
2276 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2277 + /// <returns type="jQuery" />
2278 + /// </signature>
2279 + /// <signature>
2280 + /// <summary>Bind an event handler to the "select" JavaScript event, or trigger that event on an element.</summary>
2281 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
2282 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2283 + /// <returns type="jQuery" />
2284 + /// </signature>
2285 + },
2286 + 'selected': function() {
2287 + /// <summary>Selects all elements that are selected.</summary>
2288 + },
2289 + 'selector': function() {
2290 + /// <summary>A selector representing selector passed to jQuery(), if any, when creating the original set.</summary>
2291 + /// <returns type="String" />
2292 + },
2293 + 'serialize': function() {
2294 + /// <summary>Encode a set of form elements as a string for submission.</summary>
2295 + /// <returns type="String" />
2296 + },
2297 + 'serializeArray': function() {
2298 + /// <summary>Encode a set of form elements as an array of names and values.</summary>
2299 + /// <returns type="Array" />
2300 + },
2301 + 'show': function() {
2302 + /// <signature>
2303 + /// <summary>Display the matched elements.</summary>
2304 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2305 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2306 + /// <returns type="jQuery" />
2307 + /// </signature>
2308 + /// <signature>
2309 + /// <summary>Display the matched elements.</summary>
2310 + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
2311 + /// <returns type="jQuery" />
2312 + /// </signature>
2313 + /// <signature>
2314 + /// <summary>Display the matched elements.</summary>
2315 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2316 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
2317 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2318 + /// <returns type="jQuery" />
2319 + /// </signature>
2320 + },
2321 + 'siblings': function() {
2322 + /// <signature>
2323 + /// <summary>Get the siblings of each element in the set of matched elements, optionally filtered by a selector.</summary>
2324 + /// <param name="selector" type="String">A string containing a selector expression to match elements against.</param>
2325 + /// <returns type="jQuery" />
2326 + /// </signature>
2327 + },
2328 + 'size': function() {
2329 + /// <summary>Return the number of elements in the jQuery object.</summary>
2330 + /// <returns type="Number" />
2331 + },
2332 + 'slice': function() {
2333 + /// <signature>
2334 + /// <summary>Reduce the set of matched elements to a subset specified by a range of indices.</summary>
2335 + /// <param name="start" type="Number">An integer indicating the 0-based position at which the elements begin to be selected. If negative, it indicates an offset from the end of the set.</param>
2336 + /// <param name="end" type="Number">An integer indicating the 0-based position at which the elements stop being selected. If negative, it indicates an offset from the end of the set. If omitted, the range continues until the end of the set.</param>
2337 + /// <returns type="jQuery" />
2338 + /// </signature>
2339 + },
2340 + 'slideDown': function() {
2341 + /// <signature>
2342 + /// <summary>Display the matched elements with a sliding motion.</summary>
2343 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2344 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2345 + /// <returns type="jQuery" />
2346 + /// </signature>
2347 + /// <signature>
2348 + /// <summary>Display the matched elements with a sliding motion.</summary>
2349 + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
2350 + /// <returns type="jQuery" />
2351 + /// </signature>
2352 + /// <signature>
2353 + /// <summary>Display the matched elements with a sliding motion.</summary>
2354 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2355 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
2356 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2357 + /// <returns type="jQuery" />
2358 + /// </signature>
2359 + },
2360 + 'slideToggle': function() {
2361 + /// <signature>
2362 + /// <summary>Display or hide the matched elements with a sliding motion.</summary>
2363 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2364 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2365 + /// <returns type="jQuery" />
2366 + /// </signature>
2367 + /// <signature>
2368 + /// <summary>Display or hide the matched elements with a sliding motion.</summary>
2369 + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
2370 + /// <returns type="jQuery" />
2371 + /// </signature>
2372 + /// <signature>
2373 + /// <summary>Display or hide the matched elements with a sliding motion.</summary>
2374 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2375 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
2376 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2377 + /// <returns type="jQuery" />
2378 + /// </signature>
2379 + },
2380 + 'slideUp': function() {
2381 + /// <signature>
2382 + /// <summary>Hide the matched elements with a sliding motion.</summary>
2383 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2384 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2385 + /// <returns type="jQuery" />
2386 + /// </signature>
2387 + /// <signature>
2388 + /// <summary>Hide the matched elements with a sliding motion.</summary>
2389 + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
2390 + /// <returns type="jQuery" />
2391 + /// </signature>
2392 + /// <signature>
2393 + /// <summary>Hide the matched elements with a sliding motion.</summary>
2394 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2395 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
2396 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2397 + /// <returns type="jQuery" />
2398 + /// </signature>
2399 + },
2400 + 'stop': function() {
2401 + /// <signature>
2402 + /// <summary>Stop the currently-running animation on the matched elements.</summary>
2403 + /// <param name="clearQueue" type="Boolean">A Boolean indicating whether to remove queued animation as well. Defaults to false.</param>
2404 + /// <param name="jumpToEnd" type="Boolean">A Boolean indicating whether to complete the current animation immediately. Defaults to false.</param>
2405 + /// <returns type="jQuery" />
2406 + /// </signature>
2407 + /// <signature>
2408 + /// <summary>Stop the currently-running animation on the matched elements.</summary>
2409 + /// <param name="queue" type="String">The name of the queue in which to stop animations.</param>
2410 + /// <param name="clearQueue" type="Boolean">A Boolean indicating whether to remove queued animation as well. Defaults to false.</param>
2411 + /// <param name="jumpToEnd" type="Boolean">A Boolean indicating whether to complete the current animation immediately. Defaults to false.</param>
2412 + /// <returns type="jQuery" />
2413 + /// </signature>
2414 + },
2415 + 'submit': function() {
2416 + /// <signature>
2417 + /// <summary>Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.</summary>
2418 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2419 + /// <returns type="jQuery" />
2420 + /// </signature>
2421 + /// <signature>
2422 + /// <summary>Bind an event handler to the "submit" JavaScript event, or trigger that event on an element.</summary>
2423 + /// <param name="eventData" type="PlainObject">An object containing data that will be passed to the event handler.</param>
2424 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2425 + /// <returns type="jQuery" />
2426 + /// </signature>
2427 + },
2428 + 'target': function() {
2429 + /// <summary>Selects the target element indicated by the fragment identifier of the document's URI.</summary>
2430 + },
2431 + 'text': function() {
2432 + /// <signature>
2433 + /// <summary>Set the content of each element in the set of matched elements to the specified text.</summary>
2434 + /// <param name="textString" type="String">A string of text to set as the content of each matched element.</param>
2435 + /// <returns type="jQuery" />
2436 + /// </signature>
2437 + /// <signature>
2438 + /// <summary>Set the content of each element in the set of matched elements to the specified text.</summary>
2439 + /// <param name="function(index, text)" type="Function">A function returning the text content to set. Receives the index position of the element in the set and the old text value as arguments.</param>
2440 + /// <returns type="jQuery" />
2441 + /// </signature>
2442 + },
2443 + 'toArray': function() {
2444 + /// <summary>Retrieve all the DOM elements contained in the jQuery set, as an array.</summary>
2445 + /// <returns type="Array" />
2446 + },
2447 + 'toggle': function() {
2448 + /// <signature>
2449 + /// <summary>Display or hide the matched elements.</summary>
2450 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2451 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2452 + /// <returns type="jQuery" />
2453 + /// </signature>
2454 + /// <signature>
2455 + /// <summary>Display or hide the matched elements.</summary>
2456 + /// <param name="options" type="PlainObject">A map of additional options to pass to the method.</param>
2457 + /// <returns type="jQuery" />
2458 + /// </signature>
2459 + /// <signature>
2460 + /// <summary>Display or hide the matched elements.</summary>
2461 + /// <param name="duration" type="">A string or number determining how long the animation will run.</param>
2462 + /// <param name="easing" type="String">A string indicating which easing function to use for the transition.</param>
2463 + /// <param name="complete" type="Function">A function to call once the animation is complete.</param>
2464 + /// <returns type="jQuery" />
2465 + /// </signature>
2466 + /// <signature>
2467 + /// <summary>Display or hide the matched elements.</summary>
2468 + /// <param name="showOrHide" type="Boolean">A Boolean indicating whether to show or hide the elements.</param>
2469 + /// <returns type="jQuery" />
2470 + /// </signature>
2471 + },
2472 + 'toggleClass': function() {
2473 + /// <signature>
2474 + /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
2475 + /// <param name="className" type="String">One or more class names (separated by spaces) to be toggled for each element in the matched set.</param>
2476 + /// <returns type="jQuery" />
2477 + /// </signature>
2478 + /// <signature>
2479 + /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
2480 + /// <param name="className" type="String">One or more class names (separated by spaces) to be toggled for each element in the matched set.</param>
2481 + /// <param name="switch" type="Boolean">A Boolean (not just truthy/falsy) value to determine whether the class should be added or removed.</param>
2482 + /// <returns type="jQuery" />
2483 + /// </signature>
2484 + /// <signature>
2485 + /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
2486 + /// <param name="switch" type="Boolean">A boolean value to determine whether the class should be added or removed.</param>
2487 + /// <returns type="jQuery" />
2488 + /// </signature>
2489 + /// <signature>
2490 + /// <summary>Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument.</summary>
2491 + /// <param name="function(index, class, switch)" type="Function">A function that returns class names to be toggled in the class attribute of each element in the matched set. Receives the index position of the element in the set, the old class value, and the switch as arguments.</param>
2492 + /// <param name="switch" type="Boolean">A boolean value to determine whether the class should be added or removed.</param>
2493 + /// <returns type="jQuery" />
2494 + /// </signature>
2495 + },
2496 + 'trigger': function() {
2497 + /// <signature>
2498 + /// <summary>Execute all handlers and behaviors attached to the matched elements for the given event type.</summary>
2499 + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
2500 + /// <param name="extraParameters" type="">Additional parameters to pass along to the event handler.</param>
2501 + /// <returns type="jQuery" />
2502 + /// </signature>
2503 + /// <signature>
2504 + /// <summary>Execute all handlers and behaviors attached to the matched elements for the given event type.</summary>
2505 + /// <param name="event" type="Event">A jQuery.Event object.</param>
2506 + /// <param name="extraParameters" type="">Additional parameters to pass along to the event handler.</param>
2507 + /// <returns type="jQuery" />
2508 + /// </signature>
2509 + },
2510 + 'triggerHandler': function() {
2511 + /// <signature>
2512 + /// <summary>Execute all handlers attached to an element for an event.</summary>
2513 + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
2514 + /// <param name="extraParameters" type="Array">An array of additional parameters to pass along to the event handler.</param>
2515 + /// <returns type="Object" />
2516 + /// </signature>
2517 + },
2518 + 'unbind': function() {
2519 + /// <signature>
2520 + /// <summary>Remove a previously-attached event handler from the elements.</summary>
2521 + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
2522 + /// <param name="handler(eventObject)" type="Function">The function that is to be no longer executed.</param>
2523 + /// <returns type="jQuery" />
2524 + /// </signature>
2525 + /// <signature>
2526 + /// <summary>Remove a previously-attached event handler from the elements.</summary>
2527 + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as click or submit.</param>
2528 + /// <param name="false" type="Boolean">Unbinds the corresponding 'return false' function that was bound using .bind( eventType, false ).</param>
2529 + /// <returns type="jQuery" />
2530 + /// </signature>
2531 + /// <signature>
2532 + /// <summary>Remove a previously-attached event handler from the elements.</summary>
2533 + /// <param name="event" type="Object">A JavaScript event object as passed to an event handler.</param>
2534 + /// <returns type="jQuery" />
2535 + /// </signature>
2536 + },
2537 + 'undelegate': function() {
2538 + /// <signature>
2539 + /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
2540 + /// <param name="selector" type="String">A selector which will be used to filter the event results.</param>
2541 + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as "click" or "keydown"</param>
2542 + /// <returns type="jQuery" />
2543 + /// </signature>
2544 + /// <signature>
2545 + /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
2546 + /// <param name="selector" type="String">A selector which will be used to filter the event results.</param>
2547 + /// <param name="eventType" type="String">A string containing a JavaScript event type, such as "click" or "keydown"</param>
2548 + /// <param name="handler(eventObject)" type="Function">A function to execute at the time the event is triggered.</param>
2549 + /// <returns type="jQuery" />
2550 + /// </signature>
2551 + /// <signature>
2552 + /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
2553 + /// <param name="selector" type="String">A selector which will be used to filter the event results.</param>
2554 + /// <param name="events" type="PlainObject">An object of one or more event types and previously bound functions to unbind from them.</param>
2555 + /// <returns type="jQuery" />
2556 + /// </signature>
2557 + /// <signature>
2558 + /// <summary>Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements.</summary>
2559 + /// <param name="namespace" type="String">A string containing a namespace to unbind all events from.</param>
2560 + /// <returns type="jQuery" />
2561 + /// </signature>
2562 + },
2563 + 'unload': function() {
2564 + /// <signature>
2565 + /// <summary>Bind an event handler to the "unload" JavaScript event.</summary>
2566 + /// <param name="handler(eventObject)" type="Function">A function to execute when the event is triggered.</param>
2567 + /// <returns type="jQuery" />
2568 + /// </signature>
2569 + /// <signature>
2570 + /// <summary>Bind an event handler to the "unload" JavaScript event.</summary>
2571 + /// <param name="eventData" type="Object">A plain object of data that will be passed to the event handler.</param>
2572 + /// <param name="handler(eventObject)" type="Function">A function to execute each time the event is triggered.</param>
2573 + /// <returns type="jQuery" />
2574 + /// </signature>
2575 + },
2576 + 'unwrap': function() {
2577 + /// <summary>Remove the parents of the set of matched elements from the DOM, leaving the matched elements in their place.</summary>
2578 + /// <returns type="jQuery" />
2579 + },
2580 + 'val': function() {
2581 + /// <signature>
2582 + /// <summary>Set the value of each element in the set of matched elements.</summary>
2583 + /// <param name="value" type="">A string of text or an array of strings corresponding to the value of each matched element to set as selected/checked.</param>
2584 + /// <returns type="jQuery" />
2585 + /// </signature>
2586 + /// <signature>
2587 + /// <summary>Set the value of each element in the set of matched elements.</summary>
2588 + /// <param name="function(index, value)" type="Function">A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments.</param>
2589 + /// <returns type="jQuery" />
2590 + /// </signature>
2591 + },
2592 + 'visible': function() {
2593 + /// <summary>Selects all elements that are visible.</summary>
2594 + },
2595 + 'width': function() {
2596 + /// <signature>
2597 + /// <summary>Set the CSS width of each element in the set of matched elements.</summary>
2598 + /// <param name="value" type="">An integer representing the number of pixels, or an integer along with an optional unit of measure appended (as a string).</param>
2599 + /// <returns type="jQuery" />
2600 + /// </signature>
2601 + /// <signature>
2602 + /// <summary>Set the CSS width of each element in the set of matched elements.</summary>
2603 + /// <param name="function(index, width)" type="Function">A function returning the width to set. Receives the index position of the element in the set and the old width as arguments. Within the function, this refers to the current element in the set.</param>
2604 + /// <returns type="jQuery" />
2605 + /// </signature>
2606 + },
2607 + 'wrap': function() {
2608 + /// <signature>
2609 + /// <summary>Wrap an HTML structure around each element in the set of matched elements.</summary>
2610 + /// <param name="wrappingElement" type="">A selector, element, HTML string, or jQuery object specifying the structure to wrap around the matched elements.</param>
2611 + /// <returns type="jQuery" />
2612 + /// </signature>
2613 + /// <signature>
2614 + /// <summary>Wrap an HTML structure around each element in the set of matched elements.</summary>
2615 + /// <param name="function(index)" type="Function">A callback function returning the HTML content or jQuery object to wrap around the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
2616 + /// <returns type="jQuery" />
2617 + /// </signature>
2618 + },
2619 + 'wrapAll': function() {
2620 + /// <signature>
2621 + /// <summary>Wrap an HTML structure around all elements in the set of matched elements.</summary>
2622 + /// <param name="wrappingElement" type="">A selector, element, HTML string, or jQuery object specifying the structure to wrap around the matched elements.</param>
2623 + /// <returns type="jQuery" />
2624 + /// </signature>
2625 + },
2626 + 'wrapInner': function() {
2627 + /// <signature>
2628 + /// <summary>Wrap an HTML structure around the content of each element in the set of matched elements.</summary>
2629 + /// <param name="wrappingElement" type="String">An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the content of the matched elements.</param>
2630 + /// <returns type="jQuery" />
2631 + /// </signature>
2632 + /// <signature>
2633 + /// <summary>Wrap an HTML structure around the content of each element in the set of matched elements.</summary>
2634 + /// <param name="function(index)" type="Function">A callback function which generates a structure to wrap around the content of the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set.</param>
2635 + /// <returns type="jQuery" />
2636 + /// </signature>
2637 + },
2638 +});
2639 +
2640 +intellisense.annotate(window, {
2641 + '$': function() {
2642 + /// <signature>
2643 + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
2644 + /// <param name="selector" type="String">A string containing a selector expression</param>
2645 + /// <param name="context" type="">A DOM Element, Document, or jQuery to use as context</param>
2646 + /// <returns type="jQuery" />
2647 + /// </signature>
2648 + /// <signature>
2649 + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
2650 + /// <param name="element" type="Element">A DOM element to wrap in a jQuery object.</param>
2651 + /// <returns type="jQuery" />
2652 + /// </signature>
2653 + /// <signature>
2654 + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
2655 + /// <param name="elementArray" type="Array">An array containing a set of DOM elements to wrap in a jQuery object.</param>
2656 + /// <returns type="jQuery" />
2657 + /// </signature>
2658 + /// <signature>
2659 + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
2660 + /// <param name="object" type="PlainObject">A plain object to wrap in a jQuery object.</param>
2661 + /// <returns type="jQuery" />
2662 + /// </signature>
2663 + /// <signature>
2664 + /// <summary>Accepts a string containing a CSS selector which is then used to match a set of elements.</summary>
2665 + /// <param name="jQuery object" type="PlainObject">An existing jQuery object to clone.</param>
2666 + /// <returns type="jQuery" />
2667 + /// </signature>
2668 + },
2669 +});
2670 +
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.js new
+10598
@@ -0,0 +1,10598 @@
1 +/*!
2 + * jQuery JavaScript Library v3.4.1
3 + * https://jquery.com/
4 + *
5 + * Includes Sizzle.js
6 + * https://sizzlejs.com/
7 + *
8 + * Copyright JS Foundation and other contributors
9 + * Released under the MIT license
10 + * https://jquery.org/license
11 + *
12 + * Date: 2019-05-01T21:04Z
13 + */
14 +( function( global, factory ) {
15 +
16 + "use strict";
17 +
18 + if ( typeof module === "object" && typeof module.exports === "object" ) {
19 +
20 + // For CommonJS and CommonJS-like environments where a proper `window`
21 + // is present, execute the factory and get jQuery.
22 + // For environments that do not have a `window` with a `document`
23 + // (such as Node.js), expose a factory as module.exports.
24 + // This accentuates the need for the creation of a real `window`.
25 + // e.g. var jQuery = require("jquery")(window);
26 + // See ticket #14549 for more info.
27 + module.exports = global.document ?
28 + factory( global, true ) :
29 + function( w ) {
30 + if ( !w.document ) {
31 + throw new Error( "jQuery requires a window with a document" );
32 + }
33 + return factory( w );
34 + };
35 + } else {
36 + factory( global );
37 + }
38 +
39 +// Pass this if window is not defined yet
40 +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
41 +
42 +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
43 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
44 +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
45 +// enough that all such attempts are guarded in a try block.
46 +"use strict";
47 +
48 +var arr = [];
49 +
50 +var document = window.document;
51 +
52 +var getProto = Object.getPrototypeOf;
53 +
54 +var slice = arr.slice;
55 +
56 +var concat = arr.concat;
57 +
58 +var push = arr.push;
59 +
60 +var indexOf = arr.indexOf;
61 +
62 +var class2type = {};
63 +
64 +var toString = class2type.toString;
65 +
66 +var hasOwn = class2type.hasOwnProperty;
67 +
68 +var fnToString = hasOwn.toString;
69 +
70 +var ObjectFunctionString = fnToString.call( Object );
71 +
72 +var support = {};
73 +
74 +var isFunction = function isFunction( obj ) {
75 +
76 + // Support: Chrome <=57, Firefox <=52
77 + // In some browsers, typeof returns "function" for HTML <object> elements
78 + // (i.e., `typeof document.createElement( "object" ) === "function"`).
79 + // We don't want to classify *any* DOM node as a function.
80 + return typeof obj === "function" && typeof obj.nodeType !== "number";
81 + };
82 +
83 +
84 +var isWindow = function isWindow( obj ) {
85 + return obj != null && obj === obj.window;
86 + };
87 +
88 +
89 +
90 +
91 + var preservedScriptAttributes = {
92 + type: true,
93 + src: true,
94 + nonce: true,
95 + noModule: true
96 + };
97 +
98 + function DOMEval( code, node, doc ) {
99 + doc = doc || document;
100 +
101 + var i, val,
102 + script = doc.createElement( "script" );
103 +
104 + script.text = code;
105 + if ( node ) {
106 + for ( i in preservedScriptAttributes ) {
107 +
108 + // Support: Firefox 64+, Edge 18+
109 + // Some browsers don't support the "nonce" property on scripts.
110 + // On the other hand, just using `getAttribute` is not enough as
111 + // the `nonce` attribute is reset to an empty string whenever it
112 + // becomes browsing-context connected.
113 + // See https://github.com/whatwg/html/issues/2369
114 + // See https://html.spec.whatwg.org/#nonce-attributes
115 + // The `node.getAttribute` check was added for the sake of
116 + // `jQuery.globalEval` so that it can fake a nonce-containing node
117 + // via an object.
118 + val = node[ i ] || node.getAttribute && node.getAttribute( i );
119 + if ( val ) {
120 + script.setAttribute( i, val );
121 + }
122 + }
123 + }
124 + doc.head.appendChild( script ).parentNode.removeChild( script );
125 + }
126 +
127 +
128 +function toType( obj ) {
129 + if ( obj == null ) {
130 + return obj + "";
131 + }
132 +
133 + // Support: Android <=2.3 only (functionish RegExp)
134 + return typeof obj === "object" || typeof obj === "function" ?
135 + class2type[ toString.call( obj ) ] || "object" :
136 + typeof obj;
137 +}
138 +/* global Symbol */
139 +// Defining this global in .eslintrc.json would create a danger of using the global
140 +// unguarded in another place, it seems safer to define global only for this module
141 +
142 +
143 +
144 +var
145 + version = "3.4.1",
146 +
147 + // Define a local copy of jQuery
148 + jQuery = function( selector, context ) {
149 +
150 + // The jQuery object is actually just the init constructor 'enhanced'
151 + // Need init if jQuery is called (just allow error to be thrown if not included)
152 + return new jQuery.fn.init( selector, context );
153 + },
154 +
155 + // Support: Android <=4.0 only
156 + // Make sure we trim BOM and NBSP
157 + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
158 +
159 +jQuery.fn = jQuery.prototype = {
160 +
161 + // The current version of jQuery being used
162 + jquery: version,
163 +
164 + constructor: jQuery,
165 +
166 + // The default length of a jQuery object is 0
167 + length: 0,
168 +
169 + toArray: function() {
170 + return slice.call( this );
171 + },
172 +
173 + // Get the Nth element in the matched element set OR
174 + // Get the whole matched element set as a clean array
175 + get: function( num ) {
176 +
177 + // Return all the elements in a clean array
178 + if ( num == null ) {
179 + return slice.call( this );
180 + }
181 +
182 + // Return just the one element from the set
183 + return num < 0 ? this[ num + this.length ] : this[ num ];
184 + },
185 +
186 + // Take an array of elements and push it onto the stack
187 + // (returning the new matched element set)
188 + pushStack: function( elems ) {
189 +
190 + // Build a new jQuery matched element set
191 + var ret = jQuery.merge( this.constructor(), elems );
192 +
193 + // Add the old object onto the stack (as a reference)
194 + ret.prevObject = this;
195 +
196 + // Return the newly-formed element set
197 + return ret;
198 + },
199 +
200 + // Execute a callback for every element in the matched set.
201 + each: function( callback ) {
202 + return jQuery.each( this, callback );
203 + },
204 +
205 + map: function( callback ) {
206 + return this.pushStack( jQuery.map( this, function( elem, i ) {
207 + return callback.call( elem, i, elem );
208 + } ) );
209 + },
210 +
211 + slice: function() {
212 + return this.pushStack( slice.apply( this, arguments ) );
213 + },
214 +
215 + first: function() {
216 + return this.eq( 0 );
217 + },
218 +
219 + last: function() {
220 + return this.eq( -1 );
221 + },
222 +
223 + eq: function( i ) {
224 + var len = this.length,
225 + j = +i + ( i < 0 ? len : 0 );
226 + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
227 + },
228 +
229 + end: function() {
230 + return this.prevObject || this.constructor();
231 + },
232 +
233 + // For internal use only.
234 + // Behaves like an Array's method, not like a jQuery method.
235 + push: push,
236 + sort: arr.sort,
237 + splice: arr.splice
238 +};
239 +
240 +jQuery.extend = jQuery.fn.extend = function() {
241 + var options, name, src, copy, copyIsArray, clone,
242 + target = arguments[ 0 ] || {},
243 + i = 1,
244 + length = arguments.length,
245 + deep = false;
246 +
247 + // Handle a deep copy situation
248 + if ( typeof target === "boolean" ) {
249 + deep = target;
250 +
251 + // Skip the boolean and the target
252 + target = arguments[ i ] || {};
253 + i++;
254 + }
255 +
256 + // Handle case when target is a string or something (possible in deep copy)
257 + if ( typeof target !== "object" && !isFunction( target ) ) {
258 + target = {};
259 + }
260 +
261 + // Extend jQuery itself if only one argument is passed
262 + if ( i === length ) {
263 + target = this;
264 + i--;
265 + }
266 +
267 + for ( ; i < length; i++ ) {
268 +
269 + // Only deal with non-null/undefined values
270 + if ( ( options = arguments[ i ] ) != null ) {
271 +
272 + // Extend the base object
273 + for ( name in options ) {
274 + copy = options[ name ];
275 +
276 + // Prevent Object.prototype pollution
277 + // Prevent never-ending loop
278 + if ( name === "__proto__" || target === copy ) {
279 + continue;
280 + }
281 +
282 + // Recurse if we're merging plain objects or arrays
283 + if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
284 + ( copyIsArray = Array.isArray( copy ) ) ) ) {
285 + src = target[ name ];
286 +
287 + // Ensure proper type for the source value
288 + if ( copyIsArray && !Array.isArray( src ) ) {
289 + clone = [];
290 + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
291 + clone = {};
292 + } else {
293 + clone = src;
294 + }
295 + copyIsArray = false;
296 +
297 + // Never move original objects, clone them
298 + target[ name ] = jQuery.extend( deep, clone, copy );
299 +
300 + // Don't bring in undefined values
301 + } else if ( copy !== undefined ) {
302 + target[ name ] = copy;
303 + }
304 + }
305 + }
306 + }
307 +
308 + // Return the modified object
309 + return target;
310 +};
311 +
312 +jQuery.extend( {
313 +
314 + // Unique for each copy of jQuery on the page
315 + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
316 +
317 + // Assume jQuery is ready without the ready module
318 + isReady: true,
319 +
320 + error: function( msg ) {
321 + throw new Error( msg );
322 + },
323 +
324 + noop: function() {},
325 +
326 + isPlainObject: function( obj ) {
327 + var proto, Ctor;
328 +
329 + // Detect obvious negatives
330 + // Use toString instead of jQuery.type to catch host objects
331 + if ( !obj || toString.call( obj ) !== "[object Object]" ) {
332 + return false;
333 + }
334 +
335 + proto = getProto( obj );
336 +
337 + // Objects with no prototype (e.g., `Object.create( null )`) are plain
338 + if ( !proto ) {
339 + return true;
340 + }
341 +
342 + // Objects with prototype are plain iff they were constructed by a global Object function
343 + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
344 + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
345 + },
346 +
347 + isEmptyObject: function( obj ) {
348 + var name;
349 +
350 + for ( name in obj ) {
351 + return false;
352 + }
353 + return true;
354 + },
355 +
356 + // Evaluates a script in a global context
357 + globalEval: function( code, options ) {
358 + DOMEval( code, { nonce: options && options.nonce } );
359 + },
360 +
361 + each: function( obj, callback ) {
362 + var length, i = 0;
363 +
364 + if ( isArrayLike( obj ) ) {
365 + length = obj.length;
366 + for ( ; i < length; i++ ) {
367 + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
368 + break;
369 + }
370 + }
371 + } else {
372 + for ( i in obj ) {
373 + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
374 + break;
375 + }
376 + }
377 + }
378 +
379 + return obj;
380 + },
381 +
382 + // Support: Android <=4.0 only
383 + trim: function( text ) {
384 + return text == null ?
385 + "" :
386 + ( text + "" ).replace( rtrim, "" );
387 + },
388 +
389 + // results is for internal usage only
390 + makeArray: function( arr, results ) {
391 + var ret = results || [];
392 +
393 + if ( arr != null ) {
394 + if ( isArrayLike( Object( arr ) ) ) {
395 + jQuery.merge( ret,
396 + typeof arr === "string" ?
397 + [ arr ] : arr
398 + );
399 + } else {
400 + push.call( ret, arr );
401 + }
402 + }
403 +
404 + return ret;
405 + },
406 +
407 + inArray: function( elem, arr, i ) {
408 + return arr == null ? -1 : indexOf.call( arr, elem, i );
409 + },
410 +
411 + // Support: Android <=4.0 only, PhantomJS 1 only
412 + // push.apply(_, arraylike) throws on ancient WebKit
413 + merge: function( first, second ) {
414 + var len = +second.length,
415 + j = 0,
416 + i = first.length;
417 +
418 + for ( ; j < len; j++ ) {
419 + first[ i++ ] = second[ j ];
420 + }
421 +
422 + first.length = i;
423 +
424 + return first;
425 + },
426 +
427 + grep: function( elems, callback, invert ) {
428 + var callbackInverse,
429 + matches = [],
430 + i = 0,
431 + length = elems.length,
432 + callbackExpect = !invert;
433 +
434 + // Go through the array, only saving the items
435 + // that pass the validator function
436 + for ( ; i < length; i++ ) {
437 + callbackInverse = !callback( elems[ i ], i );
438 + if ( callbackInverse !== callbackExpect ) {
439 + matches.push( elems[ i ] );
440 + }
441 + }
442 +
443 + return matches;
444 + },
445 +
446 + // arg is for internal usage only
447 + map: function( elems, callback, arg ) {
448 + var length, value,
449 + i = 0,
450 + ret = [];
451 +
452 + // Go through the array, translating each of the items to their new values
453 + if ( isArrayLike( elems ) ) {
454 + length = elems.length;
455 + for ( ; i < length; i++ ) {
456 + value = callback( elems[ i ], i, arg );
457 +
458 + if ( value != null ) {
459 + ret.push( value );
460 + }
461 + }
462 +
463 + // Go through every key on the object,
464 + } else {
465 + for ( i in elems ) {
466 + value = callback( elems[ i ], i, arg );
467 +
468 + if ( value != null ) {
469 + ret.push( value );
470 + }
471 + }
472 + }
473 +
474 + // Flatten any nested arrays
475 + return concat.apply( [], ret );
476 + },
477 +
478 + // A global GUID counter for objects
479 + guid: 1,
480 +
481 + // jQuery.support is not used in Core but other projects attach their
482 + // properties to it so it needs to exist.
483 + support: support
484 +} );
485 +
486 +if ( typeof Symbol === "function" ) {
487 + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
488 +}
489 +
490 +// Populate the class2type map
491 +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
492 +function( i, name ) {
493 + class2type[ "[object " + name + "]" ] = name.toLowerCase();
494 +} );
495 +
496 +function isArrayLike( obj ) {
497 +
498 + // Support: real iOS 8.2 only (not reproducible in simulator)
499 + // `in` check used to prevent JIT error (gh-2145)
500 + // hasOwn isn't used here due to false negatives
501 + // regarding Nodelist length in IE
502 + var length = !!obj && "length" in obj && obj.length,
503 + type = toType( obj );
504 +
505 + if ( isFunction( obj ) || isWindow( obj ) ) {
506 + return false;
507 + }
508 +
509 + return type === "array" || length === 0 ||
510 + typeof length === "number" && length > 0 && ( length - 1 ) in obj;
511 +}
512 +var Sizzle =
513 +/*!
514 + * Sizzle CSS Selector Engine v2.3.4
515 + * https://sizzlejs.com/
516 + *
517 + * Copyright JS Foundation and other contributors
518 + * Released under the MIT license
519 + * https://js.foundation/
520 + *
521 + * Date: 2019-04-08
522 + */
523 +(function( window ) {
524 +
525 +var i,
526 + support,
527 + Expr,
528 + getText,
529 + isXML,
530 + tokenize,
531 + compile,
532 + select,
533 + outermostContext,
534 + sortInput,
535 + hasDuplicate,
536 +
537 + // Local document vars
538 + setDocument,
539 + document,
540 + docElem,
541 + documentIsHTML,
542 + rbuggyQSA,
543 + rbuggyMatches,
544 + matches,
545 + contains,
546 +
547 + // Instance-specific data
548 + expando = "sizzle" + 1 * new Date(),
549 + preferredDoc = window.document,
550 + dirruns = 0,
551 + done = 0,
552 + classCache = createCache(),
553 + tokenCache = createCache(),
554 + compilerCache = createCache(),
555 + nonnativeSelectorCache = createCache(),
556 + sortOrder = function( a, b ) {
557 + if ( a === b ) {
558 + hasDuplicate = true;
559 + }
560 + return 0;
561 + },
562 +
563 + // Instance methods
564 + hasOwn = ({}).hasOwnProperty,
565 + arr = [],
566 + pop = arr.pop,
567 + push_native = arr.push,
568 + push = arr.push,
569 + slice = arr.slice,
570 + // Use a stripped-down indexOf as it's faster than native
571 + // https://jsperf.com/thor-indexof-vs-for/5
572 + indexOf = function( list, elem ) {
573 + var i = 0,
574 + len = list.length;
575 + for ( ; i < len; i++ ) {
576 + if ( list[i] === elem ) {
577 + return i;
578 + }
579 + }
580 + return -1;
581 + },
582 +
583 + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
584 +
585 + // Regular expressions
586 +
587 + // http://www.w3.org/TR/css3-selectors/#whitespace
588 + whitespace = "[\\x20\\t\\r\\n\\f]",
589 +
590 + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
591 + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
592 +
593 + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
594 + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
595 + // Operator (capture 2)
596 + "*([*^$|!~]?=)" + whitespace +
597 + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
598 + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
599 + "*\\]",
600 +
601 + pseudos = ":(" + identifier + ")(?:\\((" +
602 + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
603 + // 1. quoted (capture 3; capture 4 or capture 5)
604 + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
605 + // 2. simple (capture 6)
606 + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
607 + // 3. anything else (capture 2)
608 + ".*" +
609 + ")\\)|)",
610 +
611 + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
612 + rwhitespace = new RegExp( whitespace + "+", "g" ),
613 + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
614 +
615 + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
616 + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
617 + rdescend = new RegExp( whitespace + "|>" ),
618 +
619 + rpseudo = new RegExp( pseudos ),
620 + ridentifier = new RegExp( "^" + identifier + "$" ),
621 +
622 + matchExpr = {
623 + "ID": new RegExp( "^#(" + identifier + ")" ),
624 + "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
625 + "TAG": new RegExp( "^(" + identifier + "|[*])" ),
626 + "ATTR": new RegExp( "^" + attributes ),
627 + "PSEUDO": new RegExp( "^" + pseudos ),
628 + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
629 + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
630 + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
631 + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
632 + // For use in libraries implementing .is()
633 + // We use this for POS matching in `select`
634 + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
635 + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
636 + },
637 +
638 + rhtml = /HTML$/i,
639 + rinputs = /^(?:input|select|textarea|button)$/i,
640 + rheader = /^h\d$/i,
641 +
642 + rnative = /^[^{]+\{\s*\[native \w/,
643 +
644 + // Easily-parseable/retrievable ID or TAG or CLASS selectors
645 + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
646 +
647 + rsibling = /[+~]/,
648 +
649 + // CSS escapes
650 + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
651 + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
652 + funescape = function( _, escaped, escapedWhitespace ) {
653 + var high = "0x" + escaped - 0x10000;
654 + // NaN means non-codepoint
655 + // Support: Firefox<24
656 + // Workaround erroneous numeric interpretation of +"0x"
657 + return high !== high || escapedWhitespace ?
658 + escaped :
659 + high < 0 ?
660 + // BMP codepoint
661 + String.fromCharCode( high + 0x10000 ) :
662 + // Supplemental Plane codepoint (surrogate pair)
663 + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
664 + },
665 +
666 + // CSS string/identifier serialization
667 + // https://drafts.csswg.org/cssom/#common-serializing-idioms
668 + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
669 + fcssescape = function( ch, asCodePoint ) {
670 + if ( asCodePoint ) {
671 +
672 + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
673 + if ( ch === "\0" ) {
674 + return "\uFFFD";
675 + }
676 +
677 + // Control characters and (dependent upon position) numbers get escaped as code points
678 + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
679 + }
680 +
681 + // Other potentially-special ASCII characters get backslash-escaped
682 + return "\\" + ch;
683 + },
684 +
685 + // Used for iframes
686 + // See setDocument()
687 + // Removing the function wrapper causes a "Permission Denied"
688 + // error in IE
689 + unloadHandler = function() {
690 + setDocument();
691 + },
692 +
693 + inDisabledFieldset = addCombinator(
694 + function( elem ) {
695 + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
696 + },
697 + { dir: "parentNode", next: "legend" }
698 + );
699 +
700 +// Optimize for push.apply( _, NodeList )
701 +try {
702 + push.apply(
703 + (arr = slice.call( preferredDoc.childNodes )),
704 + preferredDoc.childNodes
705 + );
706 + // Support: Android<4.0
707 + // Detect silently failing push.apply
708 + arr[ preferredDoc.childNodes.length ].nodeType;
709 +} catch ( e ) {
710 + push = { apply: arr.length ?
711 +
712 + // Leverage slice if possible
713 + function( target, els ) {
714 + push_native.apply( target, slice.call(els) );
715 + } :
716 +
717 + // Support: IE<9
718 + // Otherwise append directly
719 + function( target, els ) {
720 + var j = target.length,
721 + i = 0;
722 + // Can't trust NodeList.length
723 + while ( (target[j++] = els[i++]) ) {}
724 + target.length = j - 1;
725 + }
726 + };
727 +}
728 +
729 +function Sizzle( selector, context, results, seed ) {
730 + var m, i, elem, nid, match, groups, newSelector,
731 + newContext = context && context.ownerDocument,
732 +
733 + // nodeType defaults to 9, since context defaults to document
734 + nodeType = context ? context.nodeType : 9;
735 +
736 + results = results || [];
737 +
738 + // Return early from calls with invalid selector or context
739 + if ( typeof selector !== "string" || !selector ||
740 + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
741 +
742 + return results;
743 + }
744 +
745 + // Try to shortcut find operations (as opposed to filters) in HTML documents
746 + if ( !seed ) {
747 +
748 + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
749 + setDocument( context );
750 + }
751 + context = context || document;
752 +
753 + if ( documentIsHTML ) {
754 +
755 + // If the selector is sufficiently simple, try using a "get*By*" DOM method
756 + // (excepting DocumentFragment context, where the methods don't exist)
757 + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
758 +
759 + // ID selector
760 + if ( (m = match[1]) ) {
761 +
762 + // Document context
763 + if ( nodeType === 9 ) {
764 + if ( (elem = context.getElementById( m )) ) {
765 +
766 + // Support: IE, Opera, Webkit
767 + // TODO: identify versions
768 + // getElementById can match elements by name instead of ID
769 + if ( elem.id === m ) {
770 + results.push( elem );
771 + return results;
772 + }
773 + } else {
774 + return results;
775 + }
776 +
777 + // Element context
778 + } else {
779 +
780 + // Support: IE, Opera, Webkit
781 + // TODO: identify versions
782 + // getElementById can match elements by name instead of ID
783 + if ( newContext && (elem = newContext.getElementById( m )) &&
784 + contains( context, elem ) &&
785 + elem.id === m ) {
786 +
787 + results.push( elem );
788 + return results;
789 + }
790 + }
791 +
792 + // Type selector
793 + } else if ( match[2] ) {
794 + push.apply( results, context.getElementsByTagName( selector ) );
795 + return results;
796 +
797 + // Class selector
798 + } else if ( (m = match[3]) && support.getElementsByClassName &&
799 + context.getElementsByClassName ) {
800 +
801 + push.apply( results, context.getElementsByClassName( m ) );
802 + return results;
803 + }
804 + }
805 +
806 + // Take advantage of querySelectorAll
807 + if ( support.qsa &&
808 + !nonnativeSelectorCache[ selector + " " ] &&
809 + (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
810 +
811 + // Support: IE 8 only
812 + // Exclude object elements
813 + (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
814 +
815 + newSelector = selector;
816 + newContext = context;
817 +
818 + // qSA considers elements outside a scoping root when evaluating child or
819 + // descendant combinators, which is not what we want.
820 + // In such cases, we work around the behavior by prefixing every selector in the
821 + // list with an ID selector referencing the scope context.
822 + // Thanks to Andrew Dupont for this technique.
823 + if ( nodeType === 1 && rdescend.test( selector ) ) {
824 +
825 + // Capture the context ID, setting it first if necessary
826 + if ( (nid = context.getAttribute( "id" )) ) {
827 + nid = nid.replace( rcssescape, fcssescape );
828 + } else {
829 + context.setAttribute( "id", (nid = expando) );
830 + }
831 +
832 + // Prefix every selector in the list
833 + groups = tokenize( selector );
834 + i = groups.length;
835 + while ( i-- ) {
836 + groups[i] = "#" + nid + " " + toSelector( groups[i] );
837 + }
838 + newSelector = groups.join( "," );
839 +
840 + // Expand context for sibling selectors
841 + newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
842 + context;
843 + }
844 +
845 + try {
846 + push.apply( results,
847 + newContext.querySelectorAll( newSelector )
848 + );
849 + return results;
850 + } catch ( qsaError ) {
851 + nonnativeSelectorCache( selector, true );
852 + } finally {
853 + if ( nid === expando ) {
854 + context.removeAttribute( "id" );
855 + }
856 + }
857 + }
858 + }
859 + }
860 +
861 + // All others
862 + return select( selector.replace( rtrim, "$1" ), context, results, seed );
863 +}
864 +
865 +/**
866 + * Create key-value caches of limited size
867 + * @returns {function(string, object)} Returns the Object data after storing it on itself with
868 + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
869 + * deleting the oldest entry
870 + */
871 +function createCache() {
872 + var keys = [];
873 +
874 + function cache( key, value ) {
875 + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
876 + if ( keys.push( key + " " ) > Expr.cacheLength ) {
877 + // Only keep the most recent entries
878 + delete cache[ keys.shift() ];
879 + }
880 + return (cache[ key + " " ] = value);
881 + }
882 + return cache;
883 +}
884 +
885 +/**
886 + * Mark a function for special use by Sizzle
887 + * @param {Function} fn The function to mark
888 + */
889 +function markFunction( fn ) {
890 + fn[ expando ] = true;
891 + return fn;
892 +}
893 +
894 +/**
895 + * Support testing using an element
896 + * @param {Function} fn Passed the created element and returns a boolean result
897 + */
898 +function assert( fn ) {
899 + var el = document.createElement("fieldset");
900 +
901 + try {
902 + return !!fn( el );
903 + } catch (e) {
904 + return false;
905 + } finally {
906 + // Remove from its parent by default
907 + if ( el.parentNode ) {
908 + el.parentNode.removeChild( el );
909 + }
910 + // release memory in IE
911 + el = null;
912 + }
913 +}
914 +
915 +/**
916 + * Adds the same handler for all of the specified attrs
917 + * @param {String} attrs Pipe-separated list of attributes
918 + * @param {Function} handler The method that will be applied
919 + */
920 +function addHandle( attrs, handler ) {
921 + var arr = attrs.split("|"),
922 + i = arr.length;
923 +
924 + while ( i-- ) {
925 + Expr.attrHandle[ arr[i] ] = handler;
926 + }
927 +}
928 +
929 +/**
930 + * Checks document order of two siblings
931 + * @param {Element} a
932 + * @param {Element} b
933 + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
934 + */
935 +function siblingCheck( a, b ) {
936 + var cur = b && a,
937 + diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
938 + a.sourceIndex - b.sourceIndex;
939 +
940 + // Use IE sourceIndex if available on both nodes
941 + if ( diff ) {
942 + return diff;
943 + }
944 +
945 + // Check if b follows a
946 + if ( cur ) {
947 + while ( (cur = cur.nextSibling) ) {
948 + if ( cur === b ) {
949 + return -1;
950 + }
951 + }
952 + }
953 +
954 + return a ? 1 : -1;
955 +}
956 +
957 +/**
958 + * Returns a function to use in pseudos for input types
959 + * @param {String} type
960 + */
961 +function createInputPseudo( type ) {
962 + return function( elem ) {
963 + var name = elem.nodeName.toLowerCase();
964 + return name === "input" && elem.type === type;
965 + };
966 +}
967 +
968 +/**
969 + * Returns a function to use in pseudos for buttons
970 + * @param {String} type
971 + */
972 +function createButtonPseudo( type ) {
973 + return function( elem ) {
974 + var name = elem.nodeName.toLowerCase();
975 + return (name === "input" || name === "button") && elem.type === type;
976 + };
977 +}
978 +
979 +/**
980 + * Returns a function to use in pseudos for :enabled/:disabled
981 + * @param {Boolean} disabled true for :disabled; false for :enabled
982 + */
983 +function createDisabledPseudo( disabled ) {
984 +
985 + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
986 + return function( elem ) {
987 +
988 + // Only certain elements can match :enabled or :disabled
989 + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
990 + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
991 + if ( "form" in elem ) {
992 +
993 + // Check for inherited disabledness on relevant non-disabled elements:
994 + // * listed form-associated elements in a disabled fieldset
995 + // https://html.spec.whatwg.org/multipage/forms.html#category-listed
996 + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
997 + // * option elements in a disabled optgroup
998 + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
999 + // All such elements have a "form" property.
1000 + if ( elem.parentNode && elem.disabled === false ) {
1001 +
1002 + // Option elements defer to a parent optgroup if present
1003 + if ( "label" in elem ) {
1004 + if ( "label" in elem.parentNode ) {
1005 + return elem.parentNode.disabled === disabled;
1006 + } else {
1007 + return elem.disabled === disabled;
1008 + }
1009 + }
1010 +
1011 + // Support: IE 6 - 11
1012 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors
1013 + return elem.isDisabled === disabled ||
1014 +
1015 + // Where there is no isDisabled, check manually
1016 + /* jshint -W018 */
1017 + elem.isDisabled !== !disabled &&
1018 + inDisabledFieldset( elem ) === disabled;
1019 + }
1020 +
1021 + return elem.disabled === disabled;
1022 +
1023 + // Try to winnow out elements that can't be disabled before trusting the disabled property.
1024 + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1025 + // even exist on them, let alone have a boolean value.
1026 + } else if ( "label" in elem ) {
1027 + return elem.disabled === disabled;
1028 + }
1029 +
1030 + // Remaining elements are neither :enabled nor :disabled
1031 + return false;
1032 + };
1033 +}
1034 +
1035 +/**
1036 + * Returns a function to use in pseudos for positionals
1037 + * @param {Function} fn
1038 + */
1039 +function createPositionalPseudo( fn ) {
1040 + return markFunction(function( argument ) {
1041 + argument = +argument;
1042 + return markFunction(function( seed, matches ) {
1043 + var j,
1044 + matchIndexes = fn( [], seed.length, argument ),
1045 + i = matchIndexes.length;
1046 +
1047 + // Match elements found at the specified indexes
1048 + while ( i-- ) {
1049 + if ( seed[ (j = matchIndexes[i]) ] ) {
1050 + seed[j] = !(matches[j] = seed[j]);
1051 + }
1052 + }
1053 + });
1054 + });
1055 +}
1056 +
1057 +/**
1058 + * Checks a node for validity as a Sizzle context
1059 + * @param {Element|Object=} context
1060 + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1061 + */
1062 +function testContext( context ) {
1063 + return context && typeof context.getElementsByTagName !== "undefined" && context;
1064 +}
1065 +
1066 +// Expose support vars for convenience
1067 +support = Sizzle.support = {};
1068 +
1069 +/**
1070 + * Detects XML nodes
1071 + * @param {Element|Object} elem An element or a document
1072 + * @returns {Boolean} True iff elem is a non-HTML XML node
1073 + */
1074 +isXML = Sizzle.isXML = function( elem ) {
1075 + var namespace = elem.namespaceURI,
1076 + docElem = (elem.ownerDocument || elem).documentElement;
1077 +
1078 + // Support: IE <=8
1079 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
1080 + // https://bugs.jquery.com/ticket/4833
1081 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
1082 +};
1083 +
1084 +/**
1085 + * Sets document-related variables once based on the current document
1086 + * @param {Element|Object} [doc] An element or document object to use to set the document
1087 + * @returns {Object} Returns the current document
1088 + */
1089 +setDocument = Sizzle.setDocument = function( node ) {
1090 + var hasCompare, subWindow,
1091 + doc = node ? node.ownerDocument || node : preferredDoc;
1092 +
1093 + // Return early if doc is invalid or already selected
1094 + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
1095 + return document;
1096 + }
1097 +
1098 + // Update global variables
1099 + document = doc;
1100 + docElem = document.documentElement;
1101 + documentIsHTML = !isXML( document );
1102 +
1103 + // Support: IE 9-11, Edge
1104 + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1105 + if ( preferredDoc !== document &&
1106 + (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
1107 +
1108 + // Support: IE 11, Edge
1109 + if ( subWindow.addEventListener ) {
1110 + subWindow.addEventListener( "unload", unloadHandler, false );
1111 +
1112 + // Support: IE 9 - 10 only
1113 + } else if ( subWindow.attachEvent ) {
1114 + subWindow.attachEvent( "onunload", unloadHandler );
1115 + }
1116 + }
1117 +
1118 + /* Attributes
1119 + ---------------------------------------------------------------------- */
1120 +
1121 + // Support: IE<8
1122 + // Verify that getAttribute really returns attributes and not properties
1123 + // (excepting IE8 booleans)
1124 + support.attributes = assert(function( el ) {
1125 + el.className = "i";
1126 + return !el.getAttribute("className");
1127 + });
1128 +
1129 + /* getElement(s)By*
1130 + ---------------------------------------------------------------------- */
1131 +
1132 + // Check if getElementsByTagName("*") returns only elements
1133 + support.getElementsByTagName = assert(function( el ) {
1134 + el.appendChild( document.createComment("") );
1135 + return !el.getElementsByTagName("*").length;
1136 + });
1137 +
1138 + // Support: IE<9
1139 + support.getElementsByClassName = rnative.test( document.getElementsByClassName );
1140 +
1141 + // Support: IE<10
1142 + // Check if getElementById returns elements by name
1143 + // The broken getElementById methods don't pick up programmatically-set names,
1144 + // so use a roundabout getElementsByName test
1145 + support.getById = assert(function( el ) {
1146 + docElem.appendChild( el ).id = expando;
1147 + return !document.getElementsByName || !document.getElementsByName( expando ).length;
1148 + });
1149 +
1150 + // ID filter and find
1151 + if ( support.getById ) {
1152 + Expr.filter["ID"] = function( id ) {
1153 + var attrId = id.replace( runescape, funescape );
1154 + return function( elem ) {
1155 + return elem.getAttribute("id") === attrId;
1156 + };
1157 + };
1158 + Expr.find["ID"] = function( id, context ) {
1159 + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1160 + var elem = context.getElementById( id );
1161 + return elem ? [ elem ] : [];
1162 + }
1163 + };
1164 + } else {
1165 + Expr.filter["ID"] = function( id ) {
1166 + var attrId = id.replace( runescape, funescape );
1167 + return function( elem ) {
1168 + var node = typeof elem.getAttributeNode !== "undefined" &&
1169 + elem.getAttributeNode("id");
1170 + return node && node.value === attrId;
1171 + };
1172 + };
1173 +
1174 + // Support: IE 6 - 7 only
1175 + // getElementById is not reliable as a find shortcut
1176 + Expr.find["ID"] = function( id, context ) {
1177 + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1178 + var node, i, elems,
1179 + elem = context.getElementById( id );
1180 +
1181 + if ( elem ) {
1182 +
1183 + // Verify the id attribute
1184 + node = elem.getAttributeNode("id");
1185 + if ( node && node.value === id ) {
1186 + return [ elem ];
1187 + }
1188 +
1189 + // Fall back on getElementsByName
1190 + elems = context.getElementsByName( id );
1191 + i = 0;
1192 + while ( (elem = elems[i++]) ) {
1193 + node = elem.getAttributeNode("id");
1194 + if ( node && node.value === id ) {
1195 + return [ elem ];
1196 + }
1197 + }
1198 + }
1199 +
1200 + return [];
1201 + }
1202 + };
1203 + }
1204 +
1205 + // Tag
1206 + Expr.find["TAG"] = support.getElementsByTagName ?
1207 + function( tag, context ) {
1208 + if ( typeof context.getElementsByTagName !== "undefined" ) {
1209 + return context.getElementsByTagName( tag );
1210 +
1211 + // DocumentFragment nodes don't have gEBTN
1212 + } else if ( support.qsa ) {
1213 + return context.querySelectorAll( tag );
1214 + }
1215 + } :
1216 +
1217 + function( tag, context ) {
1218 + var elem,
1219 + tmp = [],
1220 + i = 0,
1221 + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1222 + results = context.getElementsByTagName( tag );
1223 +
1224 + // Filter out possible comments
1225 + if ( tag === "*" ) {
1226 + while ( (elem = results[i++]) ) {
1227 + if ( elem.nodeType === 1 ) {
1228 + tmp.push( elem );
1229 + }
1230 + }
1231 +
1232 + return tmp;
1233 + }
1234 + return results;
1235 + };
1236 +
1237 + // Class
1238 + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
1239 + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
1240 + return context.getElementsByClassName( className );
1241 + }
1242 + };
1243 +
1244 + /* QSA/matchesSelector
1245 + ---------------------------------------------------------------------- */
1246 +
1247 + // QSA and matchesSelector support
1248 +
1249 + // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1250 + rbuggyMatches = [];
1251 +
1252 + // qSa(:focus) reports false when true (Chrome 21)
1253 + // We allow this because of a bug in IE8/9 that throws an error
1254 + // whenever `document.activeElement` is accessed on an iframe
1255 + // So, we allow :focus to pass through QSA all the time to avoid the IE error
1256 + // See https://bugs.jquery.com/ticket/13378
1257 + rbuggyQSA = [];
1258 +
1259 + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
1260 + // Build QSA regex
1261 + // Regex strategy adopted from Diego Perini
1262 + assert(function( el ) {
1263 + // Select is set to empty string on purpose
1264 + // This is to test IE's treatment of not explicitly
1265 + // setting a boolean content attribute,
1266 + // since its presence should be enough
1267 + // https://bugs.jquery.com/ticket/12359
1268 + docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
1269 + "<select id='" + expando + "-\r\\' msallowcapture=''>" +
1270 + "<option selected=''></option></select>";
1271 +
1272 + // Support: IE8, Opera 11-12.16
1273 + // Nothing should be selected when empty strings follow ^= or $= or *=
1274 + // The test attribute must be unknown in Opera but "safe" for WinRT
1275 + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1276 + if ( el.querySelectorAll("[msallowcapture^='']").length ) {
1277 + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1278 + }
1279 +
1280 + // Support: IE8
1281 + // Boolean attributes and "value" are not treated correctly
1282 + if ( !el.querySelectorAll("[selected]").length ) {
1283 + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1284 + }
1285 +
1286 + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
1287 + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1288 + rbuggyQSA.push("~=");
1289 + }
1290 +
1291 + // Webkit/Opera - :checked should return selected option elements
1292 + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1293 + // IE8 throws error here and will not see later tests
1294 + if ( !el.querySelectorAll(":checked").length ) {
1295 + rbuggyQSA.push(":checked");
1296 + }
1297 +
1298 + // Support: Safari 8+, iOS 8+
1299 + // https://bugs.webkit.org/show_bug.cgi?id=136851
1300 + // In-page `selector#id sibling-combinator selector` fails
1301 + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1302 + rbuggyQSA.push(".#.+[+~]");
1303 + }
1304 + });
1305 +
1306 + assert(function( el ) {
1307 + el.innerHTML = "<a href='' disabled='disabled'></a>" +
1308 + "<select disabled='disabled'><option/></select>";
1309 +
1310 + // Support: Windows 8 Native Apps
1311 + // The type and name attributes are restricted during .innerHTML assignment
1312 + var input = document.createElement("input");
1313 + input.setAttribute( "type", "hidden" );
1314 + el.appendChild( input ).setAttribute( "name", "D" );
1315 +
1316 + // Support: IE8
1317 + // Enforce case-sensitivity of name attribute
1318 + if ( el.querySelectorAll("[name=d]").length ) {
1319 + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1320 + }
1321 +
1322 + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1323 + // IE8 throws error here and will not see later tests
1324 + if ( el.querySelectorAll(":enabled").length !== 2 ) {
1325 + rbuggyQSA.push( ":enabled", ":disabled" );
1326 + }
1327 +
1328 + // Support: IE9-11+
1329 + // IE's :disabled selector does not pick up the children of disabled fieldsets
1330 + docElem.appendChild( el ).disabled = true;
1331 + if ( el.querySelectorAll(":disabled").length !== 2 ) {
1332 + rbuggyQSA.push( ":enabled", ":disabled" );
1333 + }
1334 +
1335 + // Opera 10-11 does not throw on post-comma invalid pseudos
1336 + el.querySelectorAll("*,:x");
1337 + rbuggyQSA.push(",.*:");
1338 + });
1339 + }
1340 +
1341 + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
1342 + docElem.webkitMatchesSelector ||
1343 + docElem.mozMatchesSelector ||
1344 + docElem.oMatchesSelector ||
1345 + docElem.msMatchesSelector) )) ) {
1346 +
1347 + assert(function( el ) {
1348 + // Check to see if it's possible to do matchesSelector
1349 + // on a disconnected node (IE 9)
1350 + support.disconnectedMatch = matches.call( el, "*" );
1351 +
1352 + // This should fail with an exception
1353 + // Gecko does not error, returns false instead
1354 + matches.call( el, "[s!='']:x" );
1355 + rbuggyMatches.push( "!=", pseudos );
1356 + });
1357 + }
1358 +
1359 + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
1360 + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
1361 +
1362 + /* Contains
1363 + ---------------------------------------------------------------------- */
1364 + hasCompare = rnative.test( docElem.compareDocumentPosition );
1365 +
1366 + // Element contains another
1367 + // Purposefully self-exclusive
1368 + // As in, an element does not contain itself
1369 + contains = hasCompare || rnative.test( docElem.contains ) ?
1370 + function( a, b ) {
1371 + var adown = a.nodeType === 9 ? a.documentElement : a,
1372 + bup = b && b.parentNode;
1373 + return a === bup || !!( bup && bup.nodeType === 1 && (
1374 + adown.contains ?
1375 + adown.contains( bup ) :
1376 + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1377 + ));
1378 + } :
1379 + function( a, b ) {
1380 + if ( b ) {
1381 + while ( (b = b.parentNode) ) {
1382 + if ( b === a ) {
1383 + return true;
1384 + }
1385 + }
1386 + }
1387 + return false;
1388 + };
1389 +
1390 + /* Sorting
1391 + ---------------------------------------------------------------------- */
1392 +
1393 + // Document order sorting
1394 + sortOrder = hasCompare ?
1395 + function( a, b ) {
1396 +
1397 + // Flag for duplicate removal
1398 + if ( a === b ) {
1399 + hasDuplicate = true;
1400 + return 0;
1401 + }
1402 +
1403 + // Sort on method existence if only one input has compareDocumentPosition
1404 + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1405 + if ( compare ) {
1406 + return compare;
1407 + }
1408 +
1409 + // Calculate position if both inputs belong to the same document
1410 + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
1411 + a.compareDocumentPosition( b ) :
1412 +
1413 + // Otherwise we know they are disconnected
1414 + 1;
1415 +
1416 + // Disconnected nodes
1417 + if ( compare & 1 ||
1418 + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
1419 +
1420 + // Choose the first element that is related to our preferred document
1421 + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
1422 + return -1;
1423 + }
1424 + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
1425 + return 1;
1426 + }
1427 +
1428 + // Maintain original order
1429 + return sortInput ?
1430 + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1431 + 0;
1432 + }
1433 +
1434 + return compare & 4 ? -1 : 1;
1435 + } :
1436 + function( a, b ) {
1437 + // Exit early if the nodes are identical
1438 + if ( a === b ) {
1439 + hasDuplicate = true;
1440 + return 0;
1441 + }
1442 +
1443 + var cur,
1444 + i = 0,
1445 + aup = a.parentNode,
1446 + bup = b.parentNode,
1447 + ap = [ a ],
1448 + bp = [ b ];
1449 +
1450 + // Parentless nodes are either documents or disconnected
1451 + if ( !aup || !bup ) {
1452 + return a === document ? -1 :
1453 + b === document ? 1 :
1454 + aup ? -1 :
1455 + bup ? 1 :
1456 + sortInput ?
1457 + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1458 + 0;
1459 +
1460 + // If the nodes are siblings, we can do a quick check
1461 + } else if ( aup === bup ) {
1462 + return siblingCheck( a, b );
1463 + }
1464 +
1465 + // Otherwise we need full lists of their ancestors for comparison
1466 + cur = a;
1467 + while ( (cur = cur.parentNode) ) {
1468 + ap.unshift( cur );
1469 + }
1470 + cur = b;
1471 + while ( (cur = cur.parentNode) ) {
1472 + bp.unshift( cur );
1473 + }
1474 +
1475 + // Walk down the tree looking for a discrepancy
1476 + while ( ap[i] === bp[i] ) {
1477 + i++;
1478 + }
1479 +
1480 + return i ?
1481 + // Do a sibling check if the nodes have a common ancestor
1482 + siblingCheck( ap[i], bp[i] ) :
1483 +
1484 + // Otherwise nodes in our document sort first
1485 + ap[i] === preferredDoc ? -1 :
1486 + bp[i] === preferredDoc ? 1 :
1487 + 0;
1488 + };
1489 +
1490 + return document;
1491 +};
1492 +
1493 +Sizzle.matches = function( expr, elements ) {
1494 + return Sizzle( expr, null, null, elements );
1495 +};
1496 +
1497 +Sizzle.matchesSelector = function( elem, expr ) {
1498 + // Set document vars if needed
1499 + if ( ( elem.ownerDocument || elem ) !== document ) {
1500 + setDocument( elem );
1501 + }
1502 +
1503 + if ( support.matchesSelector && documentIsHTML &&
1504 + !nonnativeSelectorCache[ expr + " " ] &&
1505 + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1506 + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
1507 +
1508 + try {
1509 + var ret = matches.call( elem, expr );
1510 +
1511 + // IE 9's matchesSelector returns false on disconnected nodes
1512 + if ( ret || support.disconnectedMatch ||
1513 + // As well, disconnected nodes are said to be in a document
1514 + // fragment in IE 9
1515 + elem.document && elem.document.nodeType !== 11 ) {
1516 + return ret;
1517 + }
1518 + } catch (e) {
1519 + nonnativeSelectorCache( expr, true );
1520 + }
1521 + }
1522 +
1523 + return Sizzle( expr, document, null, [ elem ] ).length > 0;
1524 +};
1525 +
1526 +Sizzle.contains = function( context, elem ) {
1527 + // Set document vars if needed
1528 + if ( ( context.ownerDocument || context ) !== document ) {
1529 + setDocument( context );
1530 + }
1531 + return contains( context, elem );
1532 +};
1533 +
1534 +Sizzle.attr = function( elem, name ) {
1535 + // Set document vars if needed
1536 + if ( ( elem.ownerDocument || elem ) !== document ) {
1537 + setDocument( elem );
1538 + }
1539 +
1540 + var fn = Expr.attrHandle[ name.toLowerCase() ],
1541 + // Don't get fooled by Object.prototype properties (jQuery #13807)
1542 + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1543 + fn( elem, name, !documentIsHTML ) :
1544 + undefined;
1545 +
1546 + return val !== undefined ?
1547 + val :
1548 + support.attributes || !documentIsHTML ?
1549 + elem.getAttribute( name ) :
1550 + (val = elem.getAttributeNode(name)) && val.specified ?
1551 + val.value :
1552 + null;
1553 +};
1554 +
1555 +Sizzle.escape = function( sel ) {
1556 + return (sel + "").replace( rcssescape, fcssescape );
1557 +};
1558 +
1559 +Sizzle.error = function( msg ) {
1560 + throw new Error( "Syntax error, unrecognized expression: " + msg );
1561 +};
1562 +
1563 +/**
1564 + * Document sorting and removing duplicates
1565 + * @param {ArrayLike} results
1566 + */
1567 +Sizzle.uniqueSort = function( results ) {
1568 + var elem,
1569 + duplicates = [],
1570 + j = 0,
1571 + i = 0;
1572 +
1573 + // Unless we *know* we can detect duplicates, assume their presence
1574 + hasDuplicate = !support.detectDuplicates;
1575 + sortInput = !support.sortStable && results.slice( 0 );
1576 + results.sort( sortOrder );
1577 +
1578 + if ( hasDuplicate ) {
1579 + while ( (elem = results[i++]) ) {
1580 + if ( elem === results[ i ] ) {
1581 + j = duplicates.push( i );
1582 + }
1583 + }
1584 + while ( j-- ) {
1585 + results.splice( duplicates[ j ], 1 );
1586 + }
1587 + }
1588 +
1589 + // Clear input after sorting to release objects
1590 + // See https://github.com/jquery/sizzle/pull/225
1591 + sortInput = null;
1592 +
1593 + return results;
1594 +};
1595 +
1596 +/**
1597 + * Utility function for retrieving the text value of an array of DOM nodes
1598 + * @param {Array|Element} elem
1599 + */
1600 +getText = Sizzle.getText = function( elem ) {
1601 + var node,
1602 + ret = "",
1603 + i = 0,
1604 + nodeType = elem.nodeType;
1605 +
1606 + if ( !nodeType ) {
1607 + // If no nodeType, this is expected to be an array
1608 + while ( (node = elem[i++]) ) {
1609 + // Do not traverse comment nodes
1610 + ret += getText( node );
1611 + }
1612 + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1613 + // Use textContent for elements
1614 + // innerText usage removed for consistency of new lines (jQuery #11153)
1615 + if ( typeof elem.textContent === "string" ) {
1616 + return elem.textContent;
1617 + } else {
1618 + // Traverse its children
1619 + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1620 + ret += getText( elem );
1621 + }
1622 + }
1623 + } else if ( nodeType === 3 || nodeType === 4 ) {
1624 + return elem.nodeValue;
1625 + }
1626 + // Do not include comment or processing instruction nodes
1627 +
1628 + return ret;
1629 +};
1630 +
1631 +Expr = Sizzle.selectors = {
1632 +
1633 + // Can be adjusted by the user
1634 + cacheLength: 50,
1635 +
1636 + createPseudo: markFunction,
1637 +
1638 + match: matchExpr,
1639 +
1640 + attrHandle: {},
1641 +
1642 + find: {},
1643 +
1644 + relative: {
1645 + ">": { dir: "parentNode", first: true },
1646 + " ": { dir: "parentNode" },
1647 + "+": { dir: "previousSibling", first: true },
1648 + "~": { dir: "previousSibling" }
1649 + },
1650 +
1651 + preFilter: {
1652 + "ATTR": function( match ) {
1653 + match[1] = match[1].replace( runescape, funescape );
1654 +
1655 + // Move the given value to match[3] whether quoted or unquoted
1656 + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
1657 +
1658 + if ( match[2] === "~=" ) {
1659 + match[3] = " " + match[3] + " ";
1660 + }
1661 +
1662 + return match.slice( 0, 4 );
1663 + },
1664 +
1665 + "CHILD": function( match ) {
1666 + /* matches from matchExpr["CHILD"]
1667 + 1 type (only|nth|...)
1668 + 2 what (child|of-type)
1669 + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1670 + 4 xn-component of xn+y argument ([+-]?\d*n|)
1671 + 5 sign of xn-component
1672 + 6 x of xn-component
1673 + 7 sign of y-component
1674 + 8 y of y-component
1675 + */
1676 + match[1] = match[1].toLowerCase();
1677 +
1678 + if ( match[1].slice( 0, 3 ) === "nth" ) {
1679 + // nth-* requires argument
1680 + if ( !match[3] ) {
1681 + Sizzle.error( match[0] );
1682 + }
1683 +
1684 + // numeric x and y parameters for Expr.filter.CHILD
1685 + // remember that false/true cast respectively to 0/1
1686 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
1687 + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
1688 +
1689 + // other types prohibit arguments
1690 + } else if ( match[3] ) {
1691 + Sizzle.error( match[0] );
1692 + }
1693 +
1694 + return match;
1695 + },
1696 +
1697 + "PSEUDO": function( match ) {
1698 + var excess,
1699 + unquoted = !match[6] && match[2];
1700 +
1701 + if ( matchExpr["CHILD"].test( match[0] ) ) {
1702 + return null;
1703 + }
1704 +
1705 + // Accept quoted arguments as-is
1706 + if ( match[3] ) {
1707 + match[2] = match[4] || match[5] || "";
1708 +
1709 + // Strip excess characters from unquoted arguments
1710 + } else if ( unquoted && rpseudo.test( unquoted ) &&
1711 + // Get excess from tokenize (recursively)
1712 + (excess = tokenize( unquoted, true )) &&
1713 + // advance to the next closing parenthesis
1714 + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
1715 +
1716 + // excess is a negative index
1717 + match[0] = match[0].slice( 0, excess );
1718 + match[2] = unquoted.slice( 0, excess );
1719 + }
1720 +
1721 + // Return only captures needed by the pseudo filter method (type and argument)
1722 + return match.slice( 0, 3 );
1723 + }
1724 + },
1725 +
1726 + filter: {
1727 +
1728 + "TAG": function( nodeNameSelector ) {
1729 + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1730 + return nodeNameSelector === "*" ?
1731 + function() { return true; } :
1732 + function( elem ) {
1733 + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1734 + };
1735 + },
1736 +
1737 + "CLASS": function( className ) {
1738 + var pattern = classCache[ className + " " ];
1739 +
1740 + return pattern ||
1741 + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
1742 + classCache( className, function( elem ) {
1743 + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
1744 + });
1745 + },
1746 +
1747 + "ATTR": function( name, operator, check ) {
1748 + return function( elem ) {
1749 + var result = Sizzle.attr( elem, name );
1750 +
1751 + if ( result == null ) {
1752 + return operator === "!=";
1753 + }
1754 + if ( !operator ) {
1755 + return true;
1756 + }
1757 +
1758 + result += "";
1759 +
1760 + return operator === "=" ? result === check :
1761 + operator === "!=" ? result !== check :
1762 + operator === "^=" ? check && result.indexOf( check ) === 0 :
1763 + operator === "*=" ? check && result.indexOf( check ) > -1 :
1764 + operator === "$=" ? check && result.slice( -check.length ) === check :
1765 + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1766 + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1767 + false;
1768 + };
1769 + },
1770 +
1771 + "CHILD": function( type, what, argument, first, last ) {
1772 + var simple = type.slice( 0, 3 ) !== "nth",
1773 + forward = type.slice( -4 ) !== "last",
1774 + ofType = what === "of-type";
1775 +
1776 + return first === 1 && last === 0 ?
1777 +
1778 + // Shortcut for :nth-*(n)
1779 + function( elem ) {
1780 + return !!elem.parentNode;
1781 + } :
1782 +
1783 + function( elem, context, xml ) {
1784 + var cache, uniqueCache, outerCache, node, nodeIndex, start,
1785 + dir = simple !== forward ? "nextSibling" : "previousSibling",
1786 + parent = elem.parentNode,
1787 + name = ofType && elem.nodeName.toLowerCase(),
1788 + useCache = !xml && !ofType,
1789 + diff = false;
1790 +
1791 + if ( parent ) {
1792 +
1793 + // :(first|last|only)-(child|of-type)
1794 + if ( simple ) {
1795 + while ( dir ) {
1796 + node = elem;
1797 + while ( (node = node[ dir ]) ) {
1798 + if ( ofType ?
1799 + node.nodeName.toLowerCase() === name :
1800 + node.nodeType === 1 ) {
1801 +
1802 + return false;
1803 + }
1804 + }
1805 + // Reverse direction for :only-* (if we haven't yet done so)
1806 + start = dir = type === "only" && !start && "nextSibling";
1807 + }
1808 + return true;
1809 + }
1810 +
1811 + start = [ forward ? parent.firstChild : parent.lastChild ];
1812 +
1813 + // non-xml :nth-child(...) stores cache data on `parent`
1814 + if ( forward && useCache ) {
1815 +
1816 + // Seek `elem` from a previously-cached index
1817 +
1818 + // ...in a gzip-friendly way
1819 + node = parent;
1820 + outerCache = node[ expando ] || (node[ expando ] = {});
1821 +
1822 + // Support: IE <9 only
1823 + // Defend against cloned attroperties (jQuery gh-1709)
1824 + uniqueCache = outerCache[ node.uniqueID ] ||
1825 + (outerCache[ node.uniqueID ] = {});
1826 +
1827 + cache = uniqueCache[ type ] || [];
1828 + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1829 + diff = nodeIndex && cache[ 2 ];
1830 + node = nodeIndex && parent.childNodes[ nodeIndex ];
1831 +
1832 + while ( (node = ++nodeIndex && node && node[ dir ] ||
1833 +
1834 + // Fallback to seeking `elem` from the start
1835 + (diff = nodeIndex = 0) || start.pop()) ) {
1836 +
1837 + // When found, cache indexes on `parent` and break
1838 + if ( node.nodeType === 1 && ++diff && node === elem ) {
1839 + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1840 + break;
1841 + }
1842 + }
1843 +
1844 + } else {
1845 + // Use previously-cached element index if available
1846 + if ( useCache ) {
1847 + // ...in a gzip-friendly way
1848 + node = elem;
1849 + outerCache = node[ expando ] || (node[ expando ] = {});
1850 +
1851 + // Support: IE <9 only
1852 + // Defend against cloned attroperties (jQuery gh-1709)
1853 + uniqueCache = outerCache[ node.uniqueID ] ||
1854 + (outerCache[ node.uniqueID ] = {});
1855 +
1856 + cache = uniqueCache[ type ] || [];
1857 + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1858 + diff = nodeIndex;
1859 + }
1860 +
1861 + // xml :nth-child(...)
1862 + // or :nth-last-child(...) or :nth(-last)?-of-type(...)
1863 + if ( diff === false ) {
1864 + // Use the same loop as above to seek `elem` from the start
1865 + while ( (node = ++nodeIndex && node && node[ dir ] ||
1866 + (diff = nodeIndex = 0) || start.pop()) ) {
1867 +
1868 + if ( ( ofType ?
1869 + node.nodeName.toLowerCase() === name :
1870 + node.nodeType === 1 ) &&
1871 + ++diff ) {
1872 +
1873 + // Cache the index of each encountered element
1874 + if ( useCache ) {
1875 + outerCache = node[ expando ] || (node[ expando ] = {});
1876 +
1877 + // Support: IE <9 only
1878 + // Defend against cloned attroperties (jQuery gh-1709)
1879 + uniqueCache = outerCache[ node.uniqueID ] ||
1880 + (outerCache[ node.uniqueID ] = {});
1881 +
1882 + uniqueCache[ type ] = [ dirruns, diff ];
1883 + }
1884 +
1885 + if ( node === elem ) {
1886 + break;
1887 + }
1888 + }
1889 + }
1890 + }
1891 + }
1892 +
1893 + // Incorporate the offset, then check against cycle size
1894 + diff -= last;
1895 + return diff === first || ( diff % first === 0 && diff / first >= 0 );
1896 + }
1897 + };
1898 + },
1899 +
1900 + "PSEUDO": function( pseudo, argument ) {
1901 + // pseudo-class names are case-insensitive
1902 + // http://www.w3.org/TR/selectors/#pseudo-classes
1903 + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1904 + // Remember that setFilters inherits from pseudos
1905 + var args,
1906 + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
1907 + Sizzle.error( "unsupported pseudo: " + pseudo );
1908 +
1909 + // The user may use createPseudo to indicate that
1910 + // arguments are needed to create the filter function
1911 + // just as Sizzle does
1912 + if ( fn[ expando ] ) {
1913 + return fn( argument );
1914 + }
1915 +
1916 + // But maintain support for old signatures
1917 + if ( fn.length > 1 ) {
1918 + args = [ pseudo, pseudo, "", argument ];
1919 + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
1920 + markFunction(function( seed, matches ) {
1921 + var idx,
1922 + matched = fn( seed, argument ),
1923 + i = matched.length;
1924 + while ( i-- ) {
1925 + idx = indexOf( seed, matched[i] );
1926 + seed[ idx ] = !( matches[ idx ] = matched[i] );
1927 + }
1928 + }) :
1929 + function( elem ) {
1930 + return fn( elem, 0, args );
1931 + };
1932 + }
1933 +
1934 + return fn;
1935 + }
1936 + },
1937 +
1938 + pseudos: {
1939 + // Potentially complex pseudos
1940 + "not": markFunction(function( selector ) {
1941 + // Trim the selector passed to compile
1942 + // to avoid treating leading and trailing
1943 + // spaces as combinators
1944 + var input = [],
1945 + results = [],
1946 + matcher = compile( selector.replace( rtrim, "$1" ) );
1947 +
1948 + return matcher[ expando ] ?
1949 + markFunction(function( seed, matches, context, xml ) {
1950 + var elem,
1951 + unmatched = matcher( seed, null, xml, [] ),
1952 + i = seed.length;
1953 +
1954 + // Match elements unmatched by `matcher`
1955 + while ( i-- ) {
1956 + if ( (elem = unmatched[i]) ) {
1957 + seed[i] = !(matches[i] = elem);
1958 + }
1959 + }
1960 + }) :
1961 + function( elem, context, xml ) {
1962 + input[0] = elem;
1963 + matcher( input, null, xml, results );
1964 + // Don't keep the element (issue #299)
1965 + input[0] = null;
1966 + return !results.pop();
1967 + };
1968 + }),
1969 +
1970 + "has": markFunction(function( selector ) {
1971 + return function( elem ) {
1972 + return Sizzle( selector, elem ).length > 0;
1973 + };
1974 + }),
1975 +
1976 + "contains": markFunction(function( text ) {
1977 + text = text.replace( runescape, funescape );
1978 + return function( elem ) {
1979 + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
1980 + };
1981 + }),
1982 +
1983 + // "Whether an element is represented by a :lang() selector
1984 + // is based solely on the element's language value
1985 + // being equal to the identifier C,
1986 + // or beginning with the identifier C immediately followed by "-".
1987 + // The matching of C against the element's language value is performed case-insensitively.
1988 + // The identifier C does not have to be a valid language name."
1989 + // http://www.w3.org/TR/selectors/#lang-pseudo
1990 + "lang": markFunction( function( lang ) {
1991 + // lang value must be a valid identifier
1992 + if ( !ridentifier.test(lang || "") ) {
1993 + Sizzle.error( "unsupported lang: " + lang );
1994 + }
1995 + lang = lang.replace( runescape, funescape ).toLowerCase();
1996 + return function( elem ) {
1997 + var elemLang;
1998 + do {
1999 + if ( (elemLang = documentIsHTML ?
2000 + elem.lang :
2001 + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
2002 +
2003 + elemLang = elemLang.toLowerCase();
2004 + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2005 + }
2006 + } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
2007 + return false;
2008 + };
2009 + }),
2010 +
2011 + // Miscellaneous
2012 + "target": function( elem ) {
2013 + var hash = window.location && window.location.hash;
2014 + return hash && hash.slice( 1 ) === elem.id;
2015 + },
2016 +
2017 + "root": function( elem ) {
2018 + return elem === docElem;
2019 + },
2020 +
2021 + "focus": function( elem ) {
2022 + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
2023 + },
2024 +
2025 + // Boolean properties
2026 + "enabled": createDisabledPseudo( false ),
2027 + "disabled": createDisabledPseudo( true ),
2028 +
2029 + "checked": function( elem ) {
2030 + // In CSS3, :checked should return both checked and selected elements
2031 + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2032 + var nodeName = elem.nodeName.toLowerCase();
2033 + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
2034 + },
2035 +
2036 + "selected": function( elem ) {
2037 + // Accessing this property makes selected-by-default
2038 + // options in Safari work properly
2039 + if ( elem.parentNode ) {
2040 + elem.parentNode.selectedIndex;
2041 + }
2042 +
2043 + return elem.selected === true;
2044 + },
2045 +
2046 + // Contents
2047 + "empty": function( elem ) {
2048 + // http://www.w3.org/TR/selectors/#empty-pseudo
2049 + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2050 + // but not by others (comment: 8; processing instruction: 7; etc.)
2051 + // nodeType < 6 works because attributes (2) do not appear as children
2052 + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2053 + if ( elem.nodeType < 6 ) {
2054 + return false;
2055 + }
2056 + }
2057 + return true;
2058 + },
2059 +
2060 + "parent": function( elem ) {
2061 + return !Expr.pseudos["empty"]( elem );
2062 + },
2063 +
2064 + // Element/input types
2065 + "header": function( elem ) {
2066 + return rheader.test( elem.nodeName );
2067 + },
2068 +
2069 + "input": function( elem ) {
2070 + return rinputs.test( elem.nodeName );
2071 + },
2072 +
2073 + "button": function( elem ) {
2074 + var name = elem.nodeName.toLowerCase();
2075 + return name === "input" && elem.type === "button" || name === "button";
2076 + },
2077 +
2078 + "text": function( elem ) {
2079 + var attr;
2080 + return elem.nodeName.toLowerCase() === "input" &&
2081 + elem.type === "text" &&
2082 +
2083 + // Support: IE<8
2084 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2085 + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
2086 + },
2087 +
2088 + // Position-in-collection
2089 + "first": createPositionalPseudo(function() {
2090 + return [ 0 ];
2091 + }),
2092 +
2093 + "last": createPositionalPseudo(function( matchIndexes, length ) {
2094 + return [ length - 1 ];
2095 + }),
2096 +
2097 + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
2098 + return [ argument < 0 ? argument + length : argument ];
2099 + }),
2100 +
2101 + "even": createPositionalPseudo(function( matchIndexes, length ) {
2102 + var i = 0;
2103 + for ( ; i < length; i += 2 ) {
2104 + matchIndexes.push( i );
2105 + }
2106 + return matchIndexes;
2107 + }),
2108 +
2109 + "odd": createPositionalPseudo(function( matchIndexes, length ) {
2110 + var i = 1;
2111 + for ( ; i < length; i += 2 ) {
2112 + matchIndexes.push( i );
2113 + }
2114 + return matchIndexes;
2115 + }),
2116 +
2117 + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2118 + var i = argument < 0 ?
2119 + argument + length :
2120 + argument > length ?
2121 + length :
2122 + argument;
2123 + for ( ; --i >= 0; ) {
2124 + matchIndexes.push( i );
2125 + }
2126 + return matchIndexes;
2127 + }),
2128 +
2129 + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2130 + var i = argument < 0 ? argument + length : argument;
2131 + for ( ; ++i < length; ) {
2132 + matchIndexes.push( i );
2133 + }
2134 + return matchIndexes;
2135 + })
2136 + }
2137 +};
2138 +
2139 +Expr.pseudos["nth"] = Expr.pseudos["eq"];
2140 +
2141 +// Add button/input type pseudos
2142 +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2143 + Expr.pseudos[ i ] = createInputPseudo( i );
2144 +}
2145 +for ( i in { submit: true, reset: true } ) {
2146 + Expr.pseudos[ i ] = createButtonPseudo( i );
2147 +}
2148 +
2149 +// Easy API for creating new setFilters
2150 +function setFilters() {}
2151 +setFilters.prototype = Expr.filters = Expr.pseudos;
2152 +Expr.setFilters = new setFilters();
2153 +
2154 +tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
2155 + var matched, match, tokens, type,
2156 + soFar, groups, preFilters,
2157 + cached = tokenCache[ selector + " " ];
2158 +
2159 + if ( cached ) {
2160 + return parseOnly ? 0 : cached.slice( 0 );
2161 + }
2162 +
2163 + soFar = selector;
2164 + groups = [];
2165 + preFilters = Expr.preFilter;
2166 +
2167 + while ( soFar ) {
2168 +
2169 + // Comma and first run
2170 + if ( !matched || (match = rcomma.exec( soFar )) ) {
2171 + if ( match ) {
2172 + // Don't consume trailing commas as valid
2173 + soFar = soFar.slice( match[0].length ) || soFar;
2174 + }
2175 + groups.push( (tokens = []) );
2176 + }
2177 +
2178 + matched = false;
2179 +
2180 + // Combinators
2181 + if ( (match = rcombinators.exec( soFar )) ) {
2182 + matched = match.shift();
2183 + tokens.push({
2184 + value: matched,
2185 + // Cast descendant combinators to space
2186 + type: match[0].replace( rtrim, " " )
2187 + });
2188 + soFar = soFar.slice( matched.length );
2189 + }
2190 +
2191 + // Filters
2192 + for ( type in Expr.filter ) {
2193 + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
2194 + (match = preFilters[ type ]( match ))) ) {
2195 + matched = match.shift();
2196 + tokens.push({
2197 + value: matched,
2198 + type: type,
2199 + matches: match
2200 + });
2201 + soFar = soFar.slice( matched.length );
2202 + }
2203 + }
2204 +
2205 + if ( !matched ) {
2206 + break;
2207 + }
2208 + }
2209 +
2210 + // Return the length of the invalid excess
2211 + // if we're just parsing
2212 + // Otherwise, throw an error or return tokens
2213 + return parseOnly ?
2214 + soFar.length :
2215 + soFar ?
2216 + Sizzle.error( selector ) :
2217 + // Cache the tokens
2218 + tokenCache( selector, groups ).slice( 0 );
2219 +};
2220 +
2221 +function toSelector( tokens ) {
2222 + var i = 0,
2223 + len = tokens.length,
2224 + selector = "";
2225 + for ( ; i < len; i++ ) {
2226 + selector += tokens[i].value;
2227 + }
2228 + return selector;
2229 +}
2230 +
2231 +function addCombinator( matcher, combinator, base ) {
2232 + var dir = combinator.dir,
2233 + skip = combinator.next,
2234 + key = skip || dir,
2235 + checkNonElements = base && key === "parentNode",
2236 + doneName = done++;
2237 +
2238 + return combinator.first ?
2239 + // Check against closest ancestor/preceding element
2240 + function( elem, context, xml ) {
2241 + while ( (elem = elem[ dir ]) ) {
2242 + if ( elem.nodeType === 1 || checkNonElements ) {
2243 + return matcher( elem, context, xml );
2244 + }
2245 + }
2246 + return false;
2247 + } :
2248 +
2249 + // Check against all ancestor/preceding elements
2250 + function( elem, context, xml ) {
2251 + var oldCache, uniqueCache, outerCache,
2252 + newCache = [ dirruns, doneName ];
2253 +
2254 + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2255 + if ( xml ) {
2256 + while ( (elem = elem[ dir ]) ) {
2257 + if ( elem.nodeType === 1 || checkNonElements ) {
2258 + if ( matcher( elem, context, xml ) ) {
2259 + return true;
2260 + }
2261 + }
2262 + }
2263 + } else {
2264 + while ( (elem = elem[ dir ]) ) {
2265 + if ( elem.nodeType === 1 || checkNonElements ) {
2266 + outerCache = elem[ expando ] || (elem[ expando ] = {});
2267 +
2268 + // Support: IE <9 only
2269 + // Defend against cloned attroperties (jQuery gh-1709)
2270 + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
2271 +
2272 + if ( skip && skip === elem.nodeName.toLowerCase() ) {
2273 + elem = elem[ dir ] || elem;
2274 + } else if ( (oldCache = uniqueCache[ key ]) &&
2275 + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2276 +
2277 + // Assign to newCache so results back-propagate to previous elements
2278 + return (newCache[ 2 ] = oldCache[ 2 ]);
2279 + } else {
2280 + // Reuse newcache so results back-propagate to previous elements
2281 + uniqueCache[ key ] = newCache;
2282 +
2283 + // A match means we're done; a fail means we have to keep checking
2284 + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
2285 + return true;
2286 + }
2287 + }
2288 + }
2289 + }
2290 + }
2291 + return false;
2292 + };
2293 +}
2294 +
2295 +function elementMatcher( matchers ) {
2296 + return matchers.length > 1 ?
2297 + function( elem, context, xml ) {
2298 + var i = matchers.length;
2299 + while ( i-- ) {
2300 + if ( !matchers[i]( elem, context, xml ) ) {
2301 + return false;
2302 + }
2303 + }
2304 + return true;
2305 + } :
2306 + matchers[0];
2307 +}
2308 +
2309 +function multipleContexts( selector, contexts, results ) {
2310 + var i = 0,
2311 + len = contexts.length;
2312 + for ( ; i < len; i++ ) {
2313 + Sizzle( selector, contexts[i], results );
2314 + }
2315 + return results;
2316 +}
2317 +
2318 +function condense( unmatched, map, filter, context, xml ) {
2319 + var elem,
2320 + newUnmatched = [],
2321 + i = 0,
2322 + len = unmatched.length,
2323 + mapped = map != null;
2324 +
2325 + for ( ; i < len; i++ ) {
2326 + if ( (elem = unmatched[i]) ) {
2327 + if ( !filter || filter( elem, context, xml ) ) {
2328 + newUnmatched.push( elem );
2329 + if ( mapped ) {
2330 + map.push( i );
2331 + }
2332 + }
2333 + }
2334 + }
2335 +
2336 + return newUnmatched;
2337 +}
2338 +
2339 +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2340 + if ( postFilter && !postFilter[ expando ] ) {
2341 + postFilter = setMatcher( postFilter );
2342 + }
2343 + if ( postFinder && !postFinder[ expando ] ) {
2344 + postFinder = setMatcher( postFinder, postSelector );
2345 + }
2346 + return markFunction(function( seed, results, context, xml ) {
2347 + var temp, i, elem,
2348 + preMap = [],
2349 + postMap = [],
2350 + preexisting = results.length,
2351 +
2352 + // Get initial elements from seed or context
2353 + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
2354 +
2355 + // Prefilter to get matcher input, preserving a map for seed-results synchronization
2356 + matcherIn = preFilter && ( seed || !selector ) ?
2357 + condense( elems, preMap, preFilter, context, xml ) :
2358 + elems,
2359 +
2360 + matcherOut = matcher ?
2361 + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2362 + postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2363 +
2364 + // ...intermediate processing is necessary
2365 + [] :
2366 +
2367 + // ...otherwise use results directly
2368 + results :
2369 + matcherIn;
2370 +
2371 + // Find primary matches
2372 + if ( matcher ) {
2373 + matcher( matcherIn, matcherOut, context, xml );
2374 + }
2375 +
2376 + // Apply postFilter
2377 + if ( postFilter ) {
2378 + temp = condense( matcherOut, postMap );
2379 + postFilter( temp, [], context, xml );
2380 +
2381 + // Un-match failing elements by moving them back to matcherIn
2382 + i = temp.length;
2383 + while ( i-- ) {
2384 + if ( (elem = temp[i]) ) {
2385 + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
2386 + }
2387 + }
2388 + }
2389 +
2390 + if ( seed ) {
2391 + if ( postFinder || preFilter ) {
2392 + if ( postFinder ) {
2393 + // Get the final matcherOut by condensing this intermediate into postFinder contexts
2394 + temp = [];
2395 + i = matcherOut.length;
2396 + while ( i-- ) {
2397 + if ( (elem = matcherOut[i]) ) {
2398 + // Restore matcherIn since elem is not yet a final match
2399 + temp.push( (matcherIn[i] = elem) );
2400 + }
2401 + }
2402 + postFinder( null, (matcherOut = []), temp, xml );
2403 + }
2404 +
2405 + // Move matched elements from seed to results to keep them synchronized
2406 + i = matcherOut.length;
2407 + while ( i-- ) {
2408 + if ( (elem = matcherOut[i]) &&
2409 + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
2410 +
2411 + seed[temp] = !(results[temp] = elem);
2412 + }
2413 + }
2414 + }
2415 +
2416 + // Add elements to results, through postFinder if defined
2417 + } else {
2418 + matcherOut = condense(
2419 + matcherOut === results ?
2420 + matcherOut.splice( preexisting, matcherOut.length ) :
2421 + matcherOut
2422 + );
2423 + if ( postFinder ) {
2424 + postFinder( null, results, matcherOut, xml );
2425 + } else {
2426 + push.apply( results, matcherOut );
2427 + }
2428 + }
2429 + });
2430 +}
2431 +
2432 +function matcherFromTokens( tokens ) {
2433 + var checkContext, matcher, j,
2434 + len = tokens.length,
2435 + leadingRelative = Expr.relative[ tokens[0].type ],
2436 + implicitRelative = leadingRelative || Expr.relative[" "],
2437 + i = leadingRelative ? 1 : 0,
2438 +
2439 + // The foundational matcher ensures that elements are reachable from top-level context(s)
2440 + matchContext = addCombinator( function( elem ) {
2441 + return elem === checkContext;
2442 + }, implicitRelative, true ),
2443 + matchAnyContext = addCombinator( function( elem ) {
2444 + return indexOf( checkContext, elem ) > -1;
2445 + }, implicitRelative, true ),
2446 + matchers = [ function( elem, context, xml ) {
2447 + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2448 + (checkContext = context).nodeType ?
2449 + matchContext( elem, context, xml ) :
2450 + matchAnyContext( elem, context, xml ) );
2451 + // Avoid hanging onto element (issue #299)
2452 + checkContext = null;
2453 + return ret;
2454 + } ];
2455 +
2456 + for ( ; i < len; i++ ) {
2457 + if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
2458 + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
2459 + } else {
2460 + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
2461 +
2462 + // Return special upon seeing a positional matcher
2463 + if ( matcher[ expando ] ) {
2464 + // Find the next relative operator (if any) for proper handling
2465 + j = ++i;
2466 + for ( ; j < len; j++ ) {
2467 + if ( Expr.relative[ tokens[j].type ] ) {
2468 + break;
2469 + }
2470 + }
2471 + return setMatcher(
2472 + i > 1 && elementMatcher( matchers ),
2473 + i > 1 && toSelector(
2474 + // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2475 + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
2476 + ).replace( rtrim, "$1" ),
2477 + matcher,
2478 + i < j && matcherFromTokens( tokens.slice( i, j ) ),
2479 + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
2480 + j < len && toSelector( tokens )
2481 + );
2482 + }
2483 + matchers.push( matcher );
2484 + }
2485 + }
2486 +
2487 + return elementMatcher( matchers );
2488 +}
2489 +
2490 +function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2491 + var bySet = setMatchers.length > 0,
2492 + byElement = elementMatchers.length > 0,
2493 + superMatcher = function( seed, context, xml, results, outermost ) {
2494 + var elem, j, matcher,
2495 + matchedCount = 0,
2496 + i = "0",
2497 + unmatched = seed && [],
2498 + setMatched = [],
2499 + contextBackup = outermostContext,
2500 + // We must always have either seed elements or outermost context
2501 + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
2502 + // Use integer dirruns iff this is the outermost matcher
2503 + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
2504 + len = elems.length;
2505 +
2506 + if ( outermost ) {
2507 + outermostContext = context === document || context || outermost;
2508 + }
2509 +
2510 + // Add elements passing elementMatchers directly to results
2511 + // Support: IE<9, Safari
2512 + // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2513 + for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
2514 + if ( byElement && elem ) {
2515 + j = 0;
2516 + if ( !context && elem.ownerDocument !== document ) {
2517 + setDocument( elem );
2518 + xml = !documentIsHTML;
2519 + }
2520 + while ( (matcher = elementMatchers[j++]) ) {
2521 + if ( matcher( elem, context || document, xml) ) {
2522 + results.push( elem );
2523 + break;
2524 + }
2525 + }
2526 + if ( outermost ) {
2527 + dirruns = dirrunsUnique;
2528 + }
2529 + }
2530 +
2531 + // Track unmatched elements for set filters
2532 + if ( bySet ) {
2533 + // They will have gone through all possible matchers
2534 + if ( (elem = !matcher && elem) ) {
2535 + matchedCount--;
2536 + }
2537 +
2538 + // Lengthen the array for every element, matched or not
2539 + if ( seed ) {
2540 + unmatched.push( elem );
2541 + }
2542 + }
2543 + }
2544 +
2545 + // `i` is now the count of elements visited above, and adding it to `matchedCount`
2546 + // makes the latter nonnegative.
2547 + matchedCount += i;
2548 +
2549 + // Apply set filters to unmatched elements
2550 + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2551 + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2552 + // no element matchers and no seed.
2553 + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2554 + // case, which will result in a "00" `matchedCount` that differs from `i` but is also
2555 + // numerically zero.
2556 + if ( bySet && i !== matchedCount ) {
2557 + j = 0;
2558 + while ( (matcher = setMatchers[j++]) ) {
2559 + matcher( unmatched, setMatched, context, xml );
2560 + }
2561 +
2562 + if ( seed ) {
2563 + // Reintegrate element matches to eliminate the need for sorting
2564 + if ( matchedCount > 0 ) {
2565 + while ( i-- ) {
2566 + if ( !(unmatched[i] || setMatched[i]) ) {
2567 + setMatched[i] = pop.call( results );
2568 + }
2569 + }
2570 + }
2571 +
2572 + // Discard index placeholder values to get only actual matches
2573 + setMatched = condense( setMatched );
2574 + }
2575 +
2576 + // Add matches to results
2577 + push.apply( results, setMatched );
2578 +
2579 + // Seedless set matches succeeding multiple successful matchers stipulate sorting
2580 + if ( outermost && !seed && setMatched.length > 0 &&
2581 + ( matchedCount + setMatchers.length ) > 1 ) {
2582 +
2583 + Sizzle.uniqueSort( results );
2584 + }
2585 + }
2586 +
2587 + // Override manipulation of globals by nested matchers
2588 + if ( outermost ) {
2589 + dirruns = dirrunsUnique;
2590 + outermostContext = contextBackup;
2591 + }
2592 +
2593 + return unmatched;
2594 + };
2595 +
2596 + return bySet ?
2597 + markFunction( superMatcher ) :
2598 + superMatcher;
2599 +}
2600 +
2601 +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2602 + var i,
2603 + setMatchers = [],
2604 + elementMatchers = [],
2605 + cached = compilerCache[ selector + " " ];
2606 +
2607 + if ( !cached ) {
2608 + // Generate a function of recursive functions that can be used to check each element
2609 + if ( !match ) {
2610 + match = tokenize( selector );
2611 + }
2612 + i = match.length;
2613 + while ( i-- ) {
2614 + cached = matcherFromTokens( match[i] );
2615 + if ( cached[ expando ] ) {
2616 + setMatchers.push( cached );
2617 + } else {
2618 + elementMatchers.push( cached );
2619 + }
2620 + }
2621 +
2622 + // Cache the compiled function
2623 + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
2624 +
2625 + // Save selector and tokenization
2626 + cached.selector = selector;
2627 + }
2628 + return cached;
2629 +};
2630 +
2631 +/**
2632 + * A low-level selection function that works with Sizzle's compiled
2633 + * selector functions
2634 + * @param {String|Function} selector A selector or a pre-compiled
2635 + * selector function built with Sizzle.compile
2636 + * @param {Element} context
2637 + * @param {Array} [results]
2638 + * @param {Array} [seed] A set of elements to match against
2639 + */
2640 +select = Sizzle.select = function( selector, context, results, seed ) {
2641 + var i, tokens, token, type, find,
2642 + compiled = typeof selector === "function" && selector,
2643 + match = !seed && tokenize( (selector = compiled.selector || selector) );
2644 +
2645 + results = results || [];
2646 +
2647 + // Try to minimize operations if there is only one selector in the list and no seed
2648 + // (the latter of which guarantees us context)
2649 + if ( match.length === 1 ) {
2650 +
2651 + // Reduce context if the leading compound selector is an ID
2652 + tokens = match[0] = match[0].slice( 0 );
2653 + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2654 + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
2655 +
2656 + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
2657 + if ( !context ) {
2658 + return results;
2659 +
2660 + // Precompiled matchers will still verify ancestry, so step up a level
2661 + } else if ( compiled ) {
2662 + context = context.parentNode;
2663 + }
2664 +
2665 + selector = selector.slice( tokens.shift().value.length );
2666 + }
2667 +
2668 + // Fetch a seed set for right-to-left matching
2669 + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
2670 + while ( i-- ) {
2671 + token = tokens[i];
2672 +
2673 + // Abort if we hit a combinator
2674 + if ( Expr.relative[ (type = token.type) ] ) {
2675 + break;
2676 + }
2677 + if ( (find = Expr.find[ type ]) ) {
2678 + // Search, expanding context for leading sibling combinators
2679 + if ( (seed = find(
2680 + token.matches[0].replace( runescape, funescape ),
2681 + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
2682 + )) ) {
2683 +
2684 + // If seed is empty or no tokens remain, we can return early
2685 + tokens.splice( i, 1 );
2686 + selector = seed.length && toSelector( tokens );
2687 + if ( !selector ) {
2688 + push.apply( results, seed );
2689 + return results;
2690 + }
2691 +
2692 + break;
2693 + }
2694 + }
2695 + }
2696 + }
2697 +
2698 + // Compile and execute a filtering function if one is not provided
2699 + // Provide `match` to avoid retokenization if we modified the selector above
2700 + ( compiled || compile( selector, match ) )(
2701 + seed,
2702 + context,
2703 + !documentIsHTML,
2704 + results,
2705 + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2706 + );
2707 + return results;
2708 +};
2709 +
2710 +// One-time assignments
2711 +
2712 +// Sort stability
2713 +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
2714 +
2715 +// Support: Chrome 14-35+
2716 +// Always assume duplicates if they aren't passed to the comparison function
2717 +support.detectDuplicates = !!hasDuplicate;
2718 +
2719 +// Initialize against the default document
2720 +setDocument();
2721 +
2722 +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2723 +// Detached nodes confoundingly follow *each other*
2724 +support.sortDetached = assert(function( el ) {
2725 + // Should return 1, but returns 4 (following)
2726 + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
2727 +});
2728 +
2729 +// Support: IE<8
2730 +// Prevent attribute/property "interpolation"
2731 +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2732 +if ( !assert(function( el ) {
2733 + el.innerHTML = "<a href='#'></a>";
2734 + return el.firstChild.getAttribute("href") === "#" ;
2735 +}) ) {
2736 + addHandle( "type|href|height|width", function( elem, name, isXML ) {
2737 + if ( !isXML ) {
2738 + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2739 + }
2740 + });
2741 +}
2742 +
2743 +// Support: IE<9
2744 +// Use defaultValue in place of getAttribute("value")
2745 +if ( !support.attributes || !assert(function( el ) {
2746 + el.innerHTML = "<input/>";
2747 + el.firstChild.setAttribute( "value", "" );
2748 + return el.firstChild.getAttribute( "value" ) === "";
2749 +}) ) {
2750 + addHandle( "value", function( elem, name, isXML ) {
2751 + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2752 + return elem.defaultValue;
2753 + }
2754 + });
2755 +}
2756 +
2757 +// Support: IE<9
2758 +// Use getAttributeNode to fetch booleans when getAttribute lies
2759 +if ( !assert(function( el ) {
2760 + return el.getAttribute("disabled") == null;
2761 +}) ) {
2762 + addHandle( booleans, function( elem, name, isXML ) {
2763 + var val;
2764 + if ( !isXML ) {
2765 + return elem[ name ] === true ? name.toLowerCase() :
2766 + (val = elem.getAttributeNode( name )) && val.specified ?
2767 + val.value :
2768 + null;
2769 + }
2770 + });
2771 +}
2772 +
2773 +return Sizzle;
2774 +
2775 +})( window );
2776 +
2777 +
2778 +
2779 +jQuery.find = Sizzle;
2780 +jQuery.expr = Sizzle.selectors;
2781 +
2782 +// Deprecated
2783 +jQuery.expr[ ":" ] = jQuery.expr.pseudos;
2784 +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2785 +jQuery.text = Sizzle.getText;
2786 +jQuery.isXMLDoc = Sizzle.isXML;
2787 +jQuery.contains = Sizzle.contains;
2788 +jQuery.escapeSelector = Sizzle.escape;
2789 +
2790 +
2791 +
2792 +
2793 +var dir = function( elem, dir, until ) {
2794 + var matched = [],
2795 + truncate = until !== undefined;
2796 +
2797 + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
2798 + if ( elem.nodeType === 1 ) {
2799 + if ( truncate && jQuery( elem ).is( until ) ) {
2800 + break;
2801 + }
2802 + matched.push( elem );
2803 + }
2804 + }
2805 + return matched;
2806 +};
2807 +
2808 +
2809 +var siblings = function( n, elem ) {
2810 + var matched = [];
2811 +
2812 + for ( ; n; n = n.nextSibling ) {
2813 + if ( n.nodeType === 1 && n !== elem ) {
2814 + matched.push( n );
2815 + }
2816 + }
2817 +
2818 + return matched;
2819 +};
2820 +
2821 +
2822 +var rneedsContext = jQuery.expr.match.needsContext;
2823 +
2824 +
2825 +
2826 +function nodeName( elem, name ) {
2827 +
2828 + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
2829 +
2830 +};
2831 +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
2832 +
2833 +
2834 +
2835 +// Implement the identical functionality for filter and not
2836 +function winnow( elements, qualifier, not ) {
2837 + if ( isFunction( qualifier ) ) {
2838 + return jQuery.grep( elements, function( elem, i ) {
2839 + return !!qualifier.call( elem, i, elem ) !== not;
2840 + } );
2841 + }
2842 +
2843 + // Single element
2844 + if ( qualifier.nodeType ) {
2845 + return jQuery.grep( elements, function( elem ) {
2846 + return ( elem === qualifier ) !== not;
2847 + } );
2848 + }
2849 +
2850 + // Arraylike of elements (jQuery, arguments, Array)
2851 + if ( typeof qualifier !== "string" ) {
2852 + return jQuery.grep( elements, function( elem ) {
2853 + return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
2854 + } );
2855 + }
2856 +
2857 + // Filtered directly for both simple and complex selectors
2858 + return jQuery.filter( qualifier, elements, not );
2859 +}
2860 +
2861 +jQuery.filter = function( expr, elems, not ) {
2862 + var elem = elems[ 0 ];
2863 +
2864 + if ( not ) {
2865 + expr = ":not(" + expr + ")";
2866 + }
2867 +
2868 + if ( elems.length === 1 && elem.nodeType === 1 ) {
2869 + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
2870 + }
2871 +
2872 + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
2873 + return elem.nodeType === 1;
2874 + } ) );
2875 +};
2876 +
2877 +jQuery.fn.extend( {
2878 + find: function( selector ) {
2879 + var i, ret,
2880 + len = this.length,
2881 + self = this;
2882 +
2883 + if ( typeof selector !== "string" ) {
2884 + return this.pushStack( jQuery( selector ).filter( function() {
2885 + for ( i = 0; i < len; i++ ) {
2886 + if ( jQuery.contains( self[ i ], this ) ) {
2887 + return true;
2888 + }
2889 + }
2890 + } ) );
2891 + }
2892 +
2893 + ret = this.pushStack( [] );
2894 +
2895 + for ( i = 0; i < len; i++ ) {
2896 + jQuery.find( selector, self[ i ], ret );
2897 + }
2898 +
2899 + return len > 1 ? jQuery.uniqueSort( ret ) : ret;
2900 + },
2901 + filter: function( selector ) {
2902 + return this.pushStack( winnow( this, selector || [], false ) );
2903 + },
2904 + not: function( selector ) {
2905 + return this.pushStack( winnow( this, selector || [], true ) );
2906 + },
2907 + is: function( selector ) {
2908 + return !!winnow(
2909 + this,
2910 +
2911 + // If this is a positional/relative selector, check membership in the returned set
2912 + // so $("p:first").is("p:last") won't return true for a doc with two "p".
2913 + typeof selector === "string" && rneedsContext.test( selector ) ?
2914 + jQuery( selector ) :
2915 + selector || [],
2916 + false
2917 + ).length;
2918 + }
2919 +} );
2920 +
2921 +
2922 +// Initialize a jQuery object
2923 +
2924 +
2925 +// A central reference to the root jQuery(document)
2926 +var rootjQuery,
2927 +
2928 + // A simple way to check for HTML strings
2929 + // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
2930 + // Strict HTML recognition (#11290: must start with <)
2931 + // Shortcut simple #id case for speed
2932 + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
2933 +
2934 + init = jQuery.fn.init = function( selector, context, root ) {
2935 + var match, elem;
2936 +
2937 + // HANDLE: $(""), $(null), $(undefined), $(false)
2938 + if ( !selector ) {
2939 + return this;
2940 + }
2941 +
2942 + // Method init() accepts an alternate rootjQuery
2943 + // so migrate can support jQuery.sub (gh-2101)
2944 + root = root || rootjQuery;
2945 +
2946 + // Handle HTML strings
2947 + if ( typeof selector === "string" ) {
2948 + if ( selector[ 0 ] === "<" &&
2949 + selector[ selector.length - 1 ] === ">" &&
2950 + selector.length >= 3 ) {
2951 +
2952 + // Assume that strings that start and end with <> are HTML and skip the regex check
2953 + match = [ null, selector, null ];
2954 +
2955 + } else {
2956 + match = rquickExpr.exec( selector );
2957 + }
2958 +
2959 + // Match html or make sure no context is specified for #id
2960 + if ( match && ( match[ 1 ] || !context ) ) {
2961 +
2962 + // HANDLE: $(html) -> $(array)
2963 + if ( match[ 1 ] ) {
2964 + context = context instanceof jQuery ? context[ 0 ] : context;
2965 +
2966 + // Option to run scripts is true for back-compat
2967 + // Intentionally let the error be thrown if parseHTML is not present
2968 + jQuery.merge( this, jQuery.parseHTML(
2969 + match[ 1 ],
2970 + context && context.nodeType ? context.ownerDocument || context : document,
2971 + true
2972 + ) );
2973 +
2974 + // HANDLE: $(html, props)
2975 + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
2976 + for ( match in context ) {
2977 +
2978 + // Properties of context are called as methods if possible
2979 + if ( isFunction( this[ match ] ) ) {
2980 + this[ match ]( context[ match ] );
2981 +
2982 + // ...and otherwise set as attributes
2983 + } else {
2984 + this.attr( match, context[ match ] );
2985 + }
2986 + }
2987 + }
2988 +
2989 + return this;
2990 +
2991 + // HANDLE: $(#id)
2992 + } else {
2993 + elem = document.getElementById( match[ 2 ] );
2994 +
2995 + if ( elem ) {
2996 +
2997 + // Inject the element directly into the jQuery object
2998 + this[ 0 ] = elem;
2999 + this.length = 1;
3000 + }
3001 + return this;
3002 + }
3003 +
3004 + // HANDLE: $(expr, $(...))
3005 + } else if ( !context || context.jquery ) {
3006 + return ( context || root ).find( selector );
3007 +
3008 + // HANDLE: $(expr, context)
3009 + // (which is just equivalent to: $(context).find(expr)
3010 + } else {
3011 + return this.constructor( context ).find( selector );
3012 + }
3013 +
3014 + // HANDLE: $(DOMElement)
3015 + } else if ( selector.nodeType ) {
3016 + this[ 0 ] = selector;
3017 + this.length = 1;
3018 + return this;
3019 +
3020 + // HANDLE: $(function)
3021 + // Shortcut for document ready
3022 + } else if ( isFunction( selector ) ) {
3023 + return root.ready !== undefined ?
3024 + root.ready( selector ) :
3025 +
3026 + // Execute immediately if ready is not present
3027 + selector( jQuery );
3028 + }
3029 +
3030 + return jQuery.makeArray( selector, this );
3031 + };
3032 +
3033 +// Give the init function the jQuery prototype for later instantiation
3034 +init.prototype = jQuery.fn;
3035 +
3036 +// Initialize central reference
3037 +rootjQuery = jQuery( document );
3038 +
3039 +
3040 +var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3041 +
3042 + // Methods guaranteed to produce a unique set when starting from a unique set
3043 + guaranteedUnique = {
3044 + children: true,
3045 + contents: true,
3046 + next: true,
3047 + prev: true
3048 + };
3049 +
3050 +jQuery.fn.extend( {
3051 + has: function( target ) {
3052 + var targets = jQuery( target, this ),
3053 + l = targets.length;
3054 +
3055 + return this.filter( function() {
3056 + var i = 0;
3057 + for ( ; i < l; i++ ) {
3058 + if ( jQuery.contains( this, targets[ i ] ) ) {
3059 + return true;
3060 + }
3061 + }
3062 + } );
3063 + },
3064 +
3065 + closest: function( selectors, context ) {
3066 + var cur,
3067 + i = 0,
3068 + l = this.length,
3069 + matched = [],
3070 + targets = typeof selectors !== "string" && jQuery( selectors );
3071 +
3072 + // Positional selectors never match, since there's no _selection_ context
3073 + if ( !rneedsContext.test( selectors ) ) {
3074 + for ( ; i < l; i++ ) {
3075 + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
3076 +
3077 + // Always skip document fragments
3078 + if ( cur.nodeType < 11 && ( targets ?
3079 + targets.index( cur ) > -1 :
3080 +
3081 + // Don't pass non-elements to Sizzle
3082 + cur.nodeType === 1 &&
3083 + jQuery.find.matchesSelector( cur, selectors ) ) ) {
3084 +
3085 + matched.push( cur );
3086 + break;
3087 + }
3088 + }
3089 + }
3090 + }
3091 +
3092 + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
3093 + },
3094 +
3095 + // Determine the position of an element within the set
3096 + index: function( elem ) {
3097 +
3098 + // No argument, return index in parent
3099 + if ( !elem ) {
3100 + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3101 + }
3102 +
3103 + // Index in selector
3104 + if ( typeof elem === "string" ) {
3105 + return indexOf.call( jQuery( elem ), this[ 0 ] );
3106 + }
3107 +
3108 + // Locate the position of the desired element
3109 + return indexOf.call( this,
3110 +
3111 + // If it receives a jQuery object, the first element is used
3112 + elem.jquery ? elem[ 0 ] : elem
3113 + );
3114 + },
3115 +
3116 + add: function( selector, context ) {
3117 + return this.pushStack(
3118 + jQuery.uniqueSort(
3119 + jQuery.merge( this.get(), jQuery( selector, context ) )
3120 + )
3121 + );
3122 + },
3123 +
3124 + addBack: function( selector ) {
3125 + return this.add( selector == null ?
3126 + this.prevObject : this.prevObject.filter( selector )
3127 + );
3128 + }
3129 +} );
3130 +
3131 +function sibling( cur, dir ) {
3132 + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
3133 + return cur;
3134 +}
3135 +
3136 +jQuery.each( {
3137 + parent: function( elem ) {
3138 + var parent = elem.parentNode;
3139 + return parent && parent.nodeType !== 11 ? parent : null;
3140 + },
3141 + parents: function( elem ) {
3142 + return dir( elem, "parentNode" );
3143 + },
3144 + parentsUntil: function( elem, i, until ) {
3145 + return dir( elem, "parentNode", until );
3146 + },
3147 + next: function( elem ) {
3148 + return sibling( elem, "nextSibling" );
3149 + },
3150 + prev: function( elem ) {
3151 + return sibling( elem, "previousSibling" );
3152 + },
3153 + nextAll: function( elem ) {
3154 + return dir( elem, "nextSibling" );
3155 + },
3156 + prevAll: function( elem ) {
3157 + return dir( elem, "previousSibling" );
3158 + },
3159 + nextUntil: function( elem, i, until ) {
3160 + return dir( elem, "nextSibling", until );
3161 + },
3162 + prevUntil: function( elem, i, until ) {
3163 + return dir( elem, "previousSibling", until );
3164 + },
3165 + siblings: function( elem ) {
3166 + return siblings( ( elem.parentNode || {} ).firstChild, elem );
3167 + },
3168 + children: function( elem ) {
3169 + return siblings( elem.firstChild );
3170 + },
3171 + contents: function( elem ) {
3172 + if ( typeof elem.contentDocument !== "undefined" ) {
3173 + return elem.contentDocument;
3174 + }
3175 +
3176 + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
3177 + // Treat the template element as a regular one in browsers that
3178 + // don't support it.
3179 + if ( nodeName( elem, "template" ) ) {
3180 + elem = elem.content || elem;
3181 + }
3182 +
3183 + return jQuery.merge( [], elem.childNodes );
3184 + }
3185 +}, function( name, fn ) {
3186 + jQuery.fn[ name ] = function( until, selector ) {
3187 + var matched = jQuery.map( this, fn, until );
3188 +
3189 + if ( name.slice( -5 ) !== "Until" ) {
3190 + selector = until;
3191 + }
3192 +
3193 + if ( selector && typeof selector === "string" ) {
3194 + matched = jQuery.filter( selector, matched );
3195 + }
3196 +
3197 + if ( this.length > 1 ) {
3198 +
3199 + // Remove duplicates
3200 + if ( !guaranteedUnique[ name ] ) {
3201 + jQuery.uniqueSort( matched );
3202 + }
3203 +
3204 + // Reverse order for parents* and prev-derivatives
3205 + if ( rparentsprev.test( name ) ) {
3206 + matched.reverse();
3207 + }
3208 + }
3209 +
3210 + return this.pushStack( matched );
3211 + };
3212 +} );
3213 +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3214 +
3215 +
3216 +
3217 +// Convert String-formatted options into Object-formatted ones
3218 +function createOptions( options ) {
3219 + var object = {};
3220 + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3221 + object[ flag ] = true;
3222 + } );
3223 + return object;
3224 +}
3225 +
3226 +/*
3227 + * Create a callback list using the following parameters:
3228 + *
3229 + * options: an optional list of space-separated options that will change how
3230 + * the callback list behaves or a more traditional option object
3231 + *
3232 + * By default a callback list will act like an event callback list and can be
3233 + * "fired" multiple times.
3234 + *
3235 + * Possible options:
3236 + *
3237 + * once: will ensure the callback list can only be fired once (like a Deferred)
3238 + *
3239 + * memory: will keep track of previous values and will call any callback added
3240 + * after the list has been fired right away with the latest "memorized"
3241 + * values (like a Deferred)
3242 + *
3243 + * unique: will ensure a callback can only be added once (no duplicate in the list)
3244 + *
3245 + * stopOnFalse: interrupt callings when a callback returns false
3246 + *
3247 + */
3248 +jQuery.Callbacks = function( options ) {
3249 +
3250 + // Convert options from String-formatted to Object-formatted if needed
3251 + // (we check in cache first)
3252 + options = typeof options === "string" ?
3253 + createOptions( options ) :
3254 + jQuery.extend( {}, options );
3255 +
3256 + var // Flag to know if list is currently firing
3257 + firing,
3258 +
3259 + // Last fire value for non-forgettable lists
3260 + memory,
3261 +
3262 + // Flag to know if list was already fired
3263 + fired,
3264 +
3265 + // Flag to prevent firing
3266 + locked,
3267 +
3268 + // Actual callback list
3269 + list = [],
3270 +
3271 + // Queue of execution data for repeatable lists
3272 + queue = [],
3273 +
3274 + // Index of currently firing callback (modified by add/remove as needed)
3275 + firingIndex = -1,
3276 +
3277 + // Fire callbacks
3278 + fire = function() {
3279 +
3280 + // Enforce single-firing
3281 + locked = locked || options.once;
3282 +
3283 + // Execute callbacks for all pending executions,
3284 + // respecting firingIndex overrides and runtime changes
3285 + fired = firing = true;
3286 + for ( ; queue.length; firingIndex = -1 ) {
3287 + memory = queue.shift();
3288 + while ( ++firingIndex < list.length ) {
3289 +
3290 + // Run callback and check for early termination
3291 + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
3292 + options.stopOnFalse ) {
3293 +
3294 + // Jump to end and forget the data so .add doesn't re-fire
3295 + firingIndex = list.length;
3296 + memory = false;
3297 + }
3298 + }
3299 + }
3300 +
3301 + // Forget the data if we're done with it
3302 + if ( !options.memory ) {
3303 + memory = false;
3304 + }
3305 +
3306 + firing = false;
3307 +
3308 + // Clean up if we're done firing for good
3309 + if ( locked ) {
3310 +
3311 + // Keep an empty list if we have data for future add calls
3312 + if ( memory ) {
3313 + list = [];
3314 +
3315 + // Otherwise, this object is spent
3316 + } else {
3317 + list = "";
3318 + }
3319 + }
3320 + },
3321 +
3322 + // Actual Callbacks object
3323 + self = {
3324 +
3325 + // Add a callback or a collection of callbacks to the list
3326 + add: function() {
3327 + if ( list ) {
3328 +
3329 + // If we have memory from a past run, we should fire after adding
3330 + if ( memory && !firing ) {
3331 + firingIndex = list.length - 1;
3332 + queue.push( memory );
3333 + }
3334 +
3335 + ( function add( args ) {
3336 + jQuery.each( args, function( _, arg ) {
3337 + if ( isFunction( arg ) ) {
3338 + if ( !options.unique || !self.has( arg ) ) {
3339 + list.push( arg );
3340 + }
3341 + } else if ( arg && arg.length && toType( arg ) !== "string" ) {
3342 +
3343 + // Inspect recursively
3344 + add( arg );
3345 + }
3346 + } );
3347 + } )( arguments );
3348 +
3349 + if ( memory && !firing ) {
3350 + fire();
3351 + }
3352 + }
3353 + return this;
3354 + },
3355 +
3356 + // Remove a callback from the list
3357 + remove: function() {
3358 + jQuery.each( arguments, function( _, arg ) {
3359 + var index;
3360 + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3361 + list.splice( index, 1 );
3362 +
3363 + // Handle firing indexes
3364 + if ( index <= firingIndex ) {
3365 + firingIndex--;
3366 + }
3367 + }
3368 + } );
3369 + return this;
3370 + },
3371 +
3372 + // Check if a given callback is in the list.
3373 + // If no argument is given, return whether or not list has callbacks attached.
3374 + has: function( fn ) {
3375 + return fn ?
3376 + jQuery.inArray( fn, list ) > -1 :
3377 + list.length > 0;
3378 + },
3379 +
3380 + // Remove all callbacks from the list
3381 + empty: function() {
3382 + if ( list ) {
3383 + list = [];
3384 + }
3385 + return this;
3386 + },
3387 +
3388 + // Disable .fire and .add
3389 + // Abort any current/pending executions
3390 + // Clear all callbacks and values
3391 + disable: function() {
3392 + locked = queue = [];
3393 + list = memory = "";
3394 + return this;
3395 + },
3396 + disabled: function() {
3397 + return !list;
3398 + },
3399 +
3400 + // Disable .fire
3401 + // Also disable .add unless we have memory (since it would have no effect)
3402 + // Abort any pending executions
3403 + lock: function() {
3404 + locked = queue = [];
3405 + if ( !memory && !firing ) {
3406 + list = memory = "";
3407 + }
3408 + return this;
3409 + },
3410 + locked: function() {
3411 + return !!locked;
3412 + },
3413 +
3414 + // Call all callbacks with the given context and arguments
3415 + fireWith: function( context, args ) {
3416 + if ( !locked ) {
3417 + args = args || [];
3418 + args = [ context, args.slice ? args.slice() : args ];
3419 + queue.push( args );
3420 + if ( !firing ) {
3421 + fire();
3422 + }
3423 + }
3424 + return this;
3425 + },
3426 +
3427 + // Call all the callbacks with the given arguments
3428 + fire: function() {
3429 + self.fireWith( this, arguments );
3430 + return this;
3431 + },
3432 +
3433 + // To know if the callbacks have already been called at least once
3434 + fired: function() {
3435 + return !!fired;
3436 + }
3437 + };
3438 +
3439 + return self;
3440 +};
3441 +
3442 +
3443 +function Identity( v ) {
3444 + return v;
3445 +}
3446 +function Thrower( ex ) {
3447 + throw ex;
3448 +}
3449 +
3450 +function adoptValue( value, resolve, reject, noValue ) {
3451 + var method;
3452 +
3453 + try {
3454 +
3455 + // Check for promise aspect first to privilege synchronous behavior
3456 + if ( value && isFunction( ( method = value.promise ) ) ) {
3457 + method.call( value ).done( resolve ).fail( reject );
3458 +
3459 + // Other thenables
3460 + } else if ( value && isFunction( ( method = value.then ) ) ) {
3461 + method.call( value, resolve, reject );
3462 +
3463 + // Other non-thenables
3464 + } else {
3465 +
3466 + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
3467 + // * false: [ value ].slice( 0 ) => resolve( value )
3468 + // * true: [ value ].slice( 1 ) => resolve()
3469 + resolve.apply( undefined, [ value ].slice( noValue ) );
3470 + }
3471 +
3472 + // For Promises/A+, convert exceptions into rejections
3473 + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
3474 + // Deferred#then to conditionally suppress rejection.
3475 + } catch ( value ) {
3476 +
3477 + // Support: Android 4.0 only
3478 + // Strict mode functions invoked without .call/.apply get global-object context
3479 + reject.apply( undefined, [ value ] );
3480 + }
3481 +}
3482 +
3483 +jQuery.extend( {
3484 +
3485 + Deferred: function( func ) {
3486 + var tuples = [
3487 +
3488 + // action, add listener, callbacks,
3489 + // ... .then handlers, argument index, [final state]
3490 + [ "notify", "progress", jQuery.Callbacks( "memory" ),
3491 + jQuery.Callbacks( "memory" ), 2 ],
3492 + [ "resolve", "done", jQuery.Callbacks( "once memory" ),
3493 + jQuery.Callbacks( "once memory" ), 0, "resolved" ],
3494 + [ "reject", "fail", jQuery.Callbacks( "once memory" ),
3495 + jQuery.Callbacks( "once memory" ), 1, "rejected" ]
3496 + ],
3497 + state = "pending",
3498 + promise = {
3499 + state: function() {
3500 + return state;
3501 + },
3502 + always: function() {
3503 + deferred.done( arguments ).fail( arguments );
3504 + return this;
3505 + },
3506 + "catch": function( fn ) {
3507 + return promise.then( null, fn );
3508 + },
3509 +
3510 + // Keep pipe for back-compat
3511 + pipe: function( /* fnDone, fnFail, fnProgress */ ) {
3512 + var fns = arguments;
3513 +
3514 + return jQuery.Deferred( function( newDefer ) {
3515 + jQuery.each( tuples, function( i, tuple ) {
3516 +
3517 + // Map tuples (progress, done, fail) to arguments (done, fail, progress)
3518 + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
3519 +
3520 + // deferred.progress(function() { bind to newDefer or newDefer.notify })
3521 + // deferred.done(function() { bind to newDefer or newDefer.resolve })
3522 + // deferred.fail(function() { bind to newDefer or newDefer.reject })
3523 + deferred[ tuple[ 1 ] ]( function() {
3524 + var returned = fn && fn.apply( this, arguments );
3525 + if ( returned && isFunction( returned.promise ) ) {
3526 + returned.promise()
3527 + .progress( newDefer.notify )
3528 + .done( newDefer.resolve )
3529 + .fail( newDefer.reject );
3530 + } else {
3531 + newDefer[ tuple[ 0 ] + "With" ](
3532 + this,
3533 + fn ? [ returned ] : arguments
3534 + );
3535 + }
3536 + } );
3537 + } );
3538 + fns = null;
3539 + } ).promise();
3540 + },
3541 + then: function( onFulfilled, onRejected, onProgress ) {
3542 + var maxDepth = 0;
3543 + function resolve( depth, deferred, handler, special ) {
3544 + return function() {
3545 + var that = this,
3546 + args = arguments,
3547 + mightThrow = function() {
3548 + var returned, then;
3549 +
3550 + // Support: Promises/A+ section 2.3.3.3.3
3551 + // https://promisesaplus.com/#point-59
3552 + // Ignore double-resolution attempts
3553 + if ( depth < maxDepth ) {
3554 + return;
3555 + }
3556 +
3557 + returned = handler.apply( that, args );
3558 +
3559 + // Support: Promises/A+ section 2.3.1
3560 + // https://promisesaplus.com/#point-48
3561 + if ( returned === deferred.promise() ) {
3562 + throw new TypeError( "Thenable self-resolution" );
3563 + }
3564 +
3565 + // Support: Promises/A+ sections 2.3.3.1, 3.5
3566 + // https://promisesaplus.com/#point-54
3567 + // https://promisesaplus.com/#point-75
3568 + // Retrieve `then` only once
3569 + then = returned &&
3570 +
3571 + // Support: Promises/A+ section 2.3.4
3572 + // https://promisesaplus.com/#point-64
3573 + // Only check objects and functions for thenability
3574 + ( typeof returned === "object" ||
3575 + typeof returned === "function" ) &&
3576 + returned.then;
3577 +
3578 + // Handle a returned thenable
3579 + if ( isFunction( then ) ) {
3580 +
3581 + // Special processors (notify) just wait for resolution
3582 + if ( special ) {
3583 + then.call(
3584 + returned,
3585 + resolve( maxDepth, deferred, Identity, special ),
3586 + resolve( maxDepth, deferred, Thrower, special )
3587 + );
3588 +
3589 + // Normal processors (resolve) also hook into progress
3590 + } else {
3591 +
3592 + // ...and disregard older resolution values
3593 + maxDepth++;
3594 +
3595 + then.call(
3596 + returned,
3597 + resolve( maxDepth, deferred, Identity, special ),
3598 + resolve( maxDepth, deferred, Thrower, special ),
3599 + resolve( maxDepth, deferred, Identity,
3600 + deferred.notifyWith )
3601 + );
3602 + }
3603 +
3604 + // Handle all other returned values
3605 + } else {
3606 +
3607 + // Only substitute handlers pass on context
3608 + // and multiple values (non-spec behavior)
3609 + if ( handler !== Identity ) {
3610 + that = undefined;
3611 + args = [ returned ];
3612 + }
3613 +
3614 + // Process the value(s)
3615 + // Default process is resolve
3616 + ( special || deferred.resolveWith )( that, args );
3617 + }
3618 + },
3619 +
3620 + // Only normal processors (resolve) catch and reject exceptions
3621 + process = special ?
3622 + mightThrow :
3623 + function() {
3624 + try {
3625 + mightThrow();
3626 + } catch ( e ) {
3627 +
3628 + if ( jQuery.Deferred.exceptionHook ) {
3629 + jQuery.Deferred.exceptionHook( e,
3630 + process.stackTrace );
3631 + }
3632 +
3633 + // Support: Promises/A+ section 2.3.3.3.4.1
3634 + // https://promisesaplus.com/#point-61
3635 + // Ignore post-resolution exceptions
3636 + if ( depth + 1 >= maxDepth ) {
3637 +
3638 + // Only substitute handlers pass on context
3639 + // and multiple values (non-spec behavior)
3640 + if ( handler !== Thrower ) {
3641 + that = undefined;
3642 + args = [ e ];
3643 + }
3644 +
3645 + deferred.rejectWith( that, args );
3646 + }
3647 + }
3648 + };
3649 +
3650 + // Support: Promises/A+ section 2.3.3.3.1
3651 + // https://promisesaplus.com/#point-57
3652 + // Re-resolve promises immediately to dodge false rejection from
3653 + // subsequent errors
3654 + if ( depth ) {
3655 + process();
3656 + } else {
3657 +
3658 + // Call an optional hook to record the stack, in case of exception
3659 + // since it's otherwise lost when execution goes async
3660 + if ( jQuery.Deferred.getStackHook ) {
3661 + process.stackTrace = jQuery.Deferred.getStackHook();
3662 + }
3663 + window.setTimeout( process );
3664 + }
3665 + };
3666 + }
3667 +
3668 + return jQuery.Deferred( function( newDefer ) {
3669 +
3670 + // progress_handlers.add( ... )
3671 + tuples[ 0 ][ 3 ].add(
3672 + resolve(
3673 + 0,
3674 + newDefer,
3675 + isFunction( onProgress ) ?
3676 + onProgress :
3677 + Identity,
3678 + newDefer.notifyWith
3679 + )
3680 + );
3681 +
3682 + // fulfilled_handlers.add( ... )
3683 + tuples[ 1 ][ 3 ].add(
3684 + resolve(
3685 + 0,
3686 + newDefer,
3687 + isFunction( onFulfilled ) ?
3688 + onFulfilled :
3689 + Identity
3690 + )
3691 + );
3692 +
3693 + // rejected_handlers.add( ... )
3694 + tuples[ 2 ][ 3 ].add(
3695 + resolve(
3696 + 0,
3697 + newDefer,
3698 + isFunction( onRejected ) ?
3699 + onRejected :
3700 + Thrower
3701 + )
3702 + );
3703 + } ).promise();
3704 + },
3705 +
3706 + // Get a promise for this deferred
3707 + // If obj is provided, the promise aspect is added to the object
3708 + promise: function( obj ) {
3709 + return obj != null ? jQuery.extend( obj, promise ) : promise;
3710 + }
3711 + },
3712 + deferred = {};
3713 +
3714 + // Add list-specific methods
3715 + jQuery.each( tuples, function( i, tuple ) {
3716 + var list = tuple[ 2 ],
3717 + stateString = tuple[ 5 ];
3718 +
3719 + // promise.progress = list.add
3720 + // promise.done = list.add
3721 + // promise.fail = list.add
3722 + promise[ tuple[ 1 ] ] = list.add;
3723 +
3724 + // Handle state
3725 + if ( stateString ) {
3726 + list.add(
3727 + function() {
3728 +
3729 + // state = "resolved" (i.e., fulfilled)
3730 + // state = "rejected"
3731 + state = stateString;
3732 + },
3733 +
3734 + // rejected_callbacks.disable
3735 + // fulfilled_callbacks.disable
3736 + tuples[ 3 - i ][ 2 ].disable,
3737 +
3738 + // rejected_handlers.disable
3739 + // fulfilled_handlers.disable
3740 + tuples[ 3 - i ][ 3 ].disable,
3741 +
3742 + // progress_callbacks.lock
3743 + tuples[ 0 ][ 2 ].lock,
3744 +
3745 + // progress_handlers.lock
3746 + tuples[ 0 ][ 3 ].lock
3747 + );
3748 + }
3749 +
3750 + // progress_handlers.fire
3751 + // fulfilled_handlers.fire
3752 + // rejected_handlers.fire
3753 + list.add( tuple[ 3 ].fire );
3754 +
3755 + // deferred.notify = function() { deferred.notifyWith(...) }
3756 + // deferred.resolve = function() { deferred.resolveWith(...) }
3757 + // deferred.reject = function() { deferred.rejectWith(...) }
3758 + deferred[ tuple[ 0 ] ] = function() {
3759 + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
3760 + return this;
3761 + };
3762 +
3763 + // deferred.notifyWith = list.fireWith
3764 + // deferred.resolveWith = list.fireWith
3765 + // deferred.rejectWith = list.fireWith
3766 + deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
3767 + } );
3768 +
3769 + // Make the deferred a promise
3770 + promise.promise( deferred );
3771 +
3772 + // Call given func if any
3773 + if ( func ) {
3774 + func.call( deferred, deferred );
3775 + }
3776 +
3777 + // All done!
3778 + return deferred;
3779 + },
3780 +
3781 + // Deferred helper
3782 + when: function( singleValue ) {
3783 + var
3784 +
3785 + // count of uncompleted subordinates
3786 + remaining = arguments.length,
3787 +
3788 + // count of unprocessed arguments
3789 + i = remaining,
3790 +
3791 + // subordinate fulfillment data
3792 + resolveContexts = Array( i ),
3793 + resolveValues = slice.call( arguments ),
3794 +
3795 + // the master Deferred
3796 + master = jQuery.Deferred(),
3797 +
3798 + // subordinate callback factory
3799 + updateFunc = function( i ) {
3800 + return function( value ) {
3801 + resolveContexts[ i ] = this;
3802 + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
3803 + if ( !( --remaining ) ) {
3804 + master.resolveWith( resolveContexts, resolveValues );
3805 + }
3806 + };
3807 + };
3808 +
3809 + // Single- and empty arguments are adopted like Promise.resolve
3810 + if ( remaining <= 1 ) {
3811 + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
3812 + !remaining );
3813 +
3814 + // Use .then() to unwrap secondary thenables (cf. gh-3000)
3815 + if ( master.state() === "pending" ||
3816 + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
3817 +
3818 + return master.then();
3819 + }
3820 + }
3821 +
3822 + // Multiple arguments are aggregated like Promise.all array elements
3823 + while ( i-- ) {
3824 + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
3825 + }
3826 +
3827 + return master.promise();
3828 + }
3829 +} );
3830 +
3831 +
3832 +// These usually indicate a programmer mistake during development,
3833 +// warn about them ASAP rather than swallowing them by default.
3834 +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
3835 +
3836 +jQuery.Deferred.exceptionHook = function( error, stack ) {
3837 +
3838 + // Support: IE 8 - 9 only
3839 + // Console exists when dev tools are open, which can happen at any time
3840 + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
3841 + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
3842 + }
3843 +};
3844 +
3845 +
3846 +
3847 +
3848 +jQuery.readyException = function( error ) {
3849 + window.setTimeout( function() {
3850 + throw error;
3851 + } );
3852 +};
3853 +
3854 +
3855 +
3856 +
3857 +// The deferred used on DOM ready
3858 +var readyList = jQuery.Deferred();
3859 +
3860 +jQuery.fn.ready = function( fn ) {
3861 +
3862 + readyList
3863 + .then( fn )
3864 +
3865 + // Wrap jQuery.readyException in a function so that the lookup
3866 + // happens at the time of error handling instead of callback
3867 + // registration.
3868 + .catch( function( error ) {
3869 + jQuery.readyException( error );
3870 + } );
3871 +
3872 + return this;
3873 +};
3874 +
3875 +jQuery.extend( {
3876 +
3877 + // Is the DOM ready to be used? Set to true once it occurs.
3878 + isReady: false,
3879 +
3880 + // A counter to track how many items to wait for before
3881 + // the ready event fires. See #6781
3882 + readyWait: 1,
3883 +
3884 + // Handle when the DOM is ready
3885 + ready: function( wait ) {
3886 +
3887 + // Abort if there are pending holds or we're already ready
3888 + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
3889 + return;
3890 + }
3891 +
3892 + // Remember that the DOM is ready
3893 + jQuery.isReady = true;
3894 +
3895 + // If a normal DOM Ready event fired, decrement, and wait if need be
3896 + if ( wait !== true && --jQuery.readyWait > 0 ) {
3897 + return;
3898 + }
3899 +
3900 + // If there are functions bound, to execute
3901 + readyList.resolveWith( document, [ jQuery ] );
3902 + }
3903 +} );
3904 +
3905 +jQuery.ready.then = readyList.then;
3906 +
3907 +// The ready event handler and self cleanup method
3908 +function completed() {
3909 + document.removeEventListener( "DOMContentLoaded", completed );
3910 + window.removeEventListener( "load", completed );
3911 + jQuery.ready();
3912 +}
3913 +
3914 +// Catch cases where $(document).ready() is called
3915 +// after the browser event has already occurred.
3916 +// Support: IE <=9 - 10 only
3917 +// Older IE sometimes signals "interactive" too soon
3918 +if ( document.readyState === "complete" ||
3919 + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
3920 +
3921 + // Handle it asynchronously to allow scripts the opportunity to delay ready
3922 + window.setTimeout( jQuery.ready );
3923 +
3924 +} else {
3925 +
3926 + // Use the handy event callback
3927 + document.addEventListener( "DOMContentLoaded", completed );
3928 +
3929 + // A fallback to window.onload, that will always work
3930 + window.addEventListener( "load", completed );
3931 +}
3932 +
3933 +
3934 +
3935 +
3936 +// Multifunctional method to get and set values of a collection
3937 +// The value/s can optionally be executed if it's a function
3938 +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
3939 + var i = 0,
3940 + len = elems.length,
3941 + bulk = key == null;
3942 +
3943 + // Sets many values
3944 + if ( toType( key ) === "object" ) {
3945 + chainable = true;
3946 + for ( i in key ) {
3947 + access( elems, fn, i, key[ i ], true, emptyGet, raw );
3948 + }
3949 +
3950 + // Sets one value
3951 + } else if ( value !== undefined ) {
3952 + chainable = true;
3953 +
3954 + if ( !isFunction( value ) ) {
3955 + raw = true;
3956 + }
3957 +
3958 + if ( bulk ) {
3959 +
3960 + // Bulk operations run against the entire set
3961 + if ( raw ) {
3962 + fn.call( elems, value );
3963 + fn = null;
3964 +
3965 + // ...except when executing function values
3966 + } else {
3967 + bulk = fn;
3968 + fn = function( elem, key, value ) {
3969 + return bulk.call( jQuery( elem ), value );
3970 + };
3971 + }
3972 + }
3973 +
3974 + if ( fn ) {
3975 + for ( ; i < len; i++ ) {
3976 + fn(
3977 + elems[ i ], key, raw ?
3978 + value :
3979 + value.call( elems[ i ], i, fn( elems[ i ], key ) )
3980 + );
3981 + }
3982 + }
3983 + }
3984 +
3985 + if ( chainable ) {
3986 + return elems;
3987 + }
3988 +
3989 + // Gets
3990 + if ( bulk ) {
3991 + return fn.call( elems );
3992 + }
3993 +
3994 + return len ? fn( elems[ 0 ], key ) : emptyGet;
3995 +};
3996 +
3997 +
3998 +// Matches dashed string for camelizing
3999 +var rmsPrefix = /^-ms-/,
4000 + rdashAlpha = /-([a-z])/g;
4001 +
4002 +// Used by camelCase as callback to replace()
4003 +function fcamelCase( all, letter ) {
4004 + return letter.toUpperCase();
4005 +}
4006 +
4007 +// Convert dashed to camelCase; used by the css and data modules
4008 +// Support: IE <=9 - 11, Edge 12 - 15
4009 +// Microsoft forgot to hump their vendor prefix (#9572)
4010 +function camelCase( string ) {
4011 + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4012 +}
4013 +var acceptData = function( owner ) {
4014 +
4015 + // Accepts only:
4016 + // - Node
4017 + // - Node.ELEMENT_NODE
4018 + // - Node.DOCUMENT_NODE
4019 + // - Object
4020 + // - Any
4021 + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
4022 +};
4023 +
4024 +
4025 +
4026 +
4027 +function Data() {
4028 + this.expando = jQuery.expando + Data.uid++;
4029 +}
4030 +
4031 +Data.uid = 1;
4032 +
4033 +Data.prototype = {
4034 +
4035 + cache: function( owner ) {
4036 +
4037 + // Check if the owner object already has a cache
4038 + var value = owner[ this.expando ];
4039 +
4040 + // If not, create one
4041 + if ( !value ) {
4042 + value = {};
4043 +
4044 + // We can accept data for non-element nodes in modern browsers,
4045 + // but we should not, see #8335.
4046 + // Always return an empty object.
4047 + if ( acceptData( owner ) ) {
4048 +
4049 + // If it is a node unlikely to be stringify-ed or looped over
4050 + // use plain assignment
4051 + if ( owner.nodeType ) {
4052 + owner[ this.expando ] = value;
4053 +
4054 + // Otherwise secure it in a non-enumerable property
4055 + // configurable must be true to allow the property to be
4056 + // deleted when data is removed
4057 + } else {
4058 + Object.defineProperty( owner, this.expando, {
4059 + value: value,
4060 + configurable: true
4061 + } );
4062 + }
4063 + }
4064 + }
4065 +
4066 + return value;
4067 + },
4068 + set: function( owner, data, value ) {
4069 + var prop,
4070 + cache = this.cache( owner );
4071 +
4072 + // Handle: [ owner, key, value ] args
4073 + // Always use camelCase key (gh-2257)
4074 + if ( typeof data === "string" ) {
4075 + cache[ camelCase( data ) ] = value;
4076 +
4077 + // Handle: [ owner, { properties } ] args
4078 + } else {
4079 +
4080 + // Copy the properties one-by-one to the cache object
4081 + for ( prop in data ) {
4082 + cache[ camelCase( prop ) ] = data[ prop ];
4083 + }
4084 + }
4085 + return cache;
4086 + },
4087 + get: function( owner, key ) {
4088 + return key === undefined ?
4089 + this.cache( owner ) :
4090 +
4091 + // Always use camelCase key (gh-2257)
4092 + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
4093 + },
4094 + access: function( owner, key, value ) {
4095 +
4096 + // In cases where either:
4097 + //
4098 + // 1. No key was specified
4099 + // 2. A string key was specified, but no value provided
4100 + //
4101 + // Take the "read" path and allow the get method to determine
4102 + // which value to return, respectively either:
4103 + //
4104 + // 1. The entire cache object
4105 + // 2. The data stored at the key
4106 + //
4107 + if ( key === undefined ||
4108 + ( ( key && typeof key === "string" ) && value === undefined ) ) {
4109 +
4110 + return this.get( owner, key );
4111 + }
4112 +
4113 + // When the key is not a string, or both a key and value
4114 + // are specified, set or extend (existing objects) with either:
4115 + //
4116 + // 1. An object of properties
4117 + // 2. A key and value
4118 + //
4119 + this.set( owner, key, value );
4120 +
4121 + // Since the "set" path can have two possible entry points
4122 + // return the expected data based on which path was taken[*]
4123 + return value !== undefined ? value : key;
4124 + },
4125 + remove: function( owner, key ) {
4126 + var i,
4127 + cache = owner[ this.expando ];
4128 +
4129 + if ( cache === undefined ) {
4130 + return;
4131 + }
4132 +
4133 + if ( key !== undefined ) {
4134 +
4135 + // Support array or space separated string of keys
4136 + if ( Array.isArray( key ) ) {
4137 +
4138 + // If key is an array of keys...
4139 + // We always set camelCase keys, so remove that.
4140 + key = key.map( camelCase );
4141 + } else {
4142 + key = camelCase( key );
4143 +
4144 + // If a key with the spaces exists, use it.
4145 + // Otherwise, create an array by matching non-whitespace
4146 + key = key in cache ?
4147 + [ key ] :
4148 + ( key.match( rnothtmlwhite ) || [] );
4149 + }
4150 +
4151 + i = key.length;
4152 +
4153 + while ( i-- ) {
4154 + delete cache[ key[ i ] ];
4155 + }
4156 + }
4157 +
4158 + // Remove the expando if there's no more data
4159 + if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
4160 +
4161 + // Support: Chrome <=35 - 45
4162 + // Webkit & Blink performance suffers when deleting properties
4163 + // from DOM nodes, so set to undefined instead
4164 + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4165 + if ( owner.nodeType ) {
4166 + owner[ this.expando ] = undefined;
4167 + } else {
4168 + delete owner[ this.expando ];
4169 + }
4170 + }
4171 + },
4172 + hasData: function( owner ) {
4173 + var cache = owner[ this.expando ];
4174 + return cache !== undefined && !jQuery.isEmptyObject( cache );
4175 + }
4176 +};
4177 +var dataPriv = new Data();
4178 +
4179 +var dataUser = new Data();
4180 +
4181 +
4182 +
4183 +// Implementation Summary
4184 +//
4185 +// 1. Enforce API surface and semantic compatibility with 1.9.x branch
4186 +// 2. Improve the module's maintainability by reducing the storage
4187 +// paths to a single mechanism.
4188 +// 3. Use the same single mechanism to support "private" and "user" data.
4189 +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4190 +// 5. Avoid exposing implementation details on user objects (eg. expando properties)
4191 +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
4192 +
4193 +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4194 + rmultiDash = /[A-Z]/g;
4195 +
4196 +function getData( data ) {
4197 + if ( data === "true" ) {
4198 + return true;
4199 + }
4200 +
4201 + if ( data === "false" ) {
4202 + return false;
4203 + }
4204 +
4205 + if ( data === "null" ) {
4206 + return null;
4207 + }
4208 +
4209 + // Only convert to a number if it doesn't change the string
4210 + if ( data === +data + "" ) {
4211 + return +data;
4212 + }
4213 +
4214 + if ( rbrace.test( data ) ) {
4215 + return JSON.parse( data );
4216 + }
4217 +
4218 + return data;
4219 +}
4220 +
4221 +function dataAttr( elem, key, data ) {
4222 + var name;
4223 +
4224 + // If nothing was found internally, try to fetch any
4225 + // data from the HTML5 data-* attribute
4226 + if ( data === undefined && elem.nodeType === 1 ) {
4227 + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
4228 + data = elem.getAttribute( name );
4229 +
4230 + if ( typeof data === "string" ) {
4231 + try {
4232 + data = getData( data );
4233 + } catch ( e ) {}
4234 +
4235 + // Make sure we set the data so it isn't changed later
4236 + dataUser.set( elem, key, data );
4237 + } else {
4238 + data = undefined;
4239 + }
4240 + }
4241 + return data;
4242 +}
4243 +
4244 +jQuery.extend( {
4245 + hasData: function( elem ) {
4246 + return dataUser.hasData( elem ) || dataPriv.hasData( elem );
4247 + },
4248 +
4249 + data: function( elem, name, data ) {
4250 + return dataUser.access( elem, name, data );
4251 + },
4252 +
4253 + removeData: function( elem, name ) {
4254 + dataUser.remove( elem, name );
4255 + },
4256 +
4257 + // TODO: Now that all calls to _data and _removeData have been replaced
4258 + // with direct calls to dataPriv methods, these can be deprecated.
4259 + _data: function( elem, name, data ) {
4260 + return dataPriv.access( elem, name, data );
4261 + },
4262 +
4263 + _removeData: function( elem, name ) {
4264 + dataPriv.remove( elem, name );
4265 + }
4266 +} );
4267 +
4268 +jQuery.fn.extend( {
4269 + data: function( key, value ) {
4270 + var i, name, data,
4271 + elem = this[ 0 ],
4272 + attrs = elem && elem.attributes;
4273 +
4274 + // Gets all values
4275 + if ( key === undefined ) {
4276 + if ( this.length ) {
4277 + data = dataUser.get( elem );
4278 +
4279 + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
4280 + i = attrs.length;
4281 + while ( i-- ) {
4282 +
4283 + // Support: IE 11 only
4284 + // The attrs elements can be null (#14894)
4285 + if ( attrs[ i ] ) {
4286 + name = attrs[ i ].name;
4287 + if ( name.indexOf( "data-" ) === 0 ) {
4288 + name = camelCase( name.slice( 5 ) );
4289 + dataAttr( elem, name, data[ name ] );
4290 + }
4291 + }
4292 + }
4293 + dataPriv.set( elem, "hasDataAttrs", true );
4294 + }
4295 + }
4296 +
4297 + return data;
4298 + }
4299 +
4300 + // Sets multiple values
4301 + if ( typeof key === "object" ) {
4302 + return this.each( function() {
4303 + dataUser.set( this, key );
4304 + } );
4305 + }
4306 +
4307 + return access( this, function( value ) {
4308 + var data;
4309 +
4310 + // The calling jQuery object (element matches) is not empty
4311 + // (and therefore has an element appears at this[ 0 ]) and the
4312 + // `value` parameter was not undefined. An empty jQuery object
4313 + // will result in `undefined` for elem = this[ 0 ] which will
4314 + // throw an exception if an attempt to read a data cache is made.
4315 + if ( elem && value === undefined ) {
4316 +
4317 + // Attempt to get data from the cache
4318 + // The key will always be camelCased in Data
4319 + data = dataUser.get( elem, key );
4320 + if ( data !== undefined ) {
4321 + return data;
4322 + }
4323 +
4324 + // Attempt to "discover" the data in
4325 + // HTML5 custom data-* attrs
4326 + data = dataAttr( elem, key );
4327 + if ( data !== undefined ) {
4328 + return data;
4329 + }
4330 +
4331 + // We tried really hard, but the data doesn't exist.
4332 + return;
4333 + }
4334 +
4335 + // Set the data...
4336 + this.each( function() {
4337 +
4338 + // We always store the camelCased key
4339 + dataUser.set( this, key, value );
4340 + } );
4341 + }, null, value, arguments.length > 1, null, true );
4342 + },
4343 +
4344 + removeData: function( key ) {
4345 + return this.each( function() {
4346 + dataUser.remove( this, key );
4347 + } );
4348 + }
4349 +} );
4350 +
4351 +
4352 +jQuery.extend( {
4353 + queue: function( elem, type, data ) {
4354 + var queue;
4355 +
4356 + if ( elem ) {
4357 + type = ( type || "fx" ) + "queue";
4358 + queue = dataPriv.get( elem, type );
4359 +
4360 + // Speed up dequeue by getting out quickly if this is just a lookup
4361 + if ( data ) {
4362 + if ( !queue || Array.isArray( data ) ) {
4363 + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
4364 + } else {
4365 + queue.push( data );
4366 + }
4367 + }
4368 + return queue || [];
4369 + }
4370 + },
4371 +
4372 + dequeue: function( elem, type ) {
4373 + type = type || "fx";
4374 +
4375 + var queue = jQuery.queue( elem, type ),
4376 + startLength = queue.length,
4377 + fn = queue.shift(),
4378 + hooks = jQuery._queueHooks( elem, type ),
4379 + next = function() {
4380 + jQuery.dequeue( elem, type );
4381 + };
4382 +
4383 + // If the fx queue is dequeued, always remove the progress sentinel
4384 + if ( fn === "inprogress" ) {
4385 + fn = queue.shift();
4386 + startLength--;
4387 + }
4388 +
4389 + if ( fn ) {
4390 +
4391 + // Add a progress sentinel to prevent the fx queue from being
4392 + // automatically dequeued
4393 + if ( type === "fx" ) {
4394 + queue.unshift( "inprogress" );
4395 + }
4396 +
4397 + // Clear up the last queue stop function
4398 + delete hooks.stop;
4399 + fn.call( elem, next, hooks );
4400 + }
4401 +
4402 + if ( !startLength && hooks ) {
4403 + hooks.empty.fire();
4404 + }
4405 + },
4406 +
4407 + // Not public - generate a queueHooks object, or return the current one
4408 + _queueHooks: function( elem, type ) {
4409 + var key = type + "queueHooks";
4410 + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
4411 + empty: jQuery.Callbacks( "once memory" ).add( function() {
4412 + dataPriv.remove( elem, [ type + "queue", key ] );
4413 + } )
4414 + } );
4415 + }
4416 +} );
4417 +
4418 +jQuery.fn.extend( {
4419 + queue: function( type, data ) {
4420 + var setter = 2;
4421 +
4422 + if ( typeof type !== "string" ) {
4423 + data = type;
4424 + type = "fx";
4425 + setter--;
4426 + }
4427 +
4428 + if ( arguments.length < setter ) {
4429 + return jQuery.queue( this[ 0 ], type );
4430 + }
4431 +
4432 + return data === undefined ?
4433 + this :
4434 + this.each( function() {
4435 + var queue = jQuery.queue( this, type, data );
4436 +
4437 + // Ensure a hooks for this queue
4438 + jQuery._queueHooks( this, type );
4439 +
4440 + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
4441 + jQuery.dequeue( this, type );
4442 + }
4443 + } );
4444 + },
4445 + dequeue: function( type ) {
4446 + return this.each( function() {
4447 + jQuery.dequeue( this, type );
4448 + } );
4449 + },
4450 + clearQueue: function( type ) {
4451 + return this.queue( type || "fx", [] );
4452 + },
4453 +
4454 + // Get a promise resolved when queues of a certain type
4455 + // are emptied (fx is the type by default)
4456 + promise: function( type, obj ) {
4457 + var tmp,
4458 + count = 1,
4459 + defer = jQuery.Deferred(),
4460 + elements = this,
4461 + i = this.length,
4462 + resolve = function() {
4463 + if ( !( --count ) ) {
4464 + defer.resolveWith( elements, [ elements ] );
4465 + }
4466 + };
4467 +
4468 + if ( typeof type !== "string" ) {
4469 + obj = type;
4470 + type = undefined;
4471 + }
4472 + type = type || "fx";
4473 +
4474 + while ( i-- ) {
4475 + tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
4476 + if ( tmp && tmp.empty ) {
4477 + count++;
4478 + tmp.empty.add( resolve );
4479 + }
4480 + }
4481 + resolve();
4482 + return defer.promise( obj );
4483 + }
4484 +} );
4485 +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
4486 +
4487 +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
4488 +
4489 +
4490 +var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4491 +
4492 +var documentElement = document.documentElement;
4493 +
4494 +
4495 +
4496 + var isAttached = function( elem ) {
4497 + return jQuery.contains( elem.ownerDocument, elem );
4498 + },
4499 + composed = { composed: true };
4500 +
4501 + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
4502 + // Check attachment across shadow DOM boundaries when possible (gh-3504)
4503 + // Support: iOS 10.0-10.2 only
4504 + // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
4505 + // leading to errors. We need to check for `getRootNode`.
4506 + if ( documentElement.getRootNode ) {
4507 + isAttached = function( elem ) {
4508 + return jQuery.contains( elem.ownerDocument, elem ) ||
4509 + elem.getRootNode( composed ) === elem.ownerDocument;
4510 + };
4511 + }
4512 +var isHiddenWithinTree = function( elem, el ) {
4513 +
4514 + // isHiddenWithinTree might be called from jQuery#filter function;
4515 + // in that case, element will be second argument
4516 + elem = el || elem;
4517 +
4518 + // Inline style trumps all
4519 + return elem.style.display === "none" ||
4520 + elem.style.display === "" &&
4521 +
4522 + // Otherwise, check computed style
4523 + // Support: Firefox <=43 - 45
4524 + // Disconnected elements can have computed display: none, so first confirm that elem is
4525 + // in the document.
4526 + isAttached( elem ) &&
4527 +
4528 + jQuery.css( elem, "display" ) === "none";
4529 + };
4530 +
4531 +var swap = function( elem, options, callback, args ) {
4532 + var ret, name,
4533 + old = {};
4534 +
4535 + // Remember the old values, and insert the new ones
4536 + for ( name in options ) {
4537 + old[ name ] = elem.style[ name ];
4538 + elem.style[ name ] = options[ name ];
4539 + }
4540 +
4541 + ret = callback.apply( elem, args || [] );
4542 +
4543 + // Revert the old values
4544 + for ( name in options ) {
4545 + elem.style[ name ] = old[ name ];
4546 + }
4547 +
4548 + return ret;
4549 +};
4550 +
4551 +
4552 +
4553 +
4554 +function adjustCSS( elem, prop, valueParts, tween ) {
4555 + var adjusted, scale,
4556 + maxIterations = 20,
4557 + currentValue = tween ?
4558 + function() {
4559 + return tween.cur();
4560 + } :
4561 + function() {
4562 + return jQuery.css( elem, prop, "" );
4563 + },
4564 + initial = currentValue(),
4565 + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
4566 +
4567 + // Starting value computation is required for potential unit mismatches
4568 + initialInUnit = elem.nodeType &&
4569 + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
4570 + rcssNum.exec( jQuery.css( elem, prop ) );
4571 +
4572 + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
4573 +
4574 + // Support: Firefox <=54
4575 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
4576 + initial = initial / 2;
4577 +
4578 + // Trust units reported by jQuery.css
4579 + unit = unit || initialInUnit[ 3 ];
4580 +
4581 + // Iteratively approximate from a nonzero starting point
4582 + initialInUnit = +initial || 1;
4583 +
4584 + while ( maxIterations-- ) {
4585 +
4586 + // Evaluate and update our best guess (doubling guesses that zero out).
4587 + // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
4588 + jQuery.style( elem, prop, initialInUnit + unit );
4589 + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
4590 + maxIterations = 0;
4591 + }
4592 + initialInUnit = initialInUnit / scale;
4593 +
4594 + }
4595 +
4596 + initialInUnit = initialInUnit * 2;
4597 + jQuery.style( elem, prop, initialInUnit + unit );
4598 +
4599 + // Make sure we update the tween properties later on
4600 + valueParts = valueParts || [];
4601 + }
4602 +
4603 + if ( valueParts ) {
4604 + initialInUnit = +initialInUnit || +initial || 0;
4605 +
4606 + // Apply relative offset (+=/-=) if specified
4607 + adjusted = valueParts[ 1 ] ?
4608 + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
4609 + +valueParts[ 2 ];
4610 + if ( tween ) {
4611 + tween.unit = unit;
4612 + tween.start = initialInUnit;
4613 + tween.end = adjusted;
4614 + }
4615 + }
4616 + return adjusted;
4617 +}
4618 +
4619 +
4620 +var defaultDisplayMap = {};
4621 +
4622 +function getDefaultDisplay( elem ) {
4623 + var temp,
4624 + doc = elem.ownerDocument,
4625 + nodeName = elem.nodeName,
4626 + display = defaultDisplayMap[ nodeName ];
4627 +
4628 + if ( display ) {
4629 + return display;
4630 + }
4631 +
4632 + temp = doc.body.appendChild( doc.createElement( nodeName ) );
4633 + display = jQuery.css( temp, "display" );
4634 +
4635 + temp.parentNode.removeChild( temp );
4636 +
4637 + if ( display === "none" ) {
4638 + display = "block";
4639 + }
4640 + defaultDisplayMap[ nodeName ] = display;
4641 +
4642 + return display;
4643 +}
4644 +
4645 +function showHide( elements, show ) {
4646 + var display, elem,
4647 + values = [],
4648 + index = 0,
4649 + length = elements.length;
4650 +
4651 + // Determine new display value for elements that need to change
4652 + for ( ; index < length; index++ ) {
4653 + elem = elements[ index ];
4654 + if ( !elem.style ) {
4655 + continue;
4656 + }
4657 +
4658 + display = elem.style.display;
4659 + if ( show ) {
4660 +
4661 + // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
4662 + // check is required in this first loop unless we have a nonempty display value (either
4663 + // inline or about-to-be-restored)
4664 + if ( display === "none" ) {
4665 + values[ index ] = dataPriv.get( elem, "display" ) || null;
4666 + if ( !values[ index ] ) {
4667 + elem.style.display = "";
4668 + }
4669 + }
4670 + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
4671 + values[ index ] = getDefaultDisplay( elem );
4672 + }
4673 + } else {
4674 + if ( display !== "none" ) {
4675 + values[ index ] = "none";
4676 +
4677 + // Remember what we're overwriting
4678 + dataPriv.set( elem, "display", display );
4679 + }
4680 + }
4681 + }
4682 +
4683 + // Set the display of the elements in a second loop to avoid constant reflow
4684 + for ( index = 0; index < length; index++ ) {
4685 + if ( values[ index ] != null ) {
4686 + elements[ index ].style.display = values[ index ];
4687 + }
4688 + }
4689 +
4690 + return elements;
4691 +}
4692 +
4693 +jQuery.fn.extend( {
4694 + show: function() {
4695 + return showHide( this, true );
4696 + },
4697 + hide: function() {
4698 + return showHide( this );
4699 + },
4700 + toggle: function( state ) {
4701 + if ( typeof state === "boolean" ) {
4702 + return state ? this.show() : this.hide();
4703 + }
4704 +
4705 + return this.each( function() {
4706 + if ( isHiddenWithinTree( this ) ) {
4707 + jQuery( this ).show();
4708 + } else {
4709 + jQuery( this ).hide();
4710 + }
4711 + } );
4712 + }
4713 +} );
4714 +var rcheckableType = ( /^(?:checkbox|radio)$/i );
4715 +
4716 +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
4717 +
4718 +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
4719 +
4720 +
4721 +
4722 +// We have to close these tags to support XHTML (#13200)
4723 +var wrapMap = {
4724 +
4725 + // Support: IE <=9 only
4726 + option: [ 1, "<select multiple='multiple'>", "</select>" ],
4727 +
4728 + // XHTML parsers do not magically insert elements in the
4729 + // same way that tag soup parsers do. So we cannot shorten
4730 + // this by omitting <tbody> or other required elements.
4731 + thead: [ 1, "<table>", "</table>" ],
4732 + col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
4733 + tr: [ 2, "<table><tbody>", "</tbody></table>" ],
4734 + td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
4735 +
4736 + _default: [ 0, "", "" ]
4737 +};
4738 +
4739 +// Support: IE <=9 only
4740 +wrapMap.optgroup = wrapMap.option;
4741 +
4742 +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4743 +wrapMap.th = wrapMap.td;
4744 +
4745 +
4746 +function getAll( context, tag ) {
4747 +
4748 + // Support: IE <=9 - 11 only
4749 + // Use typeof to avoid zero-argument method invocation on host objects (#15151)
4750 + var ret;
4751 +
4752 + if ( typeof context.getElementsByTagName !== "undefined" ) {
4753 + ret = context.getElementsByTagName( tag || "*" );
4754 +
4755 + } else if ( typeof context.querySelectorAll !== "undefined" ) {
4756 + ret = context.querySelectorAll( tag || "*" );
4757 +
4758 + } else {
4759 + ret = [];
4760 + }
4761 +
4762 + if ( tag === undefined || tag && nodeName( context, tag ) ) {
4763 + return jQuery.merge( [ context ], ret );
4764 + }
4765 +
4766 + return ret;
4767 +}
4768 +
4769 +
4770 +// Mark scripts as having already been evaluated
4771 +function setGlobalEval( elems, refElements ) {
4772 + var i = 0,
4773 + l = elems.length;
4774 +
4775 + for ( ; i < l; i++ ) {
4776 + dataPriv.set(
4777 + elems[ i ],
4778 + "globalEval",
4779 + !refElements || dataPriv.get( refElements[ i ], "globalEval" )
4780 + );
4781 + }
4782 +}
4783 +
4784 +
4785 +var rhtml = /<|&#?\w+;/;
4786 +
4787 +function buildFragment( elems, context, scripts, selection, ignored ) {
4788 + var elem, tmp, tag, wrap, attached, j,
4789 + fragment = context.createDocumentFragment(),
4790 + nodes = [],
4791 + i = 0,
4792 + l = elems.length;
4793 +
4794 + for ( ; i < l; i++ ) {
4795 + elem = elems[ i ];
4796 +
4797 + if ( elem || elem === 0 ) {
4798 +
4799 + // Add nodes directly
4800 + if ( toType( elem ) === "object" ) {
4801 +
4802 + // Support: Android <=4.0 only, PhantomJS 1 only
4803 + // push.apply(_, arraylike) throws on ancient WebKit
4804 + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
4805 +
4806 + // Convert non-html into a text node
4807 + } else if ( !rhtml.test( elem ) ) {
4808 + nodes.push( context.createTextNode( elem ) );
4809 +
4810 + // Convert html into DOM nodes
4811 + } else {
4812 + tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
4813 +
4814 + // Deserialize a standard representation
4815 + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
4816 + wrap = wrapMap[ tag ] || wrapMap._default;
4817 + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
4818 +
4819 + // Descend through wrappers to the right content
4820 + j = wrap[ 0 ];
4821 + while ( j-- ) {
4822 + tmp = tmp.lastChild;
4823 + }
4824 +
4825 + // Support: Android <=4.0 only, PhantomJS 1 only
4826 + // push.apply(_, arraylike) throws on ancient WebKit
4827 + jQuery.merge( nodes, tmp.childNodes );
4828 +
4829 + // Remember the top-level container
4830 + tmp = fragment.firstChild;
4831 +
4832 + // Ensure the created nodes are orphaned (#12392)
4833 + tmp.textContent = "";
4834 + }
4835 + }
4836 + }
4837 +
4838 + // Remove wrapper from fragment
4839 + fragment.textContent = "";
4840 +
4841 + i = 0;
4842 + while ( ( elem = nodes[ i++ ] ) ) {
4843 +
4844 + // Skip elements already in the context collection (trac-4087)
4845 + if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
4846 + if ( ignored ) {
4847 + ignored.push( elem );
4848 + }
4849 + continue;
4850 + }
4851 +
4852 + attached = isAttached( elem );
4853 +
4854 + // Append to fragment
4855 + tmp = getAll( fragment.appendChild( elem ), "script" );
4856 +
4857 + // Preserve script evaluation history
4858 + if ( attached ) {
4859 + setGlobalEval( tmp );
4860 + }
4861 +
4862 + // Capture executables
4863 + if ( scripts ) {
4864 + j = 0;
4865 + while ( ( elem = tmp[ j++ ] ) ) {
4866 + if ( rscriptType.test( elem.type || "" ) ) {
4867 + scripts.push( elem );
4868 + }
4869 + }
4870 + }
4871 + }
4872 +
4873 + return fragment;
4874 +}
4875 +
4876 +
4877 +( function() {
4878 + var fragment = document.createDocumentFragment(),
4879 + div = fragment.appendChild( document.createElement( "div" ) ),
4880 + input = document.createElement( "input" );
4881 +
4882 + // Support: Android 4.0 - 4.3 only
4883 + // Check state lost if the name is set (#11217)
4884 + // Support: Windows Web Apps (WWA)
4885 + // `name` and `type` must use .setAttribute for WWA (#14901)
4886 + input.setAttribute( "type", "radio" );
4887 + input.setAttribute( "checked", "checked" );
4888 + input.setAttribute( "name", "t" );
4889 +
4890 + div.appendChild( input );
4891 +
4892 + // Support: Android <=4.1 only
4893 + // Older WebKit doesn't clone checked state correctly in fragments
4894 + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4895 +
4896 + // Support: IE <=11 only
4897 + // Make sure textarea (and checkbox) defaultValue is properly cloned
4898 + div.innerHTML = "<textarea>x</textarea>";
4899 + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4900 +} )();
4901 +
4902 +
4903 +var
4904 + rkeyEvent = /^key/,
4905 + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
4906 + rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
4907 +
4908 +function returnTrue() {
4909 + return true;
4910 +}
4911 +
4912 +function returnFalse() {
4913 + return false;
4914 +}
4915 +
4916 +// Support: IE <=9 - 11+
4917 +// focus() and blur() are asynchronous, except when they are no-op.
4918 +// So expect focus to be synchronous when the element is already active,
4919 +// and blur to be synchronous when the element is not already active.
4920 +// (focus and blur are always synchronous in other supported browsers,
4921 +// this just defines when we can count on it).
4922 +function expectSync( elem, type ) {
4923 + return ( elem === safeActiveElement() ) === ( type === "focus" );
4924 +}
4925 +
4926 +// Support: IE <=9 only
4927 +// Accessing document.activeElement can throw unexpectedly
4928 +// https://bugs.jquery.com/ticket/13393
4929 +function safeActiveElement() {
4930 + try {
4931 + return document.activeElement;
4932 + } catch ( err ) { }
4933 +}
4934 +
4935 +function on( elem, types, selector, data, fn, one ) {
4936 + var origFn, type;
4937 +
4938 + // Types can be a map of types/handlers
4939 + if ( typeof types === "object" ) {
4940 +
4941 + // ( types-Object, selector, data )
4942 + if ( typeof selector !== "string" ) {
4943 +
4944 + // ( types-Object, data )
4945 + data = data || selector;
4946 + selector = undefined;
4947 + }
4948 + for ( type in types ) {
4949 + on( elem, type, selector, data, types[ type ], one );
4950 + }
4951 + return elem;
4952 + }
4953 +
4954 + if ( data == null && fn == null ) {
4955 +
4956 + // ( types, fn )
4957 + fn = selector;
4958 + data = selector = undefined;
4959 + } else if ( fn == null ) {
4960 + if ( typeof selector === "string" ) {
4961 +
4962 + // ( types, selector, fn )
4963 + fn = data;
4964 + data = undefined;
4965 + } else {
4966 +
4967 + // ( types, data, fn )
4968 + fn = data;
4969 + data = selector;
4970 + selector = undefined;
4971 + }
4972 + }
4973 + if ( fn === false ) {
4974 + fn = returnFalse;
4975 + } else if ( !fn ) {
4976 + return elem;
4977 + }
4978 +
4979 + if ( one === 1 ) {
4980 + origFn = fn;
4981 + fn = function( event ) {
4982 +
4983 + // Can use an empty set, since event contains the info
4984 + jQuery().off( event );
4985 + return origFn.apply( this, arguments );
4986 + };
4987 +
4988 + // Use same guid so caller can remove using origFn
4989 + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
4990 + }
4991 + return elem.each( function() {
4992 + jQuery.event.add( this, types, fn, data, selector );
4993 + } );
4994 +}
4995 +
4996 +/*
4997 + * Helper functions for managing events -- not part of the public interface.
4998 + * Props to Dean Edwards' addEvent library for many of the ideas.
4999 + */

This file is too large to show in full.

src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.min.js new
+2
@@ -0,0 +1,2 @@
1 +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
2 +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.min.map new
+1
@@ -0,0 +1 @@
1 +{"version":3,"sources":["jquery-3.4.1.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","rtrim","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","opt","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","parseInt","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery-3.4.1.min.js"}
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.js new
+8495
@@ -0,0 +1,8495 @@
1 +/*!
2 + * jQuery JavaScript Library v3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector
3 + * https://jquery.com/
4 + *
5 + * Includes Sizzle.js
6 + * https://sizzlejs.com/
7 + *
8 + * Copyright JS Foundation and other contributors
9 + * Released under the MIT license
10 + * https://jquery.org/license
11 + *
12 + * Date: 2019-05-01T21:04Z
13 + */
14 +( function( global, factory ) {
15 +
16 + "use strict";
17 +
18 + if ( typeof module === "object" && typeof module.exports === "object" ) {
19 +
20 + // For CommonJS and CommonJS-like environments where a proper `window`
21 + // is present, execute the factory and get jQuery.
22 + // For environments that do not have a `window` with a `document`
23 + // (such as Node.js), expose a factory as module.exports.
24 + // This accentuates the need for the creation of a real `window`.
25 + // e.g. var jQuery = require("jquery")(window);
26 + // See ticket #14549 for more info.
27 + module.exports = global.document ?
28 + factory( global, true ) :
29 + function( w ) {
30 + if ( !w.document ) {
31 + throw new Error( "jQuery requires a window with a document" );
32 + }
33 + return factory( w );
34 + };
35 + } else {
36 + factory( global );
37 + }
38 +
39 +// Pass this if window is not defined yet
40 +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
41 +
42 +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
43 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
44 +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
45 +// enough that all such attempts are guarded in a try block.
46 +"use strict";
47 +
48 +var arr = [];
49 +
50 +var document = window.document;
51 +
52 +var getProto = Object.getPrototypeOf;
53 +
54 +var slice = arr.slice;
55 +
56 +var concat = arr.concat;
57 +
58 +var push = arr.push;
59 +
60 +var indexOf = arr.indexOf;
61 +
62 +var class2type = {};
63 +
64 +var toString = class2type.toString;
65 +
66 +var hasOwn = class2type.hasOwnProperty;
67 +
68 +var fnToString = hasOwn.toString;
69 +
70 +var ObjectFunctionString = fnToString.call( Object );
71 +
72 +var support = {};
73 +
74 +var isFunction = function isFunction( obj ) {
75 +
76 + // Support: Chrome <=57, Firefox <=52
77 + // In some browsers, typeof returns "function" for HTML <object> elements
78 + // (i.e., `typeof document.createElement( "object" ) === "function"`).
79 + // We don't want to classify *any* DOM node as a function.
80 + return typeof obj === "function" && typeof obj.nodeType !== "number";
81 + };
82 +
83 +
84 +var isWindow = function isWindow( obj ) {
85 + return obj != null && obj === obj.window;
86 + };
87 +
88 +
89 +
90 +
91 + var preservedScriptAttributes = {
92 + type: true,
93 + src: true,
94 + nonce: true,
95 + noModule: true
96 + };
97 +
98 + function DOMEval( code, node, doc ) {
99 + doc = doc || document;
100 +
101 + var i, val,
102 + script = doc.createElement( "script" );
103 +
104 + script.text = code;
105 + if ( node ) {
106 + for ( i in preservedScriptAttributes ) {
107 +
108 + // Support: Firefox 64+, Edge 18+
109 + // Some browsers don't support the "nonce" property on scripts.
110 + // On the other hand, just using `getAttribute` is not enough as
111 + // the `nonce` attribute is reset to an empty string whenever it
112 + // becomes browsing-context connected.
113 + // See https://github.com/whatwg/html/issues/2369
114 + // See https://html.spec.whatwg.org/#nonce-attributes
115 + // The `node.getAttribute` check was added for the sake of
116 + // `jQuery.globalEval` so that it can fake a nonce-containing node
117 + // via an object.
118 + val = node[ i ] || node.getAttribute && node.getAttribute( i );
119 + if ( val ) {
120 + script.setAttribute( i, val );
121 + }
122 + }
123 + }
124 + doc.head.appendChild( script ).parentNode.removeChild( script );
125 + }
126 +
127 +
128 +function toType( obj ) {
129 + if ( obj == null ) {
130 + return obj + "";
131 + }
132 +
133 + // Support: Android <=2.3 only (functionish RegExp)
134 + return typeof obj === "object" || typeof obj === "function" ?
135 + class2type[ toString.call( obj ) ] || "object" :
136 + typeof obj;
137 +}
138 +/* global Symbol */
139 +// Defining this global in .eslintrc.json would create a danger of using the global
140 +// unguarded in another place, it seems safer to define global only for this module
141 +
142 +
143 +
144 +var
145 + version = "3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",
146 +
147 + // Define a local copy of jQuery
148 + jQuery = function( selector, context ) {
149 +
150 + // The jQuery object is actually just the init constructor 'enhanced'
151 + // Need init if jQuery is called (just allow error to be thrown if not included)
152 + return new jQuery.fn.init( selector, context );
153 + },
154 +
155 + // Support: Android <=4.0 only
156 + // Make sure we trim BOM and NBSP
157 + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
158 +
159 +jQuery.fn = jQuery.prototype = {
160 +
161 + // The current version of jQuery being used
162 + jquery: version,
163 +
164 + constructor: jQuery,
165 +
166 + // The default length of a jQuery object is 0
167 + length: 0,
168 +
169 + toArray: function() {
170 + return slice.call( this );
171 + },
172 +
173 + // Get the Nth element in the matched element set OR
174 + // Get the whole matched element set as a clean array
175 + get: function( num ) {
176 +
177 + // Return all the elements in a clean array
178 + if ( num == null ) {
179 + return slice.call( this );
180 + }
181 +
182 + // Return just the one element from the set
183 + return num < 0 ? this[ num + this.length ] : this[ num ];
184 + },
185 +
186 + // Take an array of elements and push it onto the stack
187 + // (returning the new matched element set)
188 + pushStack: function( elems ) {
189 +
190 + // Build a new jQuery matched element set
191 + var ret = jQuery.merge( this.constructor(), elems );
192 +
193 + // Add the old object onto the stack (as a reference)
194 + ret.prevObject = this;
195 +
196 + // Return the newly-formed element set
197 + return ret;
198 + },
199 +
200 + // Execute a callback for every element in the matched set.
201 + each: function( callback ) {
202 + return jQuery.each( this, callback );
203 + },
204 +
205 + map: function( callback ) {
206 + return this.pushStack( jQuery.map( this, function( elem, i ) {
207 + return callback.call( elem, i, elem );
208 + } ) );
209 + },
210 +
211 + slice: function() {
212 + return this.pushStack( slice.apply( this, arguments ) );
213 + },
214 +
215 + first: function() {
216 + return this.eq( 0 );
217 + },
218 +
219 + last: function() {
220 + return this.eq( -1 );
221 + },
222 +
223 + eq: function( i ) {
224 + var len = this.length,
225 + j = +i + ( i < 0 ? len : 0 );
226 + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
227 + },
228 +
229 + end: function() {
230 + return this.prevObject || this.constructor();
231 + },
232 +
233 + // For internal use only.
234 + // Behaves like an Array's method, not like a jQuery method.
235 + push: push,
236 + sort: arr.sort,
237 + splice: arr.splice
238 +};
239 +
240 +jQuery.extend = jQuery.fn.extend = function() {
241 + var options, name, src, copy, copyIsArray, clone,
242 + target = arguments[ 0 ] || {},
243 + i = 1,
244 + length = arguments.length,
245 + deep = false;
246 +
247 + // Handle a deep copy situation
248 + if ( typeof target === "boolean" ) {
249 + deep = target;
250 +
251 + // Skip the boolean and the target
252 + target = arguments[ i ] || {};
253 + i++;
254 + }
255 +
256 + // Handle case when target is a string or something (possible in deep copy)
257 + if ( typeof target !== "object" && !isFunction( target ) ) {
258 + target = {};
259 + }
260 +
261 + // Extend jQuery itself if only one argument is passed
262 + if ( i === length ) {
263 + target = this;
264 + i--;
265 + }
266 +
267 + for ( ; i < length; i++ ) {
268 +
269 + // Only deal with non-null/undefined values
270 + if ( ( options = arguments[ i ] ) != null ) {
271 +
272 + // Extend the base object
273 + for ( name in options ) {
274 + copy = options[ name ];
275 +
276 + // Prevent Object.prototype pollution
277 + // Prevent never-ending loop
278 + if ( name === "__proto__" || target === copy ) {
279 + continue;
280 + }
281 +
282 + // Recurse if we're merging plain objects or arrays
283 + if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
284 + ( copyIsArray = Array.isArray( copy ) ) ) ) {
285 + src = target[ name ];
286 +
287 + // Ensure proper type for the source value
288 + if ( copyIsArray && !Array.isArray( src ) ) {
289 + clone = [];
290 + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
291 + clone = {};
292 + } else {
293 + clone = src;
294 + }
295 + copyIsArray = false;
296 +
297 + // Never move original objects, clone them
298 + target[ name ] = jQuery.extend( deep, clone, copy );
299 +
300 + // Don't bring in undefined values
301 + } else if ( copy !== undefined ) {
302 + target[ name ] = copy;
303 + }
304 + }
305 + }
306 + }
307 +
308 + // Return the modified object
309 + return target;
310 +};
311 +
312 +jQuery.extend( {
313 +
314 + // Unique for each copy of jQuery on the page
315 + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
316 +
317 + // Assume jQuery is ready without the ready module
318 + isReady: true,
319 +
320 + error: function( msg ) {
321 + throw new Error( msg );
322 + },
323 +
324 + noop: function() {},
325 +
326 + isPlainObject: function( obj ) {
327 + var proto, Ctor;
328 +
329 + // Detect obvious negatives
330 + // Use toString instead of jQuery.type to catch host objects
331 + if ( !obj || toString.call( obj ) !== "[object Object]" ) {
332 + return false;
333 + }
334 +
335 + proto = getProto( obj );
336 +
337 + // Objects with no prototype (e.g., `Object.create( null )`) are plain
338 + if ( !proto ) {
339 + return true;
340 + }
341 +
342 + // Objects with prototype are plain iff they were constructed by a global Object function
343 + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
344 + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
345 + },
346 +
347 + isEmptyObject: function( obj ) {
348 + var name;
349 +
350 + for ( name in obj ) {
351 + return false;
352 + }
353 + return true;
354 + },
355 +
356 + // Evaluates a script in a global context
357 + globalEval: function( code, options ) {
358 + DOMEval( code, { nonce: options && options.nonce } );
359 + },
360 +
361 + each: function( obj, callback ) {
362 + var length, i = 0;
363 +
364 + if ( isArrayLike( obj ) ) {
365 + length = obj.length;
366 + for ( ; i < length; i++ ) {
367 + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
368 + break;
369 + }
370 + }
371 + } else {
372 + for ( i in obj ) {
373 + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
374 + break;
375 + }
376 + }
377 + }
378 +
379 + return obj;
380 + },
381 +
382 + // Support: Android <=4.0 only
383 + trim: function( text ) {
384 + return text == null ?
385 + "" :
386 + ( text + "" ).replace( rtrim, "" );
387 + },
388 +
389 + // results is for internal usage only
390 + makeArray: function( arr, results ) {
391 + var ret = results || [];
392 +
393 + if ( arr != null ) {
394 + if ( isArrayLike( Object( arr ) ) ) {
395 + jQuery.merge( ret,
396 + typeof arr === "string" ?
397 + [ arr ] : arr
398 + );
399 + } else {
400 + push.call( ret, arr );
401 + }
402 + }
403 +
404 + return ret;
405 + },
406 +
407 + inArray: function( elem, arr, i ) {
408 + return arr == null ? -1 : indexOf.call( arr, elem, i );
409 + },
410 +
411 + // Support: Android <=4.0 only, PhantomJS 1 only
412 + // push.apply(_, arraylike) throws on ancient WebKit
413 + merge: function( first, second ) {
414 + var len = +second.length,
415 + j = 0,
416 + i = first.length;
417 +
418 + for ( ; j < len; j++ ) {
419 + first[ i++ ] = second[ j ];
420 + }
421 +
422 + first.length = i;
423 +
424 + return first;
425 + },
426 +
427 + grep: function( elems, callback, invert ) {
428 + var callbackInverse,
429 + matches = [],
430 + i = 0,
431 + length = elems.length,
432 + callbackExpect = !invert;
433 +
434 + // Go through the array, only saving the items
435 + // that pass the validator function
436 + for ( ; i < length; i++ ) {
437 + callbackInverse = !callback( elems[ i ], i );
438 + if ( callbackInverse !== callbackExpect ) {
439 + matches.push( elems[ i ] );
440 + }
441 + }
442 +
443 + return matches;
444 + },
445 +
446 + // arg is for internal usage only
447 + map: function( elems, callback, arg ) {
448 + var length, value,
449 + i = 0,
450 + ret = [];
451 +
452 + // Go through the array, translating each of the items to their new values
453 + if ( isArrayLike( elems ) ) {
454 + length = elems.length;
455 + for ( ; i < length; i++ ) {
456 + value = callback( elems[ i ], i, arg );
457 +
458 + if ( value != null ) {
459 + ret.push( value );
460 + }
461 + }
462 +
463 + // Go through every key on the object,
464 + } else {
465 + for ( i in elems ) {
466 + value = callback( elems[ i ], i, arg );
467 +
468 + if ( value != null ) {
469 + ret.push( value );
470 + }
471 + }
472 + }
473 +
474 + // Flatten any nested arrays
475 + return concat.apply( [], ret );
476 + },
477 +
478 + // A global GUID counter for objects
479 + guid: 1,
480 +
481 + // jQuery.support is not used in Core but other projects attach their
482 + // properties to it so it needs to exist.
483 + support: support
484 +} );
485 +
486 +if ( typeof Symbol === "function" ) {
487 + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
488 +}
489 +
490 +// Populate the class2type map
491 +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
492 +function( i, name ) {
493 + class2type[ "[object " + name + "]" ] = name.toLowerCase();
494 +} );
495 +
496 +function isArrayLike( obj ) {
497 +
498 + // Support: real iOS 8.2 only (not reproducible in simulator)
499 + // `in` check used to prevent JIT error (gh-2145)
500 + // hasOwn isn't used here due to false negatives
501 + // regarding Nodelist length in IE
502 + var length = !!obj && "length" in obj && obj.length,
503 + type = toType( obj );
504 +
505 + if ( isFunction( obj ) || isWindow( obj ) ) {
506 + return false;
507 + }
508 +
509 + return type === "array" || length === 0 ||
510 + typeof length === "number" && length > 0 && ( length - 1 ) in obj;
511 +}
512 +var Sizzle =
513 +/*!
514 + * Sizzle CSS Selector Engine v2.3.4
515 + * https://sizzlejs.com/
516 + *
517 + * Copyright JS Foundation and other contributors
518 + * Released under the MIT license
519 + * https://js.foundation/
520 + *
521 + * Date: 2019-04-08
522 + */
523 +(function( window ) {
524 +
525 +var i,
526 + support,
527 + Expr,
528 + getText,
529 + isXML,
530 + tokenize,
531 + compile,
532 + select,
533 + outermostContext,
534 + sortInput,
535 + hasDuplicate,
536 +
537 + // Local document vars
538 + setDocument,
539 + document,
540 + docElem,
541 + documentIsHTML,
542 + rbuggyQSA,
543 + rbuggyMatches,
544 + matches,
545 + contains,
546 +
547 + // Instance-specific data
548 + expando = "sizzle" + 1 * new Date(),
549 + preferredDoc = window.document,
550 + dirruns = 0,
551 + done = 0,
552 + classCache = createCache(),
553 + tokenCache = createCache(),
554 + compilerCache = createCache(),
555 + nonnativeSelectorCache = createCache(),
556 + sortOrder = function( a, b ) {
557 + if ( a === b ) {
558 + hasDuplicate = true;
559 + }
560 + return 0;
561 + },
562 +
563 + // Instance methods
564 + hasOwn = ({}).hasOwnProperty,
565 + arr = [],
566 + pop = arr.pop,
567 + push_native = arr.push,
568 + push = arr.push,
569 + slice = arr.slice,
570 + // Use a stripped-down indexOf as it's faster than native
571 + // https://jsperf.com/thor-indexof-vs-for/5
572 + indexOf = function( list, elem ) {
573 + var i = 0,
574 + len = list.length;
575 + for ( ; i < len; i++ ) {
576 + if ( list[i] === elem ) {
577 + return i;
578 + }
579 + }
580 + return -1;
581 + },
582 +
583 + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
584 +
585 + // Regular expressions
586 +
587 + // http://www.w3.org/TR/css3-selectors/#whitespace
588 + whitespace = "[\\x20\\t\\r\\n\\f]",
589 +
590 + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
591 + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
592 +
593 + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
594 + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
595 + // Operator (capture 2)
596 + "*([*^$|!~]?=)" + whitespace +
597 + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
598 + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
599 + "*\\]",
600 +
601 + pseudos = ":(" + identifier + ")(?:\\((" +
602 + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
603 + // 1. quoted (capture 3; capture 4 or capture 5)
604 + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
605 + // 2. simple (capture 6)
606 + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
607 + // 3. anything else (capture 2)
608 + ".*" +
609 + ")\\)|)",
610 +
611 + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
612 + rwhitespace = new RegExp( whitespace + "+", "g" ),
613 + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
614 +
615 + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
616 + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
617 + rdescend = new RegExp( whitespace + "|>" ),
618 +
619 + rpseudo = new RegExp( pseudos ),
620 + ridentifier = new RegExp( "^" + identifier + "$" ),
621 +
622 + matchExpr = {
623 + "ID": new RegExp( "^#(" + identifier + ")" ),
624 + "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
625 + "TAG": new RegExp( "^(" + identifier + "|[*])" ),
626 + "ATTR": new RegExp( "^" + attributes ),
627 + "PSEUDO": new RegExp( "^" + pseudos ),
628 + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
629 + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
630 + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
631 + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
632 + // For use in libraries implementing .is()
633 + // We use this for POS matching in `select`
634 + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
635 + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
636 + },
637 +
638 + rhtml = /HTML$/i,
639 + rinputs = /^(?:input|select|textarea|button)$/i,
640 + rheader = /^h\d$/i,
641 +
642 + rnative = /^[^{]+\{\s*\[native \w/,
643 +
644 + // Easily-parseable/retrievable ID or TAG or CLASS selectors
645 + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
646 +
647 + rsibling = /[+~]/,
648 +
649 + // CSS escapes
650 + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
651 + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
652 + funescape = function( _, escaped, escapedWhitespace ) {
653 + var high = "0x" + escaped - 0x10000;
654 + // NaN means non-codepoint
655 + // Support: Firefox<24
656 + // Workaround erroneous numeric interpretation of +"0x"
657 + return high !== high || escapedWhitespace ?
658 + escaped :
659 + high < 0 ?
660 + // BMP codepoint
661 + String.fromCharCode( high + 0x10000 ) :
662 + // Supplemental Plane codepoint (surrogate pair)
663 + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
664 + },
665 +
666 + // CSS string/identifier serialization
667 + // https://drafts.csswg.org/cssom/#common-serializing-idioms
668 + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
669 + fcssescape = function( ch, asCodePoint ) {
670 + if ( asCodePoint ) {
671 +
672 + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
673 + if ( ch === "\0" ) {
674 + return "\uFFFD";
675 + }
676 +
677 + // Control characters and (dependent upon position) numbers get escaped as code points
678 + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
679 + }
680 +
681 + // Other potentially-special ASCII characters get backslash-escaped
682 + return "\\" + ch;
683 + },
684 +
685 + // Used for iframes
686 + // See setDocument()
687 + // Removing the function wrapper causes a "Permission Denied"
688 + // error in IE
689 + unloadHandler = function() {
690 + setDocument();
691 + },
692 +
693 + inDisabledFieldset = addCombinator(
694 + function( elem ) {
695 + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
696 + },
697 + { dir: "parentNode", next: "legend" }
698 + );
699 +
700 +// Optimize for push.apply( _, NodeList )
701 +try {
702 + push.apply(
703 + (arr = slice.call( preferredDoc.childNodes )),
704 + preferredDoc.childNodes
705 + );
706 + // Support: Android<4.0
707 + // Detect silently failing push.apply
708 + arr[ preferredDoc.childNodes.length ].nodeType;
709 +} catch ( e ) {
710 + push = { apply: arr.length ?
711 +
712 + // Leverage slice if possible
713 + function( target, els ) {
714 + push_native.apply( target, slice.call(els) );
715 + } :
716 +
717 + // Support: IE<9
718 + // Otherwise append directly
719 + function( target, els ) {
720 + var j = target.length,
721 + i = 0;
722 + // Can't trust NodeList.length
723 + while ( (target[j++] = els[i++]) ) {}
724 + target.length = j - 1;
725 + }
726 + };
727 +}
728 +
729 +function Sizzle( selector, context, results, seed ) {
730 + var m, i, elem, nid, match, groups, newSelector,
731 + newContext = context && context.ownerDocument,
732 +
733 + // nodeType defaults to 9, since context defaults to document
734 + nodeType = context ? context.nodeType : 9;
735 +
736 + results = results || [];
737 +
738 + // Return early from calls with invalid selector or context
739 + if ( typeof selector !== "string" || !selector ||
740 + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
741 +
742 + return results;
743 + }
744 +
745 + // Try to shortcut find operations (as opposed to filters) in HTML documents
746 + if ( !seed ) {
747 +
748 + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
749 + setDocument( context );
750 + }
751 + context = context || document;
752 +
753 + if ( documentIsHTML ) {
754 +
755 + // If the selector is sufficiently simple, try using a "get*By*" DOM method
756 + // (excepting DocumentFragment context, where the methods don't exist)
757 + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
758 +
759 + // ID selector
760 + if ( (m = match[1]) ) {
761 +
762 + // Document context
763 + if ( nodeType === 9 ) {
764 + if ( (elem = context.getElementById( m )) ) {
765 +
766 + // Support: IE, Opera, Webkit
767 + // TODO: identify versions
768 + // getElementById can match elements by name instead of ID
769 + if ( elem.id === m ) {
770 + results.push( elem );
771 + return results;
772 + }
773 + } else {
774 + return results;
775 + }
776 +
777 + // Element context
778 + } else {
779 +
780 + // Support: IE, Opera, Webkit
781 + // TODO: identify versions
782 + // getElementById can match elements by name instead of ID
783 + if ( newContext && (elem = newContext.getElementById( m )) &&
784 + contains( context, elem ) &&
785 + elem.id === m ) {
786 +
787 + results.push( elem );
788 + return results;
789 + }
790 + }
791 +
792 + // Type selector
793 + } else if ( match[2] ) {
794 + push.apply( results, context.getElementsByTagName( selector ) );
795 + return results;
796 +
797 + // Class selector
798 + } else if ( (m = match[3]) && support.getElementsByClassName &&
799 + context.getElementsByClassName ) {
800 +
801 + push.apply( results, context.getElementsByClassName( m ) );
802 + return results;
803 + }
804 + }
805 +
806 + // Take advantage of querySelectorAll
807 + if ( support.qsa &&
808 + !nonnativeSelectorCache[ selector + " " ] &&
809 + (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
810 +
811 + // Support: IE 8 only
812 + // Exclude object elements
813 + (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
814 +
815 + newSelector = selector;
816 + newContext = context;
817 +
818 + // qSA considers elements outside a scoping root when evaluating child or
819 + // descendant combinators, which is not what we want.
820 + // In such cases, we work around the behavior by prefixing every selector in the
821 + // list with an ID selector referencing the scope context.
822 + // Thanks to Andrew Dupont for this technique.
823 + if ( nodeType === 1 && rdescend.test( selector ) ) {
824 +
825 + // Capture the context ID, setting it first if necessary
826 + if ( (nid = context.getAttribute( "id" )) ) {
827 + nid = nid.replace( rcssescape, fcssescape );
828 + } else {
829 + context.setAttribute( "id", (nid = expando) );
830 + }
831 +
832 + // Prefix every selector in the list
833 + groups = tokenize( selector );
834 + i = groups.length;
835 + while ( i-- ) {
836 + groups[i] = "#" + nid + " " + toSelector( groups[i] );
837 + }
838 + newSelector = groups.join( "," );
839 +
840 + // Expand context for sibling selectors
841 + newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
842 + context;
843 + }
844 +
845 + try {
846 + push.apply( results,
847 + newContext.querySelectorAll( newSelector )
848 + );
849 + return results;
850 + } catch ( qsaError ) {
851 + nonnativeSelectorCache( selector, true );
852 + } finally {
853 + if ( nid === expando ) {
854 + context.removeAttribute( "id" );
855 + }
856 + }
857 + }
858 + }
859 + }
860 +
861 + // All others
862 + return select( selector.replace( rtrim, "$1" ), context, results, seed );
863 +}
864 +
865 +/**
866 + * Create key-value caches of limited size
867 + * @returns {function(string, object)} Returns the Object data after storing it on itself with
868 + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
869 + * deleting the oldest entry
870 + */
871 +function createCache() {
872 + var keys = [];
873 +
874 + function cache( key, value ) {
875 + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
876 + if ( keys.push( key + " " ) > Expr.cacheLength ) {
877 + // Only keep the most recent entries
878 + delete cache[ keys.shift() ];
879 + }
880 + return (cache[ key + " " ] = value);
881 + }
882 + return cache;
883 +}
884 +
885 +/**
886 + * Mark a function for special use by Sizzle
887 + * @param {Function} fn The function to mark
888 + */
889 +function markFunction( fn ) {
890 + fn[ expando ] = true;
891 + return fn;
892 +}
893 +
894 +/**
895 + * Support testing using an element
896 + * @param {Function} fn Passed the created element and returns a boolean result
897 + */
898 +function assert( fn ) {
899 + var el = document.createElement("fieldset");
900 +
901 + try {
902 + return !!fn( el );
903 + } catch (e) {
904 + return false;
905 + } finally {
906 + // Remove from its parent by default
907 + if ( el.parentNode ) {
908 + el.parentNode.removeChild( el );
909 + }
910 + // release memory in IE
911 + el = null;
912 + }
913 +}
914 +
915 +/**
916 + * Adds the same handler for all of the specified attrs
917 + * @param {String} attrs Pipe-separated list of attributes
918 + * @param {Function} handler The method that will be applied
919 + */
920 +function addHandle( attrs, handler ) {
921 + var arr = attrs.split("|"),
922 + i = arr.length;
923 +
924 + while ( i-- ) {
925 + Expr.attrHandle[ arr[i] ] = handler;
926 + }
927 +}
928 +
929 +/**
930 + * Checks document order of two siblings
931 + * @param {Element} a
932 + * @param {Element} b
933 + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
934 + */
935 +function siblingCheck( a, b ) {
936 + var cur = b && a,
937 + diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
938 + a.sourceIndex - b.sourceIndex;
939 +
940 + // Use IE sourceIndex if available on both nodes
941 + if ( diff ) {
942 + return diff;
943 + }
944 +
945 + // Check if b follows a
946 + if ( cur ) {
947 + while ( (cur = cur.nextSibling) ) {
948 + if ( cur === b ) {
949 + return -1;
950 + }
951 + }
952 + }
953 +
954 + return a ? 1 : -1;
955 +}
956 +
957 +/**
958 + * Returns a function to use in pseudos for input types
959 + * @param {String} type
960 + */
961 +function createInputPseudo( type ) {
962 + return function( elem ) {
963 + var name = elem.nodeName.toLowerCase();
964 + return name === "input" && elem.type === type;
965 + };
966 +}
967 +
968 +/**
969 + * Returns a function to use in pseudos for buttons
970 + * @param {String} type
971 + */
972 +function createButtonPseudo( type ) {
973 + return function( elem ) {
974 + var name = elem.nodeName.toLowerCase();
975 + return (name === "input" || name === "button") && elem.type === type;
976 + };
977 +}
978 +
979 +/**
980 + * Returns a function to use in pseudos for :enabled/:disabled
981 + * @param {Boolean} disabled true for :disabled; false for :enabled
982 + */
983 +function createDisabledPseudo( disabled ) {
984 +
985 + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
986 + return function( elem ) {
987 +
988 + // Only certain elements can match :enabled or :disabled
989 + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
990 + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
991 + if ( "form" in elem ) {
992 +
993 + // Check for inherited disabledness on relevant non-disabled elements:
994 + // * listed form-associated elements in a disabled fieldset
995 + // https://html.spec.whatwg.org/multipage/forms.html#category-listed
996 + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
997 + // * option elements in a disabled optgroup
998 + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
999 + // All such elements have a "form" property.
1000 + if ( elem.parentNode && elem.disabled === false ) {
1001 +
1002 + // Option elements defer to a parent optgroup if present
1003 + if ( "label" in elem ) {
1004 + if ( "label" in elem.parentNode ) {
1005 + return elem.parentNode.disabled === disabled;
1006 + } else {
1007 + return elem.disabled === disabled;
1008 + }
1009 + }
1010 +
1011 + // Support: IE 6 - 11
1012 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors
1013 + return elem.isDisabled === disabled ||
1014 +
1015 + // Where there is no isDisabled, check manually
1016 + /* jshint -W018 */
1017 + elem.isDisabled !== !disabled &&
1018 + inDisabledFieldset( elem ) === disabled;
1019 + }
1020 +
1021 + return elem.disabled === disabled;
1022 +
1023 + // Try to winnow out elements that can't be disabled before trusting the disabled property.
1024 + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1025 + // even exist on them, let alone have a boolean value.
1026 + } else if ( "label" in elem ) {
1027 + return elem.disabled === disabled;
1028 + }
1029 +
1030 + // Remaining elements are neither :enabled nor :disabled
1031 + return false;
1032 + };
1033 +}
1034 +
1035 +/**
1036 + * Returns a function to use in pseudos for positionals
1037 + * @param {Function} fn
1038 + */
1039 +function createPositionalPseudo( fn ) {
1040 + return markFunction(function( argument ) {
1041 + argument = +argument;
1042 + return markFunction(function( seed, matches ) {
1043 + var j,
1044 + matchIndexes = fn( [], seed.length, argument ),
1045 + i = matchIndexes.length;
1046 +
1047 + // Match elements found at the specified indexes
1048 + while ( i-- ) {
1049 + if ( seed[ (j = matchIndexes[i]) ] ) {
1050 + seed[j] = !(matches[j] = seed[j]);
1051 + }
1052 + }
1053 + });
1054 + });
1055 +}
1056 +
1057 +/**
1058 + * Checks a node for validity as a Sizzle context
1059 + * @param {Element|Object=} context
1060 + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1061 + */
1062 +function testContext( context ) {
1063 + return context && typeof context.getElementsByTagName !== "undefined" && context;
1064 +}
1065 +
1066 +// Expose support vars for convenience
1067 +support = Sizzle.support = {};
1068 +
1069 +/**
1070 + * Detects XML nodes
1071 + * @param {Element|Object} elem An element or a document
1072 + * @returns {Boolean} True iff elem is a non-HTML XML node
1073 + */
1074 +isXML = Sizzle.isXML = function( elem ) {
1075 + var namespace = elem.namespaceURI,
1076 + docElem = (elem.ownerDocument || elem).documentElement;
1077 +
1078 + // Support: IE <=8
1079 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
1080 + // https://bugs.jquery.com/ticket/4833
1081 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
1082 +};
1083 +
1084 +/**
1085 + * Sets document-related variables once based on the current document
1086 + * @param {Element|Object} [doc] An element or document object to use to set the document
1087 + * @returns {Object} Returns the current document
1088 + */
1089 +setDocument = Sizzle.setDocument = function( node ) {
1090 + var hasCompare, subWindow,
1091 + doc = node ? node.ownerDocument || node : preferredDoc;
1092 +
1093 + // Return early if doc is invalid or already selected
1094 + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
1095 + return document;
1096 + }
1097 +
1098 + // Update global variables
1099 + document = doc;
1100 + docElem = document.documentElement;
1101 + documentIsHTML = !isXML( document );
1102 +
1103 + // Support: IE 9-11, Edge
1104 + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1105 + if ( preferredDoc !== document &&
1106 + (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
1107 +
1108 + // Support: IE 11, Edge
1109 + if ( subWindow.addEventListener ) {
1110 + subWindow.addEventListener( "unload", unloadHandler, false );
1111 +
1112 + // Support: IE 9 - 10 only
1113 + } else if ( subWindow.attachEvent ) {
1114 + subWindow.attachEvent( "onunload", unloadHandler );
1115 + }
1116 + }
1117 +
1118 + /* Attributes
1119 + ---------------------------------------------------------------------- */
1120 +
1121 + // Support: IE<8
1122 + // Verify that getAttribute really returns attributes and not properties
1123 + // (excepting IE8 booleans)
1124 + support.attributes = assert(function( el ) {
1125 + el.className = "i";
1126 + return !el.getAttribute("className");
1127 + });
1128 +
1129 + /* getElement(s)By*
1130 + ---------------------------------------------------------------------- */
1131 +
1132 + // Check if getElementsByTagName("*") returns only elements
1133 + support.getElementsByTagName = assert(function( el ) {
1134 + el.appendChild( document.createComment("") );
1135 + return !el.getElementsByTagName("*").length;
1136 + });
1137 +
1138 + // Support: IE<9
1139 + support.getElementsByClassName = rnative.test( document.getElementsByClassName );
1140 +
1141 + // Support: IE<10
1142 + // Check if getElementById returns elements by name
1143 + // The broken getElementById methods don't pick up programmatically-set names,
1144 + // so use a roundabout getElementsByName test
1145 + support.getById = assert(function( el ) {
1146 + docElem.appendChild( el ).id = expando;
1147 + return !document.getElementsByName || !document.getElementsByName( expando ).length;
1148 + });
1149 +
1150 + // ID filter and find
1151 + if ( support.getById ) {
1152 + Expr.filter["ID"] = function( id ) {
1153 + var attrId = id.replace( runescape, funescape );
1154 + return function( elem ) {
1155 + return elem.getAttribute("id") === attrId;
1156 + };
1157 + };
1158 + Expr.find["ID"] = function( id, context ) {
1159 + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1160 + var elem = context.getElementById( id );
1161 + return elem ? [ elem ] : [];
1162 + }
1163 + };
1164 + } else {
1165 + Expr.filter["ID"] = function( id ) {
1166 + var attrId = id.replace( runescape, funescape );
1167 + return function( elem ) {
1168 + var node = typeof elem.getAttributeNode !== "undefined" &&
1169 + elem.getAttributeNode("id");
1170 + return node && node.value === attrId;
1171 + };
1172 + };
1173 +
1174 + // Support: IE 6 - 7 only
1175 + // getElementById is not reliable as a find shortcut
1176 + Expr.find["ID"] = function( id, context ) {
1177 + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1178 + var node, i, elems,
1179 + elem = context.getElementById( id );
1180 +
1181 + if ( elem ) {
1182 +
1183 + // Verify the id attribute
1184 + node = elem.getAttributeNode("id");
1185 + if ( node && node.value === id ) {
1186 + return [ elem ];
1187 + }
1188 +
1189 + // Fall back on getElementsByName
1190 + elems = context.getElementsByName( id );
1191 + i = 0;
1192 + while ( (elem = elems[i++]) ) {
1193 + node = elem.getAttributeNode("id");
1194 + if ( node && node.value === id ) {
1195 + return [ elem ];
1196 + }
1197 + }
1198 + }
1199 +
1200 + return [];
1201 + }
1202 + };
1203 + }
1204 +
1205 + // Tag
1206 + Expr.find["TAG"] = support.getElementsByTagName ?
1207 + function( tag, context ) {
1208 + if ( typeof context.getElementsByTagName !== "undefined" ) {
1209 + return context.getElementsByTagName( tag );
1210 +
1211 + // DocumentFragment nodes don't have gEBTN
1212 + } else if ( support.qsa ) {
1213 + return context.querySelectorAll( tag );
1214 + }
1215 + } :
1216 +
1217 + function( tag, context ) {
1218 + var elem,
1219 + tmp = [],
1220 + i = 0,
1221 + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1222 + results = context.getElementsByTagName( tag );
1223 +
1224 + // Filter out possible comments
1225 + if ( tag === "*" ) {
1226 + while ( (elem = results[i++]) ) {
1227 + if ( elem.nodeType === 1 ) {
1228 + tmp.push( elem );
1229 + }
1230 + }
1231 +
1232 + return tmp;
1233 + }
1234 + return results;
1235 + };
1236 +
1237 + // Class
1238 + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
1239 + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
1240 + return context.getElementsByClassName( className );
1241 + }
1242 + };
1243 +
1244 + /* QSA/matchesSelector
1245 + ---------------------------------------------------------------------- */
1246 +
1247 + // QSA and matchesSelector support
1248 +
1249 + // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1250 + rbuggyMatches = [];
1251 +
1252 + // qSa(:focus) reports false when true (Chrome 21)
1253 + // We allow this because of a bug in IE8/9 that throws an error
1254 + // whenever `document.activeElement` is accessed on an iframe
1255 + // So, we allow :focus to pass through QSA all the time to avoid the IE error
1256 + // See https://bugs.jquery.com/ticket/13378
1257 + rbuggyQSA = [];
1258 +
1259 + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
1260 + // Build QSA regex
1261 + // Regex strategy adopted from Diego Perini
1262 + assert(function( el ) {
1263 + // Select is set to empty string on purpose
1264 + // This is to test IE's treatment of not explicitly
1265 + // setting a boolean content attribute,
1266 + // since its presence should be enough
1267 + // https://bugs.jquery.com/ticket/12359
1268 + docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
1269 + "<select id='" + expando + "-\r\\' msallowcapture=''>" +
1270 + "<option selected=''></option></select>";
1271 +
1272 + // Support: IE8, Opera 11-12.16
1273 + // Nothing should be selected when empty strings follow ^= or $= or *=
1274 + // The test attribute must be unknown in Opera but "safe" for WinRT
1275 + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1276 + if ( el.querySelectorAll("[msallowcapture^='']").length ) {
1277 + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1278 + }
1279 +
1280 + // Support: IE8
1281 + // Boolean attributes and "value" are not treated correctly
1282 + if ( !el.querySelectorAll("[selected]").length ) {
1283 + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1284 + }
1285 +
1286 + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
1287 + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1288 + rbuggyQSA.push("~=");
1289 + }
1290 +
1291 + // Webkit/Opera - :checked should return selected option elements
1292 + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1293 + // IE8 throws error here and will not see later tests
1294 + if ( !el.querySelectorAll(":checked").length ) {
1295 + rbuggyQSA.push(":checked");
1296 + }
1297 +
1298 + // Support: Safari 8+, iOS 8+
1299 + // https://bugs.webkit.org/show_bug.cgi?id=136851
1300 + // In-page `selector#id sibling-combinator selector` fails
1301 + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1302 + rbuggyQSA.push(".#.+[+~]");
1303 + }
1304 + });
1305 +
1306 + assert(function( el ) {
1307 + el.innerHTML = "<a href='' disabled='disabled'></a>" +
1308 + "<select disabled='disabled'><option/></select>";
1309 +
1310 + // Support: Windows 8 Native Apps
1311 + // The type and name attributes are restricted during .innerHTML assignment
1312 + var input = document.createElement("input");
1313 + input.setAttribute( "type", "hidden" );
1314 + el.appendChild( input ).setAttribute( "name", "D" );
1315 +
1316 + // Support: IE8
1317 + // Enforce case-sensitivity of name attribute
1318 + if ( el.querySelectorAll("[name=d]").length ) {
1319 + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1320 + }
1321 +
1322 + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1323 + // IE8 throws error here and will not see later tests
1324 + if ( el.querySelectorAll(":enabled").length !== 2 ) {
1325 + rbuggyQSA.push( ":enabled", ":disabled" );
1326 + }
1327 +
1328 + // Support: IE9-11+
1329 + // IE's :disabled selector does not pick up the children of disabled fieldsets
1330 + docElem.appendChild( el ).disabled = true;
1331 + if ( el.querySelectorAll(":disabled").length !== 2 ) {
1332 + rbuggyQSA.push( ":enabled", ":disabled" );
1333 + }
1334 +
1335 + // Opera 10-11 does not throw on post-comma invalid pseudos
1336 + el.querySelectorAll("*,:x");
1337 + rbuggyQSA.push(",.*:");
1338 + });
1339 + }
1340 +
1341 + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
1342 + docElem.webkitMatchesSelector ||
1343 + docElem.mozMatchesSelector ||
1344 + docElem.oMatchesSelector ||
1345 + docElem.msMatchesSelector) )) ) {
1346 +
1347 + assert(function( el ) {
1348 + // Check to see if it's possible to do matchesSelector
1349 + // on a disconnected node (IE 9)
1350 + support.disconnectedMatch = matches.call( el, "*" );
1351 +
1352 + // This should fail with an exception
1353 + // Gecko does not error, returns false instead
1354 + matches.call( el, "[s!='']:x" );
1355 + rbuggyMatches.push( "!=", pseudos );
1356 + });
1357 + }
1358 +
1359 + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
1360 + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
1361 +
1362 + /* Contains
1363 + ---------------------------------------------------------------------- */
1364 + hasCompare = rnative.test( docElem.compareDocumentPosition );
1365 +
1366 + // Element contains another
1367 + // Purposefully self-exclusive
1368 + // As in, an element does not contain itself
1369 + contains = hasCompare || rnative.test( docElem.contains ) ?
1370 + function( a, b ) {
1371 + var adown = a.nodeType === 9 ? a.documentElement : a,
1372 + bup = b && b.parentNode;
1373 + return a === bup || !!( bup && bup.nodeType === 1 && (
1374 + adown.contains ?
1375 + adown.contains( bup ) :
1376 + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1377 + ));
1378 + } :
1379 + function( a, b ) {
1380 + if ( b ) {
1381 + while ( (b = b.parentNode) ) {
1382 + if ( b === a ) {
1383 + return true;
1384 + }
1385 + }
1386 + }
1387 + return false;
1388 + };
1389 +
1390 + /* Sorting
1391 + ---------------------------------------------------------------------- */
1392 +
1393 + // Document order sorting
1394 + sortOrder = hasCompare ?
1395 + function( a, b ) {
1396 +
1397 + // Flag for duplicate removal
1398 + if ( a === b ) {
1399 + hasDuplicate = true;
1400 + return 0;
1401 + }
1402 +
1403 + // Sort on method existence if only one input has compareDocumentPosition
1404 + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1405 + if ( compare ) {
1406 + return compare;
1407 + }
1408 +
1409 + // Calculate position if both inputs belong to the same document
1410 + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
1411 + a.compareDocumentPosition( b ) :
1412 +
1413 + // Otherwise we know they are disconnected
1414 + 1;
1415 +
1416 + // Disconnected nodes
1417 + if ( compare & 1 ||
1418 + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
1419 +
1420 + // Choose the first element that is related to our preferred document
1421 + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
1422 + return -1;
1423 + }
1424 + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
1425 + return 1;
1426 + }
1427 +
1428 + // Maintain original order
1429 + return sortInput ?
1430 + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1431 + 0;
1432 + }
1433 +
1434 + return compare & 4 ? -1 : 1;
1435 + } :
1436 + function( a, b ) {
1437 + // Exit early if the nodes are identical
1438 + if ( a === b ) {
1439 + hasDuplicate = true;
1440 + return 0;
1441 + }
1442 +
1443 + var cur,
1444 + i = 0,
1445 + aup = a.parentNode,
1446 + bup = b.parentNode,
1447 + ap = [ a ],
1448 + bp = [ b ];
1449 +
1450 + // Parentless nodes are either documents or disconnected
1451 + if ( !aup || !bup ) {
1452 + return a === document ? -1 :
1453 + b === document ? 1 :
1454 + aup ? -1 :
1455 + bup ? 1 :
1456 + sortInput ?
1457 + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1458 + 0;
1459 +
1460 + // If the nodes are siblings, we can do a quick check
1461 + } else if ( aup === bup ) {
1462 + return siblingCheck( a, b );
1463 + }
1464 +
1465 + // Otherwise we need full lists of their ancestors for comparison
1466 + cur = a;
1467 + while ( (cur = cur.parentNode) ) {
1468 + ap.unshift( cur );
1469 + }
1470 + cur = b;
1471 + while ( (cur = cur.parentNode) ) {
1472 + bp.unshift( cur );
1473 + }
1474 +
1475 + // Walk down the tree looking for a discrepancy
1476 + while ( ap[i] === bp[i] ) {
1477 + i++;
1478 + }
1479 +
1480 + return i ?
1481 + // Do a sibling check if the nodes have a common ancestor
1482 + siblingCheck( ap[i], bp[i] ) :
1483 +
1484 + // Otherwise nodes in our document sort first
1485 + ap[i] === preferredDoc ? -1 :
1486 + bp[i] === preferredDoc ? 1 :
1487 + 0;
1488 + };
1489 +
1490 + return document;
1491 +};
1492 +
1493 +Sizzle.matches = function( expr, elements ) {
1494 + return Sizzle( expr, null, null, elements );
1495 +};
1496 +
1497 +Sizzle.matchesSelector = function( elem, expr ) {
1498 + // Set document vars if needed
1499 + if ( ( elem.ownerDocument || elem ) !== document ) {
1500 + setDocument( elem );
1501 + }
1502 +
1503 + if ( support.matchesSelector && documentIsHTML &&
1504 + !nonnativeSelectorCache[ expr + " " ] &&
1505 + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1506 + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
1507 +
1508 + try {
1509 + var ret = matches.call( elem, expr );
1510 +
1511 + // IE 9's matchesSelector returns false on disconnected nodes
1512 + if ( ret || support.disconnectedMatch ||
1513 + // As well, disconnected nodes are said to be in a document
1514 + // fragment in IE 9
1515 + elem.document && elem.document.nodeType !== 11 ) {
1516 + return ret;
1517 + }
1518 + } catch (e) {
1519 + nonnativeSelectorCache( expr, true );
1520 + }
1521 + }
1522 +
1523 + return Sizzle( expr, document, null, [ elem ] ).length > 0;
1524 +};
1525 +
1526 +Sizzle.contains = function( context, elem ) {
1527 + // Set document vars if needed
1528 + if ( ( context.ownerDocument || context ) !== document ) {
1529 + setDocument( context );
1530 + }
1531 + return contains( context, elem );
1532 +};
1533 +
1534 +Sizzle.attr = function( elem, name ) {
1535 + // Set document vars if needed
1536 + if ( ( elem.ownerDocument || elem ) !== document ) {
1537 + setDocument( elem );
1538 + }
1539 +
1540 + var fn = Expr.attrHandle[ name.toLowerCase() ],
1541 + // Don't get fooled by Object.prototype properties (jQuery #13807)
1542 + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1543 + fn( elem, name, !documentIsHTML ) :
1544 + undefined;
1545 +
1546 + return val !== undefined ?
1547 + val :
1548 + support.attributes || !documentIsHTML ?
1549 + elem.getAttribute( name ) :
1550 + (val = elem.getAttributeNode(name)) && val.specified ?
1551 + val.value :
1552 + null;
1553 +};
1554 +
1555 +Sizzle.escape = function( sel ) {
1556 + return (sel + "").replace( rcssescape, fcssescape );
1557 +};
1558 +
1559 +Sizzle.error = function( msg ) {
1560 + throw new Error( "Syntax error, unrecognized expression: " + msg );
1561 +};
1562 +
1563 +/**
1564 + * Document sorting and removing duplicates
1565 + * @param {ArrayLike} results
1566 + */
1567 +Sizzle.uniqueSort = function( results ) {
1568 + var elem,
1569 + duplicates = [],
1570 + j = 0,
1571 + i = 0;
1572 +
1573 + // Unless we *know* we can detect duplicates, assume their presence
1574 + hasDuplicate = !support.detectDuplicates;
1575 + sortInput = !support.sortStable && results.slice( 0 );
1576 + results.sort( sortOrder );
1577 +
1578 + if ( hasDuplicate ) {
1579 + while ( (elem = results[i++]) ) {
1580 + if ( elem === results[ i ] ) {
1581 + j = duplicates.push( i );
1582 + }
1583 + }
1584 + while ( j-- ) {
1585 + results.splice( duplicates[ j ], 1 );
1586 + }
1587 + }
1588 +
1589 + // Clear input after sorting to release objects
1590 + // See https://github.com/jquery/sizzle/pull/225
1591 + sortInput = null;
1592 +
1593 + return results;
1594 +};
1595 +
1596 +/**
1597 + * Utility function for retrieving the text value of an array of DOM nodes
1598 + * @param {Array|Element} elem
1599 + */
1600 +getText = Sizzle.getText = function( elem ) {
1601 + var node,
1602 + ret = "",
1603 + i = 0,
1604 + nodeType = elem.nodeType;
1605 +
1606 + if ( !nodeType ) {
1607 + // If no nodeType, this is expected to be an array
1608 + while ( (node = elem[i++]) ) {
1609 + // Do not traverse comment nodes
1610 + ret += getText( node );
1611 + }
1612 + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1613 + // Use textContent for elements
1614 + // innerText usage removed for consistency of new lines (jQuery #11153)
1615 + if ( typeof elem.textContent === "string" ) {
1616 + return elem.textContent;
1617 + } else {
1618 + // Traverse its children
1619 + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1620 + ret += getText( elem );
1621 + }
1622 + }
1623 + } else if ( nodeType === 3 || nodeType === 4 ) {
1624 + return elem.nodeValue;
1625 + }
1626 + // Do not include comment or processing instruction nodes
1627 +
1628 + return ret;
1629 +};
1630 +
1631 +Expr = Sizzle.selectors = {
1632 +
1633 + // Can be adjusted by the user
1634 + cacheLength: 50,
1635 +
1636 + createPseudo: markFunction,
1637 +
1638 + match: matchExpr,
1639 +
1640 + attrHandle: {},
1641 +
1642 + find: {},
1643 +
1644 + relative: {
1645 + ">": { dir: "parentNode", first: true },
1646 + " ": { dir: "parentNode" },
1647 + "+": { dir: "previousSibling", first: true },
1648 + "~": { dir: "previousSibling" }
1649 + },
1650 +
1651 + preFilter: {
1652 + "ATTR": function( match ) {
1653 + match[1] = match[1].replace( runescape, funescape );
1654 +
1655 + // Move the given value to match[3] whether quoted or unquoted
1656 + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
1657 +
1658 + if ( match[2] === "~=" ) {
1659 + match[3] = " " + match[3] + " ";
1660 + }
1661 +
1662 + return match.slice( 0, 4 );
1663 + },
1664 +
1665 + "CHILD": function( match ) {
1666 + /* matches from matchExpr["CHILD"]
1667 + 1 type (only|nth|...)
1668 + 2 what (child|of-type)
1669 + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1670 + 4 xn-component of xn+y argument ([+-]?\d*n|)
1671 + 5 sign of xn-component
1672 + 6 x of xn-component
1673 + 7 sign of y-component
1674 + 8 y of y-component
1675 + */
1676 + match[1] = match[1].toLowerCase();
1677 +
1678 + if ( match[1].slice( 0, 3 ) === "nth" ) {
1679 + // nth-* requires argument
1680 + if ( !match[3] ) {
1681 + Sizzle.error( match[0] );
1682 + }
1683 +
1684 + // numeric x and y parameters for Expr.filter.CHILD
1685 + // remember that false/true cast respectively to 0/1
1686 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
1687 + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
1688 +
1689 + // other types prohibit arguments
1690 + } else if ( match[3] ) {
1691 + Sizzle.error( match[0] );
1692 + }
1693 +
1694 + return match;
1695 + },
1696 +
1697 + "PSEUDO": function( match ) {
1698 + var excess,
1699 + unquoted = !match[6] && match[2];
1700 +
1701 + if ( matchExpr["CHILD"].test( match[0] ) ) {
1702 + return null;
1703 + }
1704 +
1705 + // Accept quoted arguments as-is
1706 + if ( match[3] ) {
1707 + match[2] = match[4] || match[5] || "";
1708 +
1709 + // Strip excess characters from unquoted arguments
1710 + } else if ( unquoted && rpseudo.test( unquoted ) &&
1711 + // Get excess from tokenize (recursively)
1712 + (excess = tokenize( unquoted, true )) &&
1713 + // advance to the next closing parenthesis
1714 + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
1715 +
1716 + // excess is a negative index
1717 + match[0] = match[0].slice( 0, excess );
1718 + match[2] = unquoted.slice( 0, excess );
1719 + }
1720 +
1721 + // Return only captures needed by the pseudo filter method (type and argument)
1722 + return match.slice( 0, 3 );
1723 + }
1724 + },
1725 +
1726 + filter: {
1727 +
1728 + "TAG": function( nodeNameSelector ) {
1729 + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1730 + return nodeNameSelector === "*" ?
1731 + function() { return true; } :
1732 + function( elem ) {
1733 + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1734 + };
1735 + },
1736 +
1737 + "CLASS": function( className ) {
1738 + var pattern = classCache[ className + " " ];
1739 +
1740 + return pattern ||
1741 + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
1742 + classCache( className, function( elem ) {
1743 + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
1744 + });
1745 + },
1746 +
1747 + "ATTR": function( name, operator, check ) {
1748 + return function( elem ) {
1749 + var result = Sizzle.attr( elem, name );
1750 +
1751 + if ( result == null ) {
1752 + return operator === "!=";
1753 + }
1754 + if ( !operator ) {
1755 + return true;
1756 + }
1757 +
1758 + result += "";
1759 +
1760 + return operator === "=" ? result === check :
1761 + operator === "!=" ? result !== check :
1762 + operator === "^=" ? check && result.indexOf( check ) === 0 :
1763 + operator === "*=" ? check && result.indexOf( check ) > -1 :
1764 + operator === "$=" ? check && result.slice( -check.length ) === check :
1765 + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1766 + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1767 + false;
1768 + };
1769 + },
1770 +
1771 + "CHILD": function( type, what, argument, first, last ) {
1772 + var simple = type.slice( 0, 3 ) !== "nth",
1773 + forward = type.slice( -4 ) !== "last",
1774 + ofType = what === "of-type";
1775 +
1776 + return first === 1 && last === 0 ?
1777 +
1778 + // Shortcut for :nth-*(n)
1779 + function( elem ) {
1780 + return !!elem.parentNode;
1781 + } :
1782 +
1783 + function( elem, context, xml ) {
1784 + var cache, uniqueCache, outerCache, node, nodeIndex, start,
1785 + dir = simple !== forward ? "nextSibling" : "previousSibling",
1786 + parent = elem.parentNode,
1787 + name = ofType && elem.nodeName.toLowerCase(),
1788 + useCache = !xml && !ofType,
1789 + diff = false;
1790 +
1791 + if ( parent ) {
1792 +
1793 + // :(first|last|only)-(child|of-type)
1794 + if ( simple ) {
1795 + while ( dir ) {
1796 + node = elem;
1797 + while ( (node = node[ dir ]) ) {
1798 + if ( ofType ?
1799 + node.nodeName.toLowerCase() === name :
1800 + node.nodeType === 1 ) {
1801 +
1802 + return false;
1803 + }
1804 + }
1805 + // Reverse direction for :only-* (if we haven't yet done so)
1806 + start = dir = type === "only" && !start && "nextSibling";
1807 + }
1808 + return true;
1809 + }
1810 +
1811 + start = [ forward ? parent.firstChild : parent.lastChild ];
1812 +
1813 + // non-xml :nth-child(...) stores cache data on `parent`
1814 + if ( forward && useCache ) {
1815 +
1816 + // Seek `elem` from a previously-cached index
1817 +
1818 + // ...in a gzip-friendly way
1819 + node = parent;
1820 + outerCache = node[ expando ] || (node[ expando ] = {});
1821 +
1822 + // Support: IE <9 only
1823 + // Defend against cloned attroperties (jQuery gh-1709)
1824 + uniqueCache = outerCache[ node.uniqueID ] ||
1825 + (outerCache[ node.uniqueID ] = {});
1826 +
1827 + cache = uniqueCache[ type ] || [];
1828 + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1829 + diff = nodeIndex && cache[ 2 ];
1830 + node = nodeIndex && parent.childNodes[ nodeIndex ];
1831 +
1832 + while ( (node = ++nodeIndex && node && node[ dir ] ||
1833 +
1834 + // Fallback to seeking `elem` from the start
1835 + (diff = nodeIndex = 0) || start.pop()) ) {
1836 +
1837 + // When found, cache indexes on `parent` and break
1838 + if ( node.nodeType === 1 && ++diff && node === elem ) {
1839 + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1840 + break;
1841 + }
1842 + }
1843 +
1844 + } else {
1845 + // Use previously-cached element index if available
1846 + if ( useCache ) {
1847 + // ...in a gzip-friendly way
1848 + node = elem;
1849 + outerCache = node[ expando ] || (node[ expando ] = {});
1850 +
1851 + // Support: IE <9 only
1852 + // Defend against cloned attroperties (jQuery gh-1709)
1853 + uniqueCache = outerCache[ node.uniqueID ] ||
1854 + (outerCache[ node.uniqueID ] = {});
1855 +
1856 + cache = uniqueCache[ type ] || [];
1857 + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1858 + diff = nodeIndex;
1859 + }
1860 +
1861 + // xml :nth-child(...)
1862 + // or :nth-last-child(...) or :nth(-last)?-of-type(...)
1863 + if ( diff === false ) {
1864 + // Use the same loop as above to seek `elem` from the start
1865 + while ( (node = ++nodeIndex && node && node[ dir ] ||
1866 + (diff = nodeIndex = 0) || start.pop()) ) {
1867 +
1868 + if ( ( ofType ?
1869 + node.nodeName.toLowerCase() === name :
1870 + node.nodeType === 1 ) &&
1871 + ++diff ) {
1872 +
1873 + // Cache the index of each encountered element
1874 + if ( useCache ) {
1875 + outerCache = node[ expando ] || (node[ expando ] = {});
1876 +
1877 + // Support: IE <9 only
1878 + // Defend against cloned attroperties (jQuery gh-1709)
1879 + uniqueCache = outerCache[ node.uniqueID ] ||
1880 + (outerCache[ node.uniqueID ] = {});
1881 +
1882 + uniqueCache[ type ] = [ dirruns, diff ];
1883 + }
1884 +
1885 + if ( node === elem ) {
1886 + break;
1887 + }
1888 + }
1889 + }
1890 + }
1891 + }
1892 +
1893 + // Incorporate the offset, then check against cycle size
1894 + diff -= last;
1895 + return diff === first || ( diff % first === 0 && diff / first >= 0 );
1896 + }
1897 + };
1898 + },
1899 +
1900 + "PSEUDO": function( pseudo, argument ) {
1901 + // pseudo-class names are case-insensitive
1902 + // http://www.w3.org/TR/selectors/#pseudo-classes
1903 + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1904 + // Remember that setFilters inherits from pseudos
1905 + var args,
1906 + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
1907 + Sizzle.error( "unsupported pseudo: " + pseudo );
1908 +
1909 + // The user may use createPseudo to indicate that
1910 + // arguments are needed to create the filter function
1911 + // just as Sizzle does
1912 + if ( fn[ expando ] ) {
1913 + return fn( argument );
1914 + }
1915 +
1916 + // But maintain support for old signatures
1917 + if ( fn.length > 1 ) {
1918 + args = [ pseudo, pseudo, "", argument ];
1919 + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
1920 + markFunction(function( seed, matches ) {
1921 + var idx,
1922 + matched = fn( seed, argument ),
1923 + i = matched.length;
1924 + while ( i-- ) {
1925 + idx = indexOf( seed, matched[i] );
1926 + seed[ idx ] = !( matches[ idx ] = matched[i] );
1927 + }
1928 + }) :
1929 + function( elem ) {
1930 + return fn( elem, 0, args );
1931 + };
1932 + }
1933 +
1934 + return fn;
1935 + }
1936 + },
1937 +
1938 + pseudos: {
1939 + // Potentially complex pseudos
1940 + "not": markFunction(function( selector ) {
1941 + // Trim the selector passed to compile
1942 + // to avoid treating leading and trailing
1943 + // spaces as combinators
1944 + var input = [],
1945 + results = [],
1946 + matcher = compile( selector.replace( rtrim, "$1" ) );
1947 +
1948 + return matcher[ expando ] ?
1949 + markFunction(function( seed, matches, context, xml ) {
1950 + var elem,
1951 + unmatched = matcher( seed, null, xml, [] ),
1952 + i = seed.length;
1953 +
1954 + // Match elements unmatched by `matcher`
1955 + while ( i-- ) {
1956 + if ( (elem = unmatched[i]) ) {
1957 + seed[i] = !(matches[i] = elem);
1958 + }
1959 + }
1960 + }) :
1961 + function( elem, context, xml ) {
1962 + input[0] = elem;
1963 + matcher( input, null, xml, results );
1964 + // Don't keep the element (issue #299)
1965 + input[0] = null;
1966 + return !results.pop();
1967 + };
1968 + }),
1969 +
1970 + "has": markFunction(function( selector ) {
1971 + return function( elem ) {
1972 + return Sizzle( selector, elem ).length > 0;
1973 + };
1974 + }),
1975 +
1976 + "contains": markFunction(function( text ) {
1977 + text = text.replace( runescape, funescape );
1978 + return function( elem ) {
1979 + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
1980 + };
1981 + }),
1982 +
1983 + // "Whether an element is represented by a :lang() selector
1984 + // is based solely on the element's language value
1985 + // being equal to the identifier C,
1986 + // or beginning with the identifier C immediately followed by "-".
1987 + // The matching of C against the element's language value is performed case-insensitively.
1988 + // The identifier C does not have to be a valid language name."
1989 + // http://www.w3.org/TR/selectors/#lang-pseudo
1990 + "lang": markFunction( function( lang ) {
1991 + // lang value must be a valid identifier
1992 + if ( !ridentifier.test(lang || "") ) {
1993 + Sizzle.error( "unsupported lang: " + lang );
1994 + }
1995 + lang = lang.replace( runescape, funescape ).toLowerCase();
1996 + return function( elem ) {
1997 + var elemLang;
1998 + do {
1999 + if ( (elemLang = documentIsHTML ?
2000 + elem.lang :
2001 + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
2002 +
2003 + elemLang = elemLang.toLowerCase();
2004 + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2005 + }
2006 + } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
2007 + return false;
2008 + };
2009 + }),
2010 +
2011 + // Miscellaneous
2012 + "target": function( elem ) {
2013 + var hash = window.location && window.location.hash;
2014 + return hash && hash.slice( 1 ) === elem.id;
2015 + },
2016 +
2017 + "root": function( elem ) {
2018 + return elem === docElem;
2019 + },
2020 +
2021 + "focus": function( elem ) {
2022 + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
2023 + },
2024 +
2025 + // Boolean properties
2026 + "enabled": createDisabledPseudo( false ),
2027 + "disabled": createDisabledPseudo( true ),
2028 +
2029 + "checked": function( elem ) {
2030 + // In CSS3, :checked should return both checked and selected elements
2031 + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2032 + var nodeName = elem.nodeName.toLowerCase();
2033 + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
2034 + },
2035 +
2036 + "selected": function( elem ) {
2037 + // Accessing this property makes selected-by-default
2038 + // options in Safari work properly
2039 + if ( elem.parentNode ) {
2040 + elem.parentNode.selectedIndex;
2041 + }
2042 +
2043 + return elem.selected === true;
2044 + },
2045 +
2046 + // Contents
2047 + "empty": function( elem ) {
2048 + // http://www.w3.org/TR/selectors/#empty-pseudo
2049 + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2050 + // but not by others (comment: 8; processing instruction: 7; etc.)
2051 + // nodeType < 6 works because attributes (2) do not appear as children
2052 + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2053 + if ( elem.nodeType < 6 ) {
2054 + return false;
2055 + }
2056 + }
2057 + return true;
2058 + },
2059 +
2060 + "parent": function( elem ) {
2061 + return !Expr.pseudos["empty"]( elem );
2062 + },
2063 +
2064 + // Element/input types
2065 + "header": function( elem ) {
2066 + return rheader.test( elem.nodeName );
2067 + },
2068 +
2069 + "input": function( elem ) {
2070 + return rinputs.test( elem.nodeName );
2071 + },
2072 +
2073 + "button": function( elem ) {
2074 + var name = elem.nodeName.toLowerCase();
2075 + return name === "input" && elem.type === "button" || name === "button";
2076 + },
2077 +
2078 + "text": function( elem ) {
2079 + var attr;
2080 + return elem.nodeName.toLowerCase() === "input" &&
2081 + elem.type === "text" &&
2082 +
2083 + // Support: IE<8
2084 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2085 + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
2086 + },
2087 +
2088 + // Position-in-collection
2089 + "first": createPositionalPseudo(function() {
2090 + return [ 0 ];
2091 + }),
2092 +
2093 + "last": createPositionalPseudo(function( matchIndexes, length ) {
2094 + return [ length - 1 ];
2095 + }),
2096 +
2097 + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
2098 + return [ argument < 0 ? argument + length : argument ];
2099 + }),
2100 +
2101 + "even": createPositionalPseudo(function( matchIndexes, length ) {
2102 + var i = 0;
2103 + for ( ; i < length; i += 2 ) {
2104 + matchIndexes.push( i );
2105 + }
2106 + return matchIndexes;
2107 + }),
2108 +
2109 + "odd": createPositionalPseudo(function( matchIndexes, length ) {
2110 + var i = 1;
2111 + for ( ; i < length; i += 2 ) {
2112 + matchIndexes.push( i );
2113 + }
2114 + return matchIndexes;
2115 + }),
2116 +
2117 + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2118 + var i = argument < 0 ?
2119 + argument + length :
2120 + argument > length ?
2121 + length :
2122 + argument;
2123 + for ( ; --i >= 0; ) {
2124 + matchIndexes.push( i );
2125 + }
2126 + return matchIndexes;
2127 + }),
2128 +
2129 + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
2130 + var i = argument < 0 ? argument + length : argument;
2131 + for ( ; ++i < length; ) {
2132 + matchIndexes.push( i );
2133 + }
2134 + return matchIndexes;
2135 + })
2136 + }
2137 +};
2138 +
2139 +Expr.pseudos["nth"] = Expr.pseudos["eq"];
2140 +
2141 +// Add button/input type pseudos
2142 +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2143 + Expr.pseudos[ i ] = createInputPseudo( i );
2144 +}
2145 +for ( i in { submit: true, reset: true } ) {
2146 + Expr.pseudos[ i ] = createButtonPseudo( i );
2147 +}
2148 +
2149 +// Easy API for creating new setFilters
2150 +function setFilters() {}
2151 +setFilters.prototype = Expr.filters = Expr.pseudos;
2152 +Expr.setFilters = new setFilters();
2153 +
2154 +tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
2155 + var matched, match, tokens, type,
2156 + soFar, groups, preFilters,
2157 + cached = tokenCache[ selector + " " ];
2158 +
2159 + if ( cached ) {
2160 + return parseOnly ? 0 : cached.slice( 0 );
2161 + }
2162 +
2163 + soFar = selector;
2164 + groups = [];
2165 + preFilters = Expr.preFilter;
2166 +
2167 + while ( soFar ) {
2168 +
2169 + // Comma and first run
2170 + if ( !matched || (match = rcomma.exec( soFar )) ) {
2171 + if ( match ) {
2172 + // Don't consume trailing commas as valid
2173 + soFar = soFar.slice( match[0].length ) || soFar;
2174 + }
2175 + groups.push( (tokens = []) );
2176 + }
2177 +
2178 + matched = false;
2179 +
2180 + // Combinators
2181 + if ( (match = rcombinators.exec( soFar )) ) {
2182 + matched = match.shift();
2183 + tokens.push({
2184 + value: matched,
2185 + // Cast descendant combinators to space
2186 + type: match[0].replace( rtrim, " " )
2187 + });
2188 + soFar = soFar.slice( matched.length );
2189 + }
2190 +
2191 + // Filters
2192 + for ( type in Expr.filter ) {
2193 + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
2194 + (match = preFilters[ type ]( match ))) ) {
2195 + matched = match.shift();
2196 + tokens.push({
2197 + value: matched,
2198 + type: type,
2199 + matches: match
2200 + });
2201 + soFar = soFar.slice( matched.length );
2202 + }
2203 + }
2204 +
2205 + if ( !matched ) {
2206 + break;
2207 + }
2208 + }
2209 +
2210 + // Return the length of the invalid excess
2211 + // if we're just parsing
2212 + // Otherwise, throw an error or return tokens
2213 + return parseOnly ?
2214 + soFar.length :
2215 + soFar ?
2216 + Sizzle.error( selector ) :
2217 + // Cache the tokens
2218 + tokenCache( selector, groups ).slice( 0 );
2219 +};
2220 +
2221 +function toSelector( tokens ) {
2222 + var i = 0,
2223 + len = tokens.length,
2224 + selector = "";
2225 + for ( ; i < len; i++ ) {
2226 + selector += tokens[i].value;
2227 + }
2228 + return selector;
2229 +}
2230 +
2231 +function addCombinator( matcher, combinator, base ) {
2232 + var dir = combinator.dir,
2233 + skip = combinator.next,
2234 + key = skip || dir,
2235 + checkNonElements = base && key === "parentNode",
2236 + doneName = done++;
2237 +
2238 + return combinator.first ?
2239 + // Check against closest ancestor/preceding element
2240 + function( elem, context, xml ) {
2241 + while ( (elem = elem[ dir ]) ) {
2242 + if ( elem.nodeType === 1 || checkNonElements ) {
2243 + return matcher( elem, context, xml );
2244 + }
2245 + }
2246 + return false;
2247 + } :
2248 +
2249 + // Check against all ancestor/preceding elements
2250 + function( elem, context, xml ) {
2251 + var oldCache, uniqueCache, outerCache,
2252 + newCache = [ dirruns, doneName ];
2253 +
2254 + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2255 + if ( xml ) {
2256 + while ( (elem = elem[ dir ]) ) {
2257 + if ( elem.nodeType === 1 || checkNonElements ) {
2258 + if ( matcher( elem, context, xml ) ) {
2259 + return true;
2260 + }
2261 + }
2262 + }
2263 + } else {
2264 + while ( (elem = elem[ dir ]) ) {
2265 + if ( elem.nodeType === 1 || checkNonElements ) {
2266 + outerCache = elem[ expando ] || (elem[ expando ] = {});
2267 +
2268 + // Support: IE <9 only
2269 + // Defend against cloned attroperties (jQuery gh-1709)
2270 + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
2271 +
2272 + if ( skip && skip === elem.nodeName.toLowerCase() ) {
2273 + elem = elem[ dir ] || elem;
2274 + } else if ( (oldCache = uniqueCache[ key ]) &&
2275 + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2276 +
2277 + // Assign to newCache so results back-propagate to previous elements
2278 + return (newCache[ 2 ] = oldCache[ 2 ]);
2279 + } else {
2280 + // Reuse newcache so results back-propagate to previous elements
2281 + uniqueCache[ key ] = newCache;
2282 +
2283 + // A match means we're done; a fail means we have to keep checking
2284 + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
2285 + return true;
2286 + }
2287 + }
2288 + }
2289 + }
2290 + }
2291 + return false;
2292 + };
2293 +}
2294 +
2295 +function elementMatcher( matchers ) {
2296 + return matchers.length > 1 ?
2297 + function( elem, context, xml ) {
2298 + var i = matchers.length;
2299 + while ( i-- ) {
2300 + if ( !matchers[i]( elem, context, xml ) ) {
2301 + return false;
2302 + }
2303 + }
2304 + return true;
2305 + } :
2306 + matchers[0];
2307 +}
2308 +
2309 +function multipleContexts( selector, contexts, results ) {
2310 + var i = 0,
2311 + len = contexts.length;
2312 + for ( ; i < len; i++ ) {
2313 + Sizzle( selector, contexts[i], results );
2314 + }
2315 + return results;
2316 +}
2317 +
2318 +function condense( unmatched, map, filter, context, xml ) {
2319 + var elem,
2320 + newUnmatched = [],
2321 + i = 0,
2322 + len = unmatched.length,
2323 + mapped = map != null;
2324 +
2325 + for ( ; i < len; i++ ) {
2326 + if ( (elem = unmatched[i]) ) {
2327 + if ( !filter || filter( elem, context, xml ) ) {
2328 + newUnmatched.push( elem );
2329 + if ( mapped ) {
2330 + map.push( i );
2331 + }
2332 + }
2333 + }
2334 + }
2335 +
2336 + return newUnmatched;
2337 +}
2338 +
2339 +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2340 + if ( postFilter && !postFilter[ expando ] ) {
2341 + postFilter = setMatcher( postFilter );
2342 + }
2343 + if ( postFinder && !postFinder[ expando ] ) {
2344 + postFinder = setMatcher( postFinder, postSelector );
2345 + }
2346 + return markFunction(function( seed, results, context, xml ) {
2347 + var temp, i, elem,
2348 + preMap = [],
2349 + postMap = [],
2350 + preexisting = results.length,
2351 +
2352 + // Get initial elements from seed or context
2353 + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
2354 +
2355 + // Prefilter to get matcher input, preserving a map for seed-results synchronization
2356 + matcherIn = preFilter && ( seed || !selector ) ?
2357 + condense( elems, preMap, preFilter, context, xml ) :
2358 + elems,
2359 +
2360 + matcherOut = matcher ?
2361 + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2362 + postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2363 +
2364 + // ...intermediate processing is necessary
2365 + [] :
2366 +
2367 + // ...otherwise use results directly
2368 + results :
2369 + matcherIn;
2370 +
2371 + // Find primary matches
2372 + if ( matcher ) {
2373 + matcher( matcherIn, matcherOut, context, xml );
2374 + }
2375 +
2376 + // Apply postFilter
2377 + if ( postFilter ) {
2378 + temp = condense( matcherOut, postMap );
2379 + postFilter( temp, [], context, xml );
2380 +
2381 + // Un-match failing elements by moving them back to matcherIn
2382 + i = temp.length;
2383 + while ( i-- ) {
2384 + if ( (elem = temp[i]) ) {
2385 + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
2386 + }
2387 + }
2388 + }
2389 +
2390 + if ( seed ) {
2391 + if ( postFinder || preFilter ) {
2392 + if ( postFinder ) {
2393 + // Get the final matcherOut by condensing this intermediate into postFinder contexts
2394 + temp = [];
2395 + i = matcherOut.length;
2396 + while ( i-- ) {
2397 + if ( (elem = matcherOut[i]) ) {
2398 + // Restore matcherIn since elem is not yet a final match
2399 + temp.push( (matcherIn[i] = elem) );
2400 + }
2401 + }
2402 + postFinder( null, (matcherOut = []), temp, xml );
2403 + }
2404 +
2405 + // Move matched elements from seed to results to keep them synchronized
2406 + i = matcherOut.length;
2407 + while ( i-- ) {
2408 + if ( (elem = matcherOut[i]) &&
2409 + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
2410 +
2411 + seed[temp] = !(results[temp] = elem);
2412 + }
2413 + }
2414 + }
2415 +
2416 + // Add elements to results, through postFinder if defined
2417 + } else {
2418 + matcherOut = condense(
2419 + matcherOut === results ?
2420 + matcherOut.splice( preexisting, matcherOut.length ) :
2421 + matcherOut
2422 + );
2423 + if ( postFinder ) {
2424 + postFinder( null, results, matcherOut, xml );
2425 + } else {
2426 + push.apply( results, matcherOut );
2427 + }
2428 + }
2429 + });
2430 +}
2431 +
2432 +function matcherFromTokens( tokens ) {
2433 + var checkContext, matcher, j,
2434 + len = tokens.length,
2435 + leadingRelative = Expr.relative[ tokens[0].type ],
2436 + implicitRelative = leadingRelative || Expr.relative[" "],
2437 + i = leadingRelative ? 1 : 0,
2438 +
2439 + // The foundational matcher ensures that elements are reachable from top-level context(s)
2440 + matchContext = addCombinator( function( elem ) {
2441 + return elem === checkContext;
2442 + }, implicitRelative, true ),
2443 + matchAnyContext = addCombinator( function( elem ) {
2444 + return indexOf( checkContext, elem ) > -1;
2445 + }, implicitRelative, true ),
2446 + matchers = [ function( elem, context, xml ) {
2447 + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2448 + (checkContext = context).nodeType ?
2449 + matchContext( elem, context, xml ) :
2450 + matchAnyContext( elem, context, xml ) );
2451 + // Avoid hanging onto element (issue #299)
2452 + checkContext = null;
2453 + return ret;
2454 + } ];
2455 +
2456 + for ( ; i < len; i++ ) {
2457 + if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
2458 + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
2459 + } else {
2460 + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
2461 +
2462 + // Return special upon seeing a positional matcher
2463 + if ( matcher[ expando ] ) {
2464 + // Find the next relative operator (if any) for proper handling
2465 + j = ++i;
2466 + for ( ; j < len; j++ ) {
2467 + if ( Expr.relative[ tokens[j].type ] ) {
2468 + break;
2469 + }
2470 + }
2471 + return setMatcher(
2472 + i > 1 && elementMatcher( matchers ),
2473 + i > 1 && toSelector(
2474 + // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2475 + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
2476 + ).replace( rtrim, "$1" ),
2477 + matcher,
2478 + i < j && matcherFromTokens( tokens.slice( i, j ) ),
2479 + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
2480 + j < len && toSelector( tokens )
2481 + );
2482 + }
2483 + matchers.push( matcher );
2484 + }
2485 + }
2486 +
2487 + return elementMatcher( matchers );
2488 +}
2489 +
2490 +function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2491 + var bySet = setMatchers.length > 0,
2492 + byElement = elementMatchers.length > 0,
2493 + superMatcher = function( seed, context, xml, results, outermost ) {
2494 + var elem, j, matcher,
2495 + matchedCount = 0,
2496 + i = "0",
2497 + unmatched = seed && [],
2498 + setMatched = [],
2499 + contextBackup = outermostContext,
2500 + // We must always have either seed elements or outermost context
2501 + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
2502 + // Use integer dirruns iff this is the outermost matcher
2503 + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
2504 + len = elems.length;
2505 +
2506 + if ( outermost ) {
2507 + outermostContext = context === document || context || outermost;
2508 + }
2509 +
2510 + // Add elements passing elementMatchers directly to results
2511 + // Support: IE<9, Safari
2512 + // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2513 + for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
2514 + if ( byElement && elem ) {
2515 + j = 0;
2516 + if ( !context && elem.ownerDocument !== document ) {
2517 + setDocument( elem );
2518 + xml = !documentIsHTML;
2519 + }
2520 + while ( (matcher = elementMatchers[j++]) ) {
2521 + if ( matcher( elem, context || document, xml) ) {
2522 + results.push( elem );
2523 + break;
2524 + }
2525 + }
2526 + if ( outermost ) {
2527 + dirruns = dirrunsUnique;
2528 + }
2529 + }
2530 +
2531 + // Track unmatched elements for set filters
2532 + if ( bySet ) {
2533 + // They will have gone through all possible matchers
2534 + if ( (elem = !matcher && elem) ) {
2535 + matchedCount--;
2536 + }
2537 +
2538 + // Lengthen the array for every element, matched or not
2539 + if ( seed ) {
2540 + unmatched.push( elem );
2541 + }
2542 + }
2543 + }
2544 +
2545 + // `i` is now the count of elements visited above, and adding it to `matchedCount`
2546 + // makes the latter nonnegative.
2547 + matchedCount += i;
2548 +
2549 + // Apply set filters to unmatched elements
2550 + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2551 + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2552 + // no element matchers and no seed.
2553 + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2554 + // case, which will result in a "00" `matchedCount` that differs from `i` but is also
2555 + // numerically zero.
2556 + if ( bySet && i !== matchedCount ) {
2557 + j = 0;
2558 + while ( (matcher = setMatchers[j++]) ) {
2559 + matcher( unmatched, setMatched, context, xml );
2560 + }
2561 +
2562 + if ( seed ) {
2563 + // Reintegrate element matches to eliminate the need for sorting
2564 + if ( matchedCount > 0 ) {
2565 + while ( i-- ) {
2566 + if ( !(unmatched[i] || setMatched[i]) ) {
2567 + setMatched[i] = pop.call( results );
2568 + }
2569 + }
2570 + }
2571 +
2572 + // Discard index placeholder values to get only actual matches
2573 + setMatched = condense( setMatched );
2574 + }
2575 +
2576 + // Add matches to results
2577 + push.apply( results, setMatched );
2578 +
2579 + // Seedless set matches succeeding multiple successful matchers stipulate sorting
2580 + if ( outermost && !seed && setMatched.length > 0 &&
2581 + ( matchedCount + setMatchers.length ) > 1 ) {
2582 +
2583 + Sizzle.uniqueSort( results );
2584 + }
2585 + }
2586 +
2587 + // Override manipulation of globals by nested matchers
2588 + if ( outermost ) {
2589 + dirruns = dirrunsUnique;
2590 + outermostContext = contextBackup;
2591 + }
2592 +
2593 + return unmatched;
2594 + };
2595 +
2596 + return bySet ?
2597 + markFunction( superMatcher ) :
2598 + superMatcher;
2599 +}
2600 +
2601 +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2602 + var i,
2603 + setMatchers = [],
2604 + elementMatchers = [],
2605 + cached = compilerCache[ selector + " " ];
2606 +
2607 + if ( !cached ) {
2608 + // Generate a function of recursive functions that can be used to check each element
2609 + if ( !match ) {
2610 + match = tokenize( selector );
2611 + }
2612 + i = match.length;
2613 + while ( i-- ) {
2614 + cached = matcherFromTokens( match[i] );
2615 + if ( cached[ expando ] ) {
2616 + setMatchers.push( cached );
2617 + } else {
2618 + elementMatchers.push( cached );
2619 + }
2620 + }
2621 +
2622 + // Cache the compiled function
2623 + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
2624 +
2625 + // Save selector and tokenization
2626 + cached.selector = selector;
2627 + }
2628 + return cached;
2629 +};
2630 +
2631 +/**
2632 + * A low-level selection function that works with Sizzle's compiled
2633 + * selector functions
2634 + * @param {String|Function} selector A selector or a pre-compiled
2635 + * selector function built with Sizzle.compile
2636 + * @param {Element} context
2637 + * @param {Array} [results]
2638 + * @param {Array} [seed] A set of elements to match against
2639 + */
2640 +select = Sizzle.select = function( selector, context, results, seed ) {
2641 + var i, tokens, token, type, find,
2642 + compiled = typeof selector === "function" && selector,
2643 + match = !seed && tokenize( (selector = compiled.selector || selector) );
2644 +
2645 + results = results || [];
2646 +
2647 + // Try to minimize operations if there is only one selector in the list and no seed
2648 + // (the latter of which guarantees us context)
2649 + if ( match.length === 1 ) {
2650 +
2651 + // Reduce context if the leading compound selector is an ID
2652 + tokens = match[0] = match[0].slice( 0 );
2653 + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2654 + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
2655 +
2656 + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
2657 + if ( !context ) {
2658 + return results;
2659 +
2660 + // Precompiled matchers will still verify ancestry, so step up a level
2661 + } else if ( compiled ) {
2662 + context = context.parentNode;
2663 + }
2664 +
2665 + selector = selector.slice( tokens.shift().value.length );
2666 + }
2667 +
2668 + // Fetch a seed set for right-to-left matching
2669 + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
2670 + while ( i-- ) {
2671 + token = tokens[i];
2672 +
2673 + // Abort if we hit a combinator
2674 + if ( Expr.relative[ (type = token.type) ] ) {
2675 + break;
2676 + }
2677 + if ( (find = Expr.find[ type ]) ) {
2678 + // Search, expanding context for leading sibling combinators
2679 + if ( (seed = find(
2680 + token.matches[0].replace( runescape, funescape ),
2681 + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
2682 + )) ) {
2683 +
2684 + // If seed is empty or no tokens remain, we can return early
2685 + tokens.splice( i, 1 );
2686 + selector = seed.length && toSelector( tokens );
2687 + if ( !selector ) {
2688 + push.apply( results, seed );
2689 + return results;
2690 + }
2691 +
2692 + break;
2693 + }
2694 + }
2695 + }
2696 + }
2697 +
2698 + // Compile and execute a filtering function if one is not provided
2699 + // Provide `match` to avoid retokenization if we modified the selector above
2700 + ( compiled || compile( selector, match ) )(
2701 + seed,
2702 + context,
2703 + !documentIsHTML,
2704 + results,
2705 + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2706 + );
2707 + return results;
2708 +};
2709 +
2710 +// One-time assignments
2711 +
2712 +// Sort stability
2713 +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
2714 +
2715 +// Support: Chrome 14-35+
2716 +// Always assume duplicates if they aren't passed to the comparison function
2717 +support.detectDuplicates = !!hasDuplicate;
2718 +
2719 +// Initialize against the default document
2720 +setDocument();
2721 +
2722 +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2723 +// Detached nodes confoundingly follow *each other*
2724 +support.sortDetached = assert(function( el ) {
2725 + // Should return 1, but returns 4 (following)
2726 + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
2727 +});
2728 +
2729 +// Support: IE<8
2730 +// Prevent attribute/property "interpolation"
2731 +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2732 +if ( !assert(function( el ) {
2733 + el.innerHTML = "<a href='#'></a>";
2734 + return el.firstChild.getAttribute("href") === "#" ;
2735 +}) ) {
2736 + addHandle( "type|href|height|width", function( elem, name, isXML ) {
2737 + if ( !isXML ) {
2738 + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2739 + }
2740 + });
2741 +}
2742 +
2743 +// Support: IE<9
2744 +// Use defaultValue in place of getAttribute("value")
2745 +if ( !support.attributes || !assert(function( el ) {
2746 + el.innerHTML = "<input/>";
2747 + el.firstChild.setAttribute( "value", "" );
2748 + return el.firstChild.getAttribute( "value" ) === "";
2749 +}) ) {
2750 + addHandle( "value", function( elem, name, isXML ) {
2751 + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2752 + return elem.defaultValue;
2753 + }
2754 + });
2755 +}
2756 +
2757 +// Support: IE<9
2758 +// Use getAttributeNode to fetch booleans when getAttribute lies
2759 +if ( !assert(function( el ) {
2760 + return el.getAttribute("disabled") == null;
2761 +}) ) {
2762 + addHandle( booleans, function( elem, name, isXML ) {
2763 + var val;
2764 + if ( !isXML ) {
2765 + return elem[ name ] === true ? name.toLowerCase() :
2766 + (val = elem.getAttributeNode( name )) && val.specified ?
2767 + val.value :
2768 + null;
2769 + }
2770 + });
2771 +}
2772 +
2773 +return Sizzle;
2774 +
2775 +})( window );
2776 +
2777 +
2778 +
2779 +jQuery.find = Sizzle;
2780 +jQuery.expr = Sizzle.selectors;
2781 +
2782 +// Deprecated
2783 +jQuery.expr[ ":" ] = jQuery.expr.pseudos;
2784 +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2785 +jQuery.text = Sizzle.getText;
2786 +jQuery.isXMLDoc = Sizzle.isXML;
2787 +jQuery.contains = Sizzle.contains;
2788 +jQuery.escapeSelector = Sizzle.escape;
2789 +
2790 +
2791 +
2792 +
2793 +var dir = function( elem, dir, until ) {
2794 + var matched = [],
2795 + truncate = until !== undefined;
2796 +
2797 + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
2798 + if ( elem.nodeType === 1 ) {
2799 + if ( truncate && jQuery( elem ).is( until ) ) {
2800 + break;
2801 + }
2802 + matched.push( elem );
2803 + }
2804 + }
2805 + return matched;
2806 +};
2807 +
2808 +
2809 +var siblings = function( n, elem ) {
2810 + var matched = [];
2811 +
2812 + for ( ; n; n = n.nextSibling ) {
2813 + if ( n.nodeType === 1 && n !== elem ) {
2814 + matched.push( n );
2815 + }
2816 + }
2817 +
2818 + return matched;
2819 +};
2820 +
2821 +
2822 +var rneedsContext = jQuery.expr.match.needsContext;
2823 +
2824 +
2825 +
2826 +function nodeName( elem, name ) {
2827 +
2828 + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
2829 +
2830 +};
2831 +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
2832 +
2833 +
2834 +
2835 +// Implement the identical functionality for filter and not
2836 +function winnow( elements, qualifier, not ) {
2837 + if ( isFunction( qualifier ) ) {
2838 + return jQuery.grep( elements, function( elem, i ) {
2839 + return !!qualifier.call( elem, i, elem ) !== not;
2840 + } );
2841 + }
2842 +
2843 + // Single element
2844 + if ( qualifier.nodeType ) {
2845 + return jQuery.grep( elements, function( elem ) {
2846 + return ( elem === qualifier ) !== not;
2847 + } );
2848 + }
2849 +
2850 + // Arraylike of elements (jQuery, arguments, Array)
2851 + if ( typeof qualifier !== "string" ) {
2852 + return jQuery.grep( elements, function( elem ) {
2853 + return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
2854 + } );
2855 + }
2856 +
2857 + // Filtered directly for both simple and complex selectors
2858 + return jQuery.filter( qualifier, elements, not );
2859 +}
2860 +
2861 +jQuery.filter = function( expr, elems, not ) {
2862 + var elem = elems[ 0 ];
2863 +
2864 + if ( not ) {
2865 + expr = ":not(" + expr + ")";
2866 + }
2867 +
2868 + if ( elems.length === 1 && elem.nodeType === 1 ) {
2869 + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
2870 + }
2871 +
2872 + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
2873 + return elem.nodeType === 1;
2874 + } ) );
2875 +};
2876 +
2877 +jQuery.fn.extend( {
2878 + find: function( selector ) {
2879 + var i, ret,
2880 + len = this.length,
2881 + self = this;
2882 +
2883 + if ( typeof selector !== "string" ) {
2884 + return this.pushStack( jQuery( selector ).filter( function() {
2885 + for ( i = 0; i < len; i++ ) {
2886 + if ( jQuery.contains( self[ i ], this ) ) {
2887 + return true;
2888 + }
2889 + }
2890 + } ) );
2891 + }
2892 +
2893 + ret = this.pushStack( [] );
2894 +
2895 + for ( i = 0; i < len; i++ ) {
2896 + jQuery.find( selector, self[ i ], ret );
2897 + }
2898 +
2899 + return len > 1 ? jQuery.uniqueSort( ret ) : ret;
2900 + },
2901 + filter: function( selector ) {
2902 + return this.pushStack( winnow( this, selector || [], false ) );
2903 + },
2904 + not: function( selector ) {
2905 + return this.pushStack( winnow( this, selector || [], true ) );
2906 + },
2907 + is: function( selector ) {
2908 + return !!winnow(
2909 + this,
2910 +
2911 + // If this is a positional/relative selector, check membership in the returned set
2912 + // so $("p:first").is("p:last") won't return true for a doc with two "p".
2913 + typeof selector === "string" && rneedsContext.test( selector ) ?
2914 + jQuery( selector ) :
2915 + selector || [],
2916 + false
2917 + ).length;
2918 + }
2919 +} );
2920 +
2921 +
2922 +// Initialize a jQuery object
2923 +
2924 +
2925 +// A central reference to the root jQuery(document)
2926 +var rootjQuery,
2927 +
2928 + // A simple way to check for HTML strings
2929 + // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
2930 + // Strict HTML recognition (#11290: must start with <)
2931 + // Shortcut simple #id case for speed
2932 + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
2933 +
2934 + init = jQuery.fn.init = function( selector, context, root ) {
2935 + var match, elem;
2936 +
2937 + // HANDLE: $(""), $(null), $(undefined), $(false)
2938 + if ( !selector ) {
2939 + return this;
2940 + }
2941 +
2942 + // Method init() accepts an alternate rootjQuery
2943 + // so migrate can support jQuery.sub (gh-2101)
2944 + root = root || rootjQuery;
2945 +
2946 + // Handle HTML strings
2947 + if ( typeof selector === "string" ) {
2948 + if ( selector[ 0 ] === "<" &&
2949 + selector[ selector.length - 1 ] === ">" &&
2950 + selector.length >= 3 ) {
2951 +
2952 + // Assume that strings that start and end with <> are HTML and skip the regex check
2953 + match = [ null, selector, null ];
2954 +
2955 + } else {
2956 + match = rquickExpr.exec( selector );
2957 + }
2958 +
2959 + // Match html or make sure no context is specified for #id
2960 + if ( match && ( match[ 1 ] || !context ) ) {
2961 +
2962 + // HANDLE: $(html) -> $(array)
2963 + if ( match[ 1 ] ) {
2964 + context = context instanceof jQuery ? context[ 0 ] : context;
2965 +
2966 + // Option to run scripts is true for back-compat
2967 + // Intentionally let the error be thrown if parseHTML is not present
2968 + jQuery.merge( this, jQuery.parseHTML(
2969 + match[ 1 ],
2970 + context && context.nodeType ? context.ownerDocument || context : document,
2971 + true
2972 + ) );
2973 +
2974 + // HANDLE: $(html, props)
2975 + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
2976 + for ( match in context ) {
2977 +
2978 + // Properties of context are called as methods if possible
2979 + if ( isFunction( this[ match ] ) ) {
2980 + this[ match ]( context[ match ] );
2981 +
2982 + // ...and otherwise set as attributes
2983 + } else {
2984 + this.attr( match, context[ match ] );
2985 + }
2986 + }
2987 + }
2988 +
2989 + return this;
2990 +
2991 + // HANDLE: $(#id)
2992 + } else {
2993 + elem = document.getElementById( match[ 2 ] );
2994 +
2995 + if ( elem ) {
2996 +
2997 + // Inject the element directly into the jQuery object
2998 + this[ 0 ] = elem;
2999 + this.length = 1;
3000 + }
3001 + return this;
3002 + }
3003 +
3004 + // HANDLE: $(expr, $(...))
3005 + } else if ( !context || context.jquery ) {
3006 + return ( context || root ).find( selector );
3007 +
3008 + // HANDLE: $(expr, context)
3009 + // (which is just equivalent to: $(context).find(expr)
3010 + } else {
3011 + return this.constructor( context ).find( selector );
3012 + }
3013 +
3014 + // HANDLE: $(DOMElement)
3015 + } else if ( selector.nodeType ) {
3016 + this[ 0 ] = selector;
3017 + this.length = 1;
3018 + return this;
3019 +
3020 + // HANDLE: $(function)
3021 + // Shortcut for document ready
3022 + } else if ( isFunction( selector ) ) {
3023 + return root.ready !== undefined ?
3024 + root.ready( selector ) :
3025 +
3026 + // Execute immediately if ready is not present
3027 + selector( jQuery );
3028 + }
3029 +
3030 + return jQuery.makeArray( selector, this );
3031 + };
3032 +
3033 +// Give the init function the jQuery prototype for later instantiation
3034 +init.prototype = jQuery.fn;
3035 +
3036 +// Initialize central reference
3037 +rootjQuery = jQuery( document );
3038 +
3039 +
3040 +var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3041 +
3042 + // Methods guaranteed to produce a unique set when starting from a unique set
3043 + guaranteedUnique = {
3044 + children: true,
3045 + contents: true,
3046 + next: true,
3047 + prev: true
3048 + };
3049 +
3050 +jQuery.fn.extend( {
3051 + has: function( target ) {
3052 + var targets = jQuery( target, this ),
3053 + l = targets.length;
3054 +
3055 + return this.filter( function() {
3056 + var i = 0;
3057 + for ( ; i < l; i++ ) {
3058 + if ( jQuery.contains( this, targets[ i ] ) ) {
3059 + return true;
3060 + }
3061 + }
3062 + } );
3063 + },
3064 +
3065 + closest: function( selectors, context ) {
3066 + var cur,
3067 + i = 0,
3068 + l = this.length,
3069 + matched = [],
3070 + targets = typeof selectors !== "string" && jQuery( selectors );
3071 +
3072 + // Positional selectors never match, since there's no _selection_ context
3073 + if ( !rneedsContext.test( selectors ) ) {
3074 + for ( ; i < l; i++ ) {
3075 + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
3076 +
3077 + // Always skip document fragments
3078 + if ( cur.nodeType < 11 && ( targets ?
3079 + targets.index( cur ) > -1 :
3080 +
3081 + // Don't pass non-elements to Sizzle
3082 + cur.nodeType === 1 &&
3083 + jQuery.find.matchesSelector( cur, selectors ) ) ) {
3084 +
3085 + matched.push( cur );
3086 + break;
3087 + }
3088 + }
3089 + }
3090 + }
3091 +
3092 + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
3093 + },
3094 +
3095 + // Determine the position of an element within the set
3096 + index: function( elem ) {
3097 +
3098 + // No argument, return index in parent
3099 + if ( !elem ) {
3100 + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3101 + }
3102 +
3103 + // Index in selector
3104 + if ( typeof elem === "string" ) {
3105 + return indexOf.call( jQuery( elem ), this[ 0 ] );
3106 + }
3107 +
3108 + // Locate the position of the desired element
3109 + return indexOf.call( this,
3110 +
3111 + // If it receives a jQuery object, the first element is used
3112 + elem.jquery ? elem[ 0 ] : elem
3113 + );
3114 + },
3115 +
3116 + add: function( selector, context ) {
3117 + return this.pushStack(
3118 + jQuery.uniqueSort(
3119 + jQuery.merge( this.get(), jQuery( selector, context ) )
3120 + )
3121 + );
3122 + },
3123 +
3124 + addBack: function( selector ) {
3125 + return this.add( selector == null ?
3126 + this.prevObject : this.prevObject.filter( selector )
3127 + );
3128 + }
3129 +} );
3130 +
3131 +function sibling( cur, dir ) {
3132 + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
3133 + return cur;
3134 +}
3135 +
3136 +jQuery.each( {
3137 + parent: function( elem ) {
3138 + var parent = elem.parentNode;
3139 + return parent && parent.nodeType !== 11 ? parent : null;
3140 + },
3141 + parents: function( elem ) {
3142 + return dir( elem, "parentNode" );
3143 + },
3144 + parentsUntil: function( elem, i, until ) {
3145 + return dir( elem, "parentNode", until );
3146 + },
3147 + next: function( elem ) {
3148 + return sibling( elem, "nextSibling" );
3149 + },
3150 + prev: function( elem ) {
3151 + return sibling( elem, "previousSibling" );
3152 + },
3153 + nextAll: function( elem ) {
3154 + return dir( elem, "nextSibling" );
3155 + },
3156 + prevAll: function( elem ) {
3157 + return dir( elem, "previousSibling" );
3158 + },
3159 + nextUntil: function( elem, i, until ) {
3160 + return dir( elem, "nextSibling", until );
3161 + },
3162 + prevUntil: function( elem, i, until ) {
3163 + return dir( elem, "previousSibling", until );
3164 + },
3165 + siblings: function( elem ) {
3166 + return siblings( ( elem.parentNode || {} ).firstChild, elem );
3167 + },
3168 + children: function( elem ) {
3169 + return siblings( elem.firstChild );
3170 + },
3171 + contents: function( elem ) {
3172 + if ( typeof elem.contentDocument !== "undefined" ) {
3173 + return elem.contentDocument;
3174 + }
3175 +
3176 + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
3177 + // Treat the template element as a regular one in browsers that
3178 + // don't support it.
3179 + if ( nodeName( elem, "template" ) ) {
3180 + elem = elem.content || elem;
3181 + }
3182 +
3183 + return jQuery.merge( [], elem.childNodes );
3184 + }
3185 +}, function( name, fn ) {
3186 + jQuery.fn[ name ] = function( until, selector ) {
3187 + var matched = jQuery.map( this, fn, until );
3188 +
3189 + if ( name.slice( -5 ) !== "Until" ) {
3190 + selector = until;
3191 + }
3192 +
3193 + if ( selector && typeof selector === "string" ) {
3194 + matched = jQuery.filter( selector, matched );
3195 + }
3196 +
3197 + if ( this.length > 1 ) {
3198 +
3199 + // Remove duplicates
3200 + if ( !guaranteedUnique[ name ] ) {
3201 + jQuery.uniqueSort( matched );
3202 + }
3203 +
3204 + // Reverse order for parents* and prev-derivatives
3205 + if ( rparentsprev.test( name ) ) {
3206 + matched.reverse();
3207 + }
3208 + }
3209 +
3210 + return this.pushStack( matched );
3211 + };
3212 +} );
3213 +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3214 +
3215 +
3216 +
3217 +// Convert String-formatted options into Object-formatted ones
3218 +function createOptions( options ) {
3219 + var object = {};
3220 + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3221 + object[ flag ] = true;
3222 + } );
3223 + return object;
3224 +}
3225 +
3226 +/*
3227 + * Create a callback list using the following parameters:
3228 + *
3229 + * options: an optional list of space-separated options that will change how
3230 + * the callback list behaves or a more traditional option object
3231 + *
3232 + * By default a callback list will act like an event callback list and can be
3233 + * "fired" multiple times.
3234 + *
3235 + * Possible options:
3236 + *
3237 + * once: will ensure the callback list can only be fired once (like a Deferred)
3238 + *
3239 + * memory: will keep track of previous values and will call any callback added
3240 + * after the list has been fired right away with the latest "memorized"
3241 + * values (like a Deferred)
3242 + *
3243 + * unique: will ensure a callback can only be added once (no duplicate in the list)
3244 + *
3245 + * stopOnFalse: interrupt callings when a callback returns false
3246 + *
3247 + */
3248 +jQuery.Callbacks = function( options ) {
3249 +
3250 + // Convert options from String-formatted to Object-formatted if needed
3251 + // (we check in cache first)
3252 + options = typeof options === "string" ?
3253 + createOptions( options ) :
3254 + jQuery.extend( {}, options );
3255 +
3256 + var // Flag to know if list is currently firing
3257 + firing,
3258 +
3259 + // Last fire value for non-forgettable lists
3260 + memory,
3261 +
3262 + // Flag to know if list was already fired
3263 + fired,
3264 +
3265 + // Flag to prevent firing
3266 + locked,
3267 +
3268 + // Actual callback list
3269 + list = [],
3270 +
3271 + // Queue of execution data for repeatable lists
3272 + queue = [],
3273 +
3274 + // Index of currently firing callback (modified by add/remove as needed)
3275 + firingIndex = -1,
3276 +
3277 + // Fire callbacks
3278 + fire = function() {
3279 +
3280 + // Enforce single-firing
3281 + locked = locked || options.once;
3282 +
3283 + // Execute callbacks for all pending executions,
3284 + // respecting firingIndex overrides and runtime changes
3285 + fired = firing = true;
3286 + for ( ; queue.length; firingIndex = -1 ) {
3287 + memory = queue.shift();
3288 + while ( ++firingIndex < list.length ) {
3289 +
3290 + // Run callback and check for early termination
3291 + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
3292 + options.stopOnFalse ) {
3293 +
3294 + // Jump to end and forget the data so .add doesn't re-fire
3295 + firingIndex = list.length;
3296 + memory = false;
3297 + }
3298 + }
3299 + }
3300 +
3301 + // Forget the data if we're done with it
3302 + if ( !options.memory ) {
3303 + memory = false;
3304 + }
3305 +
3306 + firing = false;
3307 +
3308 + // Clean up if we're done firing for good
3309 + if ( locked ) {
3310 +
3311 + // Keep an empty list if we have data for future add calls
3312 + if ( memory ) {
3313 + list = [];
3314 +
3315 + // Otherwise, this object is spent
3316 + } else {
3317 + list = "";
3318 + }
3319 + }
3320 + },
3321 +
3322 + // Actual Callbacks object
3323 + self = {
3324 +
3325 + // Add a callback or a collection of callbacks to the list
3326 + add: function() {
3327 + if ( list ) {
3328 +
3329 + // If we have memory from a past run, we should fire after adding
3330 + if ( memory && !firing ) {
3331 + firingIndex = list.length - 1;
3332 + queue.push( memory );
3333 + }
3334 +
3335 + ( function add( args ) {
3336 + jQuery.each( args, function( _, arg ) {
3337 + if ( isFunction( arg ) ) {
3338 + if ( !options.unique || !self.has( arg ) ) {
3339 + list.push( arg );
3340 + }
3341 + } else if ( arg && arg.length && toType( arg ) !== "string" ) {
3342 +
3343 + // Inspect recursively
3344 + add( arg );
3345 + }
3346 + } );
3347 + } )( arguments );
3348 +
3349 + if ( memory && !firing ) {
3350 + fire();
3351 + }
3352 + }
3353 + return this;
3354 + },
3355 +
3356 + // Remove a callback from the list
3357 + remove: function() {
3358 + jQuery.each( arguments, function( _, arg ) {
3359 + var index;
3360 + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3361 + list.splice( index, 1 );
3362 +
3363 + // Handle firing indexes
3364 + if ( index <= firingIndex ) {
3365 + firingIndex--;
3366 + }
3367 + }
3368 + } );
3369 + return this;
3370 + },
3371 +
3372 + // Check if a given callback is in the list.
3373 + // If no argument is given, return whether or not list has callbacks attached.
3374 + has: function( fn ) {
3375 + return fn ?
3376 + jQuery.inArray( fn, list ) > -1 :
3377 + list.length > 0;
3378 + },
3379 +
3380 + // Remove all callbacks from the list
3381 + empty: function() {
3382 + if ( list ) {
3383 + list = [];
3384 + }
3385 + return this;
3386 + },
3387 +
3388 + // Disable .fire and .add
3389 + // Abort any current/pending executions
3390 + // Clear all callbacks and values
3391 + disable: function() {
3392 + locked = queue = [];
3393 + list = memory = "";
3394 + return this;
3395 + },
3396 + disabled: function() {
3397 + return !list;
3398 + },
3399 +
3400 + // Disable .fire
3401 + // Also disable .add unless we have memory (since it would have no effect)
3402 + // Abort any pending executions
3403 + lock: function() {
3404 + locked = queue = [];
3405 + if ( !memory && !firing ) {
3406 + list = memory = "";
3407 + }
3408 + return this;
3409 + },
3410 + locked: function() {
3411 + return !!locked;
3412 + },
3413 +
3414 + // Call all callbacks with the given context and arguments
3415 + fireWith: function( context, args ) {
3416 + if ( !locked ) {
3417 + args = args || [];
3418 + args = [ context, args.slice ? args.slice() : args ];
3419 + queue.push( args );
3420 + if ( !firing ) {
3421 + fire();
3422 + }
3423 + }
3424 + return this;
3425 + },
3426 +
3427 + // Call all the callbacks with the given arguments
3428 + fire: function() {
3429 + self.fireWith( this, arguments );
3430 + return this;
3431 + },
3432 +
3433 + // To know if the callbacks have already been called at least once
3434 + fired: function() {
3435 + return !!fired;
3436 + }
3437 + };
3438 +
3439 + return self;
3440 +};
3441 +
3442 +
3443 +function Identity( v ) {
3444 + return v;
3445 +}
3446 +function Thrower( ex ) {
3447 + throw ex;
3448 +}
3449 +
3450 +function adoptValue( value, resolve, reject, noValue ) {
3451 + var method;
3452 +
3453 + try {
3454 +
3455 + // Check for promise aspect first to privilege synchronous behavior
3456 + if ( value && isFunction( ( method = value.promise ) ) ) {
3457 + method.call( value ).done( resolve ).fail( reject );
3458 +
3459 + // Other thenables
3460 + } else if ( value && isFunction( ( method = value.then ) ) ) {
3461 + method.call( value, resolve, reject );
3462 +
3463 + // Other non-thenables
3464 + } else {
3465 +
3466 + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
3467 + // * false: [ value ].slice( 0 ) => resolve( value )
3468 + // * true: [ value ].slice( 1 ) => resolve()
3469 + resolve.apply( undefined, [ value ].slice( noValue ) );
3470 + }
3471 +
3472 + // For Promises/A+, convert exceptions into rejections
3473 + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
3474 + // Deferred#then to conditionally suppress rejection.
3475 + } catch ( value ) {
3476 +
3477 + // Support: Android 4.0 only
3478 + // Strict mode functions invoked without .call/.apply get global-object context
3479 + reject.apply( undefined, [ value ] );
3480 + }
3481 +}
3482 +
3483 +jQuery.extend( {
3484 +
3485 + Deferred: function( func ) {
3486 + var tuples = [
3487 +
3488 + // action, add listener, callbacks,
3489 + // ... .then handlers, argument index, [final state]
3490 + [ "notify", "progress", jQuery.Callbacks( "memory" ),
3491 + jQuery.Callbacks( "memory" ), 2 ],
3492 + [ "resolve", "done", jQuery.Callbacks( "once memory" ),
3493 + jQuery.Callbacks( "once memory" ), 0, "resolved" ],
3494 + [ "reject", "fail", jQuery.Callbacks( "once memory" ),
3495 + jQuery.Callbacks( "once memory" ), 1, "rejected" ]
3496 + ],
3497 + state = "pending",
3498 + promise = {
3499 + state: function() {
3500 + return state;
3501 + },
3502 + always: function() {
3503 + deferred.done( arguments ).fail( arguments );
3504 + return this;
3505 + },
3506 + "catch": function( fn ) {
3507 + return promise.then( null, fn );
3508 + },
3509 +
3510 + // Keep pipe for back-compat
3511 + pipe: function( /* fnDone, fnFail, fnProgress */ ) {
3512 + var fns = arguments;
3513 +
3514 + return jQuery.Deferred( function( newDefer ) {
3515 + jQuery.each( tuples, function( i, tuple ) {
3516 +
3517 + // Map tuples (progress, done, fail) to arguments (done, fail, progress)
3518 + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
3519 +
3520 + // deferred.progress(function() { bind to newDefer or newDefer.notify })
3521 + // deferred.done(function() { bind to newDefer or newDefer.resolve })
3522 + // deferred.fail(function() { bind to newDefer or newDefer.reject })
3523 + deferred[ tuple[ 1 ] ]( function() {
3524 + var returned = fn && fn.apply( this, arguments );
3525 + if ( returned && isFunction( returned.promise ) ) {
3526 + returned.promise()
3527 + .progress( newDefer.notify )
3528 + .done( newDefer.resolve )
3529 + .fail( newDefer.reject );
3530 + } else {
3531 + newDefer[ tuple[ 0 ] + "With" ](
3532 + this,
3533 + fn ? [ returned ] : arguments
3534 + );
3535 + }
3536 + } );
3537 + } );
3538 + fns = null;
3539 + } ).promise();
3540 + },
3541 + then: function( onFulfilled, onRejected, onProgress ) {
3542 + var maxDepth = 0;
3543 + function resolve( depth, deferred, handler, special ) {
3544 + return function() {
3545 + var that = this,
3546 + args = arguments,
3547 + mightThrow = function() {
3548 + var returned, then;
3549 +
3550 + // Support: Promises/A+ section 2.3.3.3.3
3551 + // https://promisesaplus.com/#point-59
3552 + // Ignore double-resolution attempts
3553 + if ( depth < maxDepth ) {
3554 + return;
3555 + }
3556 +
3557 + returned = handler.apply( that, args );
3558 +
3559 + // Support: Promises/A+ section 2.3.1
3560 + // https://promisesaplus.com/#point-48
3561 + if ( returned === deferred.promise() ) {
3562 + throw new TypeError( "Thenable self-resolution" );
3563 + }
3564 +
3565 + // Support: Promises/A+ sections 2.3.3.1, 3.5
3566 + // https://promisesaplus.com/#point-54
3567 + // https://promisesaplus.com/#point-75
3568 + // Retrieve `then` only once
3569 + then = returned &&
3570 +
3571 + // Support: Promises/A+ section 2.3.4
3572 + // https://promisesaplus.com/#point-64
3573 + // Only check objects and functions for thenability
3574 + ( typeof returned === "object" ||
3575 + typeof returned === "function" ) &&
3576 + returned.then;
3577 +
3578 + // Handle a returned thenable
3579 + if ( isFunction( then ) ) {
3580 +
3581 + // Special processors (notify) just wait for resolution
3582 + if ( special ) {
3583 + then.call(
3584 + returned,
3585 + resolve( maxDepth, deferred, Identity, special ),
3586 + resolve( maxDepth, deferred, Thrower, special )
3587 + );
3588 +
3589 + // Normal processors (resolve) also hook into progress
3590 + } else {
3591 +
3592 + // ...and disregard older resolution values
3593 + maxDepth++;
3594 +
3595 + then.call(
3596 + returned,
3597 + resolve( maxDepth, deferred, Identity, special ),
3598 + resolve( maxDepth, deferred, Thrower, special ),
3599 + resolve( maxDepth, deferred, Identity,
3600 + deferred.notifyWith )
3601 + );
3602 + }
3603 +
3604 + // Handle all other returned values
3605 + } else {
3606 +
3607 + // Only substitute handlers pass on context
3608 + // and multiple values (non-spec behavior)
3609 + if ( handler !== Identity ) {
3610 + that = undefined;
3611 + args = [ returned ];
3612 + }
3613 +
3614 + // Process the value(s)
3615 + // Default process is resolve
3616 + ( special || deferred.resolveWith )( that, args );
3617 + }
3618 + },
3619 +
3620 + // Only normal processors (resolve) catch and reject exceptions
3621 + process = special ?
3622 + mightThrow :
3623 + function() {
3624 + try {
3625 + mightThrow();
3626 + } catch ( e ) {
3627 +
3628 + if ( jQuery.Deferred.exceptionHook ) {
3629 + jQuery.Deferred.exceptionHook( e,
3630 + process.stackTrace );
3631 + }
3632 +
3633 + // Support: Promises/A+ section 2.3.3.3.4.1
3634 + // https://promisesaplus.com/#point-61
3635 + // Ignore post-resolution exceptions
3636 + if ( depth + 1 >= maxDepth ) {
3637 +
3638 + // Only substitute handlers pass on context
3639 + // and multiple values (non-spec behavior)
3640 + if ( handler !== Thrower ) {
3641 + that = undefined;
3642 + args = [ e ];
3643 + }
3644 +
3645 + deferred.rejectWith( that, args );
3646 + }
3647 + }
3648 + };
3649 +
3650 + // Support: Promises/A+ section 2.3.3.3.1
3651 + // https://promisesaplus.com/#point-57
3652 + // Re-resolve promises immediately to dodge false rejection from
3653 + // subsequent errors
3654 + if ( depth ) {
3655 + process();
3656 + } else {
3657 +
3658 + // Call an optional hook to record the stack, in case of exception
3659 + // since it's otherwise lost when execution goes async
3660 + if ( jQuery.Deferred.getStackHook ) {
3661 + process.stackTrace = jQuery.Deferred.getStackHook();
3662 + }
3663 + window.setTimeout( process );
3664 + }
3665 + };
3666 + }
3667 +
3668 + return jQuery.Deferred( function( newDefer ) {
3669 +
3670 + // progress_handlers.add( ... )
3671 + tuples[ 0 ][ 3 ].add(
3672 + resolve(
3673 + 0,
3674 + newDefer,
3675 + isFunction( onProgress ) ?
3676 + onProgress :
3677 + Identity,
3678 + newDefer.notifyWith
3679 + )
3680 + );
3681 +
3682 + // fulfilled_handlers.add( ... )
3683 + tuples[ 1 ][ 3 ].add(
3684 + resolve(
3685 + 0,
3686 + newDefer,
3687 + isFunction( onFulfilled ) ?
3688 + onFulfilled :
3689 + Identity
3690 + )
3691 + );
3692 +
3693 + // rejected_handlers.add( ... )
3694 + tuples[ 2 ][ 3 ].add(
3695 + resolve(
3696 + 0,
3697 + newDefer,
3698 + isFunction( onRejected ) ?
3699 + onRejected :
3700 + Thrower
3701 + )
3702 + );
3703 + } ).promise();
3704 + },
3705 +
3706 + // Get a promise for this deferred
3707 + // If obj is provided, the promise aspect is added to the object
3708 + promise: function( obj ) {
3709 + return obj != null ? jQuery.extend( obj, promise ) : promise;
3710 + }
3711 + },
3712 + deferred = {};
3713 +
3714 + // Add list-specific methods
3715 + jQuery.each( tuples, function( i, tuple ) {
3716 + var list = tuple[ 2 ],
3717 + stateString = tuple[ 5 ];
3718 +
3719 + // promise.progress = list.add
3720 + // promise.done = list.add
3721 + // promise.fail = list.add
3722 + promise[ tuple[ 1 ] ] = list.add;
3723 +
3724 + // Handle state
3725 + if ( stateString ) {
3726 + list.add(
3727 + function() {
3728 +
3729 + // state = "resolved" (i.e., fulfilled)
3730 + // state = "rejected"
3731 + state = stateString;
3732 + },
3733 +
3734 + // rejected_callbacks.disable
3735 + // fulfilled_callbacks.disable
3736 + tuples[ 3 - i ][ 2 ].disable,
3737 +
3738 + // rejected_handlers.disable
3739 + // fulfilled_handlers.disable
3740 + tuples[ 3 - i ][ 3 ].disable,
3741 +
3742 + // progress_callbacks.lock
3743 + tuples[ 0 ][ 2 ].lock,
3744 +
3745 + // progress_handlers.lock
3746 + tuples[ 0 ][ 3 ].lock
3747 + );
3748 + }
3749 +
3750 + // progress_handlers.fire
3751 + // fulfilled_handlers.fire
3752 + // rejected_handlers.fire
3753 + list.add( tuple[ 3 ].fire );
3754 +
3755 + // deferred.notify = function() { deferred.notifyWith(...) }
3756 + // deferred.resolve = function() { deferred.resolveWith(...) }
3757 + // deferred.reject = function() { deferred.rejectWith(...) }
3758 + deferred[ tuple[ 0 ] ] = function() {
3759 + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
3760 + return this;
3761 + };
3762 +
3763 + // deferred.notifyWith = list.fireWith
3764 + // deferred.resolveWith = list.fireWith
3765 + // deferred.rejectWith = list.fireWith
3766 + deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
3767 + } );
3768 +
3769 + // Make the deferred a promise
3770 + promise.promise( deferred );
3771 +
3772 + // Call given func if any
3773 + if ( func ) {
3774 + func.call( deferred, deferred );
3775 + }
3776 +
3777 + // All done!
3778 + return deferred;
3779 + },
3780 +
3781 + // Deferred helper
3782 + when: function( singleValue ) {
3783 + var
3784 +
3785 + // count of uncompleted subordinates
3786 + remaining = arguments.length,
3787 +
3788 + // count of unprocessed arguments
3789 + i = remaining,
3790 +
3791 + // subordinate fulfillment data
3792 + resolveContexts = Array( i ),
3793 + resolveValues = slice.call( arguments ),
3794 +
3795 + // the master Deferred
3796 + master = jQuery.Deferred(),
3797 +
3798 + // subordinate callback factory
3799 + updateFunc = function( i ) {
3800 + return function( value ) {
3801 + resolveContexts[ i ] = this;
3802 + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
3803 + if ( !( --remaining ) ) {
3804 + master.resolveWith( resolveContexts, resolveValues );
3805 + }
3806 + };
3807 + };
3808 +
3809 + // Single- and empty arguments are adopted like Promise.resolve
3810 + if ( remaining <= 1 ) {
3811 + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
3812 + !remaining );
3813 +
3814 + // Use .then() to unwrap secondary thenables (cf. gh-3000)
3815 + if ( master.state() === "pending" ||
3816 + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
3817 +
3818 + return master.then();
3819 + }
3820 + }
3821 +
3822 + // Multiple arguments are aggregated like Promise.all array elements
3823 + while ( i-- ) {
3824 + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
3825 + }
3826 +
3827 + return master.promise();
3828 + }
3829 +} );
3830 +
3831 +
3832 +// These usually indicate a programmer mistake during development,
3833 +// warn about them ASAP rather than swallowing them by default.
3834 +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
3835 +
3836 +jQuery.Deferred.exceptionHook = function( error, stack ) {
3837 +
3838 + // Support: IE 8 - 9 only
3839 + // Console exists when dev tools are open, which can happen at any time
3840 + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
3841 + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
3842 + }
3843 +};
3844 +
3845 +
3846 +
3847 +
3848 +jQuery.readyException = function( error ) {
3849 + window.setTimeout( function() {
3850 + throw error;
3851 + } );
3852 +};
3853 +
3854 +
3855 +
3856 +
3857 +// The deferred used on DOM ready
3858 +var readyList = jQuery.Deferred();
3859 +
3860 +jQuery.fn.ready = function( fn ) {
3861 +
3862 + readyList
3863 + .then( fn )
3864 +
3865 + // Wrap jQuery.readyException in a function so that the lookup
3866 + // happens at the time of error handling instead of callback
3867 + // registration.
3868 + .catch( function( error ) {
3869 + jQuery.readyException( error );
3870 + } );
3871 +
3872 + return this;
3873 +};
3874 +
3875 +jQuery.extend( {
3876 +
3877 + // Is the DOM ready to be used? Set to true once it occurs.
3878 + isReady: false,
3879 +
3880 + // A counter to track how many items to wait for before
3881 + // the ready event fires. See #6781
3882 + readyWait: 1,
3883 +
3884 + // Handle when the DOM is ready
3885 + ready: function( wait ) {
3886 +
3887 + // Abort if there are pending holds or we're already ready
3888 + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
3889 + return;
3890 + }
3891 +
3892 + // Remember that the DOM is ready
3893 + jQuery.isReady = true;
3894 +
3895 + // If a normal DOM Ready event fired, decrement, and wait if need be
3896 + if ( wait !== true && --jQuery.readyWait > 0 ) {
3897 + return;
3898 + }
3899 +
3900 + // If there are functions bound, to execute
3901 + readyList.resolveWith( document, [ jQuery ] );
3902 + }
3903 +} );
3904 +
3905 +jQuery.ready.then = readyList.then;
3906 +
3907 +// The ready event handler and self cleanup method
3908 +function completed() {
3909 + document.removeEventListener( "DOMContentLoaded", completed );
3910 + window.removeEventListener( "load", completed );
3911 + jQuery.ready();
3912 +}
3913 +
3914 +// Catch cases where $(document).ready() is called
3915 +// after the browser event has already occurred.
3916 +// Support: IE <=9 - 10 only
3917 +// Older IE sometimes signals "interactive" too soon
3918 +if ( document.readyState === "complete" ||
3919 + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
3920 +
3921 + // Handle it asynchronously to allow scripts the opportunity to delay ready
3922 + window.setTimeout( jQuery.ready );
3923 +
3924 +} else {
3925 +
3926 + // Use the handy event callback
3927 + document.addEventListener( "DOMContentLoaded", completed );
3928 +
3929 + // A fallback to window.onload, that will always work
3930 + window.addEventListener( "load", completed );
3931 +}
3932 +
3933 +
3934 +
3935 +
3936 +// Multifunctional method to get and set values of a collection
3937 +// The value/s can optionally be executed if it's a function
3938 +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
3939 + var i = 0,
3940 + len = elems.length,
3941 + bulk = key == null;
3942 +
3943 + // Sets many values
3944 + if ( toType( key ) === "object" ) {
3945 + chainable = true;
3946 + for ( i in key ) {
3947 + access( elems, fn, i, key[ i ], true, emptyGet, raw );
3948 + }
3949 +
3950 + // Sets one value
3951 + } else if ( value !== undefined ) {
3952 + chainable = true;
3953 +
3954 + if ( !isFunction( value ) ) {
3955 + raw = true;
3956 + }
3957 +
3958 + if ( bulk ) {
3959 +
3960 + // Bulk operations run against the entire set
3961 + if ( raw ) {
3962 + fn.call( elems, value );
3963 + fn = null;
3964 +
3965 + // ...except when executing function values
3966 + } else {
3967 + bulk = fn;
3968 + fn = function( elem, key, value ) {
3969 + return bulk.call( jQuery( elem ), value );
3970 + };
3971 + }
3972 + }
3973 +
3974 + if ( fn ) {
3975 + for ( ; i < len; i++ ) {
3976 + fn(
3977 + elems[ i ], key, raw ?
3978 + value :
3979 + value.call( elems[ i ], i, fn( elems[ i ], key ) )
3980 + );
3981 + }
3982 + }
3983 + }
3984 +
3985 + if ( chainable ) {
3986 + return elems;
3987 + }
3988 +
3989 + // Gets
3990 + if ( bulk ) {
3991 + return fn.call( elems );
3992 + }
3993 +
3994 + return len ? fn( elems[ 0 ], key ) : emptyGet;
3995 +};
3996 +
3997 +
3998 +// Matches dashed string for camelizing
3999 +var rmsPrefix = /^-ms-/,
4000 + rdashAlpha = /-([a-z])/g;
4001 +
4002 +// Used by camelCase as callback to replace()
4003 +function fcamelCase( all, letter ) {
4004 + return letter.toUpperCase();
4005 +}
4006 +
4007 +// Convert dashed to camelCase; used by the css and data modules
4008 +// Support: IE <=9 - 11, Edge 12 - 15
4009 +// Microsoft forgot to hump their vendor prefix (#9572)
4010 +function camelCase( string ) {
4011 + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4012 +}
4013 +var acceptData = function( owner ) {
4014 +
4015 + // Accepts only:
4016 + // - Node
4017 + // - Node.ELEMENT_NODE
4018 + // - Node.DOCUMENT_NODE
4019 + // - Object
4020 + // - Any
4021 + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
4022 +};
4023 +
4024 +
4025 +
4026 +
4027 +function Data() {
4028 + this.expando = jQuery.expando + Data.uid++;
4029 +}
4030 +
4031 +Data.uid = 1;
4032 +
4033 +Data.prototype = {
4034 +
4035 + cache: function( owner ) {
4036 +
4037 + // Check if the owner object already has a cache
4038 + var value = owner[ this.expando ];
4039 +
4040 + // If not, create one
4041 + if ( !value ) {
4042 + value = {};
4043 +
4044 + // We can accept data for non-element nodes in modern browsers,
4045 + // but we should not, see #8335.
4046 + // Always return an empty object.
4047 + if ( acceptData( owner ) ) {
4048 +
4049 + // If it is a node unlikely to be stringify-ed or looped over
4050 + // use plain assignment
4051 + if ( owner.nodeType ) {
4052 + owner[ this.expando ] = value;
4053 +
4054 + // Otherwise secure it in a non-enumerable property
4055 + // configurable must be true to allow the property to be
4056 + // deleted when data is removed
4057 + } else {
4058 + Object.defineProperty( owner, this.expando, {
4059 + value: value,
4060 + configurable: true
4061 + } );
4062 + }
4063 + }
4064 + }
4065 +
4066 + return value;
4067 + },
4068 + set: function( owner, data, value ) {
4069 + var prop,
4070 + cache = this.cache( owner );
4071 +
4072 + // Handle: [ owner, key, value ] args
4073 + // Always use camelCase key (gh-2257)
4074 + if ( typeof data === "string" ) {
4075 + cache[ camelCase( data ) ] = value;
4076 +
4077 + // Handle: [ owner, { properties } ] args
4078 + } else {
4079 +
4080 + // Copy the properties one-by-one to the cache object
4081 + for ( prop in data ) {
4082 + cache[ camelCase( prop ) ] = data[ prop ];
4083 + }
4084 + }
4085 + return cache;
4086 + },
4087 + get: function( owner, key ) {
4088 + return key === undefined ?
4089 + this.cache( owner ) :
4090 +
4091 + // Always use camelCase key (gh-2257)
4092 + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
4093 + },
4094 + access: function( owner, key, value ) {
4095 +
4096 + // In cases where either:
4097 + //
4098 + // 1. No key was specified
4099 + // 2. A string key was specified, but no value provided
4100 + //
4101 + // Take the "read" path and allow the get method to determine
4102 + // which value to return, respectively either:
4103 + //
4104 + // 1. The entire cache object
4105 + // 2. The data stored at the key
4106 + //
4107 + if ( key === undefined ||
4108 + ( ( key && typeof key === "string" ) && value === undefined ) ) {
4109 +
4110 + return this.get( owner, key );
4111 + }
4112 +
4113 + // When the key is not a string, or both a key and value
4114 + // are specified, set or extend (existing objects) with either:
4115 + //
4116 + // 1. An object of properties
4117 + // 2. A key and value
4118 + //
4119 + this.set( owner, key, value );
4120 +
4121 + // Since the "set" path can have two possible entry points
4122 + // return the expected data based on which path was taken[*]
4123 + return value !== undefined ? value : key;
4124 + },
4125 + remove: function( owner, key ) {
4126 + var i,
4127 + cache = owner[ this.expando ];
4128 +
4129 + if ( cache === undefined ) {
4130 + return;
4131 + }
4132 +
4133 + if ( key !== undefined ) {
4134 +
4135 + // Support array or space separated string of keys
4136 + if ( Array.isArray( key ) ) {
4137 +
4138 + // If key is an array of keys...
4139 + // We always set camelCase keys, so remove that.
4140 + key = key.map( camelCase );
4141 + } else {
4142 + key = camelCase( key );
4143 +
4144 + // If a key with the spaces exists, use it.
4145 + // Otherwise, create an array by matching non-whitespace
4146 + key = key in cache ?
4147 + [ key ] :
4148 + ( key.match( rnothtmlwhite ) || [] );
4149 + }
4150 +
4151 + i = key.length;
4152 +
4153 + while ( i-- ) {
4154 + delete cache[ key[ i ] ];
4155 + }
4156 + }
4157 +
4158 + // Remove the expando if there's no more data
4159 + if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
4160 +
4161 + // Support: Chrome <=35 - 45
4162 + // Webkit & Blink performance suffers when deleting properties
4163 + // from DOM nodes, so set to undefined instead
4164 + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4165 + if ( owner.nodeType ) {
4166 + owner[ this.expando ] = undefined;
4167 + } else {
4168 + delete owner[ this.expando ];
4169 + }
4170 + }
4171 + },
4172 + hasData: function( owner ) {
4173 + var cache = owner[ this.expando ];
4174 + return cache !== undefined && !jQuery.isEmptyObject( cache );
4175 + }
4176 +};
4177 +var dataPriv = new Data();
4178 +
4179 +var dataUser = new Data();
4180 +
4181 +
4182 +
4183 +// Implementation Summary
4184 +//
4185 +// 1. Enforce API surface and semantic compatibility with 1.9.x branch
4186 +// 2. Improve the module's maintainability by reducing the storage
4187 +// paths to a single mechanism.
4188 +// 3. Use the same single mechanism to support "private" and "user" data.
4189 +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4190 +// 5. Avoid exposing implementation details on user objects (eg. expando properties)
4191 +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
4192 +
4193 +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4194 + rmultiDash = /[A-Z]/g;
4195 +
4196 +function getData( data ) {
4197 + if ( data === "true" ) {
4198 + return true;
4199 + }
4200 +
4201 + if ( data === "false" ) {
4202 + return false;
4203 + }
4204 +
4205 + if ( data === "null" ) {
4206 + return null;
4207 + }
4208 +
4209 + // Only convert to a number if it doesn't change the string
4210 + if ( data === +data + "" ) {
4211 + return +data;
4212 + }
4213 +
4214 + if ( rbrace.test( data ) ) {
4215 + return JSON.parse( data );
4216 + }
4217 +
4218 + return data;
4219 +}
4220 +
4221 +function dataAttr( elem, key, data ) {
4222 + var name;
4223 +
4224 + // If nothing was found internally, try to fetch any
4225 + // data from the HTML5 data-* attribute
4226 + if ( data === undefined && elem.nodeType === 1 ) {
4227 + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
4228 + data = elem.getAttribute( name );
4229 +
4230 + if ( typeof data === "string" ) {
4231 + try {
4232 + data = getData( data );
4233 + } catch ( e ) {}
4234 +
4235 + // Make sure we set the data so it isn't changed later
4236 + dataUser.set( elem, key, data );
4237 + } else {
4238 + data = undefined;
4239 + }
4240 + }
4241 + return data;
4242 +}
4243 +
4244 +jQuery.extend( {
4245 + hasData: function( elem ) {
4246 + return dataUser.hasData( elem ) || dataPriv.hasData( elem );
4247 + },
4248 +
4249 + data: function( elem, name, data ) {
4250 + return dataUser.access( elem, name, data );
4251 + },
4252 +
4253 + removeData: function( elem, name ) {
4254 + dataUser.remove( elem, name );
4255 + },
4256 +
4257 + // TODO: Now that all calls to _data and _removeData have been replaced
4258 + // with direct calls to dataPriv methods, these can be deprecated.
4259 + _data: function( elem, name, data ) {
4260 + return dataPriv.access( elem, name, data );
4261 + },
4262 +
4263 + _removeData: function( elem, name ) {
4264 + dataPriv.remove( elem, name );
4265 + }
4266 +} );
4267 +
4268 +jQuery.fn.extend( {
4269 + data: function( key, value ) {
4270 + var i, name, data,
4271 + elem = this[ 0 ],
4272 + attrs = elem && elem.attributes;
4273 +
4274 + // Gets all values
4275 + if ( key === undefined ) {
4276 + if ( this.length ) {
4277 + data = dataUser.get( elem );
4278 +
4279 + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
4280 + i = attrs.length;
4281 + while ( i-- ) {
4282 +
4283 + // Support: IE 11 only
4284 + // The attrs elements can be null (#14894)
4285 + if ( attrs[ i ] ) {
4286 + name = attrs[ i ].name;
4287 + if ( name.indexOf( "data-" ) === 0 ) {
4288 + name = camelCase( name.slice( 5 ) );
4289 + dataAttr( elem, name, data[ name ] );
4290 + }
4291 + }
4292 + }
4293 + dataPriv.set( elem, "hasDataAttrs", true );
4294 + }
4295 + }
4296 +
4297 + return data;
4298 + }
4299 +
4300 + // Sets multiple values
4301 + if ( typeof key === "object" ) {
4302 + return this.each( function() {
4303 + dataUser.set( this, key );
4304 + } );
4305 + }
4306 +
4307 + return access( this, function( value ) {
4308 + var data;
4309 +
4310 + // The calling jQuery object (element matches) is not empty
4311 + // (and therefore has an element appears at this[ 0 ]) and the
4312 + // `value` parameter was not undefined. An empty jQuery object
4313 + // will result in `undefined` for elem = this[ 0 ] which will
4314 + // throw an exception if an attempt to read a data cache is made.
4315 + if ( elem && value === undefined ) {
4316 +
4317 + // Attempt to get data from the cache
4318 + // The key will always be camelCased in Data
4319 + data = dataUser.get( elem, key );
4320 + if ( data !== undefined ) {
4321 + return data;
4322 + }
4323 +
4324 + // Attempt to "discover" the data in
4325 + // HTML5 custom data-* attrs
4326 + data = dataAttr( elem, key );
4327 + if ( data !== undefined ) {
4328 + return data;
4329 + }
4330 +
4331 + // We tried really hard, but the data doesn't exist.
4332 + return;
4333 + }
4334 +
4335 + // Set the data...
4336 + this.each( function() {
4337 +
4338 + // We always store the camelCased key
4339 + dataUser.set( this, key, value );
4340 + } );
4341 + }, null, value, arguments.length > 1, null, true );
4342 + },
4343 +
4344 + removeData: function( key ) {
4345 + return this.each( function() {
4346 + dataUser.remove( this, key );
4347 + } );
4348 + }
4349 +} );
4350 +
4351 +
4352 +jQuery.extend( {
4353 + queue: function( elem, type, data ) {
4354 + var queue;
4355 +
4356 + if ( elem ) {
4357 + type = ( type || "fx" ) + "queue";
4358 + queue = dataPriv.get( elem, type );
4359 +
4360 + // Speed up dequeue by getting out quickly if this is just a lookup
4361 + if ( data ) {
4362 + if ( !queue || Array.isArray( data ) ) {
4363 + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
4364 + } else {
4365 + queue.push( data );
4366 + }
4367 + }
4368 + return queue || [];
4369 + }
4370 + },
4371 +
4372 + dequeue: function( elem, type ) {
4373 + type = type || "fx";
4374 +
4375 + var queue = jQuery.queue( elem, type ),
4376 + startLength = queue.length,
4377 + fn = queue.shift(),
4378 + hooks = jQuery._queueHooks( elem, type ),
4379 + next = function() {
4380 + jQuery.dequeue( elem, type );
4381 + };
4382 +
4383 + // If the fx queue is dequeued, always remove the progress sentinel
4384 + if ( fn === "inprogress" ) {
4385 + fn = queue.shift();
4386 + startLength--;
4387 + }
4388 +
4389 + if ( fn ) {
4390 +
4391 + // Add a progress sentinel to prevent the fx queue from being
4392 + // automatically dequeued
4393 + if ( type === "fx" ) {
4394 + queue.unshift( "inprogress" );
4395 + }
4396 +
4397 + // Clear up the last queue stop function
4398 + delete hooks.stop;
4399 + fn.call( elem, next, hooks );
4400 + }
4401 +
4402 + if ( !startLength && hooks ) {
4403 + hooks.empty.fire();
4404 + }
4405 + },
4406 +
4407 + // Not public - generate a queueHooks object, or return the current one
4408 + _queueHooks: function( elem, type ) {
4409 + var key = type + "queueHooks";
4410 + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
4411 + empty: jQuery.Callbacks( "once memory" ).add( function() {
4412 + dataPriv.remove( elem, [ type + "queue", key ] );
4413 + } )
4414 + } );
4415 + }
4416 +} );
4417 +
4418 +jQuery.fn.extend( {
4419 + queue: function( type, data ) {
4420 + var setter = 2;
4421 +
4422 + if ( typeof type !== "string" ) {
4423 + data = type;
4424 + type = "fx";
4425 + setter--;
4426 + }
4427 +
4428 + if ( arguments.length < setter ) {
4429 + return jQuery.queue( this[ 0 ], type );
4430 + }
4431 +
4432 + return data === undefined ?
4433 + this :
4434 + this.each( function() {
4435 + var queue = jQuery.queue( this, type, data );
4436 +
4437 + // Ensure a hooks for this queue
4438 + jQuery._queueHooks( this, type );
4439 +
4440 + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
4441 + jQuery.dequeue( this, type );
4442 + }
4443 + } );
4444 + },
4445 + dequeue: function( type ) {
4446 + return this.each( function() {
4447 + jQuery.dequeue( this, type );
4448 + } );
4449 + },
4450 + clearQueue: function( type ) {
4451 + return this.queue( type || "fx", [] );
4452 + },
4453 +
4454 + // Get a promise resolved when queues of a certain type
4455 + // are emptied (fx is the type by default)
4456 + promise: function( type, obj ) {
4457 + var tmp,
4458 + count = 1,
4459 + defer = jQuery.Deferred(),
4460 + elements = this,
4461 + i = this.length,
4462 + resolve = function() {
4463 + if ( !( --count ) ) {
4464 + defer.resolveWith( elements, [ elements ] );
4465 + }
4466 + };
4467 +
4468 + if ( typeof type !== "string" ) {
4469 + obj = type;
4470 + type = undefined;
4471 + }
4472 + type = type || "fx";
4473 +
4474 + while ( i-- ) {
4475 + tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
4476 + if ( tmp && tmp.empty ) {
4477 + count++;
4478 + tmp.empty.add( resolve );
4479 + }
4480 + }
4481 + resolve();
4482 + return defer.promise( obj );
4483 + }
4484 +} );
4485 +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
4486 +
4487 +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
4488 +
4489 +
4490 +var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4491 +
4492 +var documentElement = document.documentElement;
4493 +
4494 +
4495 +
4496 + var isAttached = function( elem ) {
4497 + return jQuery.contains( elem.ownerDocument, elem );
4498 + },
4499 + composed = { composed: true };
4500 +
4501 + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
4502 + // Check attachment across shadow DOM boundaries when possible (gh-3504)
4503 + // Support: iOS 10.0-10.2 only
4504 + // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
4505 + // leading to errors. We need to check for `getRootNode`.
4506 + if ( documentElement.getRootNode ) {
4507 + isAttached = function( elem ) {
4508 + return jQuery.contains( elem.ownerDocument, elem ) ||
4509 + elem.getRootNode( composed ) === elem.ownerDocument;
4510 + };
4511 + }
4512 +var isHiddenWithinTree = function( elem, el ) {
4513 +
4514 + // isHiddenWithinTree might be called from jQuery#filter function;
4515 + // in that case, element will be second argument
4516 + elem = el || elem;
4517 +
4518 + // Inline style trumps all
4519 + return elem.style.display === "none" ||
4520 + elem.style.display === "" &&
4521 +
4522 + // Otherwise, check computed style
4523 + // Support: Firefox <=43 - 45
4524 + // Disconnected elements can have computed display: none, so first confirm that elem is
4525 + // in the document.
4526 + isAttached( elem ) &&
4527 +
4528 + jQuery.css( elem, "display" ) === "none";
4529 + };
4530 +
4531 +var swap = function( elem, options, callback, args ) {
4532 + var ret, name,
4533 + old = {};
4534 +
4535 + // Remember the old values, and insert the new ones
4536 + for ( name in options ) {
4537 + old[ name ] = elem.style[ name ];
4538 + elem.style[ name ] = options[ name ];
4539 + }
4540 +
4541 + ret = callback.apply( elem, args || [] );
4542 +
4543 + // Revert the old values
4544 + for ( name in options ) {
4545 + elem.style[ name ] = old[ name ];
4546 + }
4547 +
4548 + return ret;
4549 +};
4550 +
4551 +
4552 +
4553 +
4554 +function adjustCSS( elem, prop, valueParts, tween ) {
4555 + var adjusted, scale,
4556 + maxIterations = 20,
4557 + currentValue = tween ?
4558 + function() {
4559 + return tween.cur();
4560 + } :
4561 + function() {
4562 + return jQuery.css( elem, prop, "" );
4563 + },
4564 + initial = currentValue(),
4565 + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
4566 +
4567 + // Starting value computation is required for potential unit mismatches
4568 + initialInUnit = elem.nodeType &&
4569 + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
4570 + rcssNum.exec( jQuery.css( elem, prop ) );
4571 +
4572 + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
4573 +
4574 + // Support: Firefox <=54
4575 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
4576 + initial = initial / 2;
4577 +
4578 + // Trust units reported by jQuery.css
4579 + unit = unit || initialInUnit[ 3 ];
4580 +
4581 + // Iteratively approximate from a nonzero starting point
4582 + initialInUnit = +initial || 1;
4583 +
4584 + while ( maxIterations-- ) {
4585 +
4586 + // Evaluate and update our best guess (doubling guesses that zero out).
4587 + // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
4588 + jQuery.style( elem, prop, initialInUnit + unit );
4589 + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
4590 + maxIterations = 0;
4591 + }
4592 + initialInUnit = initialInUnit / scale;
4593 +
4594 + }
4595 +
4596 + initialInUnit = initialInUnit * 2;
4597 + jQuery.style( elem, prop, initialInUnit + unit );
4598 +
4599 + // Make sure we update the tween properties later on
4600 + valueParts = valueParts || [];
4601 + }
4602 +
4603 + if ( valueParts ) {
4604 + initialInUnit = +initialInUnit || +initial || 0;
4605 +
4606 + // Apply relative offset (+=/-=) if specified
4607 + adjusted = valueParts[ 1 ] ?
4608 + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
4609 + +valueParts[ 2 ];
4610 + if ( tween ) {
4611 + tween.unit = unit;
4612 + tween.start = initialInUnit;
4613 + tween.end = adjusted;
4614 + }
4615 + }
4616 + return adjusted;
4617 +}
4618 +
4619 +
4620 +var defaultDisplayMap = {};
4621 +
4622 +function getDefaultDisplay( elem ) {
4623 + var temp,
4624 + doc = elem.ownerDocument,
4625 + nodeName = elem.nodeName,
4626 + display = defaultDisplayMap[ nodeName ];
4627 +
4628 + if ( display ) {
4629 + return display;
4630 + }
4631 +
4632 + temp = doc.body.appendChild( doc.createElement( nodeName ) );
4633 + display = jQuery.css( temp, "display" );
4634 +
4635 + temp.parentNode.removeChild( temp );
4636 +
4637 + if ( display === "none" ) {
4638 + display = "block";
4639 + }
4640 + defaultDisplayMap[ nodeName ] = display;
4641 +
4642 + return display;
4643 +}
4644 +
4645 +function showHide( elements, show ) {
4646 + var display, elem,
4647 + values = [],
4648 + index = 0,
4649 + length = elements.length;
4650 +
4651 + // Determine new display value for elements that need to change
4652 + for ( ; index < length; index++ ) {
4653 + elem = elements[ index ];
4654 + if ( !elem.style ) {
4655 + continue;
4656 + }
4657 +
4658 + display = elem.style.display;
4659 + if ( show ) {
4660 +
4661 + // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
4662 + // check is required in this first loop unless we have a nonempty display value (either
4663 + // inline or about-to-be-restored)
4664 + if ( display === "none" ) {
4665 + values[ index ] = dataPriv.get( elem, "display" ) || null;
4666 + if ( !values[ index ] ) {
4667 + elem.style.display = "";
4668 + }
4669 + }
4670 + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
4671 + values[ index ] = getDefaultDisplay( elem );
4672 + }
4673 + } else {
4674 + if ( display !== "none" ) {
4675 + values[ index ] = "none";
4676 +
4677 + // Remember what we're overwriting
4678 + dataPriv.set( elem, "display", display );
4679 + }
4680 + }
4681 + }
4682 +
4683 + // Set the display of the elements in a second loop to avoid constant reflow
4684 + for ( index = 0; index < length; index++ ) {
4685 + if ( values[ index ] != null ) {
4686 + elements[ index ].style.display = values[ index ];
4687 + }
4688 + }
4689 +
4690 + return elements;
4691 +}
4692 +
4693 +jQuery.fn.extend( {
4694 + show: function() {
4695 + return showHide( this, true );
4696 + },
4697 + hide: function() {
4698 + return showHide( this );
4699 + },
4700 + toggle: function( state ) {
4701 + if ( typeof state === "boolean" ) {
4702 + return state ? this.show() : this.hide();
4703 + }
4704 +
4705 + return this.each( function() {
4706 + if ( isHiddenWithinTree( this ) ) {
4707 + jQuery( this ).show();
4708 + } else {
4709 + jQuery( this ).hide();
4710 + }
4711 + } );
4712 + }
4713 +} );
4714 +var rcheckableType = ( /^(?:checkbox|radio)$/i );
4715 +
4716 +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
4717 +
4718 +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
4719 +
4720 +
4721 +
4722 +// We have to close these tags to support XHTML (#13200)
4723 +var wrapMap = {
4724 +
4725 + // Support: IE <=9 only
4726 + option: [ 1, "<select multiple='multiple'>", "</select>" ],
4727 +
4728 + // XHTML parsers do not magically insert elements in the
4729 + // same way that tag soup parsers do. So we cannot shorten
4730 + // this by omitting <tbody> or other required elements.
4731 + thead: [ 1, "<table>", "</table>" ],
4732 + col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
4733 + tr: [ 2, "<table><tbody>", "</tbody></table>" ],
4734 + td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
4735 +
4736 + _default: [ 0, "", "" ]
4737 +};
4738 +
4739 +// Support: IE <=9 only
4740 +wrapMap.optgroup = wrapMap.option;
4741 +
4742 +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4743 +wrapMap.th = wrapMap.td;
4744 +
4745 +
4746 +function getAll( context, tag ) {
4747 +
4748 + // Support: IE <=9 - 11 only
4749 + // Use typeof to avoid zero-argument method invocation on host objects (#15151)
4750 + var ret;
4751 +
4752 + if ( typeof context.getElementsByTagName !== "undefined" ) {
4753 + ret = context.getElementsByTagName( tag || "*" );
4754 +
4755 + } else if ( typeof context.querySelectorAll !== "undefined" ) {
4756 + ret = context.querySelectorAll( tag || "*" );
4757 +
4758 + } else {
4759 + ret = [];
4760 + }
4761 +
4762 + if ( tag === undefined || tag && nodeName( context, tag ) ) {
4763 + return jQuery.merge( [ context ], ret );
4764 + }
4765 +
4766 + return ret;
4767 +}
4768 +
4769 +
4770 +// Mark scripts as having already been evaluated
4771 +function setGlobalEval( elems, refElements ) {
4772 + var i = 0,
4773 + l = elems.length;
4774 +
4775 + for ( ; i < l; i++ ) {
4776 + dataPriv.set(
4777 + elems[ i ],
4778 + "globalEval",
4779 + !refElements || dataPriv.get( refElements[ i ], "globalEval" )
4780 + );
4781 + }
4782 +}
4783 +
4784 +
4785 +var rhtml = /<|&#?\w+;/;
4786 +
4787 +function buildFragment( elems, context, scripts, selection, ignored ) {
4788 + var elem, tmp, tag, wrap, attached, j,
4789 + fragment = context.createDocumentFragment(),
4790 + nodes = [],
4791 + i = 0,
4792 + l = elems.length;
4793 +
4794 + for ( ; i < l; i++ ) {
4795 + elem = elems[ i ];
4796 +
4797 + if ( elem || elem === 0 ) {
4798 +
4799 + // Add nodes directly
4800 + if ( toType( elem ) === "object" ) {
4801 +
4802 + // Support: Android <=4.0 only, PhantomJS 1 only
4803 + // push.apply(_, arraylike) throws on ancient WebKit
4804 + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
4805 +
4806 + // Convert non-html into a text node
4807 + } else if ( !rhtml.test( elem ) ) {
4808 + nodes.push( context.createTextNode( elem ) );
4809 +
4810 + // Convert html into DOM nodes
4811 + } else {
4812 + tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
4813 +
4814 + // Deserialize a standard representation
4815 + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
4816 + wrap = wrapMap[ tag ] || wrapMap._default;
4817 + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
4818 +
4819 + // Descend through wrappers to the right content
4820 + j = wrap[ 0 ];
4821 + while ( j-- ) {
4822 + tmp = tmp.lastChild;
4823 + }
4824 +
4825 + // Support: Android <=4.0 only, PhantomJS 1 only
4826 + // push.apply(_, arraylike) throws on ancient WebKit
4827 + jQuery.merge( nodes, tmp.childNodes );
4828 +
4829 + // Remember the top-level container
4830 + tmp = fragment.firstChild;
4831 +
4832 + // Ensure the created nodes are orphaned (#12392)
4833 + tmp.textContent = "";
4834 + }
4835 + }
4836 + }
4837 +
4838 + // Remove wrapper from fragment
4839 + fragment.textContent = "";
4840 +
4841 + i = 0;
4842 + while ( ( elem = nodes[ i++ ] ) ) {
4843 +
4844 + // Skip elements already in the context collection (trac-4087)
4845 + if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
4846 + if ( ignored ) {
4847 + ignored.push( elem );
4848 + }
4849 + continue;
4850 + }
4851 +
4852 + attached = isAttached( elem );
4853 +
4854 + // Append to fragment
4855 + tmp = getAll( fragment.appendChild( elem ), "script" );
4856 +
4857 + // Preserve script evaluation history
4858 + if ( attached ) {
4859 + setGlobalEval( tmp );
4860 + }
4861 +
4862 + // Capture executables
4863 + if ( scripts ) {
4864 + j = 0;
4865 + while ( ( elem = tmp[ j++ ] ) ) {
4866 + if ( rscriptType.test( elem.type || "" ) ) {
4867 + scripts.push( elem );
4868 + }
4869 + }
4870 + }
4871 + }
4872 +
4873 + return fragment;
4874 +}
4875 +
4876 +
4877 +( function() {
4878 + var fragment = document.createDocumentFragment(),
4879 + div = fragment.appendChild( document.createElement( "div" ) ),
4880 + input = document.createElement( "input" );
4881 +
4882 + // Support: Android 4.0 - 4.3 only
4883 + // Check state lost if the name is set (#11217)
4884 + // Support: Windows Web Apps (WWA)
4885 + // `name` and `type` must use .setAttribute for WWA (#14901)
4886 + input.setAttribute( "type", "radio" );
4887 + input.setAttribute( "checked", "checked" );
4888 + input.setAttribute( "name", "t" );
4889 +
4890 + div.appendChild( input );
4891 +
4892 + // Support: Android <=4.1 only
4893 + // Older WebKit doesn't clone checked state correctly in fragments
4894 + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4895 +
4896 + // Support: IE <=11 only
4897 + // Make sure textarea (and checkbox) defaultValue is properly cloned
4898 + div.innerHTML = "<textarea>x</textarea>";
4899 + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4900 +} )();
4901 +
4902 +
4903 +var
4904 + rkeyEvent = /^key/,
4905 + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
4906 + rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
4907 +
4908 +function returnTrue() {
4909 + return true;
4910 +}
4911 +
4912 +function returnFalse() {
4913 + return false;
4914 +}
4915 +
4916 +// Support: IE <=9 - 11+
4917 +// focus() and blur() are asynchronous, except when they are no-op.
4918 +// So expect focus to be synchronous when the element is already active,
4919 +// and blur to be synchronous when the element is not already active.
4920 +// (focus and blur are always synchronous in other supported browsers,
4921 +// this just defines when we can count on it).
4922 +function expectSync( elem, type ) {
4923 + return ( elem === safeActiveElement() ) === ( type === "focus" );
4924 +}
4925 +
4926 +// Support: IE <=9 only
4927 +// Accessing document.activeElement can throw unexpectedly
4928 +// https://bugs.jquery.com/ticket/13393
4929 +function safeActiveElement() {
4930 + try {
4931 + return document.activeElement;
4932 + } catch ( err ) { }
4933 +}
4934 +
4935 +function on( elem, types, selector, data, fn, one ) {
4936 + var origFn, type;
4937 +
4938 + // Types can be a map of types/handlers
4939 + if ( typeof types === "object" ) {
4940 +
4941 + // ( types-Object, selector, data )
4942 + if ( typeof selector !== "string" ) {
4943 +
4944 + // ( types-Object, data )
4945 + data = data || selector;
4946 + selector = undefined;
4947 + }
4948 + for ( type in types ) {
4949 + on( elem, type, selector, data, types[ type ], one );
4950 + }
4951 + return elem;
4952 + }
4953 +
4954 + if ( data == null && fn == null ) {
4955 +
4956 + // ( types, fn )
4957 + fn = selector;
4958 + data = selector = undefined;
4959 + } else if ( fn == null ) {
4960 + if ( typeof selector === "string" ) {
4961 +
4962 + // ( types, selector, fn )
4963 + fn = data;
4964 + data = undefined;
4965 + } else {
4966 +
4967 + // ( types, data, fn )
4968 + fn = data;
4969 + data = selector;
4970 + selector = undefined;
4971 + }
4972 + }
4973 + if ( fn === false ) {
4974 + fn = returnFalse;
4975 + } else if ( !fn ) {
4976 + return elem;
4977 + }
4978 +
4979 + if ( one === 1 ) {
4980 + origFn = fn;
4981 + fn = function( event ) {
4982 +
4983 + // Can use an empty set, since event contains the info
4984 + jQuery().off( event );
4985 + return origFn.apply( this, arguments );
4986 + };
4987 +
4988 + // Use same guid so caller can remove using origFn
4989 + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
4990 + }
4991 + return elem.each( function() {
4992 + jQuery.event.add( this, types, fn, data, selector );
4993 + } );
4994 +}
4995 +
4996 +/*
4997 + * Helper functions for managing events -- not part of the public interface.
4998 + * Props to Dean Edwards' addEvent library for many of the ideas.
4999 + */

This file is too large to show in full.

src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.min.js new
+2
@@ -0,0 +1,2 @@
1 +/*! jQuery v3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */
2 +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(g,e){"use strict";var t=[],v=g.document,r=Object.getPrototypeOf,s=t.slice,y=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,m=n.hasOwnProperty,a=m.toString,l=a.call(Object),b={},x=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},w=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function C(e,t,n){var r,i,o=(n=n||v).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function T(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",E=function(e,t){return new E.fn.init(e,t)},d=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function p(e){var t=!!e&&"length"in e&&e.length,n=T(e);return!x(e)&&!w(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:f,constructor:E,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||x(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(E.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||E.isPlainObject(n)?n:{},i=!1,a[t]=E.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},E.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=m.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){C(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(d,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?E.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return y.apply([],a)},guid:1,support:b}),"function"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,p,x,o,i,h,f,g,w,u,l,C,T,a,E,v,s,c,y,N="sizzle"+1*new Date,m=n.document,A=0,r=0,d=ue(),b=ue(),k=ue(),S=ue(),D=function(e,t){return e===t&&(l=!0),0},L={}.hasOwnProperty,t=[],j=t.pop,q=t.push,O=t.push,P=t.slice,H=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},I="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",R="[\\x20\\t\\r\\n\\f]",B="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+R+"*("+B+")(?:"+R+"*([*^$|!~]?=)"+R+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+B+"))|)"+R+"*\\]",W=":("+B+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",$=new RegExp(R+"+","g"),F=new RegExp("^"+R+"+|((?:^|[^\\\\])(?:\\\\.)*)"+R+"+$","g"),z=new RegExp("^"+R+"*,"+R+"*"),_=new RegExp("^"+R+"*([>+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+R+"?|("+R+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&((e?e.ownerDocument||e:m)!==T&&C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!S[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=N),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+be(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){S(t,!0)}finally{s===N&&e.removeAttribute("id")}}}return g(t.replace(F,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[N]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),m!==T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=N,!T.getElementsByName||!T.getElementsByName(N).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+N+"'></a><select id='"+N+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+N+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+N+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument===m&&y(m,e)?-1:t===T||t.ownerDocument===m&&y(m,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===T?-1:t===T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==T&&C(e),p.matchesSelector&&E&&!S[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){S(t,!0)}return 0<se(t,T,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==T&&C(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==T&&C(e);var n=x.attrHandle[t.toLowerCase()],r=n&&L.call(x.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:p.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!p.detectDuplicates,u=!p.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(x=se.selectors={cacheLength:50,createPseudo:le,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=d[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&d(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace($," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),b="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=b&&e.nodeName.toLowerCase(),d=!n&&!b,p=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(b?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&d){p=(s=(r=(i=(o=(a=c)[N]||(a[N]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===A&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(p=s=0)||u.pop())if(1===a.nodeType&&++p&&a===e){i[h]=[A,s,p];break}}else if(d&&(p=s=(r=(i=(o=(a=e)[N]||(a[N]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===A&&r[1]),!1===p)while(a=++s&&a&&a[l]||(p=s=0)||u.pop())if((b?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++p&&(d&&((i=(o=a[N]||(a[N]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[A,p]),a===e))break;return(p-=v)===g||p%g==0&&0<=p/g}}},PSEUDO:function(e,o){var t,a=x.pseudos[e]||x.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[N]?a(o):1<a.length?(t=[e,e,"",o],x.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=H(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(F,"$1"));return s[N]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return X.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===T.activeElement&&(!T.hasFocus||T.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return K.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=x.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})x.pseudos[e]=pe(e);for(e in{submit:!0,reset:!0})x.pseudos[e]=he(e);function me(){}function be(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function xe(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,d=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[A,d];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[N]||(e[N]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===A&&r[1]===d)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Ce(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(p,h,g,v,y,e){return v&&!v[N]&&(v=Te(v)),y&&!y[N]&&(y=Te(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!p||!e&&h?c:Ce(c,s,p,n,r),d=g?y||(e?p:l||v)?[]:t:f;if(g&&g(f,d,n,r),v){i=Ce(d,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(d[u[o]]=!(f[u[o]]=a))}if(e){if(y||p){if(y){i=[],o=d.length;while(o--)(a=d[o])&&i.push(f[o]=a);y(null,d=[],i,r)}o=d.length;while(o--)(a=d[o])&&-1<(i=y?H(e,a):s[o])&&(e[i]=!(t[i]=a))}}else d=Ce(d===t?d.splice(l,d.length):d),y?y(null,t,d,r):O.apply(t,d)})}function Ee(e){for(var i,t,n,r=e.length,o=x.relative[e[0].type],a=o||x.relative[" "],s=o?1:0,u=xe(function(e){return e===i},a,!0),l=xe(function(e){return-1<H(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=x.relative[e[s].type])c=[xe(we(c),t)];else{if((t=x.filter[e[s].type].apply(null,e[s].matches))[N]){for(n=++s;n<r;n++)if(x.relative[e[n].type])break;return Te(1<s&&we(c),1<s&&be(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(F,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&be(e))}c.push(t)}return we(c)}return me.prototype=x.filters=x.pseudos,x.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=b[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=x.preFilter;while(a){for(o in n&&!(r=z.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=_.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(F," ")}),a=a.slice(n.length)),x.filter)!(r=Q[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):b(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,b,r,i=[],o=[],a=k[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[N]?i.push(a):o.push(a);(a=k(e,(v=o,m=0<(y=i).length,b=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],d=w,p=e||b&&x.find.TAG("*",i),h=A+=null==d?1:Math.random()||.1,g=p.length;for(i&&(w=t===T||t||i);l!==g&&null!=(o=p[l]);l++){if(b&&o){a=0,t||o.ownerDocument===T||(C(o),n=!E);while(s=v[a++])if(s(o,t||T,n)){r.push(o);break}i&&(A=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=j.call(r));f=Ce(f)}O.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(A=h,w=d),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&x.relative[o[1].type]){if(!(t=(x.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=Q.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],x.relative[s=a.type])break;if((u=x.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&be(o)))return O.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},p.sortStable=N.split("").sort(D).join("")===N,p.detectDuplicates=!!l,C(),p.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),p.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(I,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(g);E.find=h,E.expr=h.selectors,E.expr[":"]=E.expr.pseudos,E.uniqueSort=E.unique=h.uniqueSort,E.text=h.getText,E.isXMLDoc=h.isXML,E.contains=h.contains,E.escapeSelector=h.escape;var N=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&E(e).is(n))break;r.push(e)}return r},A=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=E.expr.match.needsContext;function S(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,n,r){return x(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1<i.call(n,e)!==r}):E.filter(n,e,r)}E.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?E.find.matchesSelector(r,e)?[r]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<r;t++)if(E.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)E.find(e,i[t],n);return 1<r?E.uniqueSort(n):n},filter:function(e){return this.pushStack(L(this,e||[],!1))},not:function(e){return this.pushStack(L(this,e||[],!0))},is:function(e){return!!L(this,"string"==typeof e&&k.test(e)?E(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),D.test(r[1])&&E.isPlainObject(t))for(r in t)x(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):x(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,j=E(v);var O=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&E(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?E.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(E(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return N(e,"parentNode")},parentsUntil:function(e,t,n){return N(e,"parentNode",n)},next:function(e){return H(e,"nextSibling")},prev:function(e){return H(e,"previousSibling")},nextAll:function(e){return N(e,"nextSibling")},prevAll:function(e){return N(e,"previousSibling")},nextUntil:function(e,t,n){return N(e,"nextSibling",n)},prevUntil:function(e,t,n){return N(e,"previousSibling",n)},siblings:function(e){return A((e.parentNode||{}).firstChild,e)},children:function(e){return A(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(S(e,"template")&&(e=e.content||e),E.merge([],e.childNodes))}},function(r,i){E.fn[r]=function(e,t){var n=E.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=E.filter(t,n)),1<this.length&&(P[r]||E.uniqueSort(n),O.test(r)&&n.reverse()),this.pushStack(n)}});var I=/[^\x20\t\r\n\f]+/g;function R(e){return e}function B(e){throw e}function M(e,t,n,r){var i;try{e&&x(i=e.promise)?i.call(e).done(t).fail(n):e&&x(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},E.each(e.match(I)||[],function(e,t){n[t]=!0}),n):E.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){E.each(e,function(e,t){x(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==T(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return E.each(arguments,function(e,t){var n;while(-1<(n=E.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<E.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},E.extend({Deferred:function(e){var o=[["notify","progress",E.Callbacks("memory"),E.Callbacks("memory"),2],["resolve","done",E.Callbacks("once memory"),E.Callbacks("once memory"),0,"resolved"],["reject","fail",E.Callbacks("once memory"),E.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return E.Deferred(function(r){E.each(o,function(e,t){var n=x(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&x(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,x(t)?s?t.call(e,l(u,o,R,s),l(u,o,B,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,B,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==B&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(E.Deferred.getStackHook&&(t.stackTrace=E.Deferred.getStackHook()),g.setTimeout(t))}}return E.Deferred(function(e){o[0][3].add(l(0,e,x(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,x(t)?t:R)),o[2][3].add(l(0,e,x(n)?n:B))}).promise()},promise:function(e){return null!=e?E.extend(e,a):a}},s={};return E.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=E.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(M(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||x(i[t]&&i[t].then)))return o.then();while(t--)M(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){g.console&&g.console.warn&&e&&W.test(e.name)&&g.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},E.readyException=function(e){g.setTimeout(function(){throw e})};var $=E.Deferred();function F(){v.removeEventListener("DOMContentLoaded",F),g.removeEventListener("load",F),E.ready()}E.fn.ready=function(e){return $.then(e)["catch"](function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||$.resolveWith(v,[E])}}),E.ready.then=$.then,"complete"===v.readyState||"loading"!==v.readyState&&!v.documentElement.doScroll?g.setTimeout(E.ready):(v.addEventListener("DOMContentLoaded",F),g.addEventListener("load",F));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===T(n))for(s in i=!0,n)z(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,x(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(E(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(U,V)}var Q=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=E.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Q(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(I)||[]).length;while(n--)delete r[t[n]]}(void 0===t||E.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var G=new Y,K=new Y,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}K.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return K.hasData(e)||G.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return G.access(e,t,n)},_removeData:function(e,t){G.remove(e,t)}}),E.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=K.get(o),1===o.nodeType&&!G.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),ee(o,r,i[r]));G.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){K.set(this,n)}):z(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=K.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){K.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),E.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=G.get(e,t),n&&(!r||Array.isArray(n)?r=G.access(e,t,E.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=E.queue(e,t),r=n.length,i=n.shift(),o=E._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){E.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return G.get(e,n)||G.access(e,n,{empty:E.Callbacks("once memory").add(function(){G.remove(e,[t+"queue",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=E.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=G.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=v.documentElement,oe=function(e){return E.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return E.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===E.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};var le={};function ce(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=G.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=le[s])||(o=a.body.appendChild(a.createElement(s)),u=E.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),le[s]=u)))):"none"!==n&&(l[c]="none",G.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}E.fn.extend({show:function(){return ce(this,!0)},hide:function(){return ce(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?E(this).show():E(this).hide()})}});var fe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i,he={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)G.set(e[n],"globalEval",!t||G.get(t[n],"globalEval"))}he.optgroup=he.option,he.tbody=he.tfoot=he.colgroup=he.caption=he.thead,he.th=he.td;var ye,me,be=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p<h;p++)if((o=e[p])||0===o)if("object"===T(o))E.merge(d,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=he[s]||he._default,a.innerHTML=u[1]+E.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;E.merge(d,a.childNodes),(a=f.firstChild).textContent=""}else d.push(t.createTextNode(o));f.textContent="",p=0;while(o=d[p++])if(r&&-1<E.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ge(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])pe.test(o.type||"")&&n.push(o)}return f}ye=v.createDocumentFragment().appendChild(v.createElement("div")),(me=v.createElement("input")).setAttribute("type","radio"),me.setAttribute("checked","checked"),me.setAttribute("name","t"),ye.appendChild(me),b.checkClone=ye.cloneNode(!0).cloneNode(!0).lastChild.checked,ye.innerHTML="<textarea>x</textarea>",b.noCloneChecked=!!ye.cloneNode(!0).lastChild.defaultValue;var we=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Ne(){return!1}function Ae(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ne;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return E().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(G.set(e,i,!1),E.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=G.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(E.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),G.set(this,i,r),t=o(this,i),this[i](),r!==(n=G.get(this,i))||t?G.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(G.set(this,i,{value:E.event.trigger(E.extend(r[0],E.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===G.get(e,i)&&E.event.add(e,i,Ee)}E.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&E.find.matchesSelector(ie,i),n.guid||(n.guid=E.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(I)||[""]).length;while(l--)p=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=E.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=E.event.special[p]||{},c=E.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=u[p])||((d=u[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),E.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.hasData(e)&&G.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(I)||[""]).length;while(l--)if(p=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){f=E.event.special[p]||{},d=u[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||E.removeEvent(e,p,v.handle),delete u[p])}else for(p in u)E.event.remove(e,p+t[l],n,r,!0);E.isEmptyObject(u)&&G.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=E.event.fix(e),u=new Array(arguments.length),l=(G.get(this,"events")||{})[s.type]||[],c=E.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=E.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((E.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<E(i,this).index(l):E.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(E.Event.prototype,t,{enumerable:!0,configurable:!0,get:x(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return fe.test(t.type)&&t.click&&S(t,"input")&&Se(t,"click",Ee),!1},trigger:function(e){var t=this||e;return fe.test(t.type)&&t.click&&S(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return fe.test(t.type)&&t.click&&S(t,"input")&&G.get(t,"click")||S(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:Ne,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:Ne,isPropagationStopped:Ne,isImmediatePropagationStopped:Ne,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},E.event.addProp),E.each({focus:"focusin",blur:"focusout"},function(e,t){E.event.special[e]={setup:function(){return Se(this,e,Ae),!1},trigger:function(){return Se(this,e),!0},delegateType:t}}),E.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){E.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),E.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,E(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ne),this.each(function(){E.event.remove(this,e,n,t)})}});var De=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Le=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ie(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(G.hasData(e)&&(o=G.access(e),a=G.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)E.event.add(t,i,l[i][n]);K.hasData(e)&&(s=K.access(e),u=E.extend({},s),K.set(t,u))}}function Re(n,r,i,o){r=y.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,d=f-1,p=r[0],h=x(p);if(h||1<f&&"string"==typeof p&&!b.checkClone&&je.test(p))return n.each(function(e){var t=n.eq(e);h&&(r[0]=p.call(this,e,t.html())),Re(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=E.map(ge(e,"script"),Pe)).length;c<f;c++)u=e,c!==d&&(u=E.clone(u,!0,!0),s&&E.merge(a,ge(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,E.map(a,He),c=0;c<s;c++)u=a[c],pe.test(u.type||"")&&!G.access(u,"globalEval")&&E.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?E._evalUrl&&!u.noModule&&E._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):C(u.textContent.replace(qe,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?E.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||E.cleanData(ge(r)),r.parentNode&&(n&&oe(r)&&ve(ge(r,"script")),r.parentNode.removeChild(r));return e}E.extend({htmlPrefilter:function(e){return e.replace(De,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(b.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(a=ge(c),r=0,i=(o=ge(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&fe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ge(e),a=a||ge(c),r=0,i=o.length;r<i;r++)Ie(o[r],a[r]);else Ie(e,c);return 0<(a=ge(c,"script")).length&&ve(a,!f&&ge(e,"script")),c},cleanData:function(e){for(var t,n,r,i=E.event.special,o=0;void 0!==(n=e[o]);o++)if(Q(n)){if(t=n[G.expando]){if(t.events)for(r in t.events)i[r]?E.event.remove(n,r):E.removeEvent(n,r,t.handle);n[G.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),E.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return z(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ge(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Le.test(e)&&!he[(de.exec(e)||["",""])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ge(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Re(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(ge(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){E.fn[e]=function(e){for(var t,n=[],r=E(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),E(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),We=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=g),t.getComputedStyle(e)},$e=new RegExp(re.join("|"),"i");function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||We(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=E.style(e,t)),!b.pixelBoxStyles()&&Me.test(a)&&$e.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=g.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=v.createElement("div"),u=v.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",b.clearCloneStyle="content-box"===u.style.backgroundClip,E.extend(b,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var _e=["Webkit","Moz","ms"],Ue=v.createElement("div").style,Ve={};function Xe(e){var t=E.cssProps[e]||Ve[e];return t||(e in Ue?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in Ue)return e}(e)||e)}var Qe,Ye,Ge=/^(none|table(?!-c[ea]).+)/,Ke=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ze={letterSpacing:"0",fontWeight:"400"};function et(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function tt(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=E.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=E.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=E.css(e,"border"+re[a]+"Width",!0,i))):(u+=E.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=E.css(e,"border"+re[a]+"Width",!0,i):s+=E.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function nt(e,t,n){var r=We(e),i=(!b.boxSizingReliable()||n)&&"border-box"===E.css(e,"boxSizing",!1,r),o=i,a=Fe(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!b.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===E.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===E.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+tt(e,t,n||(i?"border":"content"),o,r,a)+"px"}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ke.test(t),l=e.style;if(u||(t=Xe(s)),a=E.cssHooks[t]||E.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=function(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return E.css(e,t,"")},u=s(),l=n&&n[3]||(E.cssNumber[t]?"":"px"),c=e.nodeType&&(E.cssNumber[t]||"px"!==l&&+u)&&ne.exec(E.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)E.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,E.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(E.cssNumber[s]?"":"px")),b.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ke.test(t)||(t=Xe(s)),(a=E.cssHooks[t]||E.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ze&&(i=Ze[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),E.each(["height","width"],function(e,u){E.cssHooks[u]={get:function(e,t,n){if(t)return!Ge.test(E.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?nt(e,u,n):ue(e,Je,function(){return nt(e,u,n)})},set:function(e,t,n){var r,i=We(e),o=!b.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===E.css(e,"boxSizing",!1,i),s=n?tt(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-tt(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=E.css(e,u)),et(0,t,s)}}}),E.cssHooks.marginLeft=ze(b.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),E.each({margin:"",padding:"",border:"Width"},function(i,o){E.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(E.cssHooks[i+o].set=et)}),E.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=We(e),i=t.length;a<i;a++)o[t[a]]=E.css(e,t[a],!1,r);return o}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)}}),E.fn.delay=function(r,e){return r=E.fx&&E.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=g.setTimeout(e,r);t.stop=function(){g.clearTimeout(n)}})},Qe=v.createElement("input"),Ye=v.createElement("select").appendChild(v.createElement("option")),Qe.type="checkbox",b.checkOn=""!==Qe.value,b.optSelected=Ye.selected,(Qe=v.createElement("input")).value="t",Qe.type="radio",b.radioValue="t"===Qe.value;var rt,it=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return z(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?E.prop(e,t,n):(1===o&&E.isXMLDoc(e)||(i=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?rt:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=E.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!b.radioValue&&"radio"===t&&S(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(I);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),rt={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\w+/g),function(e,t){var a=it[t]||E.find.attr;it[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=it[o],it[o]=r,r=null!=a(e,t,n)?o:null,it[o]=i),r}});var ot=/^(?:input|select|textarea|button)$/i,at=/^(?:a|area)$/i;function st(e){return(e.match(I)||[]).join(" ")}function ut(e){return e.getAttribute&&e.getAttribute("class")||""}function lt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(I)||[]}E.fn.extend({prop:function(e,t){return z(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&E.isXMLDoc(e)||(t=E.propFix[t]||t,i=E.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,"tabindex");return t?parseInt(t,10):ot.test(e.nodeName)||at.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),b.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(x(t))return this.each(function(e){E(this).addClass(t.call(this,e,ut(this)))});if((e=lt(t)).length)while(n=this[u++])if(i=ut(n),r=1===n.nodeType&&" "+st(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=st(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(x(t))return this.each(function(e){E(this).removeClass(t.call(this,e,ut(this)))});if(!arguments.length)return this.attr("class","");if((e=lt(t)).length)while(n=this[u++])if(i=ut(n),r=1===n.nodeType&&" "+st(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=st(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):x(i)?this.each(function(e){E(this).toggleClass(i.call(this,e,ut(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=E(this),r=lt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=ut(this))&&G.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":G.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+st(ut(n))+" ").indexOf(t))return!0;return!1}});var ct=/\r/g;E.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=x(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,E(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=E.map(t,function(e){return null==e?"":e+""})),(r=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(ct,""):null==e?"":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,"value");return null!=t?t:st(E.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!S(n.parentNode,"optgroup"))){if(t=E(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=E.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<E.inArray(E.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),E.each(["radio","checkbox"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},b.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),b.focusin="onfocusin"in g;var ft=/^(?:focusinfocus|focusoutblur)$/,dt=function(e){e.stopPropagation()};E.extend(E.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,d=[n||v],p=m.call(e,"type")?e.type:e,h=m.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||v,3!==n.nodeType&&8!==n.nodeType&&!ft.test(p+E.event.triggered)&&(-1<p.indexOf(".")&&(p=(h=p.split(".")).shift(),h.sort()),u=p.indexOf(":")<0&&"on"+p,(e=e[E.expando]?e:new E.Event(p,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),c=E.event.special[p]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!w(n)){for(s=c.delegateType||p,ft.test(s+p)||(o=o.parentNode);o;o=o.parentNode)d.push(o),a=o;a===(n.ownerDocument||v)&&d.push(a.defaultView||a.parentWindow||g)}i=0;while((o=d[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||p,(l=(G.get(o,"events")||{})[e.type]&&G.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&Q(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=p,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(d.pop(),t)||!Q(n)||u&&x(n[p])&&!w(n)&&((a=n[u])&&(n[u]=null),E.event.triggered=p,e.isPropagationStopped()&&f.addEventListener(p,dt),n[p](),e.isPropagationStopped()&&f.removeEventListener(p,dt),E.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(r,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),b.focusin||E.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){E.event.simulate(r,e.target,E.event.fix(e))};E.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=G.access(e,r);t||e.addEventListener(n,i,!0),G.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=G.access(e,r)-1;t?G.access(e,r,t):(e.removeEventListener(n,i,!0),G.remove(e,r))}}});var pt,ht=/\[\]$/,gt=/\r?\n/g,vt=/^(?:submit|button|image|reset|file)$/i,yt=/^(?:input|select|textarea|keygen)/i;function mt(n,e,r,i){var t;if(Array.isArray(e))E.each(e,function(e,t){r||ht.test(n)?i(n,t):mt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==T(e))i(n,e);else for(t in e)mt(n+"["+t+"]",e[t],r,i)}E.param=function(e,t){var n,r=[],i=function(e,t){var n=x(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){i(this.name,this.value)});else for(n in e)mt(n,e[n],t,i);return r.join("&")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,"elements");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(":disabled")&&yt.test(this.nodeName)&&!vt.test(e)&&(this.checked||!fe.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(gt,"\r\n")}}):{name:t.name,value:n.replace(gt,"\r\n")}}).get()}}),E.fn.extend({wrapAll:function(e){var t;return this[0]&&(x(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return x(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=x(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},b.createHTMLDocument=((pt=v.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===pt.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(b.createHTMLDocument?((r=(t=v.implementation.createHTMLDocument("")).createElement("base")).href=v.location.href,t.head.appendChild(r)):t=v),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),x(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||ie})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return z(this,function(e,t,n){var r;if(w(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=ze(b.pixelPosition,function(e,t){if(t)return t=Fe(e,n),Me.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return z(this,function(e,t,n){var r;return w(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),E.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),E.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),x(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||E.guid++,i},E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=S,E.isFunction=x,E.isWindow=w,E.camelCase=X,E.type=T,E.now=Date.now,E.isNumeric=function(e){var t=E.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return E});var bt=g.jQuery,xt=g.$;return E.noConflict=function(e){return g.$===E&&(g.$=xt),e&&g.jQuery===E&&(g.jQuery=bt),E},e||(g.jQuery=g.$=E),E});
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery-3.4.1.slim.min.map new
+1
@@ -0,0 +1 @@
1 +{"version":3,"sources":["jquery-3.4.1.slim.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","rtrim","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","swap","old","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","opt","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","cssHooks","opacity","cssNumber","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","initialInUnit","adjustCSS","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","delay","time","fx","speeds","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","propHooks","tabindex","parseInt","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","hidden","visible","offsetHeight","createHTMLDocument","implementation","keepScripts","parsed","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollLeft","scrollTop","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery-3.4.1.slim.min.js"}
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate-vsdoc.js new
+1288
@@ -0,0 +1,1288 @@
1 +/*
2 +* This file has been commented to support Visual Studio Intellisense.
3 +* You should not use this file at runtime inside the browser--it is only
4 +* intended to be used only for design-time IntelliSense. Please use the
5 +* standard jQuery library for all production use.
6 +*
7 +* Comment version: 1.17.0
8 +*/
9 +
10 +/*
11 +* Note: While Microsoft is not the author of this file, Microsoft is
12 +* offering you a license subject to the terms of the Microsoft Software
13 +* License Terms for Microsoft ASP.NET Model View Controller 3.
14 +* Microsoft reserves all other rights. The notices below are provided
15 +* for informational purposes only and are not the license terms under
16 +* which Microsoft distributed this file.
17 +*
18 +* jQuery Validation Plugin - v1.17.0 - 12/5/2016
19 +* https://github.com/jzaefferer/jquery-validation
20 +* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT
21 +*
22 +*/
23 +
24 +(function($) {
25 +
26 +$.extend($.fn, {
27 + // http://docs.jquery.com/Plugins/Validation/validate
28 + validate: function( options ) {
29 + /// <summary>
30 + /// Validates the selected form. This method sets up event handlers for submit, focus,
31 + /// keyup, blur and click to trigger validation of the entire form or individual
32 + /// elements. Each one can be disabled, see the onxxx options (onsubmit, onfocusout,
33 + /// onkeyup, onclick). focusInvalid focuses elements when submitting a invalid form.
34 + /// </summary>
35 + /// <param name="options" type="Object">
36 + /// A set of key/value pairs that configure the validate. All options are optional.
37 + /// </param>
38 +
39 + // if nothing is selected, return nothing; can't chain anyway
40 + if (!this.length) {
41 + options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
42 + return;
43 + }
44 +
45 + // check if a validator for this form was already created
46 + var validator = $.data(this[0], 'validator');
47 + if ( validator ) {
48 + return validator;
49 + }
50 +
51 + validator = new $.validator( options, this[0] );
52 + $.data(this[0], 'validator', validator);
53 +
54 + if ( validator.settings.onsubmit ) {
55 +
56 + // allow suppresing validation by adding a cancel class to the submit button
57 + this.find("input, button").filter(".cancel").click(function() {
58 + validator.cancelSubmit = true;
59 + });
60 +
61 + // when a submitHandler is used, capture the submitting button
62 + if (validator.settings.submitHandler) {
63 + this.find("input, button").filter(":submit").click(function() {
64 + validator.submitButton = this;
65 + });
66 + }
67 +
68 + // validate the form on submit
69 + this.submit( function( event ) {
70 + if ( validator.settings.debug )
71 + // prevent form submit to be able to see console output
72 + event.preventDefault();
73 +
74 + function handle() {
75 + if ( validator.settings.submitHandler ) {
76 + if (validator.submitButton) {
77 + // insert a hidden input as a replacement for the missing submit button
78 + var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
79 + }
80 + validator.settings.submitHandler.call( validator, validator.currentForm );
81 + if (validator.submitButton) {
82 + // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
83 + hidden.remove();
84 + }
85 + return false;
86 + }
87 + return true;
88 + }
89 +
90 + // prevent submit for invalid forms or custom submit handlers
91 + if ( validator.cancelSubmit ) {
92 + validator.cancelSubmit = false;
93 + return handle();
94 + }
95 + if ( validator.form() ) {
96 + if ( validator.pendingRequest ) {
97 + validator.formSubmitted = true;
98 + return false;
99 + }
100 + return handle();
101 + } else {
102 + validator.focusInvalid();
103 + return false;
104 + }
105 + });
106 + }
107 +
108 + return validator;
109 + },
110 + // http://docs.jquery.com/Plugins/Validation/valid
111 + valid: function() {
112 + /// <summary>
113 + /// Checks if the selected form is valid or if all selected elements are valid.
114 + /// validate() needs to be called on the form before checking it using this method.
115 + /// </summary>
116 + /// <returns type="Boolean" />
117 +
118 + if ( $(this[0]).is('form')) {
119 + return this.validate().form();
120 + } else {
121 + var valid = true;
122 + var validator = $(this[0].form).validate();
123 + this.each(function() {
124 + valid &= validator.element(this);
125 + });
126 + return valid;
127 + }
128 + },
129 + // attributes: space seperated list of attributes to retrieve and remove
130 + removeAttrs: function(attributes) {
131 + /// <summary>
132 + /// Remove the specified attributes from the first matched element and return them.
133 + /// </summary>
134 + /// <param name="attributes" type="String">
135 + /// A space-seperated list of attribute names to remove.
136 + /// </param>
137 +
138 + var result = {},
139 + $element = this;
140 + $.each(attributes.split(/\s/), function(index, value) {
141 + result[value] = $element.attr(value);
142 + $element.removeAttr(value);
143 + });
144 + return result;
145 + },
146 + // http://docs.jquery.com/Plugins/Validation/rules
147 + rules: function(command, argument) {
148 + /// <summary>
149 + /// Return the validations rules for the first selected element.
150 + /// </summary>
151 + /// <param name="command" type="String">
152 + /// Can be either "add" or "remove".
153 + /// </param>
154 + /// <param name="argument" type="">
155 + /// A list of rules to add or remove.
156 + /// </param>
157 +
158 + var element = this[0];
159 +
160 + if (command) {
161 + var settings = $.data(element.form, 'validator').settings;
162 + var staticRules = settings.rules;
163 + var existingRules = $.validator.staticRules(element);
164 + switch(command) {
165 + case "add":
166 + $.extend(existingRules, $.validator.normalizeRule(argument));
167 + staticRules[element.name] = existingRules;
168 + if (argument.messages)
169 + settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
170 + break;
171 + case "remove":
172 + if (!argument) {
173 + delete staticRules[element.name];
174 + return existingRules;
175 + }
176 + var filtered = {};
177 + $.each(argument.split(/\s/), function(index, method) {
178 + filtered[method] = existingRules[method];
179 + delete existingRules[method];
180 + });
181 + return filtered;
182 + }
183 + }
184 +
185 + var data = $.validator.normalizeRules(
186 + $.extend(
187 + {},
188 + $.validator.metadataRules(element),
189 + $.validator.classRules(element),
190 + $.validator.attributeRules(element),
191 + $.validator.staticRules(element)
192 + ), element);
193 +
194 + // make sure required is at front
195 + if (data.required) {
196 + var param = data.required;
197 + delete data.required;
198 + data = $.extend({required: param}, data);
199 + }
200 +
201 + return data;
202 + }
203 +});
204 +
205 +// Custom selectors
206 +$.extend($.expr[":"], {
207 + // http://docs.jquery.com/Plugins/Validation/blank
208 + blank: function(a) {return !$.trim("" + a.value);},
209 + // http://docs.jquery.com/Plugins/Validation/filled
210 + filled: function(a) {return !!$.trim("" + a.value);},
211 + // http://docs.jquery.com/Plugins/Validation/unchecked
212 + unchecked: function(a) {return !a.checked;}
213 +});
214 +
215 +// constructor for validator
216 +$.validator = function( options, form ) {
217 + this.settings = $.extend( true, {}, $.validator.defaults, options );
218 + this.currentForm = form;
219 + this.init();
220 +};
221 +
222 +$.validator.format = function(source, params) {
223 + /// <summary>
224 + /// Replaces {n} placeholders with arguments.
225 + /// One or more arguments can be passed, in addition to the string template itself, to insert
226 + /// into the string.
227 + /// </summary>
228 + /// <param name="source" type="String">
229 + /// The string to format.
230 + /// </param>
231 + /// <param name="params" type="String">
232 + /// The first argument to insert, or an array of Strings to insert
233 + /// </param>
234 + /// <returns type="String" />
235 +
236 + if ( arguments.length == 1 )
237 + return function() {
238 + var args = $.makeArray(arguments);
239 + args.unshift(source);
240 + return $.validator.format.apply( this, args );
241 + };
242 + if ( arguments.length > 2 && params.constructor != Array ) {
243 + params = $.makeArray(arguments).slice(1);
244 + }
245 + if ( params.constructor != Array ) {
246 + params = [ params ];
247 + }
248 + $.each(params, function(i, n) {
249 + source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
250 + });
251 + return source;
252 +};
253 +
254 +$.extend($.validator, {
255 +
256 + defaults: {
257 + messages: {},
258 + groups: {},
259 + rules: {},
260 + errorClass: "error",
261 + validClass: "valid",
262 + errorElement: "label",
263 + focusInvalid: true,
264 + errorContainer: $( [] ),
265 + errorLabelContainer: $( [] ),
266 + onsubmit: true,
267 + ignore: [],
268 + ignoreTitle: false,
269 + onfocusin: function(element) {
270 + this.lastActive = element;
271 +
272 + // hide error label and remove error class on focus if enabled
273 + if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
274 + this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
275 + this.addWrapper(this.errorsFor(element)).hide();
276 + }
277 + },
278 + onfocusout: function(element) {
279 + if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
280 + this.element(element);
281 + }
282 + },
283 + onkeyup: function(element) {
284 + if ( element.name in this.submitted || element == this.lastElement ) {
285 + this.element(element);
286 + }
287 + },
288 + onclick: function(element) {
289 + // click on selects, radiobuttons and checkboxes
290 + if ( element.name in this.submitted )
291 + this.element(element);
292 + // or option elements, check parent select in that case
293 + else if (element.parentNode.name in this.submitted)
294 + this.element(element.parentNode);
295 + },
296 + highlight: function( element, errorClass, validClass ) {
297 + $(element).addClass(errorClass).removeClass(validClass);
298 + },
299 + unhighlight: function( element, errorClass, validClass ) {
300 + $(element).removeClass(errorClass).addClass(validClass);
301 + }
302 + },
303 +
304 + // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
305 + setDefaults: function(settings) {
306 + /// <summary>
307 + /// Modify default settings for validation.
308 + /// Accepts everything that Plugins/Validation/validate accepts.
309 + /// </summary>
310 + /// <param name="settings" type="Options">
311 + /// Options to set as default.
312 + /// </param>
313 +
314 + $.extend( $.validator.defaults, settings );
315 + },
316 +
317 + messages: {
318 + required: "This field is required.",
319 + remote: "Please fix this field.",
320 + email: "Please enter a valid email address.",
321 + url: "Please enter a valid URL.",
322 + date: "Please enter a valid date.",
323 + dateISO: "Please enter a valid date (ISO).",
324 + number: "Please enter a valid number.",
325 + digits: "Please enter only digits.",
326 + creditcard: "Please enter a valid credit card number.",
327 + equalTo: "Please enter the same value again.",
328 + accept: "Please enter a value with a valid extension.",
329 + maxlength: $.validator.format("Please enter no more than {0} characters."),
330 + minlength: $.validator.format("Please enter at least {0} characters."),
331 + rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
332 + range: $.validator.format("Please enter a value between {0} and {1}."),
333 + max: $.validator.format("Please enter a value less than or equal to {0}."),
334 + min: $.validator.format("Please enter a value greater than or equal to {0}.")
335 + },
336 +
337 + autoCreateRanges: false,
338 +
339 + prototype: {
340 +
341 + init: function() {
342 + this.labelContainer = $(this.settings.errorLabelContainer);
343 + this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
344 + this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
345 + this.submitted = {};
346 + this.valueCache = {};
347 + this.pendingRequest = 0;
348 + this.pending = {};
349 + this.invalid = {};
350 + this.reset();
351 +
352 + var groups = (this.groups = {});
353 + $.each(this.settings.groups, function(key, value) {
354 + $.each(value.split(/\s/), function(index, name) {
355 + groups[name] = key;
356 + });
357 + });
358 + var rules = this.settings.rules;
359 + $.each(rules, function(key, value) {
360 + rules[key] = $.validator.normalizeRule(value);
361 + });
362 +
363 + function delegate(event) {
364 + var validator = $.data(this[0].form, "validator"),
365 + eventType = "on" + event.type.replace(/^validate/, "");
366 + validator.settings[eventType] && validator.settings[eventType].call(validator, this[0] );
367 + }
368 + $(this.currentForm)
369 + .validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
370 + .validateDelegate(":radio, :checkbox, select, option", "click", delegate);
371 +
372 + if (this.settings.invalidHandler)
373 + $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
374 + },
375 +
376 + // http://docs.jquery.com/Plugins/Validation/Validator/form
377 + form: function() {
378 + /// <summary>
379 + /// Validates the form, returns true if it is valid, false otherwise.
380 + /// This behaves as a normal submit event, but returns the result.
381 + /// </summary>
382 + /// <returns type="Boolean" />
383 +
384 + this.checkForm();
385 + $.extend(this.submitted, this.errorMap);
386 + this.invalid = $.extend({}, this.errorMap);
387 + if (!this.valid())
388 + $(this.currentForm).triggerHandler("invalid-form", [this]);
389 + this.showErrors();
390 + return this.valid();
391 + },
392 +
393 + checkForm: function() {
394 + this.prepareForm();
395 + for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
396 + this.check( elements[i] );
397 + }
398 + return this.valid();
399 + },
400 +
401 + // http://docs.jquery.com/Plugins/Validation/Validator/element
402 + element: function( element ) {
403 + /// <summary>
404 + /// Validates a single element, returns true if it is valid, false otherwise.
405 + /// This behaves as validation on blur or keyup, but returns the result.
406 + /// </summary>
407 + /// <param name="element" type="Selector">
408 + /// An element to validate, must be inside the validated form.
409 + /// </param>
410 + /// <returns type="Boolean" />
411 +
412 + element = this.clean( element );
413 + this.lastElement = element;
414 + this.prepareElement( element );
415 + this.currentElements = $(element);
416 + var result = this.check( element );
417 + if ( result ) {
418 + delete this.invalid[element.name];
419 + } else {
420 + this.invalid[element.name] = true;
421 + }
422 + if ( !this.numberOfInvalids() ) {
423 + // Hide error containers on last error
424 + this.toHide = this.toHide.add( this.containers );
425 + }
426 + this.showErrors();
427 + return result;
428 + },
429 +
430 + // http://docs.jquery.com/Plugins/Validation/Validator/showErrors
431 + showErrors: function(errors) {
432 + /// <summary>
433 + /// Show the specified messages.
434 + /// Keys have to refer to the names of elements, values are displayed for those elements, using the configured error placement.
435 + /// </summary>
436 + /// <param name="errors" type="Object">
437 + /// One or more key/value pairs of input names and messages.
438 + /// </param>
439 +
440 + if(errors) {
441 + // add items to error list and map
442 + $.extend( this.errorMap, errors );
443 + this.errorList = [];
444 + for ( var name in errors ) {
445 + this.errorList.push({
446 + message: errors[name],
447 + element: this.findByName(name)[0]
448 + });
449 + }
450 + // remove items from success list
451 + this.successList = $.grep( this.successList, function(element) {
452 + return !(element.name in errors);
453 + });
454 + }
455 + this.settings.showErrors
456 + ? this.settings.showErrors.call( this, this.errorMap, this.errorList )
457 + : this.defaultShowErrors();
458 + },
459 +
460 + // http://docs.jquery.com/Plugins/Validation/Validator/resetForm
461 + resetForm: function() {
462 + /// <summary>
463 + /// Resets the controlled form.
464 + /// Resets input fields to their original value (requires form plugin), removes classes
465 + /// indicating invalid elements and hides error messages.
466 + /// </summary>
467 +
468 + if ( $.fn.resetForm )
469 + $( this.currentForm ).resetForm();
470 + this.submitted = {};
471 + this.prepareForm();
472 + this.hideErrors();
473 + this.elements().removeClass( this.settings.errorClass );
474 + },
475 +
476 + numberOfInvalids: function() {
477 + /// <summary>
478 + /// Returns the number of invalid fields.
479 + /// This depends on the internal validator state. It covers all fields only after
480 + /// validating the complete form (on submit or via $("form").valid()). After validating
481 + /// a single element, only that element is counted. Most useful in combination with the
482 + /// invalidHandler-option.
483 + /// </summary>
484 + /// <returns type="Number" />
485 +
486 + return this.objectLength(this.invalid);
487 + },
488 +
489 + objectLength: function( obj ) {
490 + var count = 0;
491 + for ( var i in obj )
492 + count++;
493 + return count;
494 + },
495 +
496 + hideErrors: function() {
497 + this.addWrapper( this.toHide ).hide();
498 + },
499 +
500 + valid: function() {
501 + return this.size() == 0;
502 + },
503 +
504 + size: function() {
505 + return this.errorList.length;
506 + },
507 +
508 + focusInvalid: function() {
509 + if( this.settings.focusInvalid ) {
510 + try {
511 + $(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
512 + .filter(":visible")
513 + .focus()
514 + // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
515 + .trigger("focusin");
516 + } catch(e) {
517 + // ignore IE throwing errors when focusing hidden elements
518 + }
519 + }
520 + },
521 +
522 + findLastActive: function() {
523 + var lastActive = this.lastActive;
524 + return lastActive && $.grep(this.errorList, function(n) {
525 + return n.element.name == lastActive.name;
526 + }).length == 1 && lastActive;
527 + },
528 +
529 + elements: function() {
530 + var validator = this,
531 + rulesCache = {};
532 +
533 + // select all valid inputs inside the form (no submit or reset buttons)
534 + // workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved
535 + return $([]).add(this.currentForm.elements)
536 + .filter(":input")
537 + .not(":submit, :reset, :image, [disabled]")
538 + .not( this.settings.ignore )
539 + .filter(function() {
540 + !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
541 +
542 + // select only the first element for each name, and only those with rules specified
543 + if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
544 + return false;
545 +
546 + rulesCache[this.name] = true;
547 + return true;
548 + });
549 + },
550 +
551 + clean: function( selector ) {
552 + return $( selector )[0];
553 + },
554 +
555 + errors: function() {
556 + return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
557 + },
558 +
559 + reset: function() {
560 + this.successList = [];
561 + this.errorList = [];
562 + this.errorMap = {};
563 + this.toShow = $([]);
564 + this.toHide = $([]);
565 + this.currentElements = $([]);
566 + },
567 +
568 + prepareForm: function() {
569 + this.reset();
570 + this.toHide = this.errors().add( this.containers );
571 + },
572 +
573 + prepareElement: function( element ) {
574 + this.reset();
575 + this.toHide = this.errorsFor(element);
576 + },
577 +
578 + check: function( element ) {
579 + element = this.clean( element );
580 +
581 + // if radio/checkbox, validate first element in group instead
582 + if (this.checkable(element)) {
583 + element = this.findByName(element.name).not(this.settings.ignore)[0];
584 + }
585 +
586 + var rules = $(element).rules();
587 + var dependencyMismatch = false;
588 + for (var method in rules) {
589 + var rule = { method: method, parameters: rules[method] };
590 + try {
591 + var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
592 +
593 + // if a method indicates that the field is optional and therefore valid,
594 + // don't mark it as valid when there are no other rules
595 + if ( result == "dependency-mismatch" ) {
596 + dependencyMismatch = true;
597 + continue;
598 + }
599 + dependencyMismatch = false;
600 +
601 + if ( result == "pending" ) {
602 + this.toHide = this.toHide.not( this.errorsFor(element) );
603 + return;
604 + }
605 +
606 + if( !result ) {
607 + this.formatAndAdd( element, rule );
608 + return false;
609 + }
610 + } catch(e) {
611 + this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
612 + + ", check the '" + rule.method + "' method", e);
613 + throw e;
614 + }
615 + }
616 + if (dependencyMismatch)
617 + return;
618 + if ( this.objectLength(rules) )
619 + this.successList.push(element);
620 + return true;
621 + },
622 +
623 + // return the custom message for the given element and validation method
624 + // specified in the element's "messages" metadata
625 + customMetaMessage: function(element, method) {
626 + if (!$.metadata)
627 + return;
628 +
629 + var meta = this.settings.meta
630 + ? $(element).metadata()[this.settings.meta]
631 + : $(element).metadata();
632 +
633 + return meta && meta.messages && meta.messages[method];
634 + },
635 +
636 + // return the custom message for the given element name and validation method
637 + customMessage: function( name, method ) {
638 + var m = this.settings.messages[name];
639 + return m && (m.constructor == String
640 + ? m
641 + : m[method]);
642 + },
643 +
644 + // return the first defined argument, allowing empty strings
645 + findDefined: function() {
646 + for(var i = 0; i < arguments.length; i++) {
647 + if (arguments[i] !== undefined)
648 + return arguments[i];
649 + }
650 + return undefined;
651 + },
652 +
653 + defaultMessage: function( element, method) {
654 + return this.findDefined(
655 + this.customMessage( element.name, method ),
656 + this.customMetaMessage( element, method ),
657 + // title is never undefined, so handle empty string as undefined
658 + !this.settings.ignoreTitle && element.title || undefined,
659 + $.validator.messages[method],
660 + "<strong>Warning: No message defined for " + element.name + "</strong>"
661 + );
662 + },
663 +
664 + formatAndAdd: function( element, rule ) {
665 + var message = this.defaultMessage( element, rule.method ),
666 + theregex = /\$?\{(\d+)\}/g;
667 + if ( typeof message == "function" ) {
668 + message = message.call(this, rule.parameters, element);
669 + } else if (theregex.test(message)) {
670 + message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);
671 + }
672 + this.errorList.push({
673 + message: message,
674 + element: element
675 + });
676 +
677 + this.errorMap[element.name] = message;
678 + this.submitted[element.name] = message;
679 + },
680 +
681 + addWrapper: function(toToggle) {
682 + if ( this.settings.wrapper )
683 + toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
684 + return toToggle;
685 + },
686 +
687 + defaultShowErrors: function() {
688 + for ( var i = 0; this.errorList[i]; i++ ) {
689 + var error = this.errorList[i];
690 + this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
691 + this.showLabel( error.element, error.message );
692 + }
693 + if( this.errorList.length ) {
694 + this.toShow = this.toShow.add( this.containers );
695 + }
696 + if (this.settings.success) {
697 + for ( var i = 0; this.successList[i]; i++ ) {
698 + this.showLabel( this.successList[i] );
699 + }
700 + }
701 + if (this.settings.unhighlight) {
702 + for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
703 + this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
704 + }
705 + }
706 + this.toHide = this.toHide.not( this.toShow );
707 + this.hideErrors();
708 + this.addWrapper( this.toShow ).show();
709 + },
710 +
711 + validElements: function() {
712 + return this.currentElements.not(this.invalidElements());
713 + },
714 +
715 + invalidElements: function() {
716 + return $(this.errorList).map(function() {
717 + return this.element;
718 + });
719 + },
720 +
721 + showLabel: function(element, message) {
722 + var label = this.errorsFor( element );
723 + if ( label.length ) {
724 + // refresh error/success class
725 + label.removeClass().addClass( this.settings.errorClass );
726 +
727 + // check if we have a generated label, replace the message then
728 + label.attr("generated") && label.html(message);
729 + } else {
730 + // create label
731 + label = $("<" + this.settings.errorElement + "/>")
732 + .attr({"for": this.idOrName(element), generated: true})
733 + .addClass(this.settings.errorClass)
734 + .html(message || "");
735 + if ( this.settings.wrapper ) {
736 + // make sure the element is visible, even in IE
737 + // actually showing the wrapped element is handled elsewhere
738 + label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
739 + }
740 + if ( !this.labelContainer.append(label).length )
741 + this.settings.errorPlacement
742 + ? this.settings.errorPlacement(label, $(element) )
743 + : label.insertAfter(element);
744 + }
745 + if ( !message && this.settings.success ) {
746 + label.text("");
747 + typeof this.settings.success == "string"
748 + ? label.addClass( this.settings.success )
749 + : this.settings.success( label );
750 + }
751 + this.toShow = this.toShow.add(label);
752 + },
753 +
754 + errorsFor: function(element) {
755 + var name = this.idOrName(element);
756 + return this.errors().filter(function() {
757 + return $(this).attr('for') == name;
758 + });
759 + },
760 +
761 + idOrName: function(element) {
762 + return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
763 + },
764 +
765 + checkable: function( element ) {
766 + return /radio|checkbox/i.test(element.type);
767 + },
768 +
769 + findByName: function( name ) {
770 + // select by name and filter by form for performance over form.find("[name=...]")
771 + var form = this.currentForm;
772 + return $(document.getElementsByName(name)).map(function(index, element) {
773 + return element.form == form && element.name == name && element || null;
774 + });
775 + },
776 +
777 + getLength: function(value, element) {
778 + switch( element.nodeName.toLowerCase() ) {
779 + case 'select':
780 + return $("option:selected", element).length;
781 + case 'input':
782 + if( this.checkable( element) )
783 + return this.findByName(element.name).filter(':checked').length;
784 + }
785 + return value.length;
786 + },
787 +
788 + depend: function(param, element) {
789 + return this.dependTypes[typeof param]
790 + ? this.dependTypes[typeof param](param, element)
791 + : true;
792 + },
793 +
794 + dependTypes: {
795 + "boolean": function(param, element) {
796 + return param;
797 + },
798 + "string": function(param, element) {
799 + return !!$(param, element.form).length;
800 + },
801 + "function": function(param, element) {
802 + return param(element);
803 + }
804 + },
805 +
806 + optional: function(element) {
807 + return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
808 + },
809 +
810 + startRequest: function(element) {
811 + if (!this.pending[element.name]) {
812 + this.pendingRequest++;
813 + this.pending[element.name] = true;
814 + }
815 + },
816 +
817 + stopRequest: function(element, valid) {
818 + this.pendingRequest--;
819 + // sometimes synchronization fails, make sure pendingRequest is never < 0
820 + if (this.pendingRequest < 0)
821 + this.pendingRequest = 0;
822 + delete this.pending[element.name];
823 + if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
824 + $(this.currentForm).submit();
825 + this.formSubmitted = false;
826 + } else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
827 + $(this.currentForm).triggerHandler("invalid-form", [this]);
828 + this.formSubmitted = false;
829 + }
830 + },
831 +
832 + previousValue: function(element) {
833 + return $.data(element, "previousValue") || $.data(element, "previousValue", {
834 + old: null,
835 + valid: true,
836 + message: this.defaultMessage( element, "remote" )
837 + });
838 + }
839 +
840 + },
841 +
842 + classRuleSettings: {
843 + required: {required: true},
844 + email: {email: true},
845 + url: {url: true},
846 + date: {date: true},
847 + dateISO: {dateISO: true},
848 + dateDE: {dateDE: true},
849 + number: {number: true},
850 + numberDE: {numberDE: true},
851 + digits: {digits: true},
852 + creditcard: {creditcard: true}
853 + },
854 +
855 + addClassRules: function(className, rules) {
856 + /// <summary>
857 + /// Add a compound class method - useful to refactor common combinations of rules into a single
858 + /// class.
859 + /// </summary>
860 + /// <param name="name" type="String">
861 + /// The name of the class rule to add
862 + /// </param>
863 + /// <param name="rules" type="Options">
864 + /// The compound rules
865 + /// </param>
866 +
867 + className.constructor == String ?
868 + this.classRuleSettings[className] = rules :
869 + $.extend(this.classRuleSettings, className);
870 + },
871 +
872 + classRules: function(element) {
873 + var rules = {};
874 + var classes = $(element).attr('class');
875 + classes && $.each(classes.split(' '), function() {
876 + if (this in $.validator.classRuleSettings) {
877 + $.extend(rules, $.validator.classRuleSettings[this]);
878 + }
879 + });
880 + return rules;
881 + },
882 +
883 + attributeRules: function(element) {
884 + var rules = {};
885 + var $element = $(element);
886 +
887 + for (var method in $.validator.methods) {
888 + var value = $element.attr(method);
889 + if (value) {
890 + rules[method] = value;
891 + }
892 + }
893 +
894 + // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
895 + if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
896 + delete rules.maxlength;
897 + }
898 +
899 + return rules;
900 + },
901 +
902 + metadataRules: function(element) {
903 + if (!$.metadata) return {};
904 +
905 + var meta = $.data(element.form, 'validator').settings.meta;
906 + return meta ?
907 + $(element).metadata()[meta] :
908 + $(element).metadata();
909 + },
910 +
911 + staticRules: function(element) {
912 + var rules = {};
913 + var validator = $.data(element.form, 'validator');
914 + if (validator.settings.rules) {
915 + rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
916 + }
917 + return rules;
918 + },
919 +
920 + normalizeRules: function(rules, element) {
921 + // handle dependency check
922 + $.each(rules, function(prop, val) {
923 + // ignore rule when param is explicitly false, eg. required:false
924 + if (val === false) {
925 + delete rules[prop];
926 + return;
927 + }
928 + if (val.param || val.depends) {
929 + var keepRule = true;
930 + switch (typeof val.depends) {
931 + case "string":
932 + keepRule = !!$(val.depends, element.form).length;
933 + break;
934 + case "function":
935 + keepRule = val.depends.call(element, element);
936 + break;
937 + }
938 + if (keepRule) {
939 + rules[prop] = val.param !== undefined ? val.param : true;
940 + } else {
941 + delete rules[prop];
942 + }
943 + }
944 + });
945 +
946 + // evaluate parameters
947 + $.each(rules, function(rule, parameter) {
948 + rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
949 + });
950 +
951 + // clean number parameters
952 + $.each(['minlength', 'maxlength', 'min', 'max'], function() {
953 + if (rules[this]) {
954 + rules[this] = Number(rules[this]);
955 + }
956 + });
957 + $.each(['rangelength', 'range'], function() {
958 + if (rules[this]) {
959 + rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
960 + }
961 + });
962 +
963 + if ($.validator.autoCreateRanges) {
964 + // auto-create ranges
965 + if (rules.min && rules.max) {
966 + rules.range = [rules.min, rules.max];
967 + delete rules.min;
968 + delete rules.max;
969 + }
970 + if (rules.minlength && rules.maxlength) {
971 + rules.rangelength = [rules.minlength, rules.maxlength];
972 + delete rules.minlength;
973 + delete rules.maxlength;
974 + }
975 + }
976 +
977 + // To support custom messages in metadata ignore rule methods titled "messages"
978 + if (rules.messages) {
979 + delete rules.messages;
980 + }
981 +
982 + return rules;
983 + },
984 +
985 + // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
986 + normalizeRule: function(data) {
987 + if( typeof data == "string" ) {
988 + var transformed = {};
989 + $.each(data.split(/\s/), function() {
990 + transformed[this] = true;
991 + });
992 + data = transformed;
993 + }
994 + return data;
995 + },
996 +
997 + // http://docs.jquery.com/Plugins/Validation/Validator/addMethod
998 + addMethod: function(name, method, message) {
999 + /// <summary>
1000 + /// Add a custom validation method. It must consist of a name (must be a legal javascript
1001 + /// identifier), a javascript based function and a default string message.
1002 + /// </summary>
1003 + /// <param name="name" type="String">
1004 + /// The name of the method, used to identify and referencing it, must be a valid javascript
1005 + /// identifier
1006 + /// </param>
1007 + /// <param name="method" type="Function">
1008 + /// The actual method implementation, returning true if an element is valid
1009 + /// </param>
1010 + /// <param name="message" type="String" optional="true">
1011 + /// (Optional) The default message to display for this method. Can be a function created by
1012 + /// jQuery.validator.format(value). When undefined, an already existing message is used
1013 + /// (handy for localization), otherwise the field-specific messages have to be defined.
1014 + /// </param>
1015 +
1016 + $.validator.methods[name] = method;
1017 + $.validator.messages[name] = message != undefined ? message : $.validator.messages[name];
1018 + if (method.length < 3) {
1019 + $.validator.addClassRules(name, $.validator.normalizeRule(name));
1020 + }
1021 + },
1022 +
1023 + methods: {
1024 +
1025 + // http://docs.jquery.com/Plugins/Validation/Methods/required
1026 + required: function(value, element, param) {
1027 + // check if dependency is met
1028 + if ( !this.depend(param, element) )
1029 + return "dependency-mismatch";
1030 + switch( element.nodeName.toLowerCase() ) {
1031 + case 'select':
1032 + // could be an array for select-multiple or a string, both are fine this way
1033 + var val = $(element).val();
1034 + return val && val.length > 0;
1035 + case 'input':
1036 + if ( this.checkable(element) )
1037 + return this.getLength(value, element) > 0;
1038 + default:
1039 + return $.trim(value).length > 0;
1040 + }
1041 + },
1042 +
1043 + // http://docs.jquery.com/Plugins/Validation/Methods/remote
1044 + remote: function(value, element, param) {
1045 + if ( this.optional(element) )
1046 + return "dependency-mismatch";
1047 +
1048 + var previous = this.previousValue(element);
1049 + if (!this.settings.messages[element.name] )
1050 + this.settings.messages[element.name] = {};
1051 + previous.originalMessage = this.settings.messages[element.name].remote;
1052 + this.settings.messages[element.name].remote = previous.message;
1053 +
1054 + param = typeof param == "string" && {url:param} || param;
1055 +
1056 + if ( this.pending[element.name] ) {
1057 + return "pending";
1058 + }
1059 + if ( previous.old === value ) {
1060 + return previous.valid;
1061 + }
1062 +
1063 + previous.old = value;
1064 + var validator = this;
1065 + this.startRequest(element);
1066 + var data = {};
1067 + data[element.name] = value;
1068 + $.ajax($.extend(true, {
1069 + url: param,
1070 + mode: "abort",
1071 + port: "validate" + element.name,
1072 + dataType: "json",
1073 + data: data,
1074 + success: function(response) {
1075 + validator.settings.messages[element.name].remote = previous.originalMessage;
1076 + var valid = response === true;
1077 + if ( valid ) {
1078 + var submitted = validator.formSubmitted;
1079 + validator.prepareElement(element);
1080 + validator.formSubmitted = submitted;
1081 + validator.successList.push(element);
1082 + validator.showErrors();
1083 + } else {
1084 + var errors = {};
1085 + var message = response || validator.defaultMessage(element, "remote");
1086 + errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
1087 + validator.showErrors(errors);
1088 + }
1089 + previous.valid = valid;
1090 + validator.stopRequest(element, valid);
1091 + }
1092 + }, param));
1093 + return "pending";
1094 + },
1095 +
1096 + // http://docs.jquery.com/Plugins/Validation/Methods/minlength
1097 + minlength: function(value, element, param) {
1098 + return this.optional(element) || this.getLength($.trim(value), element) >= param;
1099 + },
1100 +
1101 + // http://docs.jquery.com/Plugins/Validation/Methods/maxlength
1102 + maxlength: function(value, element, param) {
1103 + return this.optional(element) || this.getLength($.trim(value), element) <= param;
1104 + },
1105 +
1106 + // http://docs.jquery.com/Plugins/Validation/Methods/rangelength
1107 + rangelength: function(value, element, param) {
1108 + var length = this.getLength($.trim(value), element);
1109 + return this.optional(element) || ( length >= param[0] && length <= param[1] );
1110 + },
1111 +
1112 + // http://docs.jquery.com/Plugins/Validation/Methods/min
1113 + min: function( value, element, param ) {
1114 + return this.optional(element) || value >= param;
1115 + },
1116 +
1117 + // http://docs.jquery.com/Plugins/Validation/Methods/max
1118 + max: function( value, element, param ) {
1119 + return this.optional(element) || value <= param;
1120 + },
1121 +
1122 + // http://docs.jquery.com/Plugins/Validation/Methods/range
1123 + range: function( value, element, param ) {
1124 + return this.optional(element) || ( value >= param[0] && value <= param[1] );
1125 + },
1126 +
1127 + // http://docs.jquery.com/Plugins/Validation/Methods/email
1128 + email: function(value, element) {
1129 + // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
1130 + return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
1131 + },
1132 +
1133 + // http://docs.jquery.com/Plugins/Validation/Methods/url
1134 + url: function(value, element) {
1135 + // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
1136 + return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
1137 + },
1138 +
1139 + // http://docs.jquery.com/Plugins/Validation/Methods/date
1140 + date: function(value, element) {
1141 + return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
1142 + },
1143 +
1144 + // http://docs.jquery.com/Plugins/Validation/Methods/dateISO
1145 + dateISO: function(value, element) {
1146 + return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
1147 + },
1148 +
1149 + // http://docs.jquery.com/Plugins/Validation/Methods/number
1150 + number: function(value, element) {
1151 + return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
1152 + },
1153 +
1154 + // http://docs.jquery.com/Plugins/Validation/Methods/digits
1155 + digits: function(value, element) {
1156 + return this.optional(element) || /^\d+$/.test(value);
1157 + },
1158 +
1159 + // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
1160 + // based on http://en.wikipedia.org/wiki/Luhn
1161 + creditcard: function(value, element) {
1162 + if ( this.optional(element) )
1163 + return "dependency-mismatch";
1164 + // accept only digits and dashes
1165 + if (/[^0-9-]+/.test(value))
1166 + return false;
1167 + var nCheck = 0,
1168 + nDigit = 0,
1169 + bEven = false;
1170 +
1171 + value = value.replace(/\D/g, "");
1172 +
1173 + for (var n = value.length - 1; n >= 0; n--) {
1174 + var cDigit = value.charAt(n);
1175 + var nDigit = parseInt(cDigit, 10);
1176 + if (bEven) {
1177 + if ((nDigit *= 2) > 9)
1178 + nDigit -= 9;
1179 + }
1180 + nCheck += nDigit;
1181 + bEven = !bEven;
1182 + }
1183 +
1184 + return (nCheck % 10) == 0;
1185 + },
1186 +
1187 + // http://docs.jquery.com/Plugins/Validation/Methods/accept
1188 + accept: function(value, element, param) {
1189 + param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
1190 + return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
1191 + },
1192 +
1193 + // http://docs.jquery.com/Plugins/Validation/Methods/equalTo
1194 + equalTo: function(value, element, param) {
1195 + // bind to the blur event of the target in order to revalidate whenever the target field is updated
1196 + // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
1197 + var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
1198 + $(element).valid();
1199 + });
1200 + return value == target.val();
1201 + }
1202 +
1203 + }
1204 +
1205 +});
1206 +
1207 +// deprecated, use $.validator.format instead
1208 +$.format = $.validator.format;
1209 +
1210 +})(jQuery);
1211 +
1212 +// ajax mode: abort
1213 +// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1214 +// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1215 +;(function($) {
1216 + var pendingRequests = {};
1217 + // Use a prefilter if available (1.5+)
1218 + if ( $.ajaxPrefilter ) {
1219 + $.ajaxPrefilter(function(settings, _, xhr) {
1220 + var port = settings.port;
1221 + if (settings.mode == "abort") {
1222 + if ( pendingRequests[port] ) {
1223 + pendingRequests[port].abort();
1224 + } pendingRequests[port] = xhr;
1225 + }
1226 + });
1227 + } else {
1228 + // Proxy ajax
1229 + var ajax = $.ajax;
1230 + $.ajax = function(settings) {
1231 + var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1232 + port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1233 + if (mode == "abort") {
1234 + if ( pendingRequests[port] ) {
1235 + pendingRequests[port].abort();
1236 + }
1237 +
1238 + return (pendingRequests[port] = ajax.apply(this, arguments));
1239 + }
1240 + return ajax.apply(this, arguments);
1241 + };
1242 + }
1243 +})(jQuery);
1244 +
1245 +// provides cross-browser focusin and focusout events
1246 +// IE has native support, in other browsers, use event caputuring (neither bubbles)
1247 +
1248 +// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
1249 +// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
1250 +;(function($) {
1251 + // only implement if not provided by jQuery core (since 1.4)
1252 + // TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs
1253 + if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {
1254 + $.each({
1255 + focus: 'focusin',
1256 + blur: 'focusout'
1257 + }, function( original, fix ){
1258 + $.event.special[fix] = {
1259 + setup:function() {
1260 + this.addEventListener( original, handler, true );
1261 + },
1262 + teardown:function() {
1263 + this.removeEventListener( original, handler, true );
1264 + },
1265 + handler: function(e) {
1266 + arguments[0] = $.event.fix(e);
1267 + arguments[0].type = fix;
1268 + return $.event.handle.apply(this, arguments);
1269 + }
1270 + };
1271 + function handler(e) {
1272 + e = $.event.fix(e);
1273 + e.type = fix;
1274 + return $.event.handle.call(this, e);
1275 + }
1276 + });
1277 + };
1278 + $.extend($.fn, {
1279 + validateDelegate: function(delegate, type, handler) {
1280 + return this.bind(type, function(event) {
1281 + var target = $(event.target);
1282 + if (target.is(delegate)) {
1283 + return handler.apply(target, arguments);
1284 + }
1285 + });
1286 + }
1287 + });
1288 +})(jQuery);
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.js new
+1601
@@ -0,0 +1,1601 @@
1 +/*!
2 + * jQuery Validation Plugin v1.17.0
3 + *
4 + * https://jqueryvalidation.org/
5 + *
6 + * Copyright (c) 2017 Jörn Zaefferer
7 + * Released under the MIT license
8 + */
9 +(function( factory ) {
10 + if ( typeof define === "function" && define.amd ) {
11 + define( ["jquery"], factory );
12 + } else if (typeof module === "object" && module.exports) {
13 + module.exports = factory( require( "jquery" ) );
14 + } else {
15 + factory( jQuery );
16 + }
17 +}(function( $ ) {
18 +
19 +$.extend( $.fn, {
20 +
21 + // https://jqueryvalidation.org/validate/
22 + validate: function( options ) {
23 +
24 + // If nothing is selected, return nothing; can't chain anyway
25 + if ( !this.length ) {
26 + if ( options && options.debug && window.console ) {
27 + console.warn( "Nothing selected, can't validate, returning nothing." );
28 + }
29 + return;
30 + }
31 +
32 + // Check if a validator for this form was already created
33 + var validator = $.data( this[ 0 ], "validator" );
34 + if ( validator ) {
35 + return validator;
36 + }
37 +
38 + // Add novalidate tag if HTML5.
39 + this.attr( "novalidate", "novalidate" );
40 +
41 + validator = new $.validator( options, this[ 0 ] );
42 + $.data( this[ 0 ], "validator", validator );
43 +
44 + if ( validator.settings.onsubmit ) {
45 +
46 + this.on( "click.validate", ":submit", function( event ) {
47 +
48 + // Track the used submit button to properly handle scripted
49 + // submits later.
50 + validator.submitButton = event.currentTarget;
51 +
52 + // Allow suppressing validation by adding a cancel class to the submit button
53 + if ( $( this ).hasClass( "cancel" ) ) {
54 + validator.cancelSubmit = true;
55 + }
56 +
57 + // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
58 + if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
59 + validator.cancelSubmit = true;
60 + }
61 + } );
62 +
63 + // Validate the form on submit
64 + this.on( "submit.validate", function( event ) {
65 + if ( validator.settings.debug ) {
66 +
67 + // Prevent form submit to be able to see console output
68 + event.preventDefault();
69 + }
70 + function handle() {
71 + var hidden, result;
72 +
73 + // Insert a hidden input as a replacement for the missing submit button
74 + // The hidden input is inserted in two cases:
75 + // - A user defined a `submitHandler`
76 + // - There was a pending request due to `remote` method and `stopRequest()`
77 + // was called to submit the form in case it's valid
78 + if ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {
79 + hidden = $( "<input type='hidden'/>" )
80 + .attr( "name", validator.submitButton.name )
81 + .val( $( validator.submitButton ).val() )
82 + .appendTo( validator.currentForm );
83 + }
84 +
85 + if ( validator.settings.submitHandler ) {
86 + result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
87 + if ( hidden ) {
88 +
89 + // And clean up afterwards; thanks to no-block-scope, hidden can be referenced
90 + hidden.remove();
91 + }
92 + if ( result !== undefined ) {
93 + return result;
94 + }
95 + return false;
96 + }
97 + return true;
98 + }
99 +
100 + // Prevent submit for invalid forms or custom submit handlers
101 + if ( validator.cancelSubmit ) {
102 + validator.cancelSubmit = false;
103 + return handle();
104 + }
105 + if ( validator.form() ) {
106 + if ( validator.pendingRequest ) {
107 + validator.formSubmitted = true;
108 + return false;
109 + }
110 + return handle();
111 + } else {
112 + validator.focusInvalid();
113 + return false;
114 + }
115 + } );
116 + }
117 +
118 + return validator;
119 + },
120 +
121 + // https://jqueryvalidation.org/valid/
122 + valid: function() {
123 + var valid, validator, errorList;
124 +
125 + if ( $( this[ 0 ] ).is( "form" ) ) {
126 + valid = this.validate().form();
127 + } else {
128 + errorList = [];
129 + valid = true;
130 + validator = $( this[ 0 ].form ).validate();
131 + this.each( function() {
132 + valid = validator.element( this ) && valid;
133 + if ( !valid ) {
134 + errorList = errorList.concat( validator.errorList );
135 + }
136 + } );
137 + validator.errorList = errorList;
138 + }
139 + return valid;
140 + },
141 +
142 + // https://jqueryvalidation.org/rules/
143 + rules: function( command, argument ) {
144 + var element = this[ 0 ],
145 + settings, staticRules, existingRules, data, param, filtered;
146 +
147 + // If nothing is selected, return empty object; can't chain anyway
148 + if ( element == null ) {
149 + return;
150 + }
151 +
152 + if ( !element.form && element.hasAttribute( "contenteditable" ) ) {
153 + element.form = this.closest( "form" )[ 0 ];
154 + element.name = this.attr( "name" );
155 + }
156 +
157 + if ( element.form == null ) {
158 + return;
159 + }
160 +
161 + if ( command ) {
162 + settings = $.data( element.form, "validator" ).settings;
163 + staticRules = settings.rules;
164 + existingRules = $.validator.staticRules( element );
165 + switch ( command ) {
166 + case "add":
167 + $.extend( existingRules, $.validator.normalizeRule( argument ) );
168 +
169 + // Remove messages from rules, but allow them to be set separately
170 + delete existingRules.messages;
171 + staticRules[ element.name ] = existingRules;
172 + if ( argument.messages ) {
173 + settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
174 + }
175 + break;
176 + case "remove":
177 + if ( !argument ) {
178 + delete staticRules[ element.name ];
179 + return existingRules;
180 + }
181 + filtered = {};
182 + $.each( argument.split( /\s/ ), function( index, method ) {
183 + filtered[ method ] = existingRules[ method ];
184 + delete existingRules[ method ];
185 + } );
186 + return filtered;
187 + }
188 + }
189 +
190 + data = $.validator.normalizeRules(
191 + $.extend(
192 + {},
193 + $.validator.classRules( element ),
194 + $.validator.attributeRules( element ),
195 + $.validator.dataRules( element ),
196 + $.validator.staticRules( element )
197 + ), element );
198 +
199 + // Make sure required is at front
200 + if ( data.required ) {
201 + param = data.required;
202 + delete data.required;
203 + data = $.extend( { required: param }, data );
204 + }
205 +
206 + // Make sure remote is at back
207 + if ( data.remote ) {
208 + param = data.remote;
209 + delete data.remote;
210 + data = $.extend( data, { remote: param } );
211 + }
212 +
213 + return data;
214 + }
215 +} );
216 +
217 +// Custom selectors
218 +$.extend( $.expr.pseudos || $.expr[ ":" ], { // '|| $.expr[ ":" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support
219 +
220 + // https://jqueryvalidation.org/blank-selector/
221 + blank: function( a ) {
222 + return !$.trim( "" + $( a ).val() );
223 + },
224 +
225 + // https://jqueryvalidation.org/filled-selector/
226 + filled: function( a ) {
227 + var val = $( a ).val();
228 + return val !== null && !!$.trim( "" + val );
229 + },
230 +
231 + // https://jqueryvalidation.org/unchecked-selector/
232 + unchecked: function( a ) {
233 + return !$( a ).prop( "checked" );
234 + }
235 +} );
236 +
237 +// Constructor for validator
238 +$.validator = function( options, form ) {
239 + this.settings = $.extend( true, {}, $.validator.defaults, options );
240 + this.currentForm = form;
241 + this.init();
242 +};
243 +
244 +// https://jqueryvalidation.org/jQuery.validator.format/
245 +$.validator.format = function( source, params ) {
246 + if ( arguments.length === 1 ) {
247 + return function() {
248 + var args = $.makeArray( arguments );
249 + args.unshift( source );
250 + return $.validator.format.apply( this, args );
251 + };
252 + }
253 + if ( params === undefined ) {
254 + return source;
255 + }
256 + if ( arguments.length > 2 && params.constructor !== Array ) {
257 + params = $.makeArray( arguments ).slice( 1 );
258 + }
259 + if ( params.constructor !== Array ) {
260 + params = [ params ];
261 + }
262 + $.each( params, function( i, n ) {
263 + source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
264 + return n;
265 + } );
266 + } );
267 + return source;
268 +};
269 +
270 +$.extend( $.validator, {
271 +
272 + defaults: {
273 + messages: {},
274 + groups: {},
275 + rules: {},
276 + errorClass: "error",
277 + pendingClass: "pending",
278 + validClass: "valid",
279 + errorElement: "label",
280 + focusCleanup: false,
281 + focusInvalid: true,
282 + errorContainer: $( [] ),
283 + errorLabelContainer: $( [] ),
284 + onsubmit: true,
285 + ignore: ":hidden",
286 + ignoreTitle: false,
287 + onfocusin: function( element ) {
288 + this.lastActive = element;
289 +
290 + // Hide error label and remove error class on focus if enabled
291 + if ( this.settings.focusCleanup ) {
292 + if ( this.settings.unhighlight ) {
293 + this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
294 + }
295 + this.hideThese( this.errorsFor( element ) );
296 + }
297 + },
298 + onfocusout: function( element ) {
299 + if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
300 + this.element( element );
301 + }
302 + },
303 + onkeyup: function( element, event ) {
304 +
305 + // Avoid revalidate the field when pressing one of the following keys
306 + // Shift => 16
307 + // Ctrl => 17
308 + // Alt => 18
309 + // Caps lock => 20
310 + // End => 35
311 + // Home => 36
312 + // Left arrow => 37
313 + // Up arrow => 38
314 + // Right arrow => 39
315 + // Down arrow => 40
316 + // Insert => 45
317 + // Num lock => 144
318 + // AltGr key => 225
319 + var excludedKeys = [
320 + 16, 17, 18, 20, 35, 36, 37,
321 + 38, 39, 40, 45, 144, 225
322 + ];
323 +
324 + if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
325 + return;
326 + } else if ( element.name in this.submitted || element.name in this.invalid ) {
327 + this.element( element );
328 + }
329 + },
330 + onclick: function( element ) {
331 +
332 + // Click on selects, radiobuttons and checkboxes
333 + if ( element.name in this.submitted ) {
334 + this.element( element );
335 +
336 + // Or option elements, check parent select in that case
337 + } else if ( element.parentNode.name in this.submitted ) {
338 + this.element( element.parentNode );
339 + }
340 + },
341 + highlight: function( element, errorClass, validClass ) {
342 + if ( element.type === "radio" ) {
343 + this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
344 + } else {
345 + $( element ).addClass( errorClass ).removeClass( validClass );
346 + }
347 + },
348 + unhighlight: function( element, errorClass, validClass ) {
349 + if ( element.type === "radio" ) {
350 + this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
351 + } else {
352 + $( element ).removeClass( errorClass ).addClass( validClass );
353 + }
354 + }
355 + },
356 +
357 + // https://jqueryvalidation.org/jQuery.validator.setDefaults/
358 + setDefaults: function( settings ) {
359 + $.extend( $.validator.defaults, settings );
360 + },
361 +
362 + messages: {
363 + required: "This field is required.",
364 + remote: "Please fix this field.",
365 + email: "Please enter a valid email address.",
366 + url: "Please enter a valid URL.",
367 + date: "Please enter a valid date.",
368 + dateISO: "Please enter a valid date (ISO).",
369 + number: "Please enter a valid number.",
370 + digits: "Please enter only digits.",
371 + equalTo: "Please enter the same value again.",
372 + maxlength: $.validator.format( "Please enter no more than {0} characters." ),
373 + minlength: $.validator.format( "Please enter at least {0} characters." ),
374 + rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
375 + range: $.validator.format( "Please enter a value between {0} and {1}." ),
376 + max: $.validator.format( "Please enter a value less than or equal to {0}." ),
377 + min: $.validator.format( "Please enter a value greater than or equal to {0}." ),
378 + step: $.validator.format( "Please enter a multiple of {0}." )
379 + },
380 +
381 + autoCreateRanges: false,
382 +
383 + prototype: {
384 +
385 + init: function() {
386 + this.labelContainer = $( this.settings.errorLabelContainer );
387 + this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
388 + this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
389 + this.submitted = {};
390 + this.valueCache = {};
391 + this.pendingRequest = 0;
392 + this.pending = {};
393 + this.invalid = {};
394 + this.reset();
395 +
396 + var groups = ( this.groups = {} ),
397 + rules;
398 + $.each( this.settings.groups, function( key, value ) {
399 + if ( typeof value === "string" ) {
400 + value = value.split( /\s/ );
401 + }
402 + $.each( value, function( index, name ) {
403 + groups[ name ] = key;
404 + } );
405 + } );
406 + rules = this.settings.rules;
407 + $.each( rules, function( key, value ) {
408 + rules[ key ] = $.validator.normalizeRule( value );
409 + } );
410 +
411 + function delegate( event ) {
412 +
413 + // Set form expando on contenteditable
414 + if ( !this.form && this.hasAttribute( "contenteditable" ) ) {
415 + this.form = $( this ).closest( "form" )[ 0 ];
416 + this.name = $( this ).attr( "name" );
417 + }
418 +
419 + var validator = $.data( this.form, "validator" ),
420 + eventType = "on" + event.type.replace( /^validate/, "" ),
421 + settings = validator.settings;
422 + if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
423 + settings[ eventType ].call( validator, this, event );
424 + }
425 + }
426 +
427 + $( this.currentForm )
428 + .on( "focusin.validate focusout.validate keyup.validate",
429 + ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
430 + "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
431 + "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
432 + "[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate )
433 +
434 + // Support: Chrome, oldIE
435 + // "select" is provided as event.target when clicking a option
436 + .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate );
437 +
438 + if ( this.settings.invalidHandler ) {
439 + $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
440 + }
441 + },
442 +
443 + // https://jqueryvalidation.org/Validator.form/
444 + form: function() {
445 + this.checkForm();
446 + $.extend( this.submitted, this.errorMap );
447 + this.invalid = $.extend( {}, this.errorMap );
448 + if ( !this.valid() ) {
449 + $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
450 + }
451 + this.showErrors();
452 + return this.valid();
453 + },
454 +
455 + checkForm: function() {
456 + this.prepareForm();
457 + for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
458 + this.check( elements[ i ] );
459 + }
460 + return this.valid();
461 + },
462 +
463 + // https://jqueryvalidation.org/Validator.element/
464 + element: function( element ) {
465 + var cleanElement = this.clean( element ),
466 + checkElement = this.validationTargetFor( cleanElement ),
467 + v = this,
468 + result = true,
469 + rs, group;
470 +
471 + if ( checkElement === undefined ) {
472 + delete this.invalid[ cleanElement.name ];
473 + } else {
474 + this.prepareElement( checkElement );
475 + this.currentElements = $( checkElement );
476 +
477 + // If this element is grouped, then validate all group elements already
478 + // containing a value
479 + group = this.groups[ checkElement.name ];
480 + if ( group ) {
481 + $.each( this.groups, function( name, testgroup ) {
482 + if ( testgroup === group && name !== checkElement.name ) {
483 + cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );
484 + if ( cleanElement && cleanElement.name in v.invalid ) {
485 + v.currentElements.push( cleanElement );
486 + result = v.check( cleanElement ) && result;
487 + }
488 + }
489 + } );
490 + }
491 +
492 + rs = this.check( checkElement ) !== false;
493 + result = result && rs;
494 + if ( rs ) {
495 + this.invalid[ checkElement.name ] = false;
496 + } else {
497 + this.invalid[ checkElement.name ] = true;
498 + }
499 +
500 + if ( !this.numberOfInvalids() ) {
501 +
502 + // Hide error containers on last error
503 + this.toHide = this.toHide.add( this.containers );
504 + }
505 + this.showErrors();
506 +
507 + // Add aria-invalid status for screen readers
508 + $( element ).attr( "aria-invalid", !rs );
509 + }
510 +
511 + return result;
512 + },
513 +
514 + // https://jqueryvalidation.org/Validator.showErrors/
515 + showErrors: function( errors ) {
516 + if ( errors ) {
517 + var validator = this;
518 +
519 + // Add items to error list and map
520 + $.extend( this.errorMap, errors );
521 + this.errorList = $.map( this.errorMap, function( message, name ) {
522 + return {
523 + message: message,
524 + element: validator.findByName( name )[ 0 ]
525 + };
526 + } );
527 +
528 + // Remove items from success list
529 + this.successList = $.grep( this.successList, function( element ) {
530 + return !( element.name in errors );
531 + } );
532 + }
533 + if ( this.settings.showErrors ) {
534 + this.settings.showErrors.call( this, this.errorMap, this.errorList );
535 + } else {
536 + this.defaultShowErrors();
537 + }
538 + },
539 +
540 + // https://jqueryvalidation.org/Validator.resetForm/
541 + resetForm: function() {
542 + if ( $.fn.resetForm ) {
543 + $( this.currentForm ).resetForm();
544 + }
545 + this.invalid = {};
546 + this.submitted = {};
547 + this.prepareForm();
548 + this.hideErrors();
549 + var elements = this.elements()
550 + .removeData( "previousValue" )
551 + .removeAttr( "aria-invalid" );
552 +
553 + this.resetElements( elements );
554 + },
555 +
556 + resetElements: function( elements ) {
557 + var i;
558 +
559 + if ( this.settings.unhighlight ) {
560 + for ( i = 0; elements[ i ]; i++ ) {
561 + this.settings.unhighlight.call( this, elements[ i ],
562 + this.settings.errorClass, "" );
563 + this.findByName( elements[ i ].name ).removeClass( this.settings.validClass );
564 + }
565 + } else {
566 + elements
567 + .removeClass( this.settings.errorClass )
568 + .removeClass( this.settings.validClass );
569 + }
570 + },
571 +
572 + numberOfInvalids: function() {
573 + return this.objectLength( this.invalid );
574 + },
575 +
576 + objectLength: function( obj ) {
577 + /* jshint unused: false */
578 + var count = 0,
579 + i;
580 + for ( i in obj ) {
581 +
582 + // This check allows counting elements with empty error
583 + // message as invalid elements
584 + if ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {
585 + count++;
586 + }
587 + }
588 + return count;
589 + },
590 +
591 + hideErrors: function() {
592 + this.hideThese( this.toHide );
593 + },
594 +
595 + hideThese: function( errors ) {
596 + errors.not( this.containers ).text( "" );
597 + this.addWrapper( errors ).hide();
598 + },
599 +
600 + valid: function() {
601 + return this.size() === 0;
602 + },
603 +
604 + size: function() {
605 + return this.errorList.length;
606 + },
607 +
608 + focusInvalid: function() {
609 + if ( this.settings.focusInvalid ) {
610 + try {
611 + $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )
612 + .filter( ":visible" )
613 + .focus()
614 +
615 + // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
616 + .trigger( "focusin" );
617 + } catch ( e ) {
618 +
619 + // Ignore IE throwing errors when focusing hidden elements
620 + }
621 + }
622 + },
623 +
624 + findLastActive: function() {
625 + var lastActive = this.lastActive;
626 + return lastActive && $.grep( this.errorList, function( n ) {
627 + return n.element.name === lastActive.name;
628 + } ).length === 1 && lastActive;
629 + },
630 +
631 + elements: function() {
632 + var validator = this,
633 + rulesCache = {};
634 +
635 + // Select all valid inputs inside the form (no submit or reset buttons)
636 + return $( this.currentForm )
637 + .find( "input, select, textarea, [contenteditable]" )
638 + .not( ":submit, :reset, :image, :disabled" )
639 + .not( this.settings.ignore )
640 + .filter( function() {
641 + var name = this.name || $( this ).attr( "name" ); // For contenteditable
642 + if ( !name && validator.settings.debug && window.console ) {
643 + console.error( "%o has no name assigned", this );
644 + }
645 +
646 + // Set form expando on contenteditable
647 + if ( this.hasAttribute( "contenteditable" ) ) {
648 + this.form = $( this ).closest( "form" )[ 0 ];
649 + this.name = name;
650 + }
651 +
652 + // Select only the first element for each name, and only those with rules specified
653 + if ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
654 + return false;
655 + }
656 +
657 + rulesCache[ name ] = true;
658 + return true;
659 + } );
660 + },
661 +
662 + clean: function( selector ) {
663 + return $( selector )[ 0 ];
664 + },
665 +
666 + errors: function() {
667 + var errorClass = this.settings.errorClass.split( " " ).join( "." );
668 + return $( this.settings.errorElement + "." + errorClass, this.errorContext );
669 + },
670 +
671 + resetInternals: function() {
672 + this.successList = [];
673 + this.errorList = [];
674 + this.errorMap = {};
675 + this.toShow = $( [] );
676 + this.toHide = $( [] );
677 + },
678 +
679 + reset: function() {
680 + this.resetInternals();
681 + this.currentElements = $( [] );
682 + },
683 +
684 + prepareForm: function() {
685 + this.reset();
686 + this.toHide = this.errors().add( this.containers );
687 + },
688 +
689 + prepareElement: function( element ) {
690 + this.reset();
691 + this.toHide = this.errorsFor( element );
692 + },
693 +
694 + elementValue: function( element ) {
695 + var $element = $( element ),
696 + type = element.type,
697 + val, idx;
698 +
699 + if ( type === "radio" || type === "checkbox" ) {
700 + return this.findByName( element.name ).filter( ":checked" ).val();
701 + } else if ( type === "number" && typeof element.validity !== "undefined" ) {
702 + return element.validity.badInput ? "NaN" : $element.val();
703 + }
704 +
705 + if ( element.hasAttribute( "contenteditable" ) ) {
706 + val = $element.text();
707 + } else {
708 + val = $element.val();
709 + }
710 +
711 + if ( type === "file" ) {
712 +
713 + // Modern browser (chrome & safari)
714 + if ( val.substr( 0, 12 ) === "C:\\fakepath\\" ) {
715 + return val.substr( 12 );
716 + }
717 +
718 + // Legacy browsers
719 + // Unix-based path
720 + idx = val.lastIndexOf( "/" );
721 + if ( idx >= 0 ) {
722 + return val.substr( idx + 1 );
723 + }
724 +
725 + // Windows-based path
726 + idx = val.lastIndexOf( "\\" );
727 + if ( idx >= 0 ) {
728 + return val.substr( idx + 1 );
729 + }
730 +
731 + // Just the file name
732 + return val;
733 + }
734 +
735 + if ( typeof val === "string" ) {
736 + return val.replace( /\r/g, "" );
737 + }
738 + return val;
739 + },
740 +
741 + check: function( element ) {
742 + element = this.validationTargetFor( this.clean( element ) );
743 +
744 + var rules = $( element ).rules(),
745 + rulesCount = $.map( rules, function( n, i ) {
746 + return i;
747 + } ).length,
748 + dependencyMismatch = false,
749 + val = this.elementValue( element ),
750 + result, method, rule, normalizer;
751 +
752 + // Prioritize the local normalizer defined for this element over the global one
753 + // if the former exists, otherwise user the global one in case it exists.
754 + if ( typeof rules.normalizer === "function" ) {
755 + normalizer = rules.normalizer;
756 + } else if ( typeof this.settings.normalizer === "function" ) {
757 + normalizer = this.settings.normalizer;
758 + }
759 +
760 + // If normalizer is defined, then call it to retreive the changed value instead
761 + // of using the real one.
762 + // Note that `this` in the normalizer is `element`.
763 + if ( normalizer ) {
764 + val = normalizer.call( element, val );
765 +
766 + if ( typeof val !== "string" ) {
767 + throw new TypeError( "The normalizer should return a string value." );
768 + }
769 +
770 + // Delete the normalizer from rules to avoid treating it as a pre-defined method.
771 + delete rules.normalizer;
772 + }
773 +
774 + for ( method in rules ) {
775 + rule = { method: method, parameters: rules[ method ] };
776 + try {
777 + result = $.validator.methods[ method ].call( this, val, element, rule.parameters );
778 +
779 + // If a method indicates that the field is optional and therefore valid,
780 + // don't mark it as valid when there are no other rules
781 + if ( result === "dependency-mismatch" && rulesCount === 1 ) {
782 + dependencyMismatch = true;
783 + continue;
784 + }
785 + dependencyMismatch = false;
786 +
787 + if ( result === "pending" ) {
788 + this.toHide = this.toHide.not( this.errorsFor( element ) );
789 + return;
790 + }
791 +
792 + if ( !result ) {
793 + this.formatAndAdd( element, rule );
794 + return false;
795 + }
796 + } catch ( e ) {
797 + if ( this.settings.debug && window.console ) {
798 + console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
799 + }
800 + if ( e instanceof TypeError ) {
801 + e.message += ". Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
802 + }
803 +
804 + throw e;
805 + }
806 + }
807 + if ( dependencyMismatch ) {
808 + return;
809 + }
810 + if ( this.objectLength( rules ) ) {
811 + this.successList.push( element );
812 + }
813 + return true;
814 + },
815 +
816 + // Return the custom message for the given element and validation method
817 + // specified in the element's HTML5 data attribute
818 + // return the generic message if present and no method specific message is present
819 + customDataMessage: function( element, method ) {
820 + return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
821 + method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
822 + },
823 +
824 + // Return the custom message for the given element name and validation method
825 + customMessage: function( name, method ) {
826 + var m = this.settings.messages[ name ];
827 + return m && ( m.constructor === String ? m : m[ method ] );
828 + },
829 +
830 + // Return the first defined argument, allowing empty strings
831 + findDefined: function() {
832 + for ( var i = 0; i < arguments.length; i++ ) {
833 + if ( arguments[ i ] !== undefined ) {
834 + return arguments[ i ];
835 + }
836 + }
837 + return undefined;
838 + },
839 +
840 + // The second parameter 'rule' used to be a string, and extended to an object literal
841 + // of the following form:
842 + // rule = {
843 + // method: "method name",
844 + // parameters: "the given method parameters"
845 + // }
846 + //
847 + // The old behavior still supported, kept to maintain backward compatibility with
848 + // old code, and will be removed in the next major release.
849 + defaultMessage: function( element, rule ) {
850 + if ( typeof rule === "string" ) {
851 + rule = { method: rule };
852 + }
853 +
854 + var message = this.findDefined(
855 + this.customMessage( element.name, rule.method ),
856 + this.customDataMessage( element, rule.method ),
857 +
858 + // 'title' is never undefined, so handle empty string as undefined
859 + !this.settings.ignoreTitle && element.title || undefined,
860 + $.validator.messages[ rule.method ],
861 + "<strong>Warning: No message defined for " + element.name + "</strong>"
862 + ),
863 + theregex = /\$?\{(\d+)\}/g;
864 + if ( typeof message === "function" ) {
865 + message = message.call( this, rule.parameters, element );
866 + } else if ( theregex.test( message ) ) {
867 + message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
868 + }
869 +
870 + return message;
871 + },
872 +
873 + formatAndAdd: function( element, rule ) {
874 + var message = this.defaultMessage( element, rule );
875 +
876 + this.errorList.push( {
877 + message: message,
878 + element: element,
879 + method: rule.method
880 + } );
881 +
882 + this.errorMap[ element.name ] = message;
883 + this.submitted[ element.name ] = message;
884 + },
885 +
886 + addWrapper: function( toToggle ) {
887 + if ( this.settings.wrapper ) {
888 + toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
889 + }
890 + return toToggle;
891 + },
892 +
893 + defaultShowErrors: function() {
894 + var i, elements, error;
895 + for ( i = 0; this.errorList[ i ]; i++ ) {
896 + error = this.errorList[ i ];
897 + if ( this.settings.highlight ) {
898 + this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
899 + }
900 + this.showLabel( error.element, error.message );
901 + }
902 + if ( this.errorList.length ) {
903 + this.toShow = this.toShow.add( this.containers );
904 + }
905 + if ( this.settings.success ) {
906 + for ( i = 0; this.successList[ i ]; i++ ) {
907 + this.showLabel( this.successList[ i ] );
908 + }
909 + }
910 + if ( this.settings.unhighlight ) {
911 + for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
912 + this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
913 + }
914 + }
915 + this.toHide = this.toHide.not( this.toShow );
916 + this.hideErrors();
917 + this.addWrapper( this.toShow ).show();
918 + },
919 +
920 + validElements: function() {
921 + return this.currentElements.not( this.invalidElements() );
922 + },
923 +
924 + invalidElements: function() {
925 + return $( this.errorList ).map( function() {
926 + return this.element;
927 + } );
928 + },
929 +
930 + showLabel: function( element, message ) {
931 + var place, group, errorID, v,
932 + error = this.errorsFor( element ),
933 + elementID = this.idOrName( element ),
934 + describedBy = $( element ).attr( "aria-describedby" );
935 +
936 + if ( error.length ) {
937 +
938 + // Refresh error/success class
939 + error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
940 +
941 + // Replace message on existing label
942 + error.html( message );
943 + } else {
944 +
945 + // Create error element
946 + error = $( "<" + this.settings.errorElement + ">" )
947 + .attr( "id", elementID + "-error" )
948 + .addClass( this.settings.errorClass )
949 + .html( message || "" );
950 +
951 + // Maintain reference to the element to be placed into the DOM
952 + place = error;
953 + if ( this.settings.wrapper ) {
954 +
955 + // Make sure the element is visible, even in IE
956 + // actually showing the wrapped element is handled elsewhere
957 + place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
958 + }
959 + if ( this.labelContainer.length ) {
960 + this.labelContainer.append( place );
961 + } else if ( this.settings.errorPlacement ) {
962 + this.settings.errorPlacement.call( this, place, $( element ) );
963 + } else {
964 + place.insertAfter( element );
965 + }
966 +
967 + // Link error back to the element
968 + if ( error.is( "label" ) ) {
969 +
970 + // If the error is a label, then associate using 'for'
971 + error.attr( "for", elementID );
972 +
973 + // If the element is not a child of an associated label, then it's necessary
974 + // to explicitly apply aria-describedby
975 + } else if ( error.parents( "label[for='" + this.escapeCssMeta( elementID ) + "']" ).length === 0 ) {
976 + errorID = error.attr( "id" );
977 +
978 + // Respect existing non-error aria-describedby
979 + if ( !describedBy ) {
980 + describedBy = errorID;
981 + } else if ( !describedBy.match( new RegExp( "\\b" + this.escapeCssMeta( errorID ) + "\\b" ) ) ) {
982 +
983 + // Add to end of list if not already present
984 + describedBy += " " + errorID;
985 + }
986 + $( element ).attr( "aria-describedby", describedBy );
987 +
988 + // If this element is grouped, then assign to all elements in the same group
989 + group = this.groups[ element.name ];
990 + if ( group ) {
991 + v = this;
992 + $.each( v.groups, function( name, testgroup ) {
993 + if ( testgroup === group ) {
994 + $( "[name='" + v.escapeCssMeta( name ) + "']", v.currentForm )
995 + .attr( "aria-describedby", error.attr( "id" ) );
996 + }
997 + } );
998 + }
999 + }
1000 + }
1001 + if ( !message && this.settings.success ) {
1002 + error.text( "" );
1003 + if ( typeof this.settings.success === "string" ) {
1004 + error.addClass( this.settings.success );
1005 + } else {
1006 + this.settings.success( error, element );
1007 + }
1008 + }
1009 + this.toShow = this.toShow.add( error );
1010 + },
1011 +
1012 + errorsFor: function( element ) {
1013 + var name = this.escapeCssMeta( this.idOrName( element ) ),
1014 + describer = $( element ).attr( "aria-describedby" ),
1015 + selector = "label[for='" + name + "'], label[for='" + name + "'] *";
1016 +
1017 + // 'aria-describedby' should directly reference the error element
1018 + if ( describer ) {
1019 + selector = selector + ", #" + this.escapeCssMeta( describer )
1020 + .replace( /\s+/g, ", #" );
1021 + }
1022 +
1023 + return this
1024 + .errors()
1025 + .filter( selector );
1026 + },
1027 +
1028 + // See https://api.jquery.com/category/selectors/, for CSS
1029 + // meta-characters that should be escaped in order to be used with JQuery
1030 + // as a literal part of a name/id or any selector.
1031 + escapeCssMeta: function( string ) {
1032 + return string.replace( /([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1" );
1033 + },
1034 +
1035 + idOrName: function( element ) {
1036 + return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
1037 + },
1038 +
1039 + validationTargetFor: function( element ) {
1040 +
1041 + // If radio/checkbox, validate first element in group instead
1042 + if ( this.checkable( element ) ) {
1043 + element = this.findByName( element.name );
1044 + }
1045 +
1046 + // Always apply ignore filter
1047 + return $( element ).not( this.settings.ignore )[ 0 ];
1048 + },
1049 +
1050 + checkable: function( element ) {
1051 + return ( /radio|checkbox/i ).test( element.type );
1052 + },
1053 +
1054 + findByName: function( name ) {
1055 + return $( this.currentForm ).find( "[name='" + this.escapeCssMeta( name ) + "']" );
1056 + },
1057 +
1058 + getLength: function( value, element ) {
1059 + switch ( element.nodeName.toLowerCase() ) {
1060 + case "select":
1061 + return $( "option:selected", element ).length;
1062 + case "input":
1063 + if ( this.checkable( element ) ) {
1064 + return this.findByName( element.name ).filter( ":checked" ).length;
1065 + }
1066 + }
1067 + return value.length;
1068 + },
1069 +
1070 + depend: function( param, element ) {
1071 + return this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;
1072 + },
1073 +
1074 + dependTypes: {
1075 + "boolean": function( param ) {
1076 + return param;
1077 + },
1078 + "string": function( param, element ) {
1079 + return !!$( param, element.form ).length;
1080 + },
1081 + "function": function( param, element ) {
1082 + return param( element );
1083 + }
1084 + },
1085 +
1086 + optional: function( element ) {
1087 + var val = this.elementValue( element );
1088 + return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
1089 + },
1090 +
1091 + startRequest: function( element ) {
1092 + if ( !this.pending[ element.name ] ) {
1093 + this.pendingRequest++;
1094 + $( element ).addClass( this.settings.pendingClass );
1095 + this.pending[ element.name ] = true;
1096 + }
1097 + },
1098 +
1099 + stopRequest: function( element, valid ) {
1100 + this.pendingRequest--;
1101 +
1102 + // Sometimes synchronization fails, make sure pendingRequest is never < 0
1103 + if ( this.pendingRequest < 0 ) {
1104 + this.pendingRequest = 0;
1105 + }
1106 + delete this.pending[ element.name ];
1107 + $( element ).removeClass( this.settings.pendingClass );
1108 + if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
1109 + $( this.currentForm ).submit();
1110 +
1111 + // Remove the hidden input that was used as a replacement for the
1112 + // missing submit button. The hidden input is added by `handle()`
1113 + // to ensure that the value of the used submit button is passed on
1114 + // for scripted submits triggered by this method
1115 + if ( this.submitButton ) {
1116 + $( "input:hidden[name='" + this.submitButton.name + "']", this.currentForm ).remove();
1117 + }
1118 +
1119 + this.formSubmitted = false;
1120 + } else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {
1121 + $( this.currentForm ).triggerHandler( "invalid-form", [ this ] );
1122 + this.formSubmitted = false;
1123 + }
1124 + },
1125 +
1126 + previousValue: function( element, method ) {
1127 + method = typeof method === "string" && method || "remote";
1128 +
1129 + return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
1130 + old: null,
1131 + valid: true,
1132 + message: this.defaultMessage( element, { method: method } )
1133 + } );
1134 + },
1135 +
1136 + // Cleans up all forms and elements, removes validator-specific events
1137 + destroy: function() {
1138 + this.resetForm();
1139 +
1140 + $( this.currentForm )
1141 + .off( ".validate" )
1142 + .removeData( "validator" )
1143 + .find( ".validate-equalTo-blur" )
1144 + .off( ".validate-equalTo" )
1145 + .removeClass( "validate-equalTo-blur" );
1146 + }
1147 +
1148 + },
1149 +
1150 + classRuleSettings: {
1151 + required: { required: true },
1152 + email: { email: true },
1153 + url: { url: true },
1154 + date: { date: true },
1155 + dateISO: { dateISO: true },
1156 + number: { number: true },
1157 + digits: { digits: true },
1158 + creditcard: { creditcard: true }
1159 + },
1160 +
1161 + addClassRules: function( className, rules ) {
1162 + if ( className.constructor === String ) {
1163 + this.classRuleSettings[ className ] = rules;
1164 + } else {
1165 + $.extend( this.classRuleSettings, className );
1166 + }
1167 + },
1168 +
1169 + classRules: function( element ) {
1170 + var rules = {},
1171 + classes = $( element ).attr( "class" );
1172 +
1173 + if ( classes ) {
1174 + $.each( classes.split( " " ), function() {
1175 + if ( this in $.validator.classRuleSettings ) {
1176 + $.extend( rules, $.validator.classRuleSettings[ this ] );
1177 + }
1178 + } );
1179 + }
1180 + return rules;
1181 + },
1182 +
1183 + normalizeAttributeRule: function( rules, type, method, value ) {
1184 +
1185 + // Convert the value to a number for number inputs, and for text for backwards compability
1186 + // allows type="date" and others to be compared as strings
1187 + if ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
1188 + value = Number( value );
1189 +
1190 + // Support Opera Mini, which returns NaN for undefined minlength
1191 + if ( isNaN( value ) ) {
1192 + value = undefined;
1193 + }
1194 + }
1195 +
1196 + if ( value || value === 0 ) {
1197 + rules[ method ] = value;
1198 + } else if ( type === method && type !== "range" ) {
1199 +
1200 + // Exception: the jquery validate 'range' method
1201 + // does not test for the html5 'range' type
1202 + rules[ method ] = true;
1203 + }
1204 + },
1205 +
1206 + attributeRules: function( element ) {
1207 + var rules = {},
1208 + $element = $( element ),
1209 + type = element.getAttribute( "type" ),
1210 + method, value;
1211 +
1212 + for ( method in $.validator.methods ) {
1213 +
1214 + // Support for <input required> in both html5 and older browsers
1215 + if ( method === "required" ) {
1216 + value = element.getAttribute( method );
1217 +
1218 + // Some browsers return an empty string for the required attribute
1219 + // and non-HTML5 browsers might have required="" markup
1220 + if ( value === "" ) {
1221 + value = true;
1222 + }
1223 +
1224 + // Force non-HTML5 browsers to return bool
1225 + value = !!value;
1226 + } else {
1227 + value = $element.attr( method );
1228 + }
1229 +
1230 + this.normalizeAttributeRule( rules, type, method, value );
1231 + }
1232 +
1233 + // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
1234 + if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
1235 + delete rules.maxlength;
1236 + }
1237 +
1238 + return rules;
1239 + },
1240 +
1241 + dataRules: function( element ) {
1242 + var rules = {},
1243 + $element = $( element ),
1244 + type = element.getAttribute( "type" ),
1245 + method, value;
1246 +
1247 + for ( method in $.validator.methods ) {
1248 + value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
1249 + this.normalizeAttributeRule( rules, type, method, value );
1250 + }
1251 + return rules;
1252 + },
1253 +
1254 + staticRules: function( element ) {
1255 + var rules = {},
1256 + validator = $.data( element.form, "validator" );
1257 +
1258 + if ( validator.settings.rules ) {
1259 + rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
1260 + }
1261 + return rules;
1262 + },
1263 +
1264 + normalizeRules: function( rules, element ) {
1265 +
1266 + // Handle dependency check
1267 + $.each( rules, function( prop, val ) {
1268 +
1269 + // Ignore rule when param is explicitly false, eg. required:false
1270 + if ( val === false ) {
1271 + delete rules[ prop ];
1272 + return;
1273 + }
1274 + if ( val.param || val.depends ) {
1275 + var keepRule = true;
1276 + switch ( typeof val.depends ) {
1277 + case "string":
1278 + keepRule = !!$( val.depends, element.form ).length;
1279 + break;
1280 + case "function":
1281 + keepRule = val.depends.call( element, element );
1282 + break;
1283 + }
1284 + if ( keepRule ) {
1285 + rules[ prop ] = val.param !== undefined ? val.param : true;
1286 + } else {
1287 + $.data( element.form, "validator" ).resetElements( $( element ) );
1288 + delete rules[ prop ];
1289 + }
1290 + }
1291 + } );
1292 +
1293 + // Evaluate parameters
1294 + $.each( rules, function( rule, parameter ) {
1295 + rules[ rule ] = $.isFunction( parameter ) && rule !== "normalizer" ? parameter( element ) : parameter;
1296 + } );
1297 +
1298 + // Clean number parameters
1299 + $.each( [ "minlength", "maxlength" ], function() {
1300 + if ( rules[ this ] ) {
1301 + rules[ this ] = Number( rules[ this ] );
1302 + }
1303 + } );
1304 + $.each( [ "rangelength", "range" ], function() {
1305 + var parts;
1306 + if ( rules[ this ] ) {
1307 + if ( $.isArray( rules[ this ] ) ) {
1308 + rules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];
1309 + } else if ( typeof rules[ this ] === "string" ) {
1310 + parts = rules[ this ].replace( /[\[\]]/g, "" ).split( /[\s,]+/ );
1311 + rules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];
1312 + }
1313 + }
1314 + } );
1315 +
1316 + if ( $.validator.autoCreateRanges ) {
1317 +
1318 + // Auto-create ranges
1319 + if ( rules.min != null && rules.max != null ) {
1320 + rules.range = [ rules.min, rules.max ];
1321 + delete rules.min;
1322 + delete rules.max;
1323 + }
1324 + if ( rules.minlength != null && rules.maxlength != null ) {
1325 + rules.rangelength = [ rules.minlength, rules.maxlength ];
1326 + delete rules.minlength;
1327 + delete rules.maxlength;
1328 + }
1329 + }
1330 +
1331 + return rules;
1332 + },
1333 +
1334 + // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
1335 + normalizeRule: function( data ) {
1336 + if ( typeof data === "string" ) {
1337 + var transformed = {};
1338 + $.each( data.split( /\s/ ), function() {
1339 + transformed[ this ] = true;
1340 + } );
1341 + data = transformed;
1342 + }
1343 + return data;
1344 + },
1345 +
1346 + // https://jqueryvalidation.org/jQuery.validator.addMethod/
1347 + addMethod: function( name, method, message ) {
1348 + $.validator.methods[ name ] = method;
1349 + $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
1350 + if ( method.length < 3 ) {
1351 + $.validator.addClassRules( name, $.validator.normalizeRule( name ) );
1352 + }
1353 + },
1354 +
1355 + // https://jqueryvalidation.org/jQuery.validator.methods/
1356 + methods: {
1357 +
1358 + // https://jqueryvalidation.org/required-method/
1359 + required: function( value, element, param ) {
1360 +
1361 + // Check if dependency is met
1362 + if ( !this.depend( param, element ) ) {
1363 + return "dependency-mismatch";
1364 + }
1365 + if ( element.nodeName.toLowerCase() === "select" ) {
1366 +
1367 + // Could be an array for select-multiple or a string, both are fine this way
1368 + var val = $( element ).val();
1369 + return val && val.length > 0;
1370 + }
1371 + if ( this.checkable( element ) ) {
1372 + return this.getLength( value, element ) > 0;
1373 + }
1374 + return value.length > 0;
1375 + },
1376 +
1377 + // https://jqueryvalidation.org/email-method/
1378 + email: function( value, element ) {
1379 +
1380 + // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
1381 + // Retrieved 2014-01-14
1382 + // If you have a problem with this implementation, report a bug against the above spec
1383 + // Or use custom methods to implement your own email validation
1384 + return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
1385 + },
1386 +
1387 + // https://jqueryvalidation.org/url-method/
1388 + url: function( value, element ) {
1389 +
1390 + // Copyright (c) 2010-2013 Diego Perini, MIT licensed
1391 + // https://gist.github.com/dperini/729294
1392 + // see also https://mathiasbynens.be/demo/url-regex
1393 + // modified to allow protocol-relative URLs
1394 + return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
1395 + },
1396 +
1397 + // https://jqueryvalidation.org/date-method/
1398 + date: function( value, element ) {
1399 + return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
1400 + },
1401 +
1402 + // https://jqueryvalidation.org/dateISO-method/
1403 + dateISO: function( value, element ) {
1404 + return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
1405 + },
1406 +
1407 + // https://jqueryvalidation.org/number-method/
1408 + number: function( value, element ) {
1409 + return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
1410 + },
1411 +
1412 + // https://jqueryvalidation.org/digits-method/
1413 + digits: function( value, element ) {
1414 + return this.optional( element ) || /^\d+$/.test( value );
1415 + },
1416 +
1417 + // https://jqueryvalidation.org/minlength-method/
1418 + minlength: function( value, element, param ) {
1419 + var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1420 + return this.optional( element ) || length >= param;
1421 + },
1422 +
1423 + // https://jqueryvalidation.org/maxlength-method/
1424 + maxlength: function( value, element, param ) {
1425 + var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1426 + return this.optional( element ) || length <= param;
1427 + },
1428 +
1429 + // https://jqueryvalidation.org/rangelength-method/
1430 + rangelength: function( value, element, param ) {
1431 + var length = $.isArray( value ) ? value.length : this.getLength( value, element );
1432 + return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
1433 + },
1434 +
1435 + // https://jqueryvalidation.org/min-method/
1436 + min: function( value, element, param ) {
1437 + return this.optional( element ) || value >= param;
1438 + },
1439 +
1440 + // https://jqueryvalidation.org/max-method/
1441 + max: function( value, element, param ) {
1442 + return this.optional( element ) || value <= param;
1443 + },
1444 +
1445 + // https://jqueryvalidation.org/range-method/
1446 + range: function( value, element, param ) {
1447 + return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
1448 + },
1449 +
1450 + // https://jqueryvalidation.org/step-method/
1451 + step: function( value, element, param ) {
1452 + var type = $( element ).attr( "type" ),
1453 + errorMessage = "Step attribute on input type " + type + " is not supported.",
1454 + supportedTypes = [ "text", "number", "range" ],
1455 + re = new RegExp( "\\b" + type + "\\b" ),
1456 + notSupported = type && !re.test( supportedTypes.join() ),
1457 + decimalPlaces = function( num ) {
1458 + var match = ( "" + num ).match( /(?:\.(\d+))?$/ );
1459 + if ( !match ) {
1460 + return 0;
1461 + }
1462 +
1463 + // Number of digits right of decimal point.
1464 + return match[ 1 ] ? match[ 1 ].length : 0;
1465 + },
1466 + toInt = function( num ) {
1467 + return Math.round( num * Math.pow( 10, decimals ) );
1468 + },
1469 + valid = true,
1470 + decimals;
1471 +
1472 + // Works only for text, number and range input types
1473 + // TODO find a way to support input types date, datetime, datetime-local, month, time and week
1474 + if ( notSupported ) {
1475 + throw new Error( errorMessage );
1476 + }
1477 +
1478 + decimals = decimalPlaces( param );
1479 +
1480 + // Value can't have too many decimals
1481 + if ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {
1482 + valid = false;
1483 + }
1484 +
1485 + return this.optional( element ) || valid;
1486 + },
1487 +
1488 + // https://jqueryvalidation.org/equalTo-method/
1489 + equalTo: function( value, element, param ) {
1490 +
1491 + // Bind to the blur event of the target in order to revalidate whenever the target field is updated
1492 + var target = $( param );
1493 + if ( this.settings.onfocusout && target.not( ".validate-equalTo-blur" ).length ) {
1494 + target.addClass( "validate-equalTo-blur" ).on( "blur.validate-equalTo", function() {
1495 + $( element ).valid();
1496 + } );
1497 + }
1498 + return value === target.val();
1499 + },
1500 +
1501 + // https://jqueryvalidation.org/remote-method/
1502 + remote: function( value, element, param, method ) {
1503 + if ( this.optional( element ) ) {
1504 + return "dependency-mismatch";
1505 + }
1506 +
1507 + method = typeof method === "string" && method || "remote";
1508 +
1509 + var previous = this.previousValue( element, method ),
1510 + validator, data, optionDataString;
1511 +
1512 + if ( !this.settings.messages[ element.name ] ) {
1513 + this.settings.messages[ element.name ] = {};
1514 + }
1515 + previous.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];
1516 + this.settings.messages[ element.name ][ method ] = previous.message;
1517 +
1518 + param = typeof param === "string" && { url: param } || param;
1519 + optionDataString = $.param( $.extend( { data: value }, param.data ) );
1520 + if ( previous.old === optionDataString ) {
1521 + return previous.valid;
1522 + }
1523 +
1524 + previous.old = optionDataString;
1525 + validator = this;
1526 + this.startRequest( element );
1527 + data = {};
1528 + data[ element.name ] = value;
1529 + $.ajax( $.extend( true, {
1530 + mode: "abort",
1531 + port: "validate" + element.name,
1532 + dataType: "json",
1533 + data: data,
1534 + context: validator.currentForm,
1535 + success: function( response ) {
1536 + var valid = response === true || response === "true",
1537 + errors, message, submitted;
1538 +
1539 + validator.settings.messages[ element.name ][ method ] = previous.originalMessage;
1540 + if ( valid ) {
1541 + submitted = validator.formSubmitted;
1542 + validator.resetInternals();
1543 + validator.toHide = validator.errorsFor( element );
1544 + validator.formSubmitted = submitted;
1545 + validator.successList.push( element );
1546 + validator.invalid[ element.name ] = false;
1547 + validator.showErrors();
1548 + } else {
1549 + errors = {};
1550 + message = response || validator.defaultMessage( element, { method: method, parameters: value } );
1551 + errors[ element.name ] = previous.message = message;
1552 + validator.invalid[ element.name ] = true;
1553 + validator.showErrors( errors );
1554 + }
1555 + previous.valid = valid;
1556 + validator.stopRequest( element, valid );
1557 + }
1558 + }, param ) );
1559 + return "pending";
1560 + }
1561 + }
1562 +
1563 +} );
1564 +
1565 +// Ajax mode: abort
1566 +// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
1567 +// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
1568 +
1569 +var pendingRequests = {},
1570 + ajax;
1571 +
1572 +// Use a prefilter if available (1.5+)
1573 +if ( $.ajaxPrefilter ) {
1574 + $.ajaxPrefilter( function( settings, _, xhr ) {
1575 + var port = settings.port;
1576 + if ( settings.mode === "abort" ) {
1577 + if ( pendingRequests[ port ] ) {
1578 + pendingRequests[ port ].abort();
1579 + }
1580 + pendingRequests[ port ] = xhr;
1581 + }
1582 + } );
1583 +} else {
1584 +
1585 + // Proxy ajax
1586 + ajax = $.ajax;
1587 + $.ajax = function( settings ) {
1588 + var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
1589 + port = ( "port" in settings ? settings : $.ajaxSettings ).port;
1590 + if ( mode === "abort" ) {
1591 + if ( pendingRequests[ port ] ) {
1592 + pendingRequests[ port ].abort();
1593 + }
1594 + pendingRequests[ port ] = ajax.apply( this, arguments );
1595 + return pendingRequests[ port ];
1596 + }
1597 + return ajax.apply( this, arguments );
1598 + };
1599 +}
1600 +return $;
1601 +}));
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.min.js new
+4
@@ -0,0 +1,4 @@
1 +/*! jQuery Validation Plugin - v1.17.0 - 7/29/2017
2 + * https://jqueryvalidation.org/
3 + * Copyright (c) 2017 Jörn Zaefferer; Licensed MIT */
4 +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!c.settings.submitHandler||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(null!=j&&(!j.form&&j.hasAttribute("contenteditable")&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}}),a.extend(a.expr.pseudos||a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){var c=a(b).val();return null!==c&&!!a.trim(""+c)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){!this.form&&this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name"));var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=d),!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type;return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=b.hasAttribute("contenteditable")?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);if("function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f){if(j=f.call(b,j),"string"!=typeof j)throw new TypeError("The normalizer should return a string value.");delete g.normalizer}for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]},defaultMessage:function(b,c){"string"==typeof c&&(c={method:c});var d=this.findDefined(this.customMessage(b.name,c.method),this.customDataMessage(b,c.method),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c.method],"<strong>Warning: No message defined for "+b.name+"</strong>"),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(d,e){b[d]=a.isFunction(e)&&"normalizer"!==d?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e<=d},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var b,c={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a});
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.unobtrusive.js new
+432
@@ -0,0 +1,432 @@
1 +// Unobtrusive validation support library for jQuery and jQuery Validate
2 +// Copyright (c) .NET Foundation. All rights reserved.
3 +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4 +// @version v3.2.11
5 +
6 +/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */
7 +/*global document: false, jQuery: false */
8 +
9 +(function (factory) {
10 + if (typeof define === 'function' && define.amd) {
11 + // AMD. Register as an anonymous module.
12 + define("jquery.validate.unobtrusive", ['jquery-validation'], factory);
13 + } else if (typeof module === 'object' && module.exports) {
14 + // CommonJS-like environments that support module.exports
15 + module.exports = factory(require('jquery-validation'));
16 + } else {
17 + // Browser global
18 + jQuery.validator.unobtrusive = factory(jQuery);
19 + }
20 +}(function ($) {
21 + var $jQval = $.validator,
22 + adapters,
23 + data_validation = "unobtrusiveValidation";
24 +
25 + function setValidationValues(options, ruleName, value) {
26 + options.rules[ruleName] = value;
27 + if (options.message) {
28 + options.messages[ruleName] = options.message;
29 + }
30 + }
31 +
32 + function splitAndTrim(value) {
33 + return value.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g);
34 + }
35 +
36 + function escapeAttributeValue(value) {
37 + // As mentioned on http://api.jquery.com/category/selectors/
38 + return value.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1");
39 + }
40 +
41 + function getModelPrefix(fieldName) {
42 + return fieldName.substr(0, fieldName.lastIndexOf(".") + 1);
43 + }
44 +
45 + function appendModelPrefix(value, prefix) {
46 + if (value.indexOf("*.") === 0) {
47 + value = value.replace("*.", prefix);
48 + }
49 + return value;
50 + }
51 +
52 + function onError(error, inputElement) { // 'this' is the form element
53 + var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
54 + replaceAttrValue = container.attr("data-valmsg-replace"),
55 + replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;
56 +
57 + container.removeClass("field-validation-valid").addClass("field-validation-error");
58 + error.data("unobtrusiveContainer", container);
59 +
60 + if (replace) {
61 + container.empty();
62 + error.removeClass("input-validation-error").appendTo(container);
63 + }
64 + else {
65 + error.hide();
66 + }
67 + }
68 +
69 + function onErrors(event, validator) { // 'this' is the form element
70 + var container = $(this).find("[data-valmsg-summary=true]"),
71 + list = container.find("ul");
72 +
73 + if (list && list.length && validator.errorList.length) {
74 + list.empty();
75 + container.addClass("validation-summary-errors").removeClass("validation-summary-valid");
76 +
77 + $.each(validator.errorList, function () {
78 + $("<li />").html(this.message).appendTo(list);
79 + });
80 + }
81 + }
82 +
83 + function onSuccess(error) { // 'this' is the form element
84 + var container = error.data("unobtrusiveContainer");
85 +
86 + if (container) {
87 + var replaceAttrValue = container.attr("data-valmsg-replace"),
88 + replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;
89 +
90 + container.addClass("field-validation-valid").removeClass("field-validation-error");
91 + error.removeData("unobtrusiveContainer");
92 +
93 + if (replace) {
94 + container.empty();
95 + }
96 + }
97 + }
98 +
99 + function onReset(event) { // 'this' is the form element
100 + var $form = $(this),
101 + key = '__jquery_unobtrusive_validation_form_reset';
102 + if ($form.data(key)) {
103 + return;
104 + }
105 + // Set a flag that indicates we're currently resetting the form.
106 + $form.data(key, true);
107 + try {
108 + $form.data("validator").resetForm();
109 + } finally {
110 + $form.removeData(key);
111 + }
112 +
113 + $form.find(".validation-summary-errors")
114 + .addClass("validation-summary-valid")
115 + .removeClass("validation-summary-errors");
116 + $form.find(".field-validation-error")
117 + .addClass("field-validation-valid")
118 + .removeClass("field-validation-error")
119 + .removeData("unobtrusiveContainer")
120 + .find(">*") // If we were using valmsg-replace, get the underlying error
121 + .removeData("unobtrusiveContainer");
122 + }
123 +
124 + function validationInfo(form) {
125 + var $form = $(form),
126 + result = $form.data(data_validation),
127 + onResetProxy = $.proxy(onReset, form),
128 + defaultOptions = $jQval.unobtrusive.options || {},
129 + execInContext = function (name, args) {
130 + var func = defaultOptions[name];
131 + func && $.isFunction(func) && func.apply(form, args);
132 + };
133 +
134 + if (!result) {
135 + result = {
136 + options: { // options structure passed to jQuery Validate's validate() method
137 + errorClass: defaultOptions.errorClass || "input-validation-error",
138 + errorElement: defaultOptions.errorElement || "span",
139 + errorPlacement: function () {
140 + onError.apply(form, arguments);
141 + execInContext("errorPlacement", arguments);
142 + },
143 + invalidHandler: function () {
144 + onErrors.apply(form, arguments);
145 + execInContext("invalidHandler", arguments);
146 + },
147 + messages: {},
148 + rules: {},
149 + success: function () {
150 + onSuccess.apply(form, arguments);
151 + execInContext("success", arguments);
152 + }
153 + },
154 + attachValidation: function () {
155 + $form
156 + .off("reset." + data_validation, onResetProxy)
157 + .on("reset." + data_validation, onResetProxy)
158 + .validate(this.options);
159 + },
160 + validate: function () { // a validation function that is called by unobtrusive Ajax
161 + $form.validate();
162 + return $form.valid();
163 + }
164 + };
165 + $form.data(data_validation, result);
166 + }
167 +
168 + return result;
169 + }
170 +
171 + $jQval.unobtrusive = {
172 + adapters: [],
173 +
174 + parseElement: function (element, skipAttach) {
175 + /// <summary>
176 + /// Parses a single HTML element for unobtrusive validation attributes.
177 + /// </summary>
178 + /// <param name="element" domElement="true">The HTML element to be parsed.</param>
179 + /// <param name="skipAttach" type="Boolean">[Optional] true to skip attaching the
180 + /// validation to the form. If parsing just this single element, you should specify true.
181 + /// If parsing several elements, you should specify false, and manually attach the validation
182 + /// to the form when you are finished. The default is false.</param>
183 + var $element = $(element),
184 + form = $element.parents("form")[0],
185 + valInfo, rules, messages;
186 +
187 + if (!form) { // Cannot do client-side validation without a form
188 + return;
189 + }
190 +
191 + valInfo = validationInfo(form);
192 + valInfo.options.rules[element.name] = rules = {};
193 + valInfo.options.messages[element.name] = messages = {};
194 +
195 + $.each(this.adapters, function () {
196 + var prefix = "data-val-" + this.name,
197 + message = $element.attr(prefix),
198 + paramValues = {};
199 +
200 + if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)
201 + prefix += "-";
202 +
203 + $.each(this.params, function () {
204 + paramValues[this] = $element.attr(prefix + this);
205 + });
206 +
207 + this.adapt({
208 + element: element,
209 + form: form,
210 + message: message,
211 + params: paramValues,
212 + rules: rules,
213 + messages: messages
214 + });
215 + }
216 + });
217 +
218 + $.extend(rules, { "__dummy__": true });
219 +
220 + if (!skipAttach) {
221 + valInfo.attachValidation();
222 + }
223 + },
224 +
225 + parse: function (selector) {
226 + /// <summary>
227 + /// Parses all the HTML elements in the specified selector. It looks for input elements decorated
228 + /// with the [data-val=true] attribute value and enables validation according to the data-val-*
229 + /// attribute values.
230 + /// </summary>
231 + /// <param name="selector" type="String">Any valid jQuery selector.</param>
232 +
233 + // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one
234 + // element with data-val=true
235 + var $selector = $(selector),
236 + $forms = $selector.parents()
237 + .addBack()
238 + .filter("form")
239 + .add($selector.find("form"))
240 + .has("[data-val=true]");
241 +
242 + $selector.find("[data-val=true]").each(function () {
243 + $jQval.unobtrusive.parseElement(this, true);
244 + });
245 +
246 + $forms.each(function () {
247 + var info = validationInfo(this);
248 + if (info) {
249 + info.attachValidation();
250 + }
251 + });
252 + }
253 + };
254 +
255 + adapters = $jQval.unobtrusive.adapters;
256 +
257 + adapters.add = function (adapterName, params, fn) {
258 + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.</summary>
259 + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
260 + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
261 + /// <param name="params" type="Array" optional="true">[Optional] An array of parameter names (strings) that will
262 + /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and
263 + /// mmmm is the parameter name).</param>
264 + /// <param name="fn" type="Function">The function to call, which adapts the values from the HTML
265 + /// attributes into jQuery Validate rules and/or messages.</param>
266 + /// <returns type="jQuery.validator.unobtrusive.adapters" />
267 + if (!fn) { // Called with no params, just a function
268 + fn = params;
269 + params = [];
270 + }
271 + this.push({ name: adapterName, params: params, adapt: fn });
272 + return this;
273 + };
274 +
275 + adapters.addBool = function (adapterName, ruleName) {
276 + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
277 + /// the jQuery Validate validation rule has no parameter values.</summary>
278 + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
279 + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
280 + /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value
281 + /// of adapterName will be used instead.</param>
282 + /// <returns type="jQuery.validator.unobtrusive.adapters" />
283 + return this.add(adapterName, function (options) {
284 + setValidationValues(options, ruleName || adapterName, true);
285 + });
286 + };
287 +
288 + adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {
289 + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
290 + /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and
291 + /// one for min-and-max). The HTML parameters are expected to be named -min and -max.</summary>
292 + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
293 + /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).</param>
294 + /// <param name="minRuleName" type="String">The name of the jQuery Validate rule to be used when you only
295 + /// have a minimum value.</param>
296 + /// <param name="maxRuleName" type="String">The name of the jQuery Validate rule to be used when you only
297 + /// have a maximum value.</param>
298 + /// <param name="minMaxRuleName" type="String">The name of the jQuery Validate rule to be used when you
299 + /// have both a minimum and maximum value.</param>
300 + /// <param name="minAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that
301 + /// contains the minimum value. The default is "min".</param>
302 + /// <param name="maxAttribute" type="String" optional="true">[Optional] The name of the HTML attribute that
303 + /// contains the maximum value. The default is "max".</param>
304 + /// <returns type="jQuery.validator.unobtrusive.adapters" />
305 + return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) {
306 + var min = options.params.min,
307 + max = options.params.max;
308 +
309 + if (min && max) {
310 + setValidationValues(options, minMaxRuleName, [min, max]);
311 + }
312 + else if (min) {
313 + setValidationValues(options, minRuleName, min);
314 + }
315 + else if (max) {
316 + setValidationValues(options, maxRuleName, max);
317 + }
318 + });
319 + };
320 +
321 + adapters.addSingleVal = function (adapterName, attribute, ruleName) {
322 + /// <summary>Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where
323 + /// the jQuery Validate validation rule has a single value.</summary>
324 + /// <param name="adapterName" type="String">The name of the adapter to be added. This matches the name used
325 + /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).</param>
326 + /// <param name="attribute" type="String">[Optional] The name of the HTML attribute that contains the value.
327 + /// The default is "val".</param>
328 + /// <param name="ruleName" type="String" optional="true">[Optional] The name of the jQuery Validate rule. If not provided, the value
329 + /// of adapterName will be used instead.</param>
330 + /// <returns type="jQuery.validator.unobtrusive.adapters" />
331 + return this.add(adapterName, [attribute || "val"], function (options) {
332 + setValidationValues(options, ruleName || adapterName, options.params[attribute]);
333 + });
334 + };
335 +
336 + $jQval.addMethod("__dummy__", function (value, element, params) {
337 + return true;
338 + });
339 +
340 + $jQval.addMethod("regex", function (value, element, params) {
341 + var match;
342 + if (this.optional(element)) {
343 + return true;
344 + }
345 +
346 + match = new RegExp(params).exec(value);
347 + return (match && (match.index === 0) && (match[0].length === value.length));
348 + });
349 +
350 + $jQval.addMethod("nonalphamin", function (value, element, nonalphamin) {
351 + var match;
352 + if (nonalphamin) {
353 + match = value.match(/\W/g);
354 + match = match && match.length >= nonalphamin;
355 + }
356 + return match;
357 + });
358 +
359 + if ($jQval.methods.extension) {
360 + adapters.addSingleVal("accept", "mimtype");
361 + adapters.addSingleVal("extension", "extension");
362 + } else {
363 + // for backward compatibility, when the 'extension' validation method does not exist, such as with versions
364 + // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for
365 + // validating the extension, and ignore mime-type validations as they are not supported.
366 + adapters.addSingleVal("extension", "extension", "accept");
367 + }
368 +
369 + adapters.addSingleVal("regex", "pattern");
370 + adapters.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");
371 + adapters.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range");
372 + adapters.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength");
373 + adapters.add("equalto", ["other"], function (options) {
374 + var prefix = getModelPrefix(options.element.name),
375 + other = options.params.other,
376 + fullOtherName = appendModelPrefix(other, prefix),
377 + element = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(fullOtherName) + "']")[0];
378 +
379 + setValidationValues(options, "equalTo", element);
380 + });
381 + adapters.add("required", function (options) {
382 + // jQuery Validate equates "required" with "mandatory" for checkbox elements
383 + if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") {
384 + setValidationValues(options, "required", true);
385 + }
386 + });
387 + adapters.add("remote", ["url", "type", "additionalfields"], function (options) {
388 + var value = {
389 + url: options.params.url,
390 + type: options.params.type || "GET",
391 + data: {}
392 + },
393 + prefix = getModelPrefix(options.element.name);
394 +
395 + $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {
396 + var paramName = appendModelPrefix(fieldName, prefix);
397 + value.data[paramName] = function () {
398 + var field = $(options.form).find(":input").filter("[name='" + escapeAttributeValue(paramName) + "']");
399 + // For checkboxes and radio buttons, only pick up values from checked fields.
400 + if (field.is(":checkbox")) {
401 + return field.filter(":checked").val() || field.filter(":hidden").val() || '';
402 + }
403 + else if (field.is(":radio")) {
404 + return field.filter(":checked").val() || '';
405 + }
406 + return field.val();
407 + };
408 + });
409 +
410 + setValidationValues(options, "remote", value);
411 + });
412 + adapters.add("password", ["min", "nonalphamin", "regex"], function (options) {
413 + if (options.params.min) {
414 + setValidationValues(options, "minlength", options.params.min);
415 + }
416 + if (options.params.nonalphamin) {
417 + setValidationValues(options, "nonalphamin", options.params.nonalphamin);
418 + }
419 + if (options.params.regex) {
420 + setValidationValues(options, "regex", options.params.regex);
421 + }
422 + });
423 + adapters.add("fileextensions", ["extensions"], function (options) {
424 + setValidationValues(options, "extension", options.params.extensions);
425 + });
426 +
427 + $(function () {
428 + $jQval.unobtrusive.parse(document);
429 + });
430 +
431 + return $jQval.unobtrusive;
432 +}));
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/jquery.validate.unobtrusive.min.js new
+5
@@ -0,0 +1,5 @@
1 +// Unobtrusive validation support library for jQuery and jQuery Validate
2 +// Copyright (c) .NET Foundation. All rights reserved.
3 +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
4 +// @version v3.2.11
5 +!function(a){"function"==typeof define&&define.amd?define("jquery.validate.unobtrusive",["jquery-validation"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery-validation")):jQuery.validator.unobtrusive=a(jQuery)}(function(a){function e(a,e,n){a.rules[e]=n,a.message&&(a.messages[e]=a.message)}function n(a){return a.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function t(a){return a.replace(/([!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function r(a){return a.substr(0,a.lastIndexOf(".")+1)}function i(a,e){return 0===a.indexOf("*.")&&(a=a.replace("*.",e)),a}function o(e,n){var r=a(this).find("[data-valmsg-for='"+t(n[0].name)+"']"),i=r.attr("data-valmsg-replace"),o=i?a.parseJSON(i)!==!1:null;r.removeClass("field-validation-valid").addClass("field-validation-error"),e.data("unobtrusiveContainer",r),o?(r.empty(),e.removeClass("input-validation-error").appendTo(r)):e.hide()}function d(e,n){var t=a(this).find("[data-valmsg-summary=true]"),r=t.find("ul");r&&r.length&&n.errorList.length&&(r.empty(),t.addClass("validation-summary-errors").removeClass("validation-summary-valid"),a.each(n.errorList,function(){a("<li />").html(this.message).appendTo(r)}))}function s(e){var n=e.data("unobtrusiveContainer");if(n){var t=n.attr("data-valmsg-replace"),r=t?a.parseJSON(t):null;n.addClass("field-validation-valid").removeClass("field-validation-error"),e.removeData("unobtrusiveContainer"),r&&n.empty()}}function l(e){var n=a(this),t="__jquery_unobtrusive_validation_form_reset";if(!n.data(t)){n.data(t,!0);try{n.data("validator").resetForm()}finally{n.removeData(t)}n.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors"),n.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}}function u(e){var n=a(e),t=n.data(v),r=a.proxy(l,e),i=f.unobtrusive.options||{},u=function(n,t){var r=i[n];r&&a.isFunction(r)&&r.apply(e,t)};return t||(t={options:{errorClass:i.errorClass||"input-validation-error",errorElement:i.errorElement||"span",errorPlacement:function(){o.apply(e,arguments),u("errorPlacement",arguments)},invalidHandler:function(){d.apply(e,arguments),u("invalidHandler",arguments)},messages:{},rules:{},success:function(){s.apply(e,arguments),u("success",arguments)}},attachValidation:function(){n.off("reset."+v,r).on("reset."+v,r).validate(this.options)},validate:function(){return n.validate(),n.valid()}},n.data(v,t)),t}var m,f=a.validator,v="unobtrusiveValidation";return f.unobtrusive={adapters:[],parseElement:function(e,n){var t,r,i,o=a(e),d=o.parents("form")[0];d&&(t=u(d),t.options.rules[e.name]=r={},t.options.messages[e.name]=i={},a.each(this.adapters,function(){var n="data-val-"+this.name,t=o.attr(n),s={};void 0!==t&&(n+="-",a.each(this.params,function(){s[this]=o.attr(n+this)}),this.adapt({element:e,form:d,message:t,params:s,rules:r,messages:i}))}),a.extend(r,{__dummy__:!0}),n||t.attachValidation())},parse:function(e){var n=a(e),t=n.parents().addBack().filter("form").add(n.find("form")).has("[data-val=true]");n.find("[data-val=true]").each(function(){f.unobtrusive.parseElement(this,!0)}),t.each(function(){var a=u(this);a&&a.attachValidation()})}},m=f.unobtrusive.adapters,m.add=function(a,e,n){return n||(n=e,e=[]),this.push({name:a,params:e,adapt:n}),this},m.addBool=function(a,n){return this.add(a,function(t){e(t,n||a,!0)})},m.addMinMax=function(a,n,t,r,i,o){return this.add(a,[i||"min",o||"max"],function(a){var i=a.params.min,o=a.params.max;i&&o?e(a,r,[i,o]):i?e(a,n,i):o&&e(a,t,o)})},m.addSingleVal=function(a,n,t){return this.add(a,[n||"val"],function(r){e(r,t||a,r.params[n])})},f.addMethod("__dummy__",function(a,e,n){return!0}),f.addMethod("regex",function(a,e,n){var t;return!!this.optional(e)||(t=new RegExp(n).exec(a),t&&0===t.index&&t[0].length===a.length)}),f.addMethod("nonalphamin",function(a,e,n){var t;return n&&(t=a.match(/\W/g),t=t&&t.length>=n),t}),f.methods.extension?(m.addSingleVal("accept","mimtype"),m.addSingleVal("extension","extension")):m.addSingleVal("extension","extension","accept"),m.addSingleVal("regex","pattern"),m.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"),m.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range"),m.addMinMax("minlength","minlength").addMinMax("maxlength","minlength","maxlength"),m.add("equalto",["other"],function(n){var o=r(n.element.name),d=n.params.other,s=i(d,o),l=a(n.form).find(":input").filter("[name='"+t(s)+"']")[0];e(n,"equalTo",l)}),m.add("required",function(a){"INPUT"===a.element.tagName.toUpperCase()&&"CHECKBOX"===a.element.type.toUpperCase()||e(a,"required",!0)}),m.add("remote",["url","type","additionalfields"],function(o){var d={url:o.params.url,type:o.params.type||"GET",data:{}},s=r(o.element.name);a.each(n(o.params.additionalfields||o.element.name),function(e,n){var r=i(n,s);d.data[r]=function(){var e=a(o.form).find(":input").filter("[name='"+t(r)+"']");return e.is(":checkbox")?e.filter(":checked").val()||e.filter(":hidden").val()||"":e.is(":radio")?e.filter(":checked").val()||"":e.val()}}),e(o,"remote",d)}),m.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&e(a,"minlength",a.params.min),a.params.nonalphamin&&e(a,"nonalphamin",a.params.nonalphamin),a.params.regex&&e(a,"regex",a.params.regex)}),m.add("fileextensions",["extensions"],function(a){e(a,"extension",a.params.extensions)}),a(function(){f.unobtrusive.parse(document)}),f.unobtrusive});
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/Scripts/modernizr-2.8.3.js new
+1406
@@ -0,0 +1,1406 @@
1 +/*!
2 + * Modernizr v2.8.3
3 + * www.modernizr.com
4 + *
5 + * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
6 + * Available under the BSD and MIT licenses: www.modernizr.com/license/
7 + */
8 +
9 +/*
10 + * Modernizr tests which native CSS3 and HTML5 features are available in
11 + * the current UA and makes the results available to you in two ways:
12 + * as properties on a global Modernizr object, and as classes on the
13 + * <html> element. This information allows you to progressively enhance
14 + * your pages with a granular level of control over the experience.
15 + *
16 + * Modernizr has an optional (not included) conditional resource loader
17 + * called Modernizr.load(), based on Yepnope.js (yepnopejs.com).
18 + * To get a build that includes Modernizr.load(), as well as choosing
19 + * which tests to include, go to www.modernizr.com/download/
20 + *
21 + * Authors Faruk Ates, Paul Irish, Alex Sexton
22 + * Contributors Ryan Seddon, Ben Alman
23 + */
24 +
25 +window.Modernizr = (function( window, document, undefined ) {
26 +
27 + var version = '2.8.3',
28 +
29 + Modernizr = {},
30 +
31 + /*>>cssclasses*/
32 + // option for enabling the HTML classes to be added
33 + enableClasses = true,
34 + /*>>cssclasses*/
35 +
36 + docElement = document.documentElement,
37 +
38 + /**
39 + * Create our "modernizr" element that we do most feature tests on.
40 + */
41 + mod = 'modernizr',
42 + modElem = document.createElement(mod),
43 + mStyle = modElem.style,
44 +
45 + /**
46 + * Create the input element for various Web Forms feature tests.
47 + */
48 + inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,
49 +
50 + /*>>smile*/
51 + smile = ':)',
52 + /*>>smile*/
53 +
54 + toString = {}.toString,
55 +
56 + // TODO :: make the prefixes more granular
57 + /*>>prefixes*/
58 + // List of property values to set for css tests. See ticket #21
59 + prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
60 + /*>>prefixes*/
61 +
62 + /*>>domprefixes*/
63 + // Following spec is to expose vendor-specific style properties as:
64 + // elem.style.WebkitBorderRadius
65 + // and the following would be incorrect:
66 + // elem.style.webkitBorderRadius
67 +
68 + // Webkit ghosts their properties in lowercase but Opera & Moz do not.
69 + // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
70 + // erik.eae.net/archives/2008/03/10/21.48.10/
71 +
72 + // More here: github.com/Modernizr/Modernizr/issues/issue/21
73 + omPrefixes = 'Webkit Moz O ms',
74 +
75 + cssomPrefixes = omPrefixes.split(' '),
76 +
77 + domPrefixes = omPrefixes.toLowerCase().split(' '),
78 + /*>>domprefixes*/
79 +
80 + /*>>ns*/
81 + ns = {'svg': 'http://www.w3.org/2000/svg'},
82 + /*>>ns*/
83 +
84 + tests = {},
85 + inputs = {},
86 + attrs = {},
87 +
88 + classes = [],
89 +
90 + slice = classes.slice,
91 +
92 + featureName, // used in testing loop
93 +
94 +
95 + /*>>teststyles*/
96 + // Inject element with style element and some CSS rules
97 + injectElementWithStyles = function( rule, callback, nodes, testnames ) {
98 +
99 + var style, ret, node, docOverflow,
100 + div = document.createElement('div'),
101 + // After page load injecting a fake body doesn't work so check if body exists
102 + body = document.body,
103 + // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.
104 + fakeBody = body || document.createElement('body');
105 +
106 + if ( parseInt(nodes, 10) ) {
107 + // In order not to give false positives we create a node for each test
108 + // This also allows the method to scale for unspecified uses
109 + while ( nodes-- ) {
110 + node = document.createElement('div');
111 + node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
112 + div.appendChild(node);
113 + }
114 + }
115 +
116 + // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed
117 + // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element
118 + // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.
119 + // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx
120 + // Documents served as xml will throw if using &shy; so use xml friendly encoded version. See issue #277
121 + style = ['&#173;','<style id="s', mod, '">', rule, '</style>'].join('');
122 + div.id = mod;
123 + // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
124 + // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
125 + (body ? div : fakeBody).innerHTML += style;
126 + fakeBody.appendChild(div);
127 + if ( !body ) {
128 + //avoid crashing IE8, if background image is used
129 + fakeBody.style.background = '';
130 + //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
131 + fakeBody.style.overflow = 'hidden';
132 + docOverflow = docElement.style.overflow;
133 + docElement.style.overflow = 'hidden';
134 + docElement.appendChild(fakeBody);
135 + }
136 +
137 + ret = callback(div, rule);
138 + // If this is done after page load we don't want to remove the body so check if body exists
139 + if ( !body ) {
140 + fakeBody.parentNode.removeChild(fakeBody);
141 + docElement.style.overflow = docOverflow;
142 + } else {
143 + div.parentNode.removeChild(div);
144 + }
145 +
146 + return !!ret;
147 +
148 + },
149 + /*>>teststyles*/
150 +
151 + /*>>mq*/
152 + // adapted from matchMedia polyfill
153 + // by Scott Jehl and Paul Irish
154 + // gist.github.com/786768
155 + testMediaQuery = function( mq ) {
156 +
157 + var matchMedia = window.matchMedia || window.msMatchMedia;
158 + if ( matchMedia ) {
159 + return matchMedia(mq) && matchMedia(mq).matches || false;
160 + }
161 +
162 + var bool;
163 +
164 + injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {
165 + bool = (window.getComputedStyle ?
166 + getComputedStyle(node, null) :
167 + node.currentStyle)['position'] == 'absolute';
168 + });
169 +
170 + return bool;
171 +
172 + },
173 + /*>>mq*/
174 +
175 +
176 + /*>>hasevent*/
177 + //
178 + // isEventSupported determines if a given element supports the given event
179 + // kangax.github.com/iseventsupported/
180 + //
181 + // The following results are known incorrects:
182 + // Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative
183 + // Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333
184 + // ...
185 + isEventSupported = (function() {
186 +
187 + var TAGNAMES = {
188 + 'select': 'input', 'change': 'input',
189 + 'submit': 'form', 'reset': 'form',
190 + 'error': 'img', 'load': 'img', 'abort': 'img'
191 + };
192 +
193 + function isEventSupported( eventName, element ) {
194 +
195 + element = element || document.createElement(TAGNAMES[eventName] || 'div');
196 + eventName = 'on' + eventName;
197 +
198 + // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
199 + var isSupported = eventName in element;
200 +
201 + if ( !isSupported ) {
202 + // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
203 + if ( !element.setAttribute ) {
204 + element = document.createElement('div');
205 + }
206 + if ( element.setAttribute && element.removeAttribute ) {
207 + element.setAttribute(eventName, '');
208 + isSupported = is(element[eventName], 'function');
209 +
210 + // If property was created, "remove it" (by setting value to `undefined`)
211 + if ( !is(element[eventName], 'undefined') ) {
212 + element[eventName] = undefined;
213 + }
214 + element.removeAttribute(eventName);
215 + }
216 + }
217 +
218 + element = null;
219 + return isSupported;
220 + }
221 + return isEventSupported;
222 + })(),
223 + /*>>hasevent*/
224 +
225 + // TODO :: Add flag for hasownprop ? didn't last time
226 +
227 + // hasOwnProperty shim by kangax needed for Safari 2.0 support
228 + _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
229 +
230 + if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
231 + hasOwnProp = function (object, property) {
232 + return _hasOwnProperty.call(object, property);
233 + };
234 + }
235 + else {
236 + hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
237 + return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
238 + };
239 + }
240 +
241 + // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
242 + // es5.github.com/#x15.3.4.5
243 +
244 + if (!Function.prototype.bind) {
245 + Function.prototype.bind = function bind(that) {
246 +
247 + var target = this;
248 +
249 + if (typeof target != "function") {
250 + throw new TypeError();
251 + }
252 +
253 + var args = slice.call(arguments, 1),
254 + bound = function () {
255 +
256 + if (this instanceof bound) {
257 +
258 + var F = function(){};
259 + F.prototype = target.prototype;
260 + var self = new F();
261 +
262 + var result = target.apply(
263 + self,
264 + args.concat(slice.call(arguments))
265 + );
266 + if (Object(result) === result) {
267 + return result;
268 + }
269 + return self;
270 +
271 + } else {
272 +
273 + return target.apply(
274 + that,
275 + args.concat(slice.call(arguments))
276 + );
277 +
278 + }
279 +
280 + };
281 +
282 + return bound;
283 + };
284 + }
285 +
286 + /**
287 + * setCss applies given styles to the Modernizr DOM node.
288 + */
289 + function setCss( str ) {
290 + mStyle.cssText = str;
291 + }
292 +
293 + /**
294 + * setCssAll extrapolates all vendor-specific css strings.
295 + */
296 + function setCssAll( str1, str2 ) {
297 + return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
298 + }
299 +
300 + /**
301 + * is returns a boolean for if typeof obj is exactly type.
302 + */
303 + function is( obj, type ) {
304 + return typeof obj === type;
305 + }
306 +
307 + /**
308 + * contains returns a boolean for if substr is found within str.
309 + */
310 + function contains( str, substr ) {
311 + return !!~('' + str).indexOf(substr);
312 + }
313 +
314 + /*>>testprop*/
315 +
316 + // testProps is a generic CSS / DOM property test.
317 +
318 + // In testing support for a given CSS property, it's legit to test:
319 + // `elem.style[styleName] !== undefined`
320 + // If the property is supported it will return an empty string,
321 + // if unsupported it will return undefined.
322 +
323 + // We'll take advantage of this quick test and skip setting a style
324 + // on our modernizr element, but instead just testing undefined vs
325 + // empty string.
326 +
327 + // Because the testing of the CSS property names (with "-", as
328 + // opposed to the camelCase DOM properties) is non-portable and
329 + // non-standard but works in WebKit and IE (but not Gecko or Opera),
330 + // we explicitly reject properties with dashes so that authors
331 + // developing in WebKit or IE first don't end up with
332 + // browser-specific content by accident.
333 +
334 + function testProps( props, prefixed ) {
335 + for ( var i in props ) {
336 + var prop = props[i];
337 + if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
338 + return prefixed == 'pfx' ? prop : true;
339 + }
340 + }
341 + return false;
342 + }
343 + /*>>testprop*/
344 +
345 + // TODO :: add testDOMProps
346 + /**
347 + * testDOMProps is a generic DOM property test; if a browser supports
348 + * a certain property, it won't return undefined for it.
349 + */
350 + function testDOMProps( props, obj, elem ) {
351 + for ( var i in props ) {
352 + var item = obj[props[i]];
353 + if ( item !== undefined) {
354 +
355 + // return the property name as a string
356 + if (elem === false) return props[i];
357 +
358 + // let's bind a function
359 + if (is(item, 'function')){
360 + // default to autobind unless override
361 + return item.bind(elem || obj);
362 + }
363 +
364 + // return the unbound function or obj or value
365 + return item;
366 + }
367 + }
368 + return false;
369 + }
370 +
371 + /*>>testallprops*/
372 + /**
373 + * testPropsAll tests a list of DOM properties we want to check against.
374 + * We specify literally ALL possible (known and/or likely) properties on
375 + * the element including the non-vendor prefixed one, for forward-
376 + * compatibility.
377 + */
378 + function testPropsAll( prop, prefixed, elem ) {
379 +
380 + var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
381 + props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
382 +
383 + // did they call .prefixed('boxSizing') or are we just testing a prop?
384 + if(is(prefixed, "string") || is(prefixed, "undefined")) {
385 + return testProps(props, prefixed);
386 +
387 + // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
388 + } else {
389 + props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
390 + return testDOMProps(props, prefixed, elem);
391 + }
392 + }
393 + /*>>testallprops*/
394 +
395 +
396 + /**
397 + * Tests
398 + * -----
399 + */
400 +
401 + // The *new* flexbox
402 + // dev.w3.org/csswg/css3-flexbox
403 +
404 + tests['flexbox'] = function() {
405 + return testPropsAll('flexWrap');
406 + };
407 +
408 + // The *old* flexbox
409 + // www.w3.org/TR/2009/WD-css3-flexbox-20090723/
410 +
411 + tests['flexboxlegacy'] = function() {
412 + return testPropsAll('boxDirection');
413 + };
414 +
415 + // On the S60 and BB Storm, getContext exists, but always returns undefined
416 + // so we actually have to call getContext() to verify
417 + // github.com/Modernizr/Modernizr/issues/issue/97/
418 +
419 + tests['canvas'] = function() {
420 + var elem = document.createElement('canvas');
421 + return !!(elem.getContext && elem.getContext('2d'));
422 + };
423 +
424 + tests['canvastext'] = function() {
425 + return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
426 + };
427 +
428 + // webk.it/70117 is tracking a legit WebGL feature detect proposal
429 +
430 + // We do a soft detect which may false positive in order to avoid
431 + // an expensive context creation: bugzil.la/732441
432 +
433 + tests['webgl'] = function() {
434 + return !!window.WebGLRenderingContext;
435 + };
436 +
437 + /*
438 + * The Modernizr.touch test only indicates if the browser supports
439 + * touch events, which does not necessarily reflect a touchscreen
440 + * device, as evidenced by tablets running Windows 7 or, alas,
441 + * the Palm Pre / WebOS (touch) phones.
442 + *
443 + * Additionally, Chrome (desktop) used to lie about its support on this,
444 + * but that has since been rectified: crbug.com/36415
445 + *
446 + * We also test for Firefox 4 Multitouch Support.
447 + *
448 + * For more info, see: modernizr.github.com/Modernizr/touch.html
449 + */
450 +
451 + tests['touch'] = function() {
452 + var bool;
453 +
454 + if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
455 + bool = true;
456 + } else {
457 + injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {
458 + bool = node.offsetTop === 9;
459 + });
460 + }
461 +
462 + return bool;
463 + };
464 +
465 +
466 + // geolocation is often considered a trivial feature detect...
467 + // Turns out, it's quite tricky to get right:
468 + //
469 + // Using !!navigator.geolocation does two things we don't want. It:
470 + // 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513
471 + // 2. Disables page caching in WebKit: webk.it/43956
472 + //
473 + // Meanwhile, in Firefox < 8, an about:config setting could expose
474 + // a false positive that would throw an exception: bugzil.la/688158
475 +
476 + tests['geolocation'] = function() {
477 + return 'geolocation' in navigator;
478 + };
479 +
480 +
481 + tests['postmessage'] = function() {
482 + return !!window.postMessage;
483 + };
484 +
485 +
486 + // Chrome incognito mode used to throw an exception when using openDatabase
487 + // It doesn't anymore.
488 + tests['websqldatabase'] = function() {
489 + return !!window.openDatabase;
490 + };
491 +
492 + // Vendors had inconsistent prefixing with the experimental Indexed DB:
493 + // - Webkit's implementation is accessible through webkitIndexedDB
494 + // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB
495 + // For speed, we don't test the legacy (and beta-only) indexedDB
496 + tests['indexedDB'] = function() {
497 + return !!testPropsAll("indexedDB", window);
498 + };
499 +
500 + // documentMode logic from YUI to filter out IE8 Compat Mode
501 + // which false positives.
502 + tests['hashchange'] = function() {
503 + return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
504 + };
505 +
506 + // Per 1.6:
507 + // This used to be Modernizr.historymanagement but the longer
508 + // name has been deprecated in favor of a shorter and property-matching one.
509 + // The old API is still available in 1.6, but as of 2.0 will throw a warning,
510 + // and in the first release thereafter disappear entirely.
511 + tests['history'] = function() {
512 + return !!(window.history && history.pushState);
513 + };
514 +
515 + tests['draganddrop'] = function() {
516 + var div = document.createElement('div');
517 + return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
518 + };
519 +
520 + // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10
521 + // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.
522 + // FF10 still uses prefixes, so check for it until then.
523 + // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/
524 + tests['websockets'] = function() {
525 + return 'WebSocket' in window || 'MozWebSocket' in window;
526 + };
527 +
528 +
529 + // css-tricks.com/rgba-browser-support/
530 + tests['rgba'] = function() {
531 + // Set an rgba() color and check the returned value
532 +
533 + setCss('background-color:rgba(150,255,150,.5)');
534 +
535 + return contains(mStyle.backgroundColor, 'rgba');
536 + };
537 +
538 + tests['hsla'] = function() {
539 + // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
540 + // except IE9 who retains it as hsla
541 +
542 + setCss('background-color:hsla(120,40%,100%,.5)');
543 +
544 + return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
545 + };
546 +
547 + tests['multiplebgs'] = function() {
548 + // Setting multiple images AND a color on the background shorthand property
549 + // and then querying the style.background property value for the number of
550 + // occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
551 +
552 + setCss('background:url(https://),url(https://),red url(https://)');
553 +
554 + // If the UA supports multiple backgrounds, there should be three occurrences
555 + // of the string "url(" in the return value for elemStyle.background
556 +
557 + return (/(url\s*\(.*?){3}/).test(mStyle.background);
558 + };
559 +
560 +
561 +
562 + // this will false positive in Opera Mini
563 + // github.com/Modernizr/Modernizr/issues/396
564 +
565 + tests['backgroundsize'] = function() {
566 + return testPropsAll('backgroundSize');
567 + };
568 +
569 + tests['borderimage'] = function() {
570 + return testPropsAll('borderImage');
571 + };
572 +
573 +
574 + // Super comprehensive table about all the unique implementations of
575 + // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance
576 +
577 + tests['borderradius'] = function() {
578 + return testPropsAll('borderRadius');
579 + };
580 +
581 + // WebOS unfortunately false positives on this test.
582 + tests['boxshadow'] = function() {
583 + return testPropsAll('boxShadow');
584 + };
585 +
586 + // FF3.0 will false positive on this test
587 + tests['textshadow'] = function() {
588 + return document.createElement('div').style.textShadow === '';
589 + };
590 +
591 +
592 + tests['opacity'] = function() {
593 + // Browsers that actually have CSS Opacity implemented have done so
594 + // according to spec, which means their return values are within the
595 + // range of [0.0,1.0] - including the leading zero.
596 +
597 + setCssAll('opacity:.55');
598 +
599 + // The non-literal . in this regex is intentional:
600 + // German Chrome returns this value as 0,55
601 + // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
602 + return (/^0.55$/).test(mStyle.opacity);
603 + };
604 +
605 +
606 + // Note, Android < 4 will pass this test, but can only animate
607 + // a single property at a time
608 + // goo.gl/v3V4Gp
609 + tests['cssanimations'] = function() {
610 + return testPropsAll('animationName');
611 + };
612 +
613 +
614 + tests['csscolumns'] = function() {
615 + return testPropsAll('columnCount');
616 + };
617 +
618 +
619 + tests['cssgradients'] = function() {
620 + /**
621 + * For CSS Gradients syntax, please see:
622 + * webkit.org/blog/175/introducing-css-gradients/
623 + * developer.mozilla.org/en/CSS/-moz-linear-gradient
624 + * developer.mozilla.org/en/CSS/-moz-radial-gradient
625 + * dev.w3.org/csswg/css3-images/#gradients-
626 + */
627 +
628 + var str1 = 'background-image:',
629 + str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
630 + str3 = 'linear-gradient(left top,#9f9, white);';
631 +
632 + setCss(
633 + // legacy webkit syntax (FIXME: remove when syntax not in use anymore)
634 + (str1 + '-webkit- '.split(' ').join(str2 + str1) +
635 + // standard syntax // trailing 'background-image:'
636 + prefixes.join(str3 + str1)).slice(0, -str1.length)
637 + );
638 +
639 + return contains(mStyle.backgroundImage, 'gradient');
640 + };
641 +
642 +
643 + tests['cssreflections'] = function() {
644 + return testPropsAll('boxReflect');
645 + };
646 +
647 +
648 + tests['csstransforms'] = function() {
649 + return !!testPropsAll('transform');
650 + };
651 +
652 +
653 + tests['csstransforms3d'] = function() {
654 +
655 + var ret = !!testPropsAll('perspective');
656 +
657 + // Webkit's 3D transforms are passed off to the browser's own graphics renderer.
658 + // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
659 + // some conditions. As a result, Webkit typically recognizes the syntax but
660 + // will sometimes throw a false positive, thus we must do a more thorough check:
661 + if ( ret && 'webkitPerspective' in docElement.style ) {
662 +
663 + // Webkit allows this media query to succeed only if the feature is enabled.
664 + // `@media (transform-3d),(-webkit-transform-3d){ ... }`
665 + injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {
666 + ret = node.offsetLeft === 9 && node.offsetHeight === 3;
667 + });
668 + }
669 + return ret;
670 + };
671 +
672 +
673 + tests['csstransitions'] = function() {
674 + return testPropsAll('transition');
675 + };
676 +
677 +
678 + /*>>fontface*/
679 + // @font-face detection routine by Diego Perini
680 + // javascript.nwbox.com/CSSSupport/
681 +
682 + // false positives:
683 + // WebOS github.com/Modernizr/Modernizr/issues/342
684 + // WP7 github.com/Modernizr/Modernizr/issues/538
685 + tests['fontface'] = function() {
686 + var bool;
687 +
688 + injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) {
689 + var style = document.getElementById('smodernizr'),
690 + sheet = style.sheet || style.styleSheet,
691 + cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';
692 +
693 + bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
694 + });
695 +
696 + return bool;
697 + };
698 + /*>>fontface*/
699 +
700 + // CSS generated content detection
701 + tests['generatedcontent'] = function() {
702 + var bool;
703 +
704 + injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {
705 + bool = node.offsetHeight >= 3;
706 + });
707 +
708 + return bool;
709 + };
710 +
711 +
712 +
713 + // These tests evaluate support of the video/audio elements, as well as
714 + // testing what types of content they support.
715 + //
716 + // We're using the Boolean constructor here, so that we can extend the value
717 + // e.g. Modernizr.video // true
718 + // Modernizr.video.ogg // 'probably'
719 + //
720 + // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
721 + // thx to NielsLeenheer and zcorpan
722 +
723 + // Note: in some older browsers, "no" was a return value instead of empty string.
724 + // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
725 + // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5
726 +
727 + tests['video'] = function() {
728 + var elem = document.createElement('video'),
729 + bool = false;
730 +
731 + // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
732 + try {
733 + if ( bool = !!elem.canPlayType ) {
734 + bool = new Boolean(bool);
735 + bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
736 +
737 + // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
738 + bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
739 +
740 + bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
741 + }
742 +
743 + } catch(e) { }
744 +
745 + return bool;
746 + };
747 +
748 + tests['audio'] = function() {
749 + var elem = document.createElement('audio'),
750 + bool = false;
751 +
752 + try {
753 + if ( bool = !!elem.canPlayType ) {
754 + bool = new Boolean(bool);
755 + bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
756 + bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
757 +
758 + // Mimetypes accepted:
759 + // developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
760 + // bit.ly/iphoneoscodecs
761 + bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
762 + bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
763 + elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
764 + }
765 + } catch(e) { }
766 +
767 + return bool;
768 + };
769 +
770 +
771 + // In FF4, if disabled, window.localStorage should === null.
772 +
773 + // Normally, we could not test that directly and need to do a
774 + // `('localStorage' in window) && ` test first because otherwise Firefox will
775 + // throw bugzil.la/365772 if cookies are disabled
776 +
777 + // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem
778 + // will throw the exception:
779 + // QUOTA_EXCEEDED_ERRROR DOM Exception 22.
780 + // Peculiarly, getItem and removeItem calls do not throw.
781 +
782 + // Because we are forced to try/catch this, we'll go aggressive.
783 +
784 + // Just FWIW: IE8 Compat mode supports these features completely:
785 + // www.quirksmode.org/dom/html5.html
786 + // But IE8 doesn't support either with local files
787 +
788 + tests['localstorage'] = function() {
789 + try {
790 + localStorage.setItem(mod, mod);
791 + localStorage.removeItem(mod);
792 + return true;
793 + } catch(e) {
794 + return false;
795 + }
796 + };
797 +
798 + tests['sessionstorage'] = function() {
799 + try {
800 + sessionStorage.setItem(mod, mod);
801 + sessionStorage.removeItem(mod);
802 + return true;
803 + } catch(e) {
804 + return false;
805 + }
806 + };
807 +
808 +
809 + tests['webworkers'] = function() {
810 + return !!window.Worker;
811 + };
812 +
813 +
814 + tests['applicationcache'] = function() {
815 + return !!window.applicationCache;
816 + };
817 +
818 +
819 + // Thanks to Erik Dahlstrom
820 + tests['svg'] = function() {
821 + return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
822 + };
823 +
824 + // specifically for SVG inline in HTML, not within XHTML
825 + // test page: paulirish.com/demo/inline-svg
826 + tests['inlinesvg'] = function() {
827 + var div = document.createElement('div');
828 + div.innerHTML = '<svg/>';
829 + return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
830 + };
831 +
832 + // SVG SMIL animation
833 + tests['smil'] = function() {
834 + return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
835 + };
836 +
837 + // This test is only for clip paths in SVG proper, not clip paths on HTML content
838 + // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg
839 +
840 + // However read the comments to dig into applying SVG clippaths to HTML content here:
841 + // github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491
842 + tests['svgclippaths'] = function() {
843 + return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
844 + };
845 +
846 + /*>>webforms*/
847 + // input features and input types go directly onto the ret object, bypassing the tests loop.
848 + // Hold this guy to execute in a moment.
849 + function webforms() {
850 + /*>>input*/
851 + // Run through HTML5's new input attributes to see if the UA understands any.
852 + // We're using f which is the <input> element created early on
853 + // Mike Taylr has created a comprehensive resource for testing these attributes
854 + // when applied to all input types:
855 + // miketaylr.com/code/input-type-attr.html
856 + // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
857 +
858 + // Only input placeholder is tested while textarea's placeholder is not.
859 + // Currently Safari 4 and Opera 11 have support only for the input placeholder
860 + // Both tests are available in feature-detects/forms-placeholder.js
861 + Modernizr['input'] = (function( props ) {
862 + for ( var i = 0, len = props.length; i < len; i++ ) {
863 + attrs[ props[i] ] = !!(props[i] in inputElem);
864 + }
865 + if (attrs.list){
866 + // safari false positive's on datalist: webk.it/74252
867 + // see also github.com/Modernizr/Modernizr/issues/146
868 + attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
869 + }
870 + return attrs;
871 + })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
872 + /*>>input*/
873 +
874 + /*>>inputtypes*/
875 + // Run through HTML5's new input types to see if the UA understands any.
876 + // This is put behind the tests runloop because it doesn't return a
877 + // true/false like all the other tests; instead, it returns an object
878 + // containing each input type with its corresponding true/false value
879 +
880 + // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/
881 + Modernizr['inputtypes'] = (function(props) {
882 +
883 + for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
884 +
885 + inputElem.setAttribute('type', inputElemType = props[i]);
886 + bool = inputElem.type !== 'text';
887 +
888 + // We first check to see if the type we give it sticks..
889 + // If the type does, we feed it a textual value, which shouldn't be valid.
890 + // If the value doesn't stick, we know there's input sanitization which infers a custom UI
891 + if ( bool ) {
892 +
893 + inputElem.value = smile;
894 + inputElem.style.cssText = 'position:absolute;visibility:hidden;';
895 +
896 + if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
897 +
898 + docElement.appendChild(inputElem);
899 + defaultView = document.defaultView;
900 +
901 + // Safari 2-4 allows the smiley as a value, despite making a slider
902 + bool = defaultView.getComputedStyle &&
903 + defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
904 + // Mobile android web browser has false positive, so must
905 + // check the height to see if the widget is actually there.
906 + (inputElem.offsetHeight !== 0);
907 +
908 + docElement.removeChild(inputElem);
909 +
910 + } else if ( /^(search|tel)$/.test(inputElemType) ){
911 + // Spec doesn't define any special parsing or detectable UI
912 + // behaviors so we pass these through as true
913 +
914 + // Interestingly, opera fails the earlier test, so it doesn't
915 + // even make it here.
916 +
917 + } else if ( /^(url|email)$/.test(inputElemType) ) {
918 + // Real url and email support comes with prebaked validation.
919 + bool = inputElem.checkValidity && inputElem.checkValidity() === false;
920 +
921 + } else {
922 + // If the upgraded input compontent rejects the :) text, we got a winner
923 + bool = inputElem.value != smile;
924 + }
925 + }
926 +
927 + inputs[ props[i] ] = !!bool;
928 + }
929 + return inputs;
930 + })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
931 + /*>>inputtypes*/
932 + }
933 + /*>>webforms*/
934 +
935 +
936 + // End of test definitions
937 + // -----------------------
938 +
939 +
940 +
941 + // Run through all tests and detect their support in the current UA.
942 + // todo: hypothetically we could be doing an array of tests and use a basic loop here.
943 + for ( var feature in tests ) {
944 + if ( hasOwnProp(tests, feature) ) {
945 + // run the test, throw the return value into the Modernizr,
946 + // then based on that boolean, define an appropriate className
947 + // and push it into an array of classes we'll join later.
948 + featureName = feature.toLowerCase();
949 + Modernizr[featureName] = tests[feature]();
950 +
951 + classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
952 + }
953 + }
954 +
955 + /*>>webforms*/
956 + // input tests need to run.
957 + Modernizr.input || webforms();
958 + /*>>webforms*/
959 +
960 +
961 + /**
962 + * addTest allows the user to define their own feature tests
963 + * the result will be added onto the Modernizr object,
964 + * as well as an appropriate className set on the html element
965 + *
966 + * @param feature - String naming the feature
967 + * @param test - Function returning true if feature is supported, false if not
968 + */
969 + Modernizr.addTest = function ( feature, test ) {
970 + if ( typeof feature == 'object' ) {
971 + for ( var key in feature ) {
972 + if ( hasOwnProp( feature, key ) ) {
973 + Modernizr.addTest( key, feature[ key ] );
974 + }
975 + }
976 + } else {
977 +
978 + feature = feature.toLowerCase();
979 +
980 + if ( Modernizr[feature] !== undefined ) {
981 + // we're going to quit if you're trying to overwrite an existing test
982 + // if we were to allow it, we'd do this:
983 + // var re = new RegExp("\\b(no-)?" + feature + "\\b");
984 + // docElement.className = docElement.className.replace( re, '' );
985 + // but, no rly, stuff 'em.
986 + return Modernizr;
987 + }
988 +
989 + test = typeof test == 'function' ? test() : test;
990 +
991 + if (typeof enableClasses !== "undefined" && enableClasses) {
992 + docElement.className += ' ' + (test ? '' : 'no-') + feature;
993 + }
994 + Modernizr[feature] = test;
995 +
996 + }
997 +
998 + return Modernizr; // allow chaining.
999 + };
1000 +
1001 +
1002 + // Reset modElem.cssText to nothing to reduce memory footprint.
1003 + setCss('');
1004 + modElem = inputElem = null;
1005 +
1006 + /*>>shiv*/
1007 + /**
1008 + * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
1009 + */
1010 + ;(function(window, document) {
1011 + /*jshint evil:true */
1012 + /** version */
1013 + var version = '3.7.0';
1014 +
1015 + /** Preset options */
1016 + var options = window.html5 || {};
1017 +
1018 + /** Used to skip problem elements */
1019 + var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
1020 +
1021 + /** Not all elements can be cloned in IE **/
1022 + var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
1023 +
1024 + /** Detect whether the browser supports default html5 styles */
1025 + var supportsHtml5Styles;
1026 +
1027 + /** Name of the expando, to work with multiple documents or to re-shiv one document */
1028 + var expando = '_html5shiv';
1029 +
1030 + /** The id for the the documents expando */
1031 + var expanID = 0;
1032 +
1033 + /** Cached data for each document */
1034 + var expandoData = {};
1035 +
1036 + /** Detect whether the browser supports unknown elements */
1037 + var supportsUnknownElements;
1038 +
1039 + (function() {
1040 + try {
1041 + var a = document.createElement('a');
1042 + a.innerHTML = '<xyz></xyz>';
1043 + //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
1044 + supportsHtml5Styles = ('hidden' in a);
1045 +
1046 + supportsUnknownElements = a.childNodes.length == 1 || (function() {
1047 + // assign a false positive if unable to shiv
1048 + (document.createElement)('a');
1049 + var frag = document.createDocumentFragment();
1050 + return (
1051 + typeof frag.cloneNode == 'undefined' ||
1052 + typeof frag.createDocumentFragment == 'undefined' ||
1053 + typeof frag.createElement == 'undefined'
1054 + );
1055 + }());
1056 + } catch(e) {
1057 + // assign a false positive if detection fails => unable to shiv
1058 + supportsHtml5Styles = true;
1059 + supportsUnknownElements = true;
1060 + }
1061 +
1062 + }());
1063 +
1064 + /*--------------------------------------------------------------------------*/
1065 +
1066 + /**
1067 + * Creates a style sheet with the given CSS text and adds it to the document.
1068 + * @private
1069 + * @param {Document} ownerDocument The document.
1070 + * @param {String} cssText The CSS text.
1071 + * @returns {StyleSheet} The style element.
1072 + */
1073 + function addStyleSheet(ownerDocument, cssText) {
1074 + var p = ownerDocument.createElement('p'),
1075 + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
1076 +
1077 + p.innerHTML = 'x<style>' + cssText + '</style>';
1078 + return parent.insertBefore(p.lastChild, parent.firstChild);
1079 + }
1080 +
1081 + /**
1082 + * Returns the value of `html5.elements` as an array.
1083 + * @private
1084 + * @returns {Array} An array of shived element node names.
1085 + */
1086 + function getElements() {
1087 + var elements = html5.elements;
1088 + return typeof elements == 'string' ? elements.split(' ') : elements;
1089 + }
1090 +
1091 + /**
1092 + * Returns the data associated to the given document
1093 + * @private
1094 + * @param {Document} ownerDocument The document.
1095 + * @returns {Object} An object of data.
1096 + */
1097 + function getExpandoData(ownerDocument) {
1098 + var data = expandoData[ownerDocument[expando]];
1099 + if (!data) {
1100 + data = {};
1101 + expanID++;
1102 + ownerDocument[expando] = expanID;
1103 + expandoData[expanID] = data;
1104 + }
1105 + return data;
1106 + }
1107 +
1108 + /**
1109 + * returns a shived element for the given nodeName and document
1110 + * @memberOf html5
1111 + * @param {String} nodeName name of the element
1112 + * @param {Document} ownerDocument The context document.
1113 + * @returns {Object} The shived element.
1114 + */
1115 + function createElement(nodeName, ownerDocument, data){
1116 + if (!ownerDocument) {
1117 + ownerDocument = document;
1118 + }
1119 + if(supportsUnknownElements){
1120 + return ownerDocument.createElement(nodeName);
1121 + }
1122 + if (!data) {
1123 + data = getExpandoData(ownerDocument);
1124 + }
1125 + var node;
1126 +
1127 + if (data.cache[nodeName]) {
1128 + node = data.cache[nodeName].cloneNode();
1129 + } else if (saveClones.test(nodeName)) {
1130 + node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
1131 + } else {
1132 + node = data.createElem(nodeName);
1133 + }
1134 +
1135 + // Avoid adding some elements to fragments in IE < 9 because
1136 + // * Attributes like `name` or `type` cannot be set/changed once an element
1137 + // is inserted into a document/fragment
1138 + // * Link elements with `src` attributes that are inaccessible, as with
1139 + // a 403 response, will cause the tab/window to crash
1140 + // * Script elements appended to fragments will execute when their `src`
1141 + // or `text` property is set
1142 + return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
1143 + }
1144 +
1145 + /**
1146 + * returns a shived DocumentFragment for the given document
1147 + * @memberOf html5
1148 + * @param {Document} ownerDocument The context document.
1149 + * @returns {Object} The shived DocumentFragment.
1150 + */
1151 + function createDocumentFragment(ownerDocument, data){
1152 + if (!ownerDocument) {
1153 + ownerDocument = document;
1154 + }
1155 + if(supportsUnknownElements){
1156 + return ownerDocument.createDocumentFragment();
1157 + }
1158 + data = data || getExpandoData(ownerDocument);
1159 + var clone = data.frag.cloneNode(),
1160 + i = 0,
1161 + elems = getElements(),
1162 + l = elems.length;
1163 + for(;i<l;i++){
1164 + clone.createElement(elems[i]);
1165 + }
1166 + return clone;
1167 + }
1168 +
1169 + /**
1170 + * Shivs the `createElement` and `createDocumentFragment` methods of the document.
1171 + * @private
1172 + * @param {Document|DocumentFragment} ownerDocument The document.
1173 + * @param {Object} data of the document.
1174 + */
1175 + function shivMethods(ownerDocument, data) {
1176 + if (!data.cache) {
1177 + data.cache = {};
1178 + data.createElem = ownerDocument.createElement;
1179 + data.createFrag = ownerDocument.createDocumentFragment;
1180 + data.frag = data.createFrag();
1181 + }
1182 +
1183 +
1184 + ownerDocument.createElement = function(nodeName) {
1185 + //abort shiv
1186 + if (!html5.shivMethods) {
1187 + return data.createElem(nodeName);
1188 + }
1189 + return createElement(nodeName, ownerDocument, data);
1190 + };
1191 +
1192 + ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
1193 + 'var n=f.cloneNode(),c=n.createElement;' +
1194 + 'h.shivMethods&&(' +
1195 + // unroll the `createElement` calls
1196 + getElements().join().replace(/[\w\-]+/g, function(nodeName) {
1197 + data.createElem(nodeName);
1198 + data.frag.createElement(nodeName);
1199 + return 'c("' + nodeName + '")';
1200 + }) +
1201 + ');return n}'
1202 + )(html5, data.frag);
1203 + }
1204 +
1205 + /*--------------------------------------------------------------------------*/
1206 +
1207 + /**
1208 + * Shivs the given document.
1209 + * @memberOf html5
1210 + * @param {Document} ownerDocument The document to shiv.
1211 + * @returns {Document} The shived document.
1212 + */
1213 + function shivDocument(ownerDocument) {
1214 + if (!ownerDocument) {
1215 + ownerDocument = document;
1216 + }
1217 + var data = getExpandoData(ownerDocument);
1218 +
1219 + if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
1220 + data.hasCSS = !!addStyleSheet(ownerDocument,
1221 + // corrects block display not defined in IE6/7/8/9
1222 + 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
1223 + // adds styling not present in IE6/7/8/9
1224 + 'mark{background:#FF0;color:#000}' +
1225 + // hides non-rendered elements
1226 + 'template{display:none}'
1227 + );
1228 + }
1229 + if (!supportsUnknownElements) {
1230 + shivMethods(ownerDocument, data);
1231 + }
1232 + return ownerDocument;
1233 + }
1234 +
1235 + /*--------------------------------------------------------------------------*/
1236 +
1237 + /**
1238 + * The `html5` object is exposed so that more elements can be shived and
1239 + * existing shiving can be detected on iframes.
1240 + * @type Object
1241 + * @example
1242 + *
1243 + * // options can be changed before the script is included
1244 + * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
1245 + */
1246 + var html5 = {
1247 +
1248 + /**
1249 + * An array or space separated string of node names of the elements to shiv.
1250 + * @memberOf html5
1251 + * @type Array|String
1252 + */
1253 + 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
1254 +
1255 + /**
1256 + * current version of html5shiv
1257 + */
1258 + 'version': version,
1259 +
1260 + /**
1261 + * A flag to indicate that the HTML5 style sheet should be inserted.
1262 + * @memberOf html5
1263 + * @type Boolean
1264 + */
1265 + 'shivCSS': (options.shivCSS !== false),
1266 +
1267 + /**
1268 + * Is equal to true if a browser supports creating unknown/HTML5 elements
1269 + * @memberOf html5
1270 + * @type boolean
1271 + */
1272 + 'supportsUnknownElements': supportsUnknownElements,
1273 +
1274 + /**
1275 + * A flag to indicate that the document's `createElement` and `createDocumentFragment`
1276 + * methods should be overwritten.
1277 + * @memberOf html5
1278 + * @type Boolean
1279 + */
1280 + 'shivMethods': (options.shivMethods !== false),
1281 +
1282 + /**
1283 + * A string to describe the type of `html5` object ("default" or "default print").
1284 + * @memberOf html5
1285 + * @type String
1286 + */
1287 + 'type': 'default',
1288 +
1289 + // shivs the document according to the specified `html5` object options
1290 + 'shivDocument': shivDocument,
1291 +
1292 + //creates a shived element
1293 + createElement: createElement,
1294 +
1295 + //creates a shived documentFragment
1296 + createDocumentFragment: createDocumentFragment
1297 + };
1298 +
1299 + /*--------------------------------------------------------------------------*/
1300 +
1301 + // expose html5
1302 + window.html5 = html5;
1303 +
1304 + // shiv the document
1305 + shivDocument(document);
1306 +
1307 + }(this, document));
1308 + /*>>shiv*/
1309 +
1310 + // Assign private properties to the return object with prefix
1311 + Modernizr._version = version;
1312 +
1313 + // expose these for the plugin API. Look in the source for how to join() them against your input
1314 + /*>>prefixes*/
1315 + Modernizr._prefixes = prefixes;
1316 + /*>>prefixes*/
1317 + /*>>domprefixes*/
1318 + Modernizr._domPrefixes = domPrefixes;
1319 + Modernizr._cssomPrefixes = cssomPrefixes;
1320 + /*>>domprefixes*/
1321 +
1322 + /*>>mq*/
1323 + // Modernizr.mq tests a given media query, live against the current state of the window
1324 + // A few important notes:
1325 + // * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false
1326 + // * A max-width or orientation query will be evaluated against the current state, which may change later.
1327 + // * You must specify values. Eg. If you are testing support for the min-width media query use:
1328 + // Modernizr.mq('(min-width:0)')
1329 + // usage:
1330 + // Modernizr.mq('only screen and (max-width:768)')
1331 + Modernizr.mq = testMediaQuery;
1332 + /*>>mq*/
1333 +
1334 + /*>>hasevent*/
1335 + // Modernizr.hasEvent() detects support for a given event, with an optional element to test on
1336 + // Modernizr.hasEvent('gesturestart', elem)
1337 + Modernizr.hasEvent = isEventSupported;
1338 + /*>>hasevent*/
1339 +
1340 + /*>>testprop*/
1341 + // Modernizr.testProp() investigates whether a given style property is recognized
1342 + // Note that the property names must be provided in the camelCase variant.
1343 + // Modernizr.testProp('pointerEvents')
1344 + Modernizr.testProp = function(prop){
1345 + return testProps([prop]);
1346 + };
1347 + /*>>testprop*/
1348 +
1349 + /*>>testallprops*/
1350 + // Modernizr.testAllProps() investigates whether a given style property,
1351 + // or any of its vendor-prefixed variants, is recognized
1352 + // Note that the property names must be provided in the camelCase variant.
1353 + // Modernizr.testAllProps('boxSizing')
1354 + Modernizr.testAllProps = testPropsAll;
1355 + /*>>testallprops*/
1356 +
1357 +
1358 + /*>>teststyles*/
1359 + // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards
1360 + // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })
1361 + Modernizr.testStyles = injectElementWithStyles;
1362 + /*>>teststyles*/
1363 +
1364 +
1365 + /*>>prefixed*/
1366 + // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input
1367 + // Modernizr.prefixed('boxSizing') // 'MozBoxSizing'
1368 +
1369 + // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.
1370 + // Return values will also be the camelCase variant, if you need to translate that to hypenated style use:
1371 + //
1372 + // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');
1373 +
1374 + // If you're trying to ascertain which transition end event to bind to, you might do something like...
1375 + //
1376 + // var transEndEventNames = {
1377 + // 'WebkitTransition' : 'webkitTransitionEnd',
1378 + // 'MozTransition' : 'transitionend',
1379 + // 'OTransition' : 'oTransitionEnd',
1380 + // 'msTransition' : 'MSTransitionEnd',
1381 + // 'transition' : 'transitionend'
1382 + // },
1383 + // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];
1384 +
1385 + Modernizr.prefixed = function(prop, obj, elem){
1386 + if(!obj) {
1387 + return testPropsAll(prop, 'pfx');
1388 + } else {
1389 + // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'
1390 + return testPropsAll(prop, obj, elem);
1391 + }
1392 + };
1393 + /*>>prefixed*/
1394 +
1395 +
1396 + /*>>cssclasses*/
1397 + // Remove "no-js" class from <html> element, if it exists:
1398 + docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
1399 +
1400 + // Add the new classes to the <html> element.
1401 + (enableClasses ? ' js ' + classes.join(' ') : '');
1402 + /*>>cssclasses*/
1403 +
1404 + return Modernizr;
1405 +
1406 +})(this, this.document);
src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/About.cshtml new
+7
@@ -0,0 +1,7 @@
1 +@{
2 + ViewBag.Title = "About";
3 +}
4 +<h2>@ViewBag.Title.</h2>
5 +<h3>@ViewBag.Message</h3>
6 +
7 +<p>Use this area to provide additional information.</p>
src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/Contact.cshtml new
+17
@@ -0,0 +1,17 @@
1 +@{
2 + ViewBag.Title = "Contact";
3 +}
4 +<h2>@ViewBag.Title.</h2>
5 +<h3>@ViewBag.Message</h3>
6 +
7 +<address>
8 + One Microsoft Way<br />
9 + Redmond, WA 98052-6399<br />
10 + <abbr title="Phone">P:</abbr>
11 + 425.555.0100
12 +</address>
13 +
14 +<address>
15 + <strong>Support:</strong> <a href="mailto:Support@example.com">Support@example.com</a><br />
16 + <strong>Marketing:</strong> <a href="mailto:Marketing@example.com">Marketing@example.com</a>
17 +</address>
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Home/Index.cshtml new
+31
@@ -0,0 +1,31 @@
1 +@{
2 + ViewBag.Title = "Home Page";
3 +}
4 +
5 +<div class="jumbotron">
6 + <h1>ASP.NET</h1>
7 + <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
8 + <p><a href="https://asp.net" class="btn btn-primary btn-lg">Learn more &raquo;</a></p>
9 +</div>
10 +
11 +<div class="row">
12 + <div class="col-md-4">
13 + <h2>Getting started</h2>
14 + <p>
15 + ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
16 + enables a clean separation of concerns and gives you full control over markup
17 + for enjoyable, agile development.
18 + </p>
19 + <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301865">Learn more &raquo;</a></p>
20 + </div>
21 + <div class="col-md-4">
22 + <h2>Get more libraries</h2>
23 + <p>NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.</p>
24 + <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301866">Learn more &raquo;</a></p>
25 + </div>
26 + <div class="col-md-4">
27 + <h2>Web Hosting</h2>
28 + <p>You can easily find a web hosting company that offers the right mix of features and price for your applications.</p>
29 + <p><a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301867">Learn more &raquo;</a></p>
30 + </div>
31 +</div>
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Shared/Error.cshtml new
+13
@@ -0,0 +1,13 @@
1 +<!DOCTYPE html>
2 +<html>
3 +<head>
4 + <meta name="viewport" content="width=device-width" />
5 + <title>Error</title>
6 +</head>
7 +<body>
8 + <hgroup>
9 + <h1>Error.</h1>
10 + <h2>An error occurred while processing your request.</h2>
11 + </hgroup>
12 +</body>
13 +</html>
src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Shared/_Layout.cshtml new
+42
@@ -0,0 +1,42 @@
1 +<!DOCTYPE html>
2 +<html>
3 +<head>
4 + <meta charset="utf-8" />
5 + <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 + <title>@ViewBag.Title - My ASP.NET Application</title>
7 + @Styles.Render("~/Content/css")
8 + @Scripts.Render("~/bundles/modernizr")
9 +</head>
10 +<body>
11 + <div class="navbar navbar-inverse navbar-fixed-top">
12 + <div class="container">
13 + <div class="navbar-header">
14 + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
15 + <span class="icon-bar"></span>
16 + <span class="icon-bar"></span>
17 + <span class="icon-bar"></span>
18 + </button>
19 + @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
20 + </div>
21 + <div class="navbar-collapse collapse">
22 + <ul class="nav navbar-nav">
23 + <li>@Html.ActionLink("Home", "Index", "Home")</li>
24 + <li>@Html.ActionLink("About", "About", "Home")</li>
25 + <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
26 + </ul>
27 + </div>
28 + </div>
29 + </div>
30 + <div class="container body-content">
31 + @RenderBody()
32 + <hr />
33 + <footer>
34 + <p>&copy; @DateTime.Now.Year - My ASP.NET Application</p>
35 + </footer>
36 + </div>
37 +
38 + @Scripts.Render("~/bundles/jquery")
39 + @Scripts.Render("~/bundles/bootstrap")
40 + @RenderSection("scripts", required: false)
41 +</body>
42 +</html>
src/test/wix/TestData/CsprojWebApplicationNetFx/Views/Web.config new
+43
@@ -0,0 +1,43 @@
1 +<?xml version="1.0"?>
2 +
3 +<configuration>
4 + <configSections>
5 + <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
6 + <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
7 + <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
8 + </sectionGroup>
9 + </configSections>
10 +
11 + <system.web.webPages.razor>
12 + <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
13 + <pages pageBaseType="System.Web.Mvc.WebViewPage">
14 + <namespaces>
15 + <add namespace="System.Web.Mvc" />
16 + <add namespace="System.Web.Mvc.Ajax" />
17 + <add namespace="System.Web.Mvc.Html" />
18 + <add namespace="System.Web.Optimization"/>
19 + <add namespace="System.Web.Routing" />
20 + <add namespace="CsprojWebApplicationNetFx" />
21 + </namespaces>
22 + </pages>
23 + </system.web.webPages.razor>
24 +
25 + <appSettings>
26 + <add key="webpages:Enabled" value="false" />
27 + </appSettings>
28 +
29 + <system.webServer>
30 + <handlers>
31 + <remove name="BlockViewHandler"/>
32 + <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
33 + </handlers>
34 + </system.webServer>
35 +
36 + <system.web>
37 + <compilation>
38 + <assemblies>
39 + <add assembly="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
40 + </assemblies>
41 + </compilation>
42 + </system.web>
43 +</configuration>
src/test/wix/TestData/CsprojWebApplicationNetFx/Views/_ViewStart.cshtml new
+3
@@ -0,0 +1,3 @@
1 +@{
2 + Layout = "~/Views/Shared/_Layout.cshtml";
3 +}
src/test/wix/TestData/CsprojWebApplicationNetFx/Web.Debug.config new
+30
@@ -0,0 +1,30 @@
1 +<?xml version="1.0"?>
2 +
3 +<!-- For more information on using Web.config transformation visit https://go.microsoft.com/fwlink/?LinkId=301874 -->
4 +
5 +<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
6 + <!--
7 + In the example below, the "SetAttributes" transform will change the value of
8 + "connectionString" to use "ReleaseSQLServer" only when the "Match" locator
9 + finds an attribute "name" that has a value of "MyDB".
10 +
11 + <connectionStrings>
12 + <add name="MyDB"
13 + connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
14 + xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
15 + </connectionStrings>
16 + -->
17 + <system.web>
18 + <!--
19 + In the example below, the "Replace" transform will replace the entire
20 + <customErrors> section of your Web.config file.
21 + Note that because there is only one customErrors section under the
22 + <system.web> node, there is no need to use the "xdt:Locator" attribute.
23 +
24 + <customErrors defaultRedirect="GenericError.htm"
25 + mode="RemoteOnly" xdt:Transform="Replace">
26 + <error statusCode="500" redirect="InternalError.htm"/>
27 + </customErrors>
28 + -->
29 + </system.web>
30 +</configuration>
src/test/wix/TestData/CsprojWebApplicationNetFx/Web.Release.config new
+31
@@ -0,0 +1,31 @@
1 +<?xml version="1.0"?>
2 +
3 +<!-- For more information on using Web.config transformation visit https://go.microsoft.com/fwlink/?LinkId=301874 -->
4 +
5 +<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
6 + <!--
7 + In the example below, the "SetAttributes" transform will change the value of
8 + "connectionString" to use "ReleaseSQLServer" only when the "Match" locator
9 + finds an attribute "name" that has a value of "MyDB".
10 +
11 + <connectionStrings>
12 + <add name="MyDB"
13 + connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
14 + xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
15 + </connectionStrings>
16 + -->
17 + <system.web>
18 + <compilation xdt:Transform="RemoveAttributes(debug)" />
19 + <!--
20 + In the example below, the "Replace" transform will replace the entire
21 + <customErrors> section of your Web.config file.
22 + Note that because there is only one customErrors section under the
23 + <system.web> node, there is no need to use the "xdt:Locator" attribute.
24 +
25 + <customErrors defaultRedirect="GenericError.htm"
26 + mode="RemoteOnly" xdt:Transform="Replace">
27 + <error statusCode="500" redirect="InternalError.htm"/>
28 + </customErrors>
29 + -->
30 + </system.web>
31 +</configuration>
src/test/wix/TestData/CsprojWebApplicationNetFx/Web.config new
+55
@@ -0,0 +1,55 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<!--
3 + For more information on how to configure your ASP.NET application, please visit
4 + https://go.microsoft.com/fwlink/?LinkId=301880
5 + -->
6 +<configuration>
7 + <appSettings>
8 + <add key="webpages:Version" value="3.0.0.0" />
9 + <add key="webpages:Enabled" value="false" />
10 + <add key="ClientValidationEnabled" value="true" />
11 + <add key="UnobtrusiveJavaScriptEnabled" value="true" />
12 + </appSettings>
13 + <system.web>
14 + <compilation debug="true" targetFramework="4.7.2" />
15 + <httpRuntime targetFramework="4.7.2" />
16 + </system.web>
17 + <runtime>
18 + <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
19 + <dependentAssembly>
20 + <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" />
21 + <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
22 + </dependentAssembly>
23 + <dependentAssembly>
24 + <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
25 + <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
26 + </dependentAssembly>
27 + <dependentAssembly>
28 + <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
29 + <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
30 + </dependentAssembly>
31 + <dependentAssembly>
32 + <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
33 + <bindingRedirect oldVersion="1.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
34 + </dependentAssembly>
35 + <dependentAssembly>
36 + <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
37 + <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
38 + </dependentAssembly>
39 + <dependentAssembly>
40 + <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
41 + <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
42 + </dependentAssembly>
43 + <dependentAssembly>
44 + <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
45 + <bindingRedirect oldVersion="1.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
46 + </dependentAssembly>
47 + </assemblyBinding>
48 + </runtime>
49 + <system.codedom>
50 + <compilers>
51 + <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
52 + <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
53 + </compilers>
54 + </system.codedom>
55 +</configuration>
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/favicon.ico
Binary files /dev/null and b/src/test/wix/TestData/CsprojWebApplicationNetFx/favicon.ico differ
src/test/wix/TestData/CsprojWebApplicationNetFx/fonts/glyphicons-halflings-regular.svg new
+288
@@ -0,0 +1,288 @@
1 +<?xml version="1.0" standalone="no"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3 +<svg xmlns="http://www.w3.org/2000/svg">
4 +<metadata></metadata>
5 +<defs>
6 +<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
7 +<font-face units-per-em="1200" ascent="960" descent="-240" />
8 +<missing-glyph horiz-adv-x="500" />
9 +<glyph horiz-adv-x="0" />
10 +<glyph horiz-adv-x="400" />
11 +<glyph unicode=" " />
12 +<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
13 +<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
14 +<glyph unicode="&#xa0;" />
15 +<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
16 +<glyph unicode="&#x2000;" horiz-adv-x="650" />
17 +<glyph unicode="&#x2001;" horiz-adv-x="1300" />
18 +<glyph unicode="&#x2002;" horiz-adv-x="650" />
19 +<glyph unicode="&#x2003;" horiz-adv-x="1300" />
20 +<glyph unicode="&#x2004;" horiz-adv-x="433" />
21 +<glyph unicode="&#x2005;" horiz-adv-x="325" />
22 +<glyph unicode="&#x2006;" horiz-adv-x="216" />
23 +<glyph unicode="&#x2007;" horiz-adv-x="216" />
24 +<glyph unicode="&#x2008;" horiz-adv-x="162" />
25 +<glyph unicode="&#x2009;" horiz-adv-x="260" />
26 +<glyph unicode="&#x200a;" horiz-adv-x="72" />
27 +<glyph unicode="&#x202f;" horiz-adv-x="260" />
28 +<glyph unicode="&#x205f;" horiz-adv-x="325" />
29 +<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
30 +<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
31 +<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
32 +<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
33 +<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
34 +<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
35 +<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
36 +<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
37 +<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
38 +<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
39 +<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
40 +<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
41 +<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
42 +<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
43 +<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
44 +<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
45 +<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
46 +<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
47 +<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
48 +<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
49 +<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
50 +<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
51 +<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
52 +<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
53 +<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
54 +<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
55 +<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
56 +<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
57 +<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
58 +<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
59 +<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
60 +<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
61 +<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
62 +<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
63 +<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
64 +<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
65 +<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
66 +<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
67 +<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
68 +<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
69 +<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
70 +<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
71 +<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
72 +<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
73 +<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
74 +<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
75 +<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
76 +<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
77 +<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
78 +<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
79 +<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
80 +<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
81 +<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
82 +<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
83 +<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
84 +<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
85 +<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
86 +<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
87 +<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
88 +<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
89 +<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
90 +<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
91 +<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
92 +<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
93 +<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
94 +<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
95 +<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
96 +<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
97 +<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
98 +<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
99 +<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
100 +<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
101 +<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
102 +<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
103 +<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
104 +<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
105 +<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
106 +<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
107 +<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
108 +<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
109 +<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
110 +<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
111 +<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
112 +<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
113 +<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
114 +<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
115 +<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
116 +<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
117 +<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
118 +<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
119 +<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
120 +<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
121 +<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
122 +<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
123 +<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
124 +<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
125 +<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
126 +<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
127 +<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
128 +<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
129 +<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
130 +<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
131 +<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
132 +<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
133 +<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
134 +<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
135 +<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
136 +<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
137 +<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
138 +<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
139 +<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
140 +<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
141 +<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
142 +<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
143 +<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
144 +<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
145 +<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
146 +<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
147 +<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
148 +<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
149 +<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
150 +<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
151 +<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
152 +<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
153 +<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
154 +<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
155 +<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
156 +<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
157 +<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
158 +<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
159 +<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
160 +<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
161 +<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
162 +<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
163 +<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
164 +<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
165 +<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
166 +<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
167 +<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
168 +<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
169 +<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
170 +<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
171 +<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
172 +<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
173 +<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
174 +<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
175 +<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
176 +<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
177 +<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
178 +<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
179 +<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
180 +<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
181 +<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
182 +<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
183 +<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
184 +<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
185 +<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
186 +<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
187 +<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
188 +<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
189 +<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
190 +<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
191 +<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
192 +<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
193 +<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
194 +<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
195 +<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
196 +<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
197 +<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
198 +<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
199 +<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
200 +<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
201 +<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
202 +<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
203 +<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
204 +<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
205 +<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
206 +<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
207 +<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
208 +<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
209 +<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
210 +<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
211 +<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
212 +<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
213 +<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
214 +<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
215 +<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
216 +<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
217 +<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
218 +<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
219 +<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
220 +<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
221 +<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
222 +<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
223 +<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
224 +<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
225 +<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
226 +<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
227 +<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
228 +<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
229 +<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
230 +<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
231 +<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
232 +<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
233 +<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
234 +<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
235 +<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
236 +<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
237 +<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
238 +<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
239 +<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
240 +<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
241 +<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
242 +<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
243 +<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
244 +<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
245 +<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
246 +<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
247 +<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
248 +<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
249 +<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
250 +<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
251 +<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
252 +<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
253 +<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
254 +<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
255 +<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
256 +<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
257 +<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
258 +<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
259 +<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
260 +<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
261 +<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
262 +<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
263 +<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
264 +<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
265 +<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
266 +<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
267 +<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
268 +<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
269 +<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
270 +<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
271 +<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
272 +<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
273 +<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
274 +<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
275 +<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
276 +<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
277 +<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
278 +<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
279 +<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
280 +<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
281 +<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
282 +<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
283 +<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
284 +<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
285 +<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
286 +<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
287 +</font>
288 +</defs></svg>
\ No newline at end of file
src/test/wix/TestData/CsprojWebApplicationNetFx/packages.config new
+17
@@ -0,0 +1,17 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<packages>
3 + <package id="Antlr" version="3.5.0.2" targetFramework="net472" />
4 + <package id="bootstrap" version="3.4.1" targetFramework="net472" />
5 + <package id="jQuery" version="3.4.1" targetFramework="net472" />
6 + <package id="jQuery.Validation" version="1.17.0" targetFramework="net472" />
7 + <package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net472" />
8 + <package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net472" />
9 + <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net472" />
10 + <package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net472" />
11 + <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net472" />
12 + <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.11" targetFramework="net472" />
13 + <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net472" />
14 + <package id="Modernizr" version="2.8.3" targetFramework="net472" />
15 + <package id="Newtonsoft.Json" version="12.0.2" targetFramework="net472" />
16 + <package id="WebGrease" version="1.6.0" targetFramework="net472" />
17 +</packages>
\ No newline at end of file
src/test/wix/TestData/CsprojWindowsFormsNetFx/App.config new
+6
@@ -0,0 +1,6 @@
1 +<?xml version="1.0" encoding="utf-8" ?>
2 +<configuration>
3 + <startup>
4 + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
5 + </startup>
6 +</configuration>
\ No newline at end of file
src/test/wix/TestData/CsprojWindowsFormsNetFx/CsprojWindowsFormsNetFx.csproj new
+86
@@ -0,0 +1,86 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4 + <PropertyGroup>
5 + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6 + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7 + <ProjectGuid>{3B5570AD-4191-4A66-A81D-8CBD14496340}</ProjectGuid>
8 + <OutputType>WinExe</OutputType>
9 + <RootNamespace>CsprojWindowsFormsNetFx</RootNamespace>
10 + <AssemblyName>CsprojWindowsFormsNetFx</AssemblyName>
11 + <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
12 + <FileAlignment>512</FileAlignment>
13 + <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
14 + <Deterministic>true</Deterministic>
15 + </PropertyGroup>
16 + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
17 + <PlatformTarget>AnyCPU</PlatformTarget>
18 + <DebugSymbols>true</DebugSymbols>
19 + <DebugType>full</DebugType>
20 + <Optimize>false</Optimize>
21 + <OutputPath>bin\Debug\</OutputPath>
22 + <DefineConstants>DEBUG;TRACE</DefineConstants>
23 + <ErrorReport>prompt</ErrorReport>
24 + <WarningLevel>4</WarningLevel>
25 + </PropertyGroup>
26 + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
27 + <PlatformTarget>AnyCPU</PlatformTarget>
28 + <DebugType>pdbonly</DebugType>
29 + <Optimize>true</Optimize>
30 + <OutputPath>bin\Release\</OutputPath>
31 + <DefineConstants>TRACE</DefineConstants>
32 + <ErrorReport>prompt</ErrorReport>
33 + <WarningLevel>4</WarningLevel>
34 + </PropertyGroup>
35 + <ItemGroup>
36 + <Reference Include="System" />
37 + <Reference Include="System.Core" />
38 + <Reference Include="System.Xml.Linq" />
39 + <Reference Include="System.Data.DataSetExtensions" />
40 + <Reference Include="Microsoft.CSharp" />
41 + <Reference Include="System.Data" />
42 + <Reference Include="System.Deployment" />
43 + <Reference Include="System.Drawing" />
44 + <Reference Include="System.Net.Http" />
45 + <Reference Include="System.Windows.Forms" />
46 + <Reference Include="System.Xml" />
47 + </ItemGroup>
48 + <ItemGroup>
49 + <Compile Include="Form1.cs">
50 + <SubType>Form</SubType>
51 + </Compile>
52 + <Compile Include="Form1.Designer.cs">
53 + <DependentUpon>Form1.cs</DependentUpon>
54 + </Compile>
55 + <Compile Include="Program.cs" />
56 + <Compile Include="Properties\AssemblyInfo.cs" />
57 + <EmbeddedResource Include="Properties\Resources.resx">
58 + <Generator>ResXFileCodeGenerator</Generator>
59 + <LastGenOutput>Resources.Designer.cs</LastGenOutput>
60 + <SubType>Designer</SubType>
61 + </EmbeddedResource>
62 + <Compile Include="Properties\Resources.Designer.cs">
63 + <AutoGen>True</AutoGen>
64 + <DependentUpon>Resources.resx</DependentUpon>
65 + </Compile>
66 + <None Include="Properties\Settings.settings">
67 + <Generator>SettingsSingleFileGenerator</Generator>
68 + <LastGenOutput>Settings.Designer.cs</LastGenOutput>
69 + </None>
70 + <Compile Include="Properties\Settings.Designer.cs">
71 + <AutoGen>True</AutoGen>
72 + <DependentUpon>Settings.settings</DependentUpon>
73 + <DesignTimeSharedInput>True</DesignTimeSharedInput>
74 + </Compile>
75 + </ItemGroup>
76 + <ItemGroup>
77 + <None Include="App.config" />
78 + </ItemGroup>
79 + <ItemGroup>
80 + <ProjectReference Include="..\CsprojClassLibraryNetFx\CsprojClassLibraryNetFx.csproj">
81 + <Project>{984d615d-adb1-49b4-ae0b-4496ed963881}</Project>
82 + <Name>CsprojClassLibraryNetFx</Name>
83 + </ProjectReference>
84 + </ItemGroup>
85 + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
86 +</Project>
\ No newline at end of file
src/test/wix/TestData/CsprojWindowsFormsNetFx/Form1.Designer.cs new
+41
@@ -0,0 +1,41 @@
1 +
2 +namespace CsprojWindowsFormsNetFx
3 +{
4 + partial class Form1
5 + {
6 + /// <summary>
7 + /// Required designer variable.
8 + /// </summary>
9 + private System.ComponentModel.IContainer components = null;
10 +
11 + /// <summary>
12 + /// Clean up any resources being used.
13 + /// </summary>
14 + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
15 + protected override void Dispose(bool disposing)
16 + {
17 + if (disposing && (components != null))
18 + {
19 + components.Dispose();
20 + }
21 + base.Dispose(disposing);
22 + }
23 +
24 + #region Windows Form Designer generated code
25 +
26 + /// <summary>
27 + /// Required method for Designer support - do not modify
28 + /// the contents of this method with the code editor.
29 + /// </summary>
30 + private void InitializeComponent()
31 + {
32 + this.components = new System.ComponentModel.Container();
33 + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
34 + this.ClientSize = new System.Drawing.Size(800, 450);
35 + this.Text = "Form1";
36 + }
37 +
38 + #endregion
39 + }
40 +}
41 +
src/test/wix/TestData/CsprojWindowsFormsNetFx/Form1.cs new
+20
@@ -0,0 +1,20 @@
1 +using System;
2 +using System.Collections.Generic;
3 +using System.ComponentModel;
4 +using System.Data;
5 +using System.Drawing;
6 +using System.Linq;
7 +using System.Text;
8 +using System.Threading.Tasks;
9 +using System.Windows.Forms;
10 +
11 +namespace CsprojWindowsFormsNetFx
12 +{
13 + public partial class Form1 : Form
14 + {
15 + public Form1()
16 + {
17 + InitializeComponent();
18 + }
19 + }
20 +}
src/test/wix/TestData/CsprojWindowsFormsNetFx/Program.cs new
+22
@@ -0,0 +1,22 @@
1 +using System;
2 +using System.Collections.Generic;
3 +using System.Linq;
4 +using System.Threading.Tasks;
5 +using System.Windows.Forms;
6 +
7 +namespace CsprojWindowsFormsNetFx
8 +{
9 + static class Program
10 + {
11 + /// <summary>
12 + /// The main entry point for the application.
13 + /// </summary>
14 + [STAThread]
15 + static void Main()
16 + {
17 + Application.EnableVisualStyles();
18 + Application.SetCompatibleTextRenderingDefault(false);
19 + Application.Run(new Form1());
20 + }
21 + }
22 +}
src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/AssemblyInfo.cs new
+36
@@ -0,0 +1,36 @@
1 +using System.Reflection;
2 +using System.Runtime.CompilerServices;
3 +using System.Runtime.InteropServices;
4 +
5 +// General Information about an assembly is controlled through the following
6 +// set of attributes. Change these attribute values to modify the information
7 +// associated with an assembly.
8 +[assembly: AssemblyTitle("CsprojWindowsFormsNetFx")]
9 +[assembly: AssemblyDescription("")]
10 +[assembly: AssemblyConfiguration("")]
11 +[assembly: AssemblyCompany("")]
12 +[assembly: AssemblyProduct("CsprojWindowsFormsNetFx")]
13 +[assembly: AssemblyCopyright("Copyright © 2021")]
14 +[assembly: AssemblyTrademark("")]
15 +[assembly: AssemblyCulture("")]
16 +
17 +// Setting ComVisible to false makes the types in this assembly not visible
18 +// to COM components. If you need to access a type in this assembly from
19 +// COM, set the ComVisible attribute to true on that type.
20 +[assembly: ComVisible(false)]
21 +
22 +// The following GUID is for the ID of the typelib if this project is exposed to COM
23 +[assembly: Guid("3b5570ad-4191-4a66-a81d-8cbd14496340")]
24 +
25 +// Version information for an assembly consists of the following four values:
26 +//
27 +// Major Version
28 +// Minor Version
29 +// Build Number
30 +// Revision
31 +//
32 +// You can specify all the values or you can default the Build and Revision Numbers
33 +// by using the '*' as shown below:
34 +// [assembly: AssemblyVersion("1.0.*")]
35 +[assembly: AssemblyVersion("1.0.0.0")]
36 +[assembly: AssemblyFileVersion("1.0.0.0")]
src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Resources.Designer.cs new
+70
@@ -0,0 +1,70 @@
1 +//------------------------------------------------------------------------------
2 +// <auto-generated>
3 +// This code was generated by a tool.
4 +// Runtime Version:4.0.30319.42000
5 +//
6 +// Changes to this file may cause incorrect behavior and will be lost if
7 +// the code is regenerated.
8 +// </auto-generated>
9 +//------------------------------------------------------------------------------
10 +
11 +
12 +namespace CsprojWindowsFormsNetFx.Properties
13 +{
14 + /// <summary>
15 + /// A strongly-typed resource class, for looking up localized strings, etc.
16 + /// </summary>
17 + // This class was auto-generated by the StronglyTypedResourceBuilder
18 + // class via a tool like ResGen or Visual Studio.
19 + // To add or remove a member, edit your .ResX file then rerun ResGen
20 + // with the /str option, or rebuild your VS project.
21 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
22 + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
23 + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
24 + internal class Resources
25 + {
26 +
27 + private static global::System.Resources.ResourceManager resourceMan;
28 +
29 + private static global::System.Globalization.CultureInfo resourceCulture;
30 +
31 + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 + internal Resources()
33 + {
34 + }
35 +
36 + /// <summary>
37 + /// Returns the cached ResourceManager instance used by this class.
38 + /// </summary>
39 + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
40 + internal static global::System.Resources.ResourceManager ResourceManager
41 + {
42 + get
43 + {
44 + if ((resourceMan == null))
45 + {
46 + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CsprojWindowsFormsNetFx.Properties.Resources", typeof(Resources).Assembly);
47 + resourceMan = temp;
48 + }
49 + return resourceMan;
50 + }
51 + }
52 +
53 + /// <summary>
54 + /// Overrides the current thread's CurrentUICulture property for all
55 + /// resource lookups using this strongly typed resource class.
56 + /// </summary>
57 + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
58 + internal static global::System.Globalization.CultureInfo Culture
59 + {
60 + get
61 + {
62 + return resourceCulture;
63 + }
64 + set
65 + {
66 + resourceCulture = value;
67 + }
68 + }
69 + }
70 +}
src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Resources.resx new
+117
@@ -0,0 +1,117 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<root>
3 + <!--
4 + Microsoft ResX Schema
5 +
6 + Version 2.0
7 +
8 + The primary goals of this format is to allow a simple XML format
9 + that is mostly human readable. The generation and parsing of the
10 + various data types are done through the TypeConverter classes
11 + associated with the data types.
12 +
13 + Example:
14 +
15 + ... ado.net/XML headers & schema ...
16 + <resheader name="resmimetype">text/microsoft-resx</resheader>
17 + <resheader name="version">2.0</resheader>
18 + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 + <value>[base64 mime encoded serialized .NET Framework object]</value>
24 + </data>
25 + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 + <comment>This is a comment</comment>
28 + </data>
29 +
30 + There are any number of "resheader" rows that contain simple
31 + name/value pairs.
32 +
33 + Each data row contains a name, and value. The row also contains a
34 + type or mimetype. Type corresponds to a .NET class that support
35 + text/value conversion through the TypeConverter architecture.
36 + Classes that don't support this are serialized and stored with the
37 + mimetype set.
38 +
39 + The mimetype is used for serialized objects, and tells the
40 + ResXResourceReader how to depersist the object. This is currently not
41 + extensible. For a given mimetype the value must be set accordingly:
42 +
43 + Note - application/x-microsoft.net.object.binary.base64 is the format
44 + that the ResXResourceWriter will generate, however the reader can
45 + read any of the formats listed below.
46 +
47 + mimetype: application/x-microsoft.net.object.binary.base64
48 + value : The object must be serialized with
49 + : System.Serialization.Formatters.Binary.BinaryFormatter
50 + : and then encoded with base64 encoding.
51 +
52 + mimetype: application/x-microsoft.net.object.soap.base64
53 + value : The object must be serialized with
54 + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 + : and then encoded with base64 encoding.
56 +
57 + mimetype: application/x-microsoft.net.object.bytearray.base64
58 + value : The object must be serialized into a byte array
59 + : using a System.ComponentModel.TypeConverter
60 + : and then encoded with base64 encoding.
61 + -->
62 + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 + <xsd:element name="root" msdata:IsDataSet="true">
64 + <xsd:complexType>
65 + <xsd:choice maxOccurs="unbounded">
66 + <xsd:element name="metadata">
67 + <xsd:complexType>
68 + <xsd:sequence>
69 + <xsd:element name="value" type="xsd:string" minOccurs="0" />
70 + </xsd:sequence>
71 + <xsd:attribute name="name" type="xsd:string" />
72 + <xsd:attribute name="type" type="xsd:string" />
73 + <xsd:attribute name="mimetype" type="xsd:string" />
74 + </xsd:complexType>
75 + </xsd:element>
76 + <xsd:element name="assembly">
77 + <xsd:complexType>
78 + <xsd:attribute name="alias" type="xsd:string" />
79 + <xsd:attribute name="name" type="xsd:string" />
80 + </xsd:complexType>
81 + </xsd:element>
82 + <xsd:element name="data">
83 + <xsd:complexType>
84 + <xsd:sequence>
85 + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
86 + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
87 + </xsd:sequence>
88 + <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
89 + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
90 + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
91 + </xsd:complexType>
92 + </xsd:element>
93 + <xsd:element name="resheader">
94 + <xsd:complexType>
95 + <xsd:sequence>
96 + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
97 + </xsd:sequence>
98 + <xsd:attribute name="name" type="xsd:string" use="required" />
99 + </xsd:complexType>
100 + </xsd:element>
101 + </xsd:choice>
102 + </xsd:complexType>
103 + </xsd:element>
104 + </xsd:schema>
105 + <resheader name="resmimetype">
106 + <value>text/microsoft-resx</value>
107 + </resheader>
108 + <resheader name="version">
109 + <value>2.0</value>
110 + </resheader>
111 + <resheader name="reader">
112 + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
113 + </resheader>
114 + <resheader name="writer">
115 + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 + </resheader>
117 +</root>
\ No newline at end of file
src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Settings.Designer.cs new
+29
@@ -0,0 +1,29 @@
1 +//------------------------------------------------------------------------------
2 +// <auto-generated>
3 +// This code was generated by a tool.
4 +// Runtime Version:4.0.30319.42000
5 +//
6 +// Changes to this file may cause incorrect behavior and will be lost if
7 +// the code is regenerated.
8 +// </auto-generated>
9 +//------------------------------------------------------------------------------
10 +
11 +
12 +namespace CsprojWindowsFormsNetFx.Properties
13 +{
14 + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
16 + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
17 + {
18 +
19 + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
20 +
21 + public static Settings Default
22 + {
23 + get
24 + {
25 + return defaultInstance;
26 + }
27 + }
28 + }
29 +}
src/test/wix/TestData/CsprojWindowsFormsNetFx/Properties/Settings.settings new
+7
@@ -0,0 +1,7 @@
1 +<?xml version='1.0' encoding='utf-8'?>
2 +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
3 + <Profiles>
4 + <Profile Name="(Default)" />
5 + </Profiles>
6 + <Settings />
7 +</SettingsFile>
src/test/wix/TestData/CsprojWpfNetCore/App.xaml new
+9
@@ -0,0 +1,9 @@
1 +<Application x:Class="CsprojWpfNetCore.App"
2 + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 + xmlns:local="clr-namespace:CsprojWpfNetCore"
5 + StartupUri="MainWindow.xaml">
6 + <Application.Resources>
7 +
8 + </Application.Resources>
9 +</Application>
src/test/wix/TestData/CsprojWpfNetCore/App.xaml.cs new
+17
@@ -0,0 +1,17 @@
1 +using System;
2 +using System.Collections.Generic;
3 +using System.Configuration;
4 +using System.Data;
5 +using System.Linq;
6 +using System.Threading.Tasks;
7 +using System.Windows;
8 +
9 +namespace CsprojWpfNetCore
10 +{
11 + /// <summary>
12 + /// Interaction logic for App.xaml
13 + /// </summary>
14 + public partial class App : Application
15 + {
16 + }
17 +}
src/test/wix/TestData/CsprojWpfNetCore/AssemblyInfo.cs new
+10
@@ -0,0 +1,10 @@
1 +using System.Windows;
2 +
3 +[assembly: ThemeInfo(
4 + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 + //(used if a resource is not found in the page,
6 + // or application resource dictionaries)
7 + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 + //(used if a resource is not found in the page,
9 + // app, or any theme specific resource dictionaries)
10 +)]
src/test/wix/TestData/CsprojWpfNetCore/CsprojWpfNetCore.csproj new
+14
@@ -0,0 +1,14 @@
1 +<Project Sdk="Microsoft.NET.Sdk">
2 +
3 + <PropertyGroup>
4 + <OutputType>WinExe</OutputType>
5 + <TargetFramework>net5.0-windows</TargetFramework>
6 + <Nullable>enable</Nullable>
7 + <UseWPF>true</UseWPF>
8 + </PropertyGroup>
9 +
10 + <ItemGroup>
11 + <ProjectReference Include="..\CsprojClassLibraryMultiTarget\CsprojClassLibraryMultiTarget.csproj" />
12 + </ItemGroup>
13 +
14 +</Project>
src/test/wix/TestData/CsprojWpfNetCore/MainWindow.xaml new
+12
@@ -0,0 +1,12 @@
1 +<Window x:Class="CsprojWpfNetCore.MainWindow"
2 + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 + xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5 + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6 + xmlns:local="clr-namespace:CsprojWpfNetCore"
7 + mc:Ignorable="d"
8 + Title="MainWindow" Height="450" Width="800">
9 + <Grid>
10 +
11 + </Grid>
12 +</Window>
src/test/wix/TestData/CsprojWpfNetCore/MainWindow.xaml.cs new
+28
@@ -0,0 +1,28 @@
1 +using System;
2 +using System.Collections.Generic;
3 +using System.Linq;
4 +using System.Text;
5 +using System.Threading.Tasks;
6 +using System.Windows;
7 +using System.Windows.Controls;
8 +using System.Windows.Data;
9 +using System.Windows.Documents;
10 +using System.Windows.Input;
11 +using System.Windows.Media;
12 +using System.Windows.Media.Imaging;
13 +using System.Windows.Navigation;
14 +using System.Windows.Shapes;
15 +
16 +namespace CsprojWpfNetCore
17 +{
18 + /// <summary>
19 + /// Interaction logic for MainWindow.xaml
20 + /// </summary>
21 + public partial class MainWindow : Window
22 + {
23 + public MainWindow()
24 + {
25 + InitializeComponent();
26 + }
27 + }
28 +}
src/test/wix/TestData/Directory.Build.props new
+9
@@ -0,0 +1,9 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 +
4 +<Project>
5 + <!--
6 + This file prevents the import of WiX standard Directory.Build.props
7 + from the root src directory
8 + -->
9 +</Project>
src/test/wix/TestData/Directory.Build.targets new
+9
@@ -0,0 +1,9 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 +
4 +<Project>
5 + <!--
6 + This file prevents the import of WiX standard Directory.Build.targets
7 + from the root src directory
8 + -->
9 +</Project>
src/test/wix/TestData/Directory.Packages.props new
+9
@@ -0,0 +1,9 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 +
4 +<Project>
5 + <!--
6 + This file prevents the import of WiX standard Directory.Packages.props
7 + from the root src directory
8 + -->
9 +</Project>
src/test/wix/TestData/TestProjects.sln new
+191
@@ -0,0 +1,191 @@
1 +
2 +Microsoft Visual Studio Solution File, Format Version 12.00
3 +# Visual Studio Version 17
4 +VisualStudioVersion = 17.0.31912.275
5 +MinimumVisualStudioVersion = 10.0.40219.1
6 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CsprojClassLibraryNetCore", "CsprojClassLibraryNetCore\CsprojClassLibraryNetCore.csproj", "{0613F696-7DAD-41AE-ACD5-38949021C534}"
7 +EndProject
8 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsprojClassLibraryNetFx", "CsprojClassLibraryNetFx\CsprojClassLibraryNetFx.csproj", "{984D615D-ADB1-49B4-AE0B-4496ED963881}"
9 +EndProject
10 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CsprojConsoleNetCore", "CsprojConsoleNetCore\CsprojConsoleNetCore.csproj", "{D7555F37-31DA-4678-8E0B-4BD0D392F136}"
11 +EndProject
12 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CsprojWebApplicationNetCore", "CsprojWebApplicationNetCore\CsprojWebApplicationNetCore.csproj", "{AE8FC882-54CC-45C6-9489-8C98CAE31268}"
13 +EndProject
14 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsprojWebApplicationNetFx", "CsprojWebApplicationNetFx\CsprojWebApplicationNetFx.csproj", "{3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}"
15 +EndProject
16 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsprojWindowsFormsNetFx", "CsprojWindowsFormsNetFx\CsprojWindowsFormsNetFx.csproj", "{3B5570AD-4191-4A66-A81D-8CBD14496340}"
17 +EndProject
18 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VcxprojConsoleApplication", "VcxprojConsoleApplication\VcxprojConsoleApplication.vcxproj", "{7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}"
19 +EndProject
20 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VcxprojDll", "VcxprojDll\VcxprojDll.vcxproj", "{2B70C248-1090-4D04-BDA0-BF0E48716E5B}"
21 +EndProject
22 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VcxprojStaticLib", "VcxprojStaticLib\VcxprojStaticLib.vcxproj", "{C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}"
23 +EndProject
24 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VcxprojWindowsApp", "VcxprojWindowsApp\VcxprojWindowsApp.vcxproj", "{8F2A12CD-6D3B-4648-81A9-2A852A63EA90}"
25 +EndProject
26 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CsprojClassLibraryMultiTarget", "CsprojClassLibraryMultiTarget\CsprojClassLibraryMultiTarget.csproj", "{B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}"
27 +EndProject
28 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsprojWpfNetCore", "CsprojWpfNetCore\CsprojWpfNetCore.csproj", "{F467E3CF-2107-44B0-B45B-0FCA4A04613B}"
29 +EndProject
30 +Global
31 + GlobalSection(SolutionConfigurationPlatforms) = preSolution
32 + Debug|Any CPU = Debug|Any CPU
33 + Debug|x64 = Debug|x64
34 + Debug|x86 = Debug|x86
35 + Release|Any CPU = Release|Any CPU
36 + Release|x64 = Release|x64
37 + Release|x86 = Release|x86
38 + EndGlobalSection
39 + GlobalSection(ProjectConfigurationPlatforms) = postSolution
40 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
41 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|Any CPU.Build.0 = Debug|Any CPU
42 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|x64.ActiveCfg = Debug|Any CPU
43 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|x64.Build.0 = Debug|Any CPU
44 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|x86.ActiveCfg = Debug|Any CPU
45 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Debug|x86.Build.0 = Debug|Any CPU
46 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|Any CPU.ActiveCfg = Release|Any CPU
47 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|Any CPU.Build.0 = Release|Any CPU
48 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|x64.ActiveCfg = Release|Any CPU
49 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|x64.Build.0 = Release|Any CPU
50 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|x86.ActiveCfg = Release|Any CPU
51 + {0613F696-7DAD-41AE-ACD5-38949021C534}.Release|x86.Build.0 = Release|Any CPU
52 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
53 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|Any CPU.Build.0 = Debug|Any CPU
54 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|x64.ActiveCfg = Debug|Any CPU
55 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|x64.Build.0 = Debug|Any CPU
56 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|x86.ActiveCfg = Debug|Any CPU
57 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Debug|x86.Build.0 = Debug|Any CPU
58 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|Any CPU.ActiveCfg = Release|Any CPU
59 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|Any CPU.Build.0 = Release|Any CPU
60 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|x64.ActiveCfg = Release|Any CPU
61 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|x64.Build.0 = Release|Any CPU
62 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|x86.ActiveCfg = Release|Any CPU
63 + {984D615D-ADB1-49B4-AE0B-4496ED963881}.Release|x86.Build.0 = Release|Any CPU
64 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
65 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|Any CPU.Build.0 = Debug|Any CPU
66 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|x64.ActiveCfg = Debug|Any CPU
67 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|x64.Build.0 = Debug|Any CPU
68 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|x86.ActiveCfg = Debug|Any CPU
69 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Debug|x86.Build.0 = Debug|Any CPU
70 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|Any CPU.ActiveCfg = Release|Any CPU
71 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|Any CPU.Build.0 = Release|Any CPU
72 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|x64.ActiveCfg = Release|Any CPU
73 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|x64.Build.0 = Release|Any CPU
74 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|x86.ActiveCfg = Release|Any CPU
75 + {D7555F37-31DA-4678-8E0B-4BD0D392F136}.Release|x86.Build.0 = Release|Any CPU
76 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
77 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|Any CPU.Build.0 = Debug|Any CPU
78 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|x64.ActiveCfg = Debug|Any CPU
79 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|x64.Build.0 = Debug|Any CPU
80 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|x86.ActiveCfg = Debug|Any CPU
81 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Debug|x86.Build.0 = Debug|Any CPU
82 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|Any CPU.ActiveCfg = Release|Any CPU
83 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|Any CPU.Build.0 = Release|Any CPU
84 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|x64.ActiveCfg = Release|Any CPU
85 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|x64.Build.0 = Release|Any CPU
86 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|x86.ActiveCfg = Release|Any CPU
87 + {AE8FC882-54CC-45C6-9489-8C98CAE31268}.Release|x86.Build.0 = Release|Any CPU
88 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
89 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
90 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|x64.ActiveCfg = Debug|Any CPU
91 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|x64.Build.0 = Debug|Any CPU
92 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|x86.ActiveCfg = Debug|Any CPU
93 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Debug|x86.Build.0 = Debug|Any CPU
94 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
95 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|Any CPU.Build.0 = Release|Any CPU
96 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|x64.ActiveCfg = Release|Any CPU
97 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|x64.Build.0 = Release|Any CPU
98 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|x86.ActiveCfg = Release|Any CPU
99 + {3DDD967D-2E14-44A3-AFE1-1ED4C25033BC}.Release|x86.Build.0 = Release|Any CPU
100 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
101 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|Any CPU.Build.0 = Debug|Any CPU
102 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|x64.ActiveCfg = Debug|Any CPU
103 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|x64.Build.0 = Debug|Any CPU
104 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|x86.ActiveCfg = Debug|Any CPU
105 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Debug|x86.Build.0 = Debug|Any CPU
106 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|Any CPU.ActiveCfg = Release|Any CPU
107 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|Any CPU.Build.0 = Release|Any CPU
108 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|x64.ActiveCfg = Release|Any CPU
109 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|x64.Build.0 = Release|Any CPU
110 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|x86.ActiveCfg = Release|Any CPU
111 + {3B5570AD-4191-4A66-A81D-8CBD14496340}.Release|x86.Build.0 = Release|Any CPU
112 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|Any CPU.ActiveCfg = Debug|x64
113 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|Any CPU.Build.0 = Debug|x64
114 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|x64.ActiveCfg = Debug|x64
115 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|x64.Build.0 = Debug|x64
116 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|x86.ActiveCfg = Debug|Win32
117 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Debug|x86.Build.0 = Debug|Win32
118 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|Any CPU.ActiveCfg = Release|x64
119 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|Any CPU.Build.0 = Release|x64
120 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|x64.ActiveCfg = Release|x64
121 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|x64.Build.0 = Release|x64
122 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|x86.ActiveCfg = Release|Win32
123 + {7EDF70C5-DEC2-417D-82E3-F354BE59E3A7}.Release|x86.Build.0 = Release|Win32
124 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|Any CPU.ActiveCfg = Debug|x64
125 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|Any CPU.Build.0 = Debug|x64
126 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|x64.ActiveCfg = Debug|x64
127 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|x64.Build.0 = Debug|x64
128 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|x86.ActiveCfg = Debug|Win32
129 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Debug|x86.Build.0 = Debug|Win32
130 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|Any CPU.ActiveCfg = Release|x64
131 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|Any CPU.Build.0 = Release|x64
132 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|x64.ActiveCfg = Release|x64
133 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|x64.Build.0 = Release|x64
134 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|x86.ActiveCfg = Release|Win32
135 + {2B70C248-1090-4D04-BDA0-BF0E48716E5B}.Release|x86.Build.0 = Release|Win32
136 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|Any CPU.ActiveCfg = Debug|x64
137 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|Any CPU.Build.0 = Debug|x64
138 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|x64.ActiveCfg = Debug|x64
139 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|x64.Build.0 = Debug|x64
140 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|x86.ActiveCfg = Debug|Win32
141 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Debug|x86.Build.0 = Debug|Win32
142 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|Any CPU.ActiveCfg = Release|x64
143 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|Any CPU.Build.0 = Release|x64
144 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|x64.ActiveCfg = Release|x64
145 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|x64.Build.0 = Release|x64
146 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|x86.ActiveCfg = Release|Win32
147 + {C4BBEB93-E40F-4F91-9A9D-DB9656DB04F0}.Release|x86.Build.0 = Release|Win32
148 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|Any CPU.ActiveCfg = Debug|x64
149 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|Any CPU.Build.0 = Debug|x64
150 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|x64.ActiveCfg = Debug|x64
151 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|x64.Build.0 = Debug|x64
152 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|x86.ActiveCfg = Debug|Win32
153 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Debug|x86.Build.0 = Debug|Win32
154 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|Any CPU.ActiveCfg = Release|x64
155 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|Any CPU.Build.0 = Release|x64
156 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|x64.ActiveCfg = Release|x64
157 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|x64.Build.0 = Release|x64
158 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|x86.ActiveCfg = Release|Win32
159 + {8F2A12CD-6D3B-4648-81A9-2A852A63EA90}.Release|x86.Build.0 = Release|Win32
160 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
161 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
162 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|x64.ActiveCfg = Debug|Any CPU
163 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|x64.Build.0 = Debug|Any CPU
164 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|x86.ActiveCfg = Debug|Any CPU
165 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Debug|x86.Build.0 = Debug|Any CPU
166 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
167 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|Any CPU.Build.0 = Release|Any CPU
168 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|x64.ActiveCfg = Release|Any CPU
169 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|x64.Build.0 = Release|Any CPU
170 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|x86.ActiveCfg = Release|Any CPU
171 + {B1F59F27-6AA6-4228-A3DF-B21B32AEEB7B}.Release|x86.Build.0 = Release|Any CPU
172 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
173 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|Any CPU.Build.0 = Debug|Any CPU
174 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|x64.ActiveCfg = Debug|Any CPU
175 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|x64.Build.0 = Debug|Any CPU
176 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|x86.ActiveCfg = Debug|Any CPU
177 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Debug|x86.Build.0 = Debug|Any CPU
178 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|Any CPU.ActiveCfg = Release|Any CPU
179 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|Any CPU.Build.0 = Release|Any CPU
180 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|x64.ActiveCfg = Release|Any CPU
181 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|x64.Build.0 = Release|Any CPU
182 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|x86.ActiveCfg = Release|Any CPU
183 + {F467E3CF-2107-44B0-B45B-0FCA4A04613B}.Release|x86.Build.0 = Release|Any CPU
184 + EndGlobalSection
185 + GlobalSection(SolutionProperties) = preSolution
186 + HideSolutionNode = FALSE
187 + EndGlobalSection
188 + GlobalSection(ExtensibilityGlobals) = postSolution
189 + SolutionGuid = {690AEDD5-EBD0-4F2F-98AC-2D2821E1D228}
190 + EndGlobalSection
191 +EndGlobal
src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.cpp new
+20
@@ -0,0 +1,20 @@
1 +// VcxprojConsoleApplication.cpp : This file contains the 'main' function. Program execution begins and ends there.
2 +//
3 +
4 +#include <iostream>
5 +
6 +int main()
7 +{
8 + std::cout << "Hello World!\n";
9 +}
10 +
11 +// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
12 +// Debug program: F5 or Debug > Start Debugging menu
13 +
14 +// Tips for Getting Started:
15 +// 1. Use the Solution Explorer window to add/manage files
16 +// 2. Use the Team Explorer window to connect to source control
17 +// 3. Use the Output window to see build output and other messages
18 +// 4. Use the Error List window to view errors
19 +// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
20 +// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.vcxproj new
+147
@@ -0,0 +1,147 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <ItemGroup Label="ProjectConfigurations">
4 + <ProjectConfiguration Include="Debug|Win32">
5 + <Configuration>Debug</Configuration>
6 + <Platform>Win32</Platform>
7 + </ProjectConfiguration>
8 + <ProjectConfiguration Include="Release|Win32">
9 + <Configuration>Release</Configuration>
10 + <Platform>Win32</Platform>
11 + </ProjectConfiguration>
12 + <ProjectConfiguration Include="Debug|x64">
13 + <Configuration>Debug</Configuration>
14 + <Platform>x64</Platform>
15 + </ProjectConfiguration>
16 + <ProjectConfiguration Include="Release|x64">
17 + <Configuration>Release</Configuration>
18 + <Platform>x64</Platform>
19 + </ProjectConfiguration>
20 + </ItemGroup>
21 + <PropertyGroup Label="Globals">
22 + <VCProjectVersion>16.0</VCProjectVersion>
23 + <Keyword>Win32Proj</Keyword>
24 + <ProjectGuid>{7edf70c5-dec2-417d-82e3-f354be59e3a7}</ProjectGuid>
25 + <RootNamespace>VcxprojConsoleApplication</RootNamespace>
26 + <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
27 + </PropertyGroup>
28 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30 + <ConfigurationType>Application</ConfigurationType>
31 + <UseDebugLibraries>true</UseDebugLibraries>
32 + <PlatformToolset>v142</PlatformToolset>
33 + <CharacterSet>Unicode</CharacterSet>
34 + </PropertyGroup>
35 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36 + <ConfigurationType>Application</ConfigurationType>
37 + <UseDebugLibraries>false</UseDebugLibraries>
38 + <PlatformToolset>v142</PlatformToolset>
39 + <WholeProgramOptimization>true</WholeProgramOptimization>
40 + <CharacterSet>Unicode</CharacterSet>
41 + </PropertyGroup>
42 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43 + <ConfigurationType>Application</ConfigurationType>
44 + <UseDebugLibraries>true</UseDebugLibraries>
45 + <PlatformToolset>v142</PlatformToolset>
46 + <CharacterSet>Unicode</CharacterSet>
47 + </PropertyGroup>
48 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49 + <ConfigurationType>Application</ConfigurationType>
50 + <UseDebugLibraries>false</UseDebugLibraries>
51 + <PlatformToolset>v142</PlatformToolset>
52 + <WholeProgramOptimization>true</WholeProgramOptimization>
53 + <CharacterSet>Unicode</CharacterSet>
54 + </PropertyGroup>
55 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56 + <ImportGroup Label="ExtensionSettings">
57 + </ImportGroup>
58 + <ImportGroup Label="Shared">
59 + </ImportGroup>
60 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62 + </ImportGroup>
63 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65 + </ImportGroup>
66 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68 + </ImportGroup>
69 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71 + </ImportGroup>
72 + <PropertyGroup Label="UserMacros" />
73 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74 + <LinkIncremental>true</LinkIncremental>
75 + </PropertyGroup>
76 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
77 + <LinkIncremental>false</LinkIncremental>
78 + </PropertyGroup>
79 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
80 + <LinkIncremental>true</LinkIncremental>
81 + </PropertyGroup>
82 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
83 + <LinkIncremental>false</LinkIncremental>
84 + </PropertyGroup>
85 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
86 + <ClCompile>
87 + <WarningLevel>Level3</WarningLevel>
88 + <SDLCheck>true</SDLCheck>
89 + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
90 + <ConformanceMode>true</ConformanceMode>
91 + </ClCompile>
92 + <Link>
93 + <SubSystem>Console</SubSystem>
94 + <GenerateDebugInformation>true</GenerateDebugInformation>
95 + </Link>
96 + </ItemDefinitionGroup>
97 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
98 + <ClCompile>
99 + <WarningLevel>Level3</WarningLevel>
100 + <FunctionLevelLinking>true</FunctionLevelLinking>
101 + <IntrinsicFunctions>true</IntrinsicFunctions>
102 + <SDLCheck>true</SDLCheck>
103 + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
104 + <ConformanceMode>true</ConformanceMode>
105 + </ClCompile>
106 + <Link>
107 + <SubSystem>Console</SubSystem>
108 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
109 + <OptimizeReferences>true</OptimizeReferences>
110 + <GenerateDebugInformation>true</GenerateDebugInformation>
111 + </Link>
112 + </ItemDefinitionGroup>
113 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
114 + <ClCompile>
115 + <WarningLevel>Level3</WarningLevel>
116 + <SDLCheck>true</SDLCheck>
117 + <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
118 + <ConformanceMode>true</ConformanceMode>
119 + </ClCompile>
120 + <Link>
121 + <SubSystem>Console</SubSystem>
122 + <GenerateDebugInformation>true</GenerateDebugInformation>
123 + </Link>
124 + </ItemDefinitionGroup>
125 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
126 + <ClCompile>
127 + <WarningLevel>Level3</WarningLevel>
128 + <FunctionLevelLinking>true</FunctionLevelLinking>
129 + <IntrinsicFunctions>true</IntrinsicFunctions>
130 + <SDLCheck>true</SDLCheck>
131 + <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
132 + <ConformanceMode>true</ConformanceMode>
133 + </ClCompile>
134 + <Link>
135 + <SubSystem>Console</SubSystem>
136 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
137 + <OptimizeReferences>true</OptimizeReferences>
138 + <GenerateDebugInformation>true</GenerateDebugInformation>
139 + </Link>
140 + </ItemDefinitionGroup>
141 + <ItemGroup>
142 + <ClCompile Include="VcxprojConsoleApplication.cpp" />
143 + </ItemGroup>
144 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
145 + <ImportGroup Label="ExtensionTargets">
146 + </ImportGroup>
147 +</Project>
\ No newline at end of file
src/test/wix/TestData/VcxprojConsoleApplication/VcxprojConsoleApplication.vcxproj.filters new
+22
@@ -0,0 +1,22 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <ItemGroup>
4 + <Filter Include="Source Files">
5 + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6 + <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7 + </Filter>
8 + <Filter Include="Header Files">
9 + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10 + <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
11 + </Filter>
12 + <Filter Include="Resource Files">
13 + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14 + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15 + </Filter>
16 + </ItemGroup>
17 + <ItemGroup>
18 + <ClCompile Include="VcxprojConsoleApplication.cpp">
19 + <Filter>Source Files</Filter>
20 + </ClCompile>
21 + </ItemGroup>
22 +</Project>
\ No newline at end of file
src/test/wix/TestData/VcxprojDll/VcxprojDll.vcxproj new
+174
@@ -0,0 +1,174 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <ItemGroup Label="ProjectConfigurations">
4 + <ProjectConfiguration Include="Debug|Win32">
5 + <Configuration>Debug</Configuration>
6 + <Platform>Win32</Platform>
7 + </ProjectConfiguration>
8 + <ProjectConfiguration Include="Release|Win32">
9 + <Configuration>Release</Configuration>
10 + <Platform>Win32</Platform>
11 + </ProjectConfiguration>
12 + <ProjectConfiguration Include="Debug|x64">
13 + <Configuration>Debug</Configuration>
14 + <Platform>x64</Platform>
15 + </ProjectConfiguration>
16 + <ProjectConfiguration Include="Release|x64">
17 + <Configuration>Release</Configuration>
18 + <Platform>x64</Platform>
19 + </ProjectConfiguration>
20 + </ItemGroup>
21 + <PropertyGroup Label="Globals">
22 + <VCProjectVersion>16.0</VCProjectVersion>
23 + <Keyword>Win32Proj</Keyword>
24 + <ProjectGuid>{2b70c248-1090-4d04-bda0-bf0e48716e5b}</ProjectGuid>
25 + <RootNamespace>VcxprojDll</RootNamespace>
26 + <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
27 + </PropertyGroup>
28 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30 + <ConfigurationType>DynamicLibrary</ConfigurationType>
31 + <UseDebugLibraries>true</UseDebugLibraries>
32 + <PlatformToolset>v142</PlatformToolset>
33 + <CharacterSet>Unicode</CharacterSet>
34 + </PropertyGroup>
35 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36 + <ConfigurationType>DynamicLibrary</ConfigurationType>
37 + <UseDebugLibraries>false</UseDebugLibraries>
38 + <PlatformToolset>v142</PlatformToolset>
39 + <WholeProgramOptimization>true</WholeProgramOptimization>
40 + <CharacterSet>Unicode</CharacterSet>
41 + </PropertyGroup>
42 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43 + <ConfigurationType>DynamicLibrary</ConfigurationType>
44 + <UseDebugLibraries>true</UseDebugLibraries>
45 + <PlatformToolset>v142</PlatformToolset>
46 + <CharacterSet>Unicode</CharacterSet>
47 + </PropertyGroup>
48 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49 + <ConfigurationType>DynamicLibrary</ConfigurationType>
50 + <UseDebugLibraries>false</UseDebugLibraries>
51 + <PlatformToolset>v142</PlatformToolset>
52 + <WholeProgramOptimization>true</WholeProgramOptimization>
53 + <CharacterSet>Unicode</CharacterSet>
54 + </PropertyGroup>
55 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56 + <ImportGroup Label="ExtensionSettings">
57 + </ImportGroup>
58 + <ImportGroup Label="Shared">
59 + </ImportGroup>
60 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62 + </ImportGroup>
63 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65 + </ImportGroup>
66 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68 + </ImportGroup>
69 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71 + </ImportGroup>
72 + <PropertyGroup Label="UserMacros" />
73 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74 + <LinkIncremental>true</LinkIncremental>
75 + </PropertyGroup>
76 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
77 + <LinkIncremental>false</LinkIncremental>
78 + </PropertyGroup>
79 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
80 + <LinkIncremental>true</LinkIncremental>
81 + </PropertyGroup>
82 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
83 + <LinkIncremental>false</LinkIncremental>
84 + </PropertyGroup>
85 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
86 + <ClCompile>
87 + <WarningLevel>Level3</WarningLevel>
88 + <SDLCheck>true</SDLCheck>
89 + <PreprocessorDefinitions>WIN32;_DEBUG;VCXPROJDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
90 + <ConformanceMode>true</ConformanceMode>
91 + <PrecompiledHeader>Use</PrecompiledHeader>
92 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
93 + </ClCompile>
94 + <Link>
95 + <SubSystem>Windows</SubSystem>
96 + <GenerateDebugInformation>true</GenerateDebugInformation>
97 + <EnableUAC>false</EnableUAC>
98 + </Link>
99 + </ItemDefinitionGroup>
100 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
101 + <ClCompile>
102 + <WarningLevel>Level3</WarningLevel>
103 + <FunctionLevelLinking>true</FunctionLevelLinking>
104 + <IntrinsicFunctions>true</IntrinsicFunctions>
105 + <SDLCheck>true</SDLCheck>
106 + <PreprocessorDefinitions>WIN32;NDEBUG;VCXPROJDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
107 + <ConformanceMode>true</ConformanceMode>
108 + <PrecompiledHeader>Use</PrecompiledHeader>
109 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
110 + </ClCompile>
111 + <Link>
112 + <SubSystem>Windows</SubSystem>
113 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
114 + <OptimizeReferences>true</OptimizeReferences>
115 + <GenerateDebugInformation>true</GenerateDebugInformation>
116 + <EnableUAC>false</EnableUAC>
117 + </Link>
118 + </ItemDefinitionGroup>
119 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
120 + <ClCompile>
121 + <WarningLevel>Level3</WarningLevel>
122 + <SDLCheck>true</SDLCheck>
123 + <PreprocessorDefinitions>_DEBUG;VCXPROJDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
124 + <ConformanceMode>true</ConformanceMode>
125 + <PrecompiledHeader>Use</PrecompiledHeader>
126 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
127 + </ClCompile>
128 + <Link>
129 + <SubSystem>Windows</SubSystem>
130 + <GenerateDebugInformation>true</GenerateDebugInformation>
131 + <EnableUAC>false</EnableUAC>
132 + </Link>
133 + </ItemDefinitionGroup>
134 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
135 + <ClCompile>
136 + <WarningLevel>Level3</WarningLevel>
137 + <FunctionLevelLinking>true</FunctionLevelLinking>
138 + <IntrinsicFunctions>true</IntrinsicFunctions>
139 + <SDLCheck>true</SDLCheck>
140 + <PreprocessorDefinitions>NDEBUG;VCXPROJDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
141 + <ConformanceMode>true</ConformanceMode>
142 + <PrecompiledHeader>Use</PrecompiledHeader>
143 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
144 + </ClCompile>
145 + <Link>
146 + <SubSystem>Windows</SubSystem>
147 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
148 + <OptimizeReferences>true</OptimizeReferences>
149 + <GenerateDebugInformation>true</GenerateDebugInformation>
150 + <EnableUAC>false</EnableUAC>
151 + </Link>
152 + </ItemDefinitionGroup>
153 + <ItemGroup>
154 + <ClInclude Include="framework.h" />
155 + <ClInclude Include="pch.h" />
156 + </ItemGroup>
157 + <ItemGroup>
158 + <ClCompile Include="dllmain.cpp" />
159 + <ClCompile Include="pch.cpp">
160 + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
161 + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
162 + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
163 + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
164 + </ClCompile>
165 + </ItemGroup>
166 + <ItemGroup>
167 + <ProjectReference Include="..\VcxprojStaticLib\VcxprojStaticLib.vcxproj">
168 + <Project>{c4bbeb93-e40f-4f91-9a9d-db9656db04f0}</Project>
169 + </ProjectReference>
170 + </ItemGroup>
171 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
172 + <ImportGroup Label="ExtensionTargets">
173 + </ImportGroup>
174 +</Project>
\ No newline at end of file
src/test/wix/TestData/VcxprojDll/VcxprojDll.vcxproj.filters new
+33
@@ -0,0 +1,33 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <ItemGroup>
4 + <Filter Include="Source Files">
5 + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6 + <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7 + </Filter>
8 + <Filter Include="Header Files">
9 + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10 + <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
11 + </Filter>
12 + <Filter Include="Resource Files">
13 + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14 + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15 + </Filter>
16 + </ItemGroup>
17 + <ItemGroup>
18 + <ClInclude Include="framework.h">
19 + <Filter>Header Files</Filter>
20 + </ClInclude>
21 + <ClInclude Include="pch.h">
22 + <Filter>Header Files</Filter>
23 + </ClInclude>
24 + </ItemGroup>
25 + <ItemGroup>
26 + <ClCompile Include="dllmain.cpp">
27 + <Filter>Source Files</Filter>
28 + </ClCompile>
29 + <ClCompile Include="pch.cpp">
30 + <Filter>Source Files</Filter>
31 + </ClCompile>
32 + </ItemGroup>
33 +</Project>
\ No newline at end of file
src/test/wix/TestData/VcxprojDll/dllmain.cpp new
+19
@@ -0,0 +1,19 @@
1 +// dllmain.cpp : Defines the entry point for the DLL application.
2 +#include "pch.h"
3 +
4 +BOOL APIENTRY DllMain( HMODULE hModule,
5 + DWORD ul_reason_for_call,
6 + LPVOID lpReserved
7 + )
8 +{
9 + switch (ul_reason_for_call)
10 + {
11 + case DLL_PROCESS_ATTACH:
12 + case DLL_THREAD_ATTACH:
13 + case DLL_THREAD_DETACH:
14 + case DLL_PROCESS_DETACH:
15 + break;
16 + }
17 + return TRUE;
18 +}
19 +
src/test/wix/TestData/VcxprojDll/framework.h new
+5
@@ -0,0 +1,5 @@
1 +#pragma once
2 +
3 +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
4 +// Windows Header Files
5 +#include <windows.h>
src/test/wix/TestData/VcxprojDll/pch.cpp new
+5
@@ -0,0 +1,5 @@
1 +// pch.cpp: source file corresponding to the pre-compiled header
2 +
3 +#include "pch.h"
4 +
5 +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
src/test/wix/TestData/VcxprojDll/pch.h new
+13
@@ -0,0 +1,13 @@
1 +// pch.h: This is a precompiled header file.
2 +// Files listed below are compiled only once, improving build performance for future builds.
3 +// This also affects IntelliSense performance, including code completion and many code browsing features.
4 +// However, files listed here are ALL re-compiled if any one of them is updated between builds.
5 +// Do not add files here that you will be updating frequently as this negates the performance advantage.
6 +
7 +#ifndef PCH_H
8 +#define PCH_H
9 +
10 +// add headers that you want to pre-compile here
11 +#include "framework.h"
12 +
13 +#endif //PCH_H
src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.cpp new
+10
@@ -0,0 +1,10 @@
1 +// VcxprojStaticLib.cpp : Defines the functions for the static library.
2 +//
3 +
4 +#include "pch.h"
5 +#include "framework.h"
6 +
7 +// TODO: This is an example of a library function
8 +void fnVcxprojStaticLib()
9 +{
10 +}
src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.vcxproj new
+169
@@ -0,0 +1,169 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <ItemGroup Label="ProjectConfigurations">
4 + <ProjectConfiguration Include="Debug|Win32">
5 + <Configuration>Debug</Configuration>
6 + <Platform>Win32</Platform>
7 + </ProjectConfiguration>
8 + <ProjectConfiguration Include="Release|Win32">
9 + <Configuration>Release</Configuration>
10 + <Platform>Win32</Platform>
11 + </ProjectConfiguration>
12 + <ProjectConfiguration Include="Debug|x64">
13 + <Configuration>Debug</Configuration>
14 + <Platform>x64</Platform>
15 + </ProjectConfiguration>
16 + <ProjectConfiguration Include="Release|x64">
17 + <Configuration>Release</Configuration>
18 + <Platform>x64</Platform>
19 + </ProjectConfiguration>
20 + </ItemGroup>
21 + <PropertyGroup Label="Globals">
22 + <VCProjectVersion>16.0</VCProjectVersion>
23 + <Keyword>Win32Proj</Keyword>
24 + <ProjectGuid>{c4bbeb93-e40f-4f91-9a9d-db9656db04f0}</ProjectGuid>
25 + <RootNamespace>VcxprojStaticLib</RootNamespace>
26 + <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
27 + </PropertyGroup>
28 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30 + <ConfigurationType>StaticLibrary</ConfigurationType>
31 + <UseDebugLibraries>true</UseDebugLibraries>
32 + <PlatformToolset>v142</PlatformToolset>
33 + <CharacterSet>Unicode</CharacterSet>
34 + </PropertyGroup>
35 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36 + <ConfigurationType>StaticLibrary</ConfigurationType>
37 + <UseDebugLibraries>false</UseDebugLibraries>
38 + <PlatformToolset>v142</PlatformToolset>
39 + <WholeProgramOptimization>true</WholeProgramOptimization>
40 + <CharacterSet>Unicode</CharacterSet>
41 + </PropertyGroup>
42 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43 + <ConfigurationType>StaticLibrary</ConfigurationType>
44 + <UseDebugLibraries>true</UseDebugLibraries>
45 + <PlatformToolset>v142</PlatformToolset>
46 + <CharacterSet>Unicode</CharacterSet>
47 + </PropertyGroup>
48 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49 + <ConfigurationType>StaticLibrary</ConfigurationType>
50 + <UseDebugLibraries>false</UseDebugLibraries>
51 + <PlatformToolset>v142</PlatformToolset>
52 + <WholeProgramOptimization>true</WholeProgramOptimization>
53 + <CharacterSet>Unicode</CharacterSet>
54 + </PropertyGroup>
55 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56 + <ImportGroup Label="ExtensionSettings">
57 + </ImportGroup>
58 + <ImportGroup Label="Shared">
59 + </ImportGroup>
60 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62 + </ImportGroup>
63 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65 + </ImportGroup>
66 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68 + </ImportGroup>
69 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71 + </ImportGroup>
72 + <PropertyGroup Label="UserMacros" />
73 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74 + <LinkIncremental>true</LinkIncremental>
75 + </PropertyGroup>
76 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
77 + <LinkIncremental>false</LinkIncremental>
78 + </PropertyGroup>
79 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
80 + <LinkIncremental>true</LinkIncremental>
81 + </PropertyGroup>
82 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
83 + <LinkIncremental>false</LinkIncremental>
84 + </PropertyGroup>
85 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
86 + <ClCompile>
87 + <WarningLevel>Level3</WarningLevel>
88 + <SDLCheck>true</SDLCheck>
89 + <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
90 + <ConformanceMode>true</ConformanceMode>
91 + <PrecompiledHeader>Use</PrecompiledHeader>
92 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
93 + </ClCompile>
94 + <Link>
95 + <SubSystem>
96 + </SubSystem>
97 + <GenerateDebugInformation>true</GenerateDebugInformation>
98 + </Link>
99 + </ItemDefinitionGroup>
100 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
101 + <ClCompile>
102 + <WarningLevel>Level3</WarningLevel>
103 + <FunctionLevelLinking>true</FunctionLevelLinking>
104 + <IntrinsicFunctions>true</IntrinsicFunctions>
105 + <SDLCheck>true</SDLCheck>
106 + <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
107 + <ConformanceMode>true</ConformanceMode>
108 + <PrecompiledHeader>Use</PrecompiledHeader>
109 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
110 + </ClCompile>
111 + <Link>
112 + <SubSystem>
113 + </SubSystem>
114 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
115 + <OptimizeReferences>true</OptimizeReferences>
116 + <GenerateDebugInformation>true</GenerateDebugInformation>
117 + </Link>
118 + </ItemDefinitionGroup>
119 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
120 + <ClCompile>
121 + <WarningLevel>Level3</WarningLevel>
122 + <SDLCheck>true</SDLCheck>
123 + <PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
124 + <ConformanceMode>true</ConformanceMode>
125 + <PrecompiledHeader>Use</PrecompiledHeader>
126 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
127 + </ClCompile>
128 + <Link>
129 + <SubSystem>
130 + </SubSystem>
131 + <GenerateDebugInformation>true</GenerateDebugInformation>
132 + </Link>
133 + </ItemDefinitionGroup>
134 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
135 + <ClCompile>
136 + <WarningLevel>Level3</WarningLevel>
137 + <FunctionLevelLinking>true</FunctionLevelLinking>
138 + <IntrinsicFunctions>true</IntrinsicFunctions>
139 + <SDLCheck>true</SDLCheck>
140 + <PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
141 + <ConformanceMode>true</ConformanceMode>
142 + <PrecompiledHeader>Use</PrecompiledHeader>
143 + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
144 + </ClCompile>
145 + <Link>
146 + <SubSystem>
147 + </SubSystem>
148 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
149 + <OptimizeReferences>true</OptimizeReferences>
150 + <GenerateDebugInformation>true</GenerateDebugInformation>
151 + </Link>
152 + </ItemDefinitionGroup>
153 + <ItemGroup>
154 + <ClInclude Include="framework.h" />
155 + <ClInclude Include="pch.h" />
156 + </ItemGroup>
157 + <ItemGroup>
158 + <ClCompile Include="pch.cpp">
159 + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
160 + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
161 + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
162 + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
163 + </ClCompile>
164 + <ClCompile Include="VcxprojStaticLib.cpp" />
165 + </ItemGroup>
166 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
167 + <ImportGroup Label="ExtensionTargets">
168 + </ImportGroup>
169 +</Project>
\ No newline at end of file
src/test/wix/TestData/VcxprojStaticLib/VcxprojStaticLib.vcxproj.filters new
+33
@@ -0,0 +1,33 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <ItemGroup>
4 + <Filter Include="Source Files">
5 + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6 + <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7 + </Filter>
8 + <Filter Include="Header Files">
9 + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10 + <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
11 + </Filter>
12 + <Filter Include="Resource Files">
13 + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14 + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15 + </Filter>
16 + </ItemGroup>
17 + <ItemGroup>
18 + <ClInclude Include="framework.h">
19 + <Filter>Header Files</Filter>
20 + </ClInclude>
21 + <ClInclude Include="pch.h">
22 + <Filter>Header Files</Filter>
23 + </ClInclude>
24 + </ItemGroup>
25 + <ItemGroup>
26 + <ClCompile Include="VcxprojStaticLib.cpp">
27 + <Filter>Source Files</Filter>
28 + </ClCompile>
29 + <ClCompile Include="pch.cpp">
30 + <Filter>Source Files</Filter>
31 + </ClCompile>
32 + </ItemGroup>
33 +</Project>
\ No newline at end of file
src/test/wix/TestData/VcxprojStaticLib/framework.h new
+3
@@ -0,0 +1,3 @@
1 +#pragma once
2 +
3 +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
src/test/wix/TestData/VcxprojStaticLib/pch.cpp new
+5
@@ -0,0 +1,5 @@
1 +// pch.cpp: source file corresponding to the pre-compiled header
2 +
3 +#include "pch.h"
4 +
5 +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
src/test/wix/TestData/VcxprojStaticLib/pch.h new
+13
@@ -0,0 +1,13 @@
1 +// pch.h: This is a precompiled header file.
2 +// Files listed below are compiled only once, improving build performance for future builds.
3 +// This also affects IntelliSense performance, including code completion and many code browsing features.
4 +// However, files listed here are ALL re-compiled if any one of them is updated between builds.
5 +// Do not add files here that you will be updating frequently as this negates the performance advantage.
6 +
7 +#ifndef PCH_H
8 +#define PCH_H
9 +
10 +// add headers that you want to pre-compile here
11 +#include "framework.h"
12 +
13 +#endif //PCH_H
src/test/wix/TestData/VcxprojWindowsApp/Resource.h new
+30
@@ -0,0 +1,30 @@
1 +//{{NO_DEPENDENCIES}}
2 +// Microsoft Visual C++ generated include file.
3 +// Used by VcxprojWindowsApp.rc
4 +
5 +#define IDS_APP_TITLE 103
6 +
7 +#define IDR_MAINFRAME 128
8 +#define IDD_VCXPROJWINDOWSAPP_DIALOG 102
9 +#define IDD_ABOUTBOX 103
10 +#define IDM_ABOUT 104
11 +#define IDM_EXIT 105
12 +#define IDI_VCXPROJWINDOWSAPP 107
13 +#define IDI_SMALL 108
14 +#define IDC_VCXPROJWINDOWSAPP 109
15 +#define IDC_MYICON 2
16 +#ifndef IDC_STATIC
17 +#define IDC_STATIC -1
18 +#endif
19 +// Next default values for new objects
20 +//
21 +#ifdef APSTUDIO_INVOKED
22 +#ifndef APSTUDIO_READONLY_SYMBOLS
23 +
24 +#define _APS_NO_MFC 130
25 +#define _APS_NEXT_RESOURCE_VALUE 129
26 +#define _APS_NEXT_COMMAND_VALUE 32771
27 +#define _APS_NEXT_CONTROL_VALUE 1000
28 +#define _APS_NEXT_SYMED_VALUE 110
29 +#endif
30 +#endif
src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.cpp new
+180
@@ -0,0 +1,180 @@
1 +// VcxprojWindowsApp.cpp : Defines the entry point for the application.
2 +//
3 +
4 +#include "framework.h"
5 +#include "VcxprojWindowsApp.h"
6 +
7 +#define MAX_LOADSTRING 100
8 +
9 +// Global Variables:
10 +HINSTANCE hInst; // current instance
11 +WCHAR szTitle[MAX_LOADSTRING]; // The title bar text
12 +WCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
13 +
14 +// Forward declarations of functions included in this code module:
15 +ATOM MyRegisterClass(HINSTANCE hInstance);
16 +BOOL InitInstance(HINSTANCE, int);
17 +LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
18 +INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
19 +
20 +int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
21 + _In_opt_ HINSTANCE hPrevInstance,
22 + _In_ LPWSTR lpCmdLine,
23 + _In_ int nCmdShow)
24 +{
25 + UNREFERENCED_PARAMETER(hPrevInstance);
26 + UNREFERENCED_PARAMETER(lpCmdLine);
27 +
28 + // TODO: Place code here.
29 +
30 + // Initialize global strings
31 + LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
32 + LoadStringW(hInstance, IDC_VCXPROJWINDOWSAPP, szWindowClass, MAX_LOADSTRING);
33 + MyRegisterClass(hInstance);
34 +
35 + // Perform application initialization:
36 + if (!InitInstance (hInstance, nCmdShow))
37 + {
38 + return FALSE;
39 + }
40 +
41 + HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_VCXPROJWINDOWSAPP));
42 +
43 + MSG msg;
44 +
45 + // Main message loop:
46 + while (GetMessage(&msg, nullptr, 0, 0))
47 + {
48 + if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
49 + {
50 + TranslateMessage(&msg);
51 + DispatchMessage(&msg);
52 + }
53 + }
54 +
55 + return (int) msg.wParam;
56 +}
57 +
58 +
59 +
60 +//
61 +// FUNCTION: MyRegisterClass()
62 +//
63 +// PURPOSE: Registers the window class.
64 +//
65 +ATOM MyRegisterClass(HINSTANCE hInstance)
66 +{
67 + WNDCLASSEXW wcex;
68 +
69 + wcex.cbSize = sizeof(WNDCLASSEX);
70 +
71 + wcex.style = CS_HREDRAW | CS_VREDRAW;
72 + wcex.lpfnWndProc = WndProc;
73 + wcex.cbClsExtra = 0;
74 + wcex.cbWndExtra = 0;
75 + wcex.hInstance = hInstance;
76 + wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_VCXPROJWINDOWSAPP));
77 + wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
78 + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
79 + wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_VCXPROJWINDOWSAPP);
80 + wcex.lpszClassName = szWindowClass;
81 + wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
82 +
83 + return RegisterClassExW(&wcex);
84 +}
85 +
86 +//
87 +// FUNCTION: InitInstance(HINSTANCE, int)
88 +//
89 +// PURPOSE: Saves instance handle and creates main window
90 +//
91 +// COMMENTS:
92 +//
93 +// In this function, we save the instance handle in a global variable and
94 +// create and display the main program window.
95 +//
96 +BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
97 +{
98 + hInst = hInstance; // Store instance handle in our global variable
99 +
100 + HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
101 + CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
102 +
103 + if (!hWnd)
104 + {
105 + return FALSE;
106 + }
107 +
108 + ShowWindow(hWnd, nCmdShow);
109 + UpdateWindow(hWnd);
110 +
111 + return TRUE;
112 +}
113 +
114 +//
115 +// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
116 +//
117 +// PURPOSE: Processes messages for the main window.
118 +//
119 +// WM_COMMAND - process the application menu
120 +// WM_PAINT - Paint the main window
121 +// WM_DESTROY - post a quit message and return
122 +//
123 +//
124 +LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
125 +{
126 + switch (message)
127 + {
128 + case WM_COMMAND:
129 + {
130 + int wmId = LOWORD(wParam);
131 + // Parse the menu selections:
132 + switch (wmId)
133 + {
134 + case IDM_ABOUT:
135 + DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
136 + break;
137 + case IDM_EXIT:
138 + DestroyWindow(hWnd);
139 + break;
140 + default:
141 + return DefWindowProc(hWnd, message, wParam, lParam);
142 + }
143 + }
144 + break;
145 + case WM_PAINT:
146 + {
147 + PAINTSTRUCT ps;
148 + HDC hdc = BeginPaint(hWnd, &ps);
149 + // TODO: Add any drawing code that uses hdc here...
150 + EndPaint(hWnd, &ps);
151 + }
152 + break;
153 + case WM_DESTROY:
154 + PostQuitMessage(0);
155 + break;
156 + default:
157 + return DefWindowProc(hWnd, message, wParam, lParam);
158 + }
159 + return 0;
160 +}
161 +
162 +// Message handler for about box.
163 +INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
164 +{
165 + UNREFERENCED_PARAMETER(lParam);
166 + switch (message)
167 + {
168 + case WM_INITDIALOG:
169 + return (INT_PTR)TRUE;
170 +
171 + case WM_COMMAND:
172 + if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
173 + {
174 + EndDialog(hDlg, LOWORD(wParam));
175 + return (INT_PTR)TRUE;
176 + }
177 + break;
178 + }
179 + return (INT_PTR)FALSE;
180 +}
src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.h new
+3
@@ -0,0 +1,3 @@
1 +#pragma once
2 +
3 +#include "resource.h"
src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.ico
Binary files /dev/null and b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.ico differ
src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.rc
Binary files /dev/null and b/src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.rc differ
src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.vcxproj new
+160
@@ -0,0 +1,160 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <ItemGroup Label="ProjectConfigurations">
4 + <ProjectConfiguration Include="Debug|Win32">
5 + <Configuration>Debug</Configuration>
6 + <Platform>Win32</Platform>
7 + </ProjectConfiguration>
8 + <ProjectConfiguration Include="Release|Win32">
9 + <Configuration>Release</Configuration>
10 + <Platform>Win32</Platform>
11 + </ProjectConfiguration>
12 + <ProjectConfiguration Include="Debug|x64">
13 + <Configuration>Debug</Configuration>
14 + <Platform>x64</Platform>
15 + </ProjectConfiguration>
16 + <ProjectConfiguration Include="Release|x64">
17 + <Configuration>Release</Configuration>
18 + <Platform>x64</Platform>
19 + </ProjectConfiguration>
20 + </ItemGroup>
21 + <PropertyGroup Label="Globals">
22 + <VCProjectVersion>16.0</VCProjectVersion>
23 + <Keyword>Win32Proj</Keyword>
24 + <ProjectGuid>{8f2a12cd-6d3b-4648-81a9-2a852a63ea90}</ProjectGuid>
25 + <RootNamespace>VcxprojWindowsApp</RootNamespace>
26 + <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
27 + </PropertyGroup>
28 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
29 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
30 + <ConfigurationType>Application</ConfigurationType>
31 + <UseDebugLibraries>true</UseDebugLibraries>
32 + <PlatformToolset>v142</PlatformToolset>
33 + <CharacterSet>Unicode</CharacterSet>
34 + </PropertyGroup>
35 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
36 + <ConfigurationType>Application</ConfigurationType>
37 + <UseDebugLibraries>false</UseDebugLibraries>
38 + <PlatformToolset>v142</PlatformToolset>
39 + <WholeProgramOptimization>true</WholeProgramOptimization>
40 + <CharacterSet>Unicode</CharacterSet>
41 + </PropertyGroup>
42 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
43 + <ConfigurationType>Application</ConfigurationType>
44 + <UseDebugLibraries>true</UseDebugLibraries>
45 + <PlatformToolset>v142</PlatformToolset>
46 + <CharacterSet>Unicode</CharacterSet>
47 + </PropertyGroup>
48 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
49 + <ConfigurationType>Application</ConfigurationType>
50 + <UseDebugLibraries>false</UseDebugLibraries>
51 + <PlatformToolset>v142</PlatformToolset>
52 + <WholeProgramOptimization>true</WholeProgramOptimization>
53 + <CharacterSet>Unicode</CharacterSet>
54 + </PropertyGroup>
55 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
56 + <ImportGroup Label="ExtensionSettings">
57 + </ImportGroup>
58 + <ImportGroup Label="Shared">
59 + </ImportGroup>
60 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
61 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
62 + </ImportGroup>
63 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
64 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
65 + </ImportGroup>
66 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
67 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
68 + </ImportGroup>
69 + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
70 + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
71 + </ImportGroup>
72 + <PropertyGroup Label="UserMacros" />
73 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
74 + <LinkIncremental>true</LinkIncremental>
75 + </PropertyGroup>
76 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
77 + <LinkIncremental>false</LinkIncremental>
78 + </PropertyGroup>
79 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
80 + <LinkIncremental>true</LinkIncremental>
81 + </PropertyGroup>
82 + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
83 + <LinkIncremental>false</LinkIncremental>
84 + </PropertyGroup>
85 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
86 + <ClCompile>
87 + <WarningLevel>Level3</WarningLevel>
88 + <SDLCheck>true</SDLCheck>
89 + <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
90 + <ConformanceMode>true</ConformanceMode>
91 + </ClCompile>
92 + <Link>
93 + <SubSystem>Windows</SubSystem>
94 + <GenerateDebugInformation>true</GenerateDebugInformation>
95 + </Link>
96 + </ItemDefinitionGroup>
97 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
98 + <ClCompile>
99 + <WarningLevel>Level3</WarningLevel>
100 + <FunctionLevelLinking>true</FunctionLevelLinking>
101 + <IntrinsicFunctions>true</IntrinsicFunctions>
102 + <SDLCheck>true</SDLCheck>
103 + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
104 + <ConformanceMode>true</ConformanceMode>
105 + </ClCompile>
106 + <Link>
107 + <SubSystem>Windows</SubSystem>
108 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
109 + <OptimizeReferences>true</OptimizeReferences>
110 + <GenerateDebugInformation>true</GenerateDebugInformation>
111 + </Link>
112 + </ItemDefinitionGroup>
113 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
114 + <ClCompile>
115 + <WarningLevel>Level3</WarningLevel>
116 + <SDLCheck>true</SDLCheck>
117 + <PreprocessorDefinitions>_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
118 + <ConformanceMode>true</ConformanceMode>
119 + </ClCompile>
120 + <Link>
121 + <SubSystem>Windows</SubSystem>
122 + <GenerateDebugInformation>true</GenerateDebugInformation>
123 + </Link>
124 + </ItemDefinitionGroup>
125 + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
126 + <ClCompile>
127 + <WarningLevel>Level3</WarningLevel>
128 + <FunctionLevelLinking>true</FunctionLevelLinking>
129 + <IntrinsicFunctions>true</IntrinsicFunctions>
130 + <SDLCheck>true</SDLCheck>
131 + <PreprocessorDefinitions>NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
132 + <ConformanceMode>true</ConformanceMode>
133 + </ClCompile>
134 + <Link>
135 + <SubSystem>Windows</SubSystem>
136 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
137 + <OptimizeReferences>true</OptimizeReferences>
138 + <GenerateDebugInformation>true</GenerateDebugInformation>
139 + </Link>
140 + </ItemDefinitionGroup>
141 + <ItemGroup>
142 + <ClInclude Include="framework.h" />
143 + <ClInclude Include="Resource.h" />
144 + <ClInclude Include="targetver.h" />
145 + <ClInclude Include="VcxprojWindowsApp.h" />
146 + </ItemGroup>
147 + <ItemGroup>
148 + <ClCompile Include="VcxprojWindowsApp.cpp" />
149 + </ItemGroup>
150 + <ItemGroup>
151 + <ResourceCompile Include="VcxprojWindowsApp.rc" />
152 + </ItemGroup>
153 + <ItemGroup>
154 + <Image Include="small.ico" />
155 + <Image Include="VcxprojWindowsApp.ico" />
156 + </ItemGroup>
157 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
158 + <ImportGroup Label="ExtensionTargets">
159 + </ImportGroup>
160 +</Project>
\ No newline at end of file
src/test/wix/TestData/VcxprojWindowsApp/VcxprojWindowsApp.vcxproj.filters new
+49
@@ -0,0 +1,49 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 + <ItemGroup>
4 + <Filter Include="Source Files">
5 + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
6 + <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
7 + </Filter>
8 + <Filter Include="Header Files">
9 + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
10 + <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
11 + </Filter>
12 + <Filter Include="Resource Files">
13 + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
14 + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
15 + </Filter>
16 + </ItemGroup>
17 + <ItemGroup>
18 + <ClInclude Include="framework.h">
19 + <Filter>Header Files</Filter>
20 + </ClInclude>
21 + <ClInclude Include="targetver.h">
22 + <Filter>Header Files</Filter>
23 + </ClInclude>
24 + <ClInclude Include="Resource.h">
25 + <Filter>Header Files</Filter>
26 + </ClInclude>
27 + <ClInclude Include="VcxprojWindowsApp.h">
28 + <Filter>Header Files</Filter>
29 + </ClInclude>
30 + </ItemGroup>
31 + <ItemGroup>
32 + <ClCompile Include="VcxprojWindowsApp.cpp">
33 + <Filter>Source Files</Filter>
34 + </ClCompile>
35 + </ItemGroup>
36 + <ItemGroup>
37 + <ResourceCompile Include="VcxprojWindowsApp.rc">
38 + <Filter>Resource Files</Filter>
39 + </ResourceCompile>
40 + </ItemGroup>
41 + <ItemGroup>
42 + <Image Include="small.ico">
43 + <Filter>Resource Files</Filter>
44 + </Image>
45 + <Image Include="VcxprojWindowsApp.ico">
46 + <Filter>Resource Files</Filter>
47 + </Image>
48 + </ItemGroup>
49 +</Project>
\ No newline at end of file
src/test/wix/TestData/VcxprojWindowsApp/framework.h new
+15
@@ -0,0 +1,15 @@
1 +// header.h : include file for standard system include files,
2 +// or project specific include files
3 +//
4 +
5 +#pragma once
6 +
7 +#include "targetver.h"
8 +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
9 +// Windows Header Files
10 +#include <windows.h>
11 +// C RunTime Header Files
12 +#include <stdlib.h>
13 +#include <malloc.h>
14 +#include <memory.h>
15 +#include <tchar.h>
src/test/wix/TestData/VcxprojWindowsApp/small.ico
Binary files /dev/null and b/src/test/wix/TestData/VcxprojWindowsApp/small.ico differ
src/test/wix/TestData/VcxprojWindowsApp/targetver.h new
+6
@@ -0,0 +1,6 @@
1 +#pragma once
2 +
3 +// // Including SDKDDKVer.h defines the highest available Windows platform.
4 +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
5 +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
6 +#include <SDKDDKVer.h>
src/test/wix/TestData/WixprojLibraryVcxprojDll/Library.wxs new
+11
@@ -0,0 +1,11 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 + <Fragment>
3 + <ComponentGroup Id='VcxprojDllComponentGroup' Directory='ApplicationFolder'>
4 + <Component>
5 + <File Source='VcxprojDll.dll' />
6 + </Component>
7 + </ComponentGroup>
8 +
9 + <UIRef Id="WixUI_Minimal" />
10 + </Fragment>
11 +</Wix>
src/test/wix/TestData/WixprojLibraryVcxprojDll/WixprojLibraryVcxprojDll.wixproj new
+11
@@ -0,0 +1,11 @@
1 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2 +<Project Sdk='WixToolset.Sdk'>
3 + <PropertyGroup>
4 + <OutputType>Library</OutputType>
5 + <BindFiles>true</BindFiles>
6 + </PropertyGroup>
7 +
8 + <ItemGroup>
9 + <ProjectReference Include="..\VcxprojDll\VcxprojDll.vcxproj" />
10 + </ItemGroup>
11 +</Project>
src/test/wix/TestData/WixprojLibraryVcxprojDll/go.cmd new
+27
@@ -0,0 +1,27 @@
1 +@setlocal
2 +cls
3 +cd %~dp0
4 +rd /s/q obj bin
5 +
6 +pushd D:\src\wix4\src\wix\WixToolset.Sdk
7 +msbuild
8 +popd
9 +
10 +pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojStaticLib
11 +rd /s/q Debug x64
12 +popd
13 +
14 +pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojDll
15 +rd /s/q Debug
16 +popd
17 +
18 +pushd D:\src\wix4\src\test\wix\TestProjects\CsprojClassLibraryNetCore
19 +rd /s/q obj bin
20 +popd
21 +
22 +pushd D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore
23 +rd /s/q obj bin
24 +popd
25 +
26 +msbuild -Restore -bl
27 +@endlocal
src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/Module.wxs new
+8
@@ -0,0 +1,8 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 + <Module Id='CsprojWindowsFormsNetFxModule' Guid='00000001-0000-0000-0000-000000000000' Language='0' Version='0.0.1'>
3 +
4 + <Component Guid='00000001-0000-0000-0000-000000000000' Directory='TARGETDIR'>
5 + <File Source='CsprojWindowsFormsNetFx.exe' />
6 + </Component>
7 + </Module>
8 +</Wix>
src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/WixprojModuleCsprojWinFormsNetFx.wixproj new
+19
@@ -0,0 +1,19 @@
1 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2 + <Project Sdk='WixToolset.Sdk'>
3 +<!--<Project>
4 + <Import Sdk="WixToolset.Sdk" Project='D:\src\wix4\build\wix\Debug\netcoreapp3.1\Sdk\Sdk.props' />-->
5 + <PropertyGroup>
6 + <OutputType>Module</OutputType>
7 + </PropertyGroup>
8 +
9 + <!--<PropertyGroup>
10 + <WixBinDir>D:\src\wix4\build\wix\Debug\publish\WixToolset.Sdk\tools\net461\x86\</WixBinDir>
11 + <WixBinDir64>D:\src\wix4\build\wix\Debug\publish\WixToolset.Sdk\tools\net461\x64\</WixBinDir64>
12 + </PropertyGroup>-->
13 +
14 + <ItemGroup>
15 + <ProjectReference Include="..\CsprojWindowsFormsNetFx\CsprojWindowsFormsNetFx.csproj" />
16 + </ItemGroup>
17 +
18 + <!--<Import Sdk="WixToolset.Sdk" Project='D:\src\wix4\build\wix\Debug\netcoreapp3.1\Sdk\Sdk.targets' />-->
19 +</Project>
src/test/wix/TestData/WixprojModuleCsprojWinFormsNetFx/go.cmd new
+36
@@ -0,0 +1,36 @@
1 +@setlocal
2 +cls
3 +cd %~dp0
4 +rd /s/q obj bin
5 +
6 +pushd D:\src\wix4\src\wix\WixToolset.Sdk
7 +msbuild
8 +popd
9 +
10 +pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojStaticLib
11 +rd /s/q Debug x64
12 +popd
13 +
14 +pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojDll
15 +rd /s/q Debug
16 +popd
17 +
18 +pushd D:\src\wix4\src\test\wix\TestProjects\CsprojClassLibraryNetCore
19 +rd /s/q obj bin
20 +popd
21 +
22 +pushd D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore
23 +rd /s/q obj bin
24 +popd
25 +
26 +pushd D:\src\wix4\src\test\wix\TestProjects\WixprojLibraryVcxprojDll
27 +rd /s/q obj bin
28 +popd
29 +
30 +pushd D:\src\wix4\src\test\wix\TestProjects\WixprojPackageVcxprojWindowsApp
31 +rd /s/q obj bin
32 +popd
33 +
34 +rem msbuild.exe -Restore -bl -t:Rebuild
35 +msbuild.exe -Restore -bl
36 +@endlocal
src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/Package.wxs new
+18
@@ -0,0 +1,18 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 + <Package Name='~WebApp' Manufacturer='WiX Toolset' Version='0.0.1' UpgradeCode='00000000-0000-0000-0000-000000000000'>
3 +
4 + <StandardDirectory Id='ProgramFiles6432Folder'>
5 + <Directory Id='ApplicationFolder' Name='~Web App'>
6 + </Directory>
7 + </StandardDirectory>
8 +
9 + <Feature Id='Main' Title='WebApp'>
10 + <Component Directory='ApplicationFolder'>
11 + <File Source='CsprojWebApplicationNetCore.exe' />
12 + <File Source='web.config' />
13 + </Component>
14 + </Feature>
15 +
16 + <UIRef Id="WixUI_Minimal" />
17 + </Package>
18 +</Wix>
src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/WixprojPackageCsprojWebApplicationNetCore.wixproj new
+18
@@ -0,0 +1,18 @@
1 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2 +<Project Sdk='WixToolset.Sdk'>
3 +<!-- <Project> -->
4 + <!-- <Import Sdk="WixToolset.Sdk" Project='D:\src\wix4\build\wix\Debug\netcoreapp3.1\Sdk\Sdk.props' /> -->
5 +
6 + <PropertyGroup>
7 + <!-- <WixBinDir>D:\src\wix4\build\wix\Debug\net472\</WixBinDir> -->
8 + <!-- <WixBinDir64>D:\src\wix4\build\wix\Debug\publish\WixToolset.Sdk\tools\net472\x64\</WixBinDir64> -->
9 + </PropertyGroup>
10 +
11 + <ItemGroup>
12 + <!-- SkipPublish="true" BindPath="$(MSBuildProjectDirectory)\does\not\exist" BindName="Xxx" Publish="true" -->
13 + <ProjectReference Include="..\CsprojWebApplicationNetCore\CsprojWebApplicationNetCore.csproj" Publish="true" />
14 + <PackageReference Include="WixToolset.UI.wixext" Version="4.0.0-preview.0" />
15 + </ItemGroup>
16 +
17 + <!-- <Import Sdk="WixToolset.Sdk" Project='D:\src\wix4\build\wix\Debug\netcoreapp3.1\Sdk\Sdk.targets' /> -->
18 +</Project>
src/test/wix/TestData/WixprojPackageCsprojWebApplicationNetCore/go.cmd new
+23
@@ -0,0 +1,23 @@
1 +@setlocal
2 +cls
3 +cd %~dp0
4 +rd /s/q obj bin
5 +
6 +pushd ..\CsprojWebApplicationNetCore
7 +rd /s/q obj bin
8 +popd
9 +
10 +pushd D:\src\wix4\src\wix\WixToolset.BuildTasks
11 +msbuild
12 +popd
13 +
14 +pushd D:\src\wix4\src\wix\WixToolset.Sdk
15 +msbuild -t:Publish -p:PublishDir=D:\src\wix4\build\wix\Debug\publish\WixToolset.Sdk\
16 +msbuild -t:Pack
17 +
18 +copy D:\src\wix4\build\artifacts\WixToolset.Sdk.*.nupkg D:\NugetLocal
19 +rd /s/q C:\Users\Rob\.nuget\packages\wixtoolset.sdk
20 +popd
21 +
22 +msbuild.exe -Restore -bl
23 +@endlocal
src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.en-us.wxl new
+11
@@ -0,0 +1,11 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +
3 +<!--
4 +This file contains the declaration of all the localizable strings.
5 +-->
6 +<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US">
7 +
8 + <String Id="PackageName">WixprojPackageVcxprojWindowsApp</String>
9 + <String Id="FeatureTitle">The First Feature in my Product</String>
10 +
11 +</WixLocalization>
src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.ja-jp.wxl new
+11
@@ -0,0 +1,11 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +
3 +<!--
4 +This file contains the declaration of all the localizable strings.
5 +-->
6 +<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="ja-JP">
7 +
8 + <String Id="PackageName">WixprojPackageVcxprojWindowsApp, eh?</String>
9 + <String Id="FeatureTitle">The First Feature in my Prooooduct, eh?</String>
10 +
11 +</WixLocalization>
src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/Package.wxs new
+22
@@ -0,0 +1,22 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 + <Package Name='!(loc.PackageName)' Manufacturer='WiX Toolset' Version='0.0.1' UpgradeCode='00000000-0000-0000-0000-000000000000'>
3 +
4 + <StandardDirectory Id='ProgramFiles6432Folder'>
5 + <Directory Id='ApplicationFolder' Name='Test App'>
6 + <Merge Id='WinFormsModule' Language='0' SourceFile='WixprojModuleCsprojWinFormsNetFx.msm' />
7 + </Directory>
8 + </StandardDirectory>
9 +
10 + <Feature Id='Main' Title='!(loc.FeatureTitle)'>
11 + <Component Directory='ApplicationFolder'>
12 + <File Id='VcxprojWindowsApp' Source='VcxprojWindowsApp.exe' />
13 + </Component>
14 +
15 + <ComponentGroupRef Id='VcxprojDllComponentGroup' />
16 +
17 + <MergeRef Id='WinFormsModule' />
18 + </Feature>
19 +
20 + <UIRef Id="WixUI_Minimal" />
21 + </Package>
22 +</Wix>
src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/WixprojPackageVcxprojWindowsApp.wixproj new
+11
@@ -0,0 +1,11 @@
1 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2 +
3 +<Project Sdk='WixToolset.Sdk'>
4 + <ItemGroup>
5 + <ProjectReference Include="..\VcxprojWindowsApp\VcxprojWindowsApp.vcxproj" />
6 + <ProjectReference Include="..\WixprojLibraryVcxprojDll\WixprojLibraryVcxprojDll.wixproj" />
7 + <ProjectReference Include="..\WixprojModuleCsprojWinFormsNetFx\WixprojModuleCsprojWinFormsNetFx.wixproj" />
8 +
9 + <PackageReference Include="WixToolset.UI.wixext" Version="4.0.0-preview.0" />
10 + </ItemGroup>
11 +</Project>
src/test/wix/TestData/WixprojPackageVcxprojWindowsApp/go.cmd new
+44
@@ -0,0 +1,44 @@
1 +@setlocal
2 +cls
3 +cd %~dp0
4 +rd /s/q obj bin
5 +
6 +pushd D:\src\wix4\src\wix\WixToolset.Sdk
7 +msbuild
8 +rem msbuild -t:Publish -p:PublishDir=D:\src\wix4\build\wix\Debug\publish\WixToolset.Sdk\
9 +rem msbuild -t:Pack
10 +rem copy D:\src\wix4\build\artifacts\WixToolset.Sdk.*.nupkg D:\NugetLocal
11 +rd /s/q C:\Users\Rob\.nuget\packages\wixtoolset.sdk
12 +popd
13 +
14 +pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojStaticLib
15 +rd /s/q Debug x64
16 +popd
17 +
18 +pushd D:\src\wix4\src\test\wix\TestProjects\VcxprojDll
19 +rd /s/q Debug
20 +popd
21 +
22 +pushd D:\src\wix4\src\test\wix\TestProjects\CsprojClassLibraryNetCore
23 +rd /s/q obj bin
24 +popd
25 +
26 +pushd D:\src\wix4\src\test\wix\TestProjects\CsprojConsoleNetCore
27 +rd /s/q obj bin
28 +popd
29 +
30 +pushd D:\src\wix4\src\test\wix\TestProjects\WixprojLibraryVcxprojDll
31 +rd /s/q obj bin
32 +popd
33 +
34 +pushd D:\src\wix4\src\test\wix\TestProjects\WixprojModuleCsprojWinFormsNetFx
35 +rd /s/q obj bin
36 +popd
37 +
38 +pushd D:\src\wix4\src\test\wix\TestProjects\WixprojPackageVcxprojWindowsApp
39 +rd /s/q obj bin
40 +popd
41 +
42 +rem msbuild.exe -Restore -bl -t:Rebuild
43 +msbuild.exe -Restore -bl
44 +@endlocal
src/test/wix/TestData/WixprojPackageVcxprojWindowsAppMultiArch/Package.wxs new
+23
@@ -0,0 +1,23 @@
1 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2 + <Package Name='WixprojPackageVcxprojWindowsApp' Manufacturer='WiX Toolset' Version='0.0.1' UpgradeCode='00000000-0000-0000-0000-000000000000'>
3 +
4 + <StandardDirectory Id='ProgramFilesFolder'>
5 + <Directory Id='Application32Folder' Name='Test App (32-bit)' />
6 + </StandardDirectory>
7 +
8 + <StandardDirectory Id='ProgramFiles64Folder'>
9 + <Directory Id='Application64Folder' Name='Test App (64-bit)' />
10 + </StandardDirectory>
11 +
12 + <Feature Id='Main'>
13 + <Component Directory='Application32Folder'>
14 + <File Source='..\VcxprojWindowsApp\Debug\VcxprojWindowsApp.exe' />
15 + </Component>
16 + <Component Directory='Application64Folder'>
17 + <File Source='..\VcxprojWindowsApp\x64\Debug\VcxprojWindowsApp.exe' />
18 + </Component>
19 +
20 + <!-- <ComponentGroupRef Id='VcxprojDllComponentGroup' /> -->
21 + </Feature>
22 + </Package>
23 +</Wix>
src/test/wix/TestData/WixprojPackageVcxprojWindowsAppMultiArch/WixprojPackageVcxprojWindowsAppMultiArch.wixproj new
+10
@@ -0,0 +1,10 @@
1 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
2 +<Project Sdk="WixToolset.Sdk">
3 + <ItemGroup>
4 + <ProjectReference Include="..\VcxprojDll\VcxprojDll.vcxproj" Properties="Platform=Win32" />
5 + <ProjectReference Include="..\VcxprojDll\VcxprojDll.vcxproj" Properties="Platform=x64" />
6 + <ProjectReference Include="..\VcxprojWindowsApp\VcxprojWindowsApp.vcxproj" Properties="Platform=Win32" />
7 + <ProjectReference Include="..\VcxprojWindowsApp\VcxprojWindowsApp.vcxproj" Properties="Platform=x64" />
8 + <!-- <ProjectReference Include="..\WixprojLibraryVcxprojDll\WixprojLibraryVcxprojDll.wixproj" /> -->
9 + </ItemGroup>
10 +</Project>
src/test/wix/WixE2E/WixE2E.csproj new
+26
@@ -0,0 +1,26 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 +
4 +<Project Sdk="Microsoft.NET.Sdk">
5 + <PropertyGroup>
6 + <TargetFramework>net472</TargetFramework>
7 + <IsPackable>false</IsPackable>
8 + <DebugType>embedded</DebugType>
9 + <SignOutput>false</SignOutput>
10 + </PropertyGroup>
11 +
12 + <ItemGroup>
13 + <Content Include="..\..\..\global.json" CopyToOutputDirectory="PreserveNewest" />
14 + <Content Include="..\TestData\**" CopyToOutputDirectory="PreserveNewest" Link="TestData\%(RecursiveDir)%(Filename)%(Extension)" />
15 + </ItemGroup>
16 +
17 + <ItemGroup>
18 + <PackageReference Include="WixBuildTools.TestSupport" />
19 + </ItemGroup>
20 +
21 + <ItemGroup>
22 + <PackageReference Include="Microsoft.NET.Test.Sdk" />
23 + <PackageReference Include="xunit" />
24 + <PackageReference Include="xunit.runner.visualstudio" PrivateAssets="all" />
25 + </ItemGroup>
26 +</Project>
src/test/wix/WixE2E/WixE2EFixture.cs new
+79
@@ -0,0 +1,79 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixE2E
4 +{
5 + using System.IO;
6 + using WixBuildTools.TestSupport;
7 + using Xunit;
8 +
9 + public class WixE2EFixture
10 + {
11 + [Fact]
12 + public void CanBuildWixlibWithNativeDll()
13 + {
14 + var projectPath = TestData.Get("TestData", "WixprojLibraryVcxprojDll", "WixprojLibraryVcxprojDll.wixproj");
15 +
16 + CleanEverything();
17 +
18 + var result = RestoreAndBuild(projectPath);
19 + result.AssertSuccess();
20 + }
21 +
22 + [Fact]
23 + public void CanBuildModuleWithWinFormsApp()
24 + {
25 + var projectPath = TestData.Get("TestData", "WixprojModuleCsprojWinFormsNetFx", "WixprojModuleCsprojWinFormsNetFx.wixproj");
26 +
27 + CleanEverything();
28 +
29 + var result = RestoreAndBuild(projectPath);
30 + result.AssertSuccess();
31 + }
32 +
33 + [Fact]
34 + public void CanBuildPackageWithWebApp()
35 + {
36 + var projectPath = TestData.Get("TestData", "WixprojPackageCsprojWebApplicationNetCore", "WixprojPackageCsprojWebApplicationNetCore.wixproj");
37 +
38 + CleanEverything();
39 +
40 + var result = RestoreAndBuild(projectPath);
41 + result.AssertSuccess();
42 + }
43 +
44 + [Fact]
45 + public void CanBuildPackageWithNativeWindowsApp()
46 + {
47 + var projectPath = TestData.Get("TestData", "WixprojPackageVcxprojWindowsApp", "WixprojPackageVcxprojWindowsApp.wixproj");
48 +
49 + CleanEverything();
50 +
51 + var result = RestoreAndBuild(projectPath);
52 + result.AssertSuccess();
53 + }
54 +
55 + private static void CleanEverything()
56 + {
57 + var rootFolder = TestData.Get("TestData");
58 + var deleteFolders = new[] { "Debug", "bin", "obj" };
59 +
60 + foreach (var projectFolder in Directory.GetDirectories(rootFolder))
61 + {
62 + foreach (var deleteFolder in deleteFolders)
63 + {
64 + var folder = Path.Combine(projectFolder, deleteFolder);
65 +
66 + if (Directory.Exists(folder))
67 + {
68 + Directory.Delete(folder, true);
69 + }
70 + }
71 + }
72 + }
73 +
74 + private static MsbuildRunnerResult RestoreAndBuild(string projectPath, bool x64 = true)
75 + {
76 + return MsbuildRunner.Execute(projectPath, new[] { "-Restore", "-v:m", "-bl" }, x64);
77 + }
78 + }
79 +}
src/test/wix/WixE2ETests.sln new
+22
@@ -0,0 +1,22 @@
1 +
2 +Microsoft Visual Studio Solution File, Format Version 12.00
3 +# Visual Studio Version 16
4 +VisualStudioVersion = 16.0.30114.105
5 +MinimumVisualStudioVersion = 10.0.40219.1
6 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixE2E", "WixE2E\WixE2E.csproj", "{6575BF70-BF0F-4477-8A22-1B2D50FDE2BA}"
7 +EndProject
8 +Global
9 + GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 + Debug|Any CPU = Debug|Any CPU
11 + Release|Any CPU = Release|Any CPU
12 + EndGlobalSection
13 + GlobalSection(SolutionProperties) = preSolution
14 + HideSolutionNode = FALSE
15 + EndGlobalSection
16 + GlobalSection(ProjectConfigurationPlatforms) = postSolution
17 + {6575BF70-BF0F-4477-8A22-1B2D50FDE2BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
18 + {6575BF70-BF0F-4477-8A22-1B2D50FDE2BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
19 + {6575BF70-BF0F-4477-8A22-1B2D50FDE2BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
20 + {6575BF70-BF0F-4477-8A22-1B2D50FDE2BA}.Release|Any CPU.Build.0 = Release|Any CPU
21 + EndGlobalSection
22 +EndGlobal
src/test/wix/WixE2ETests.v3.ncrunchsolution new
+6
@@ -0,0 +1,6 @@
1 +<SolutionConfiguration>
2 + <Settings>
3 + <AllowParallelTestExecution>True</AllowParallelTestExecution>
4 + <SolutionConfigured>True</SolutionConfigured>
5 + </Settings>
6 +</SolutionConfiguration>
\ No newline at end of file