From 68827e6d06844d87411873c3d877997fc4c55e8a Mon Sep 17 00:00:00 2001 From: Justin Van Patten Date: Fri, 15 Dec 2023 10:59:03 -0800 Subject: [PATCH] Replace Python SDK docs with vanilla Sphinx + Read the Docs theme (#10279) This PR replaces our custom Sphinx-based tool for generating core Python SDK docs with standard docs generated from Sphinx using the Read the Docs theme. --- .github/workflows/generate-provider-docs.yml | 2 +- .github/workflows/pulumi-cli.yml | 2 +- .gitignore | 3 + config/_default/menus.yml | 2 +- content/docs/reference/pkg/python/_index.md | 3 - .../pkg/python/providers/pulumi/_index.md | 3 + .../python/providers/pulumi_policy/_index.md | 3 + .../providers/pulumi_terraform/_index.md | 3 + .../pulumi_terraform/state/_index.md | 3 + .../reference/pkg/python/pulumi/_index.md | 2517 ---- .../pkg/python/pulumi_policy/_index.md | 375 - .../pkg/python/pulumi_terraform/_index.md | 47 - .../python/pulumi_terraform/state/_index.md | 503 +- cypress/integration/site_spec.js | 14 - scripts/generate_python_docs.sh | 33 +- .../docs/reference/pkg/python/.buildinfo | 4 - .../pkg/python/.doctrees/environment.pickle | Bin 2739002 -> 0 bytes .../pkg/python/.doctrees/index.doctree | Bin 2540 -> 0 bytes .../python/.doctrees/providers/pulumi.doctree | Bin 1192810 -> 0 bytes .../.doctrees/providers/pulumi_policy.doctree | Bin 210654 -> 0 bytes .../providers/pulumi_terraform.doctree | Bin 5619 -> 0 bytes .../providers/pulumi_terraform/state.doctree | Bin 531188 -> 0 bytes .../pkg/python/_sources/index.rst.txt | 7 - .../python/_sources/providers/pulumi.rst.txt | 162 - .../_sources/providers/pulumi_policy.rst.txt | 8 - .../providers/pulumi_terraform.rst.txt | 15 - .../providers/pulumi_terraform/state.rst.txt | 16 - .../reference/pkg/python/_static/basic.css | 18 + .../python/_static/documentation_options.js | 4 +- .../pkg/python/_static/jquery-3.5.1.js | 10872 --------------- .../pkg/python/_static/jquery-3.6.0.js | 10881 ---------------- .../reference/pkg/python/_static/pygments.css | 1 + .../pkg/python/_static/underscore-1.13.1.js | 2042 --- .../pkg/python/_static/underscore-1.3.1.js | 999 -- .../pkg/python/_static/underscore.js | 6 - .../docs/reference/pkg/python/genindex.html | 849 -- .../reference/pkg/python/genindex/index.html | 993 +- .../docs/reference/pkg/python/index.html | 784 +- .../docs/reference/pkg/python/objects.inv | Bin 2266 -> 3853 bytes .../pkg/python/providers/pulumi.html | 2769 ---- .../pkg/python/providers/pulumi/index.html | 2389 ---- .../python/providers/pulumi_policy/index.html | 110 - .../python/providers/pulumi_terraform.html | 151 - .../providers/pulumi_terraform/index.html | 120 - .../pulumi_terraform/state/index.html | 586 - .../reference/pkg/python/pulumi/index.html | 4313 ++++++ .../index.html} | 286 +- .../index.html} | 326 +- .../reference/pkg/python/py-modindex.html | 145 - .../pkg/python/py-modindex/index.html | 63 +- .../docs/reference/pkg/python/search.html | 124 - .../reference/pkg/python/search/index.html | 35 +- .../docs/reference/pkg/python/searchindex.js | 2 +- tools/pydocgen/Pipfile | 7 +- tools/pydocgen/Pipfile.lock | 423 +- tools/pydocgen/README.md | 0 tools/pydocgen/pulumi-docs.json | 23 - tools/pydocgen/pydocgen/__init__.py | 421 - tools/pydocgen/pydocgen/__main__.py | 4 - tools/pydocgen/pydocgen/templates/index.rst | 5 - .../pydocgen/templates/markdown_docstring.py | 36 - .../providers/provider_with_module.rst | 15 - .../providers/provider_without_module.rst | 16 - .../pydocgen/templates/providers/pulumi.rst | 162 - tools/pydocgen/setup.py | 29 - .../{pydocgen/templates => source}/conf.py | 25 +- tools/pydocgen/source/index.rst | 6 + tools/pydocgen/source/pulumi.rst | 35 + tools/pydocgen/source/pulumi_policy.rst | 8 + tools/pydocgen/source/pulumi_terraform.rst | 11 + 70 files changed, 6284 insertions(+), 37535 deletions(-) delete mode 100644 content/docs/reference/pkg/python/_index.md create mode 100644 content/docs/reference/pkg/python/providers/pulumi/_index.md create mode 100644 content/docs/reference/pkg/python/providers/pulumi_policy/_index.md create mode 100644 content/docs/reference/pkg/python/providers/pulumi_terraform/_index.md create mode 100644 content/docs/reference/pkg/python/providers/pulumi_terraform/state/_index.md delete mode 100644 content/docs/reference/pkg/python/pulumi/_index.md delete mode 100644 content/docs/reference/pkg/python/pulumi_policy/_index.md delete mode 100644 content/docs/reference/pkg/python/pulumi_terraform/_index.md delete mode 100644 static-prebuilt/docs/reference/pkg/python/.buildinfo delete mode 100644 static-prebuilt/docs/reference/pkg/python/.doctrees/environment.pickle delete mode 100644 static-prebuilt/docs/reference/pkg/python/.doctrees/index.doctree delete mode 100644 static-prebuilt/docs/reference/pkg/python/.doctrees/providers/pulumi.doctree delete mode 100644 static-prebuilt/docs/reference/pkg/python/.doctrees/providers/pulumi_policy.doctree delete mode 100644 static-prebuilt/docs/reference/pkg/python/.doctrees/providers/pulumi_terraform.doctree delete mode 100644 static-prebuilt/docs/reference/pkg/python/.doctrees/providers/pulumi_terraform/state.doctree delete mode 100644 static-prebuilt/docs/reference/pkg/python/_sources/index.rst.txt delete mode 100644 static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi.rst.txt delete mode 100644 static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_policy.rst.txt delete mode 100644 static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_terraform.rst.txt delete mode 100644 static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_terraform/state.rst.txt delete mode 100644 static-prebuilt/docs/reference/pkg/python/_static/jquery-3.5.1.js delete mode 100644 static-prebuilt/docs/reference/pkg/python/_static/jquery-3.6.0.js delete mode 100644 static-prebuilt/docs/reference/pkg/python/_static/underscore-1.13.1.js delete mode 100644 static-prebuilt/docs/reference/pkg/python/_static/underscore-1.3.1.js delete mode 100644 static-prebuilt/docs/reference/pkg/python/_static/underscore.js delete mode 100644 static-prebuilt/docs/reference/pkg/python/genindex.html delete mode 100644 static-prebuilt/docs/reference/pkg/python/providers/pulumi.html delete mode 100644 static-prebuilt/docs/reference/pkg/python/providers/pulumi/index.html delete mode 100644 static-prebuilt/docs/reference/pkg/python/providers/pulumi_policy/index.html delete mode 100644 static-prebuilt/docs/reference/pkg/python/providers/pulumi_terraform.html delete mode 100644 static-prebuilt/docs/reference/pkg/python/providers/pulumi_terraform/index.html delete mode 100644 static-prebuilt/docs/reference/pkg/python/providers/pulumi_terraform/state/index.html create mode 100644 static-prebuilt/docs/reference/pkg/python/pulumi/index.html rename static-prebuilt/docs/reference/pkg/python/{providers/pulumi_policy.html => pulumi_policy/index.html} (78%) rename static-prebuilt/docs/reference/pkg/python/{providers/pulumi_terraform/state.html => pulumi_terraform/index.html} (59%) delete mode 100644 static-prebuilt/docs/reference/pkg/python/py-modindex.html delete mode 100644 static-prebuilt/docs/reference/pkg/python/search.html delete mode 100644 tools/pydocgen/README.md delete mode 100644 tools/pydocgen/pulumi-docs.json delete mode 100644 tools/pydocgen/pydocgen/__init__.py delete mode 100644 tools/pydocgen/pydocgen/__main__.py delete mode 100644 tools/pydocgen/pydocgen/templates/index.rst delete mode 100644 tools/pydocgen/pydocgen/templates/markdown_docstring.py delete mode 100644 tools/pydocgen/pydocgen/templates/providers/provider_with_module.rst delete mode 100644 tools/pydocgen/pydocgen/templates/providers/provider_without_module.rst delete mode 100644 tools/pydocgen/pydocgen/templates/providers/pulumi.rst delete mode 100644 tools/pydocgen/setup.py rename tools/pydocgen/{pydocgen/templates => source}/conf.py (83%) create mode 100644 tools/pydocgen/source/index.rst create mode 100644 tools/pydocgen/source/pulumi.rst create mode 100644 tools/pydocgen/source/pulumi_policy.rst create mode 100644 tools/pydocgen/source/pulumi_terraform.rst diff --git a/.github/workflows/generate-provider-docs.yml b/.github/workflows/generate-provider-docs.yml index 63e6e8c64f60..5768a9af43f9 100644 --- a/.github/workflows/generate-provider-docs.yml +++ b/.github/workflows/generate-provider-docs.yml @@ -89,7 +89,7 @@ jobs: working-directory: docs - if: github.event.action == 'non-resource-provider' name: generate python docs - run: ./scripts/generate_python_docs.sh "${{ env.PROVIDER_SHORT_NAME }}" + run: ./scripts/generate_python_docs.sh working-directory: docs - name: git status if: github.event.action == 'non-resource-provider' diff --git a/.github/workflows/pulumi-cli.yml b/.github/workflows/pulumi-cli.yml index 08a6af102461..c7f91d26d288 100644 --- a/.github/workflows/pulumi-cli.yml +++ b/.github/workflows/pulumi-cli.yml @@ -81,7 +81,7 @@ jobs: run: PKGS=pulumi NOBUILD=true ./scripts/run_typedoc.sh working-directory: docs - name: generate python docs - run: ./scripts/generate_python_docs.sh "pulumi" + run: ./scripts/generate_python_docs.sh working-directory: docs - name: generate markdown run: | diff --git a/.gitignore b/.gitignore index 470f56d84155..bd2707c8c616 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,6 @@ _vendor/ # Ignore log files. /scripts/link-checker/pages-with-broken-links.txt + +.doctrees/ +.buildinfo diff --git a/config/_default/menus.yml b/config/_default/menus.yml index f6fe2ff106c5..a49e39553d82 100644 --- a/config/_default/menus.yml +++ b/config/_default/menus.yml @@ -220,7 +220,7 @@ languages: - name: SDK docs identifier: sdk-docs-python parent: python - pageRef: /docs/reference/pkg/python/pulumi + url: https://www.pulumi.com/docs/reference/pkg/python/pulumi/ weight: 1 - name: SDK docs identifier: sdk-docs-go diff --git a/content/docs/reference/pkg/python/_index.md b/content/docs/reference/pkg/python/_index.md deleted file mode 100644 index c5d4e7788707..000000000000 --- a/content/docs/reference/pkg/python/_index.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -redirect_to: /docs/reference/pkg/ ---- diff --git a/content/docs/reference/pkg/python/providers/pulumi/_index.md b/content/docs/reference/pkg/python/providers/pulumi/_index.md new file mode 100644 index 000000000000..0bb463221657 --- /dev/null +++ b/content/docs/reference/pkg/python/providers/pulumi/_index.md @@ -0,0 +1,3 @@ +--- +redirect_to: /docs/reference/pkg/python/pulumi/ +--- diff --git a/content/docs/reference/pkg/python/providers/pulumi_policy/_index.md b/content/docs/reference/pkg/python/providers/pulumi_policy/_index.md new file mode 100644 index 000000000000..2c4794a0c034 --- /dev/null +++ b/content/docs/reference/pkg/python/providers/pulumi_policy/_index.md @@ -0,0 +1,3 @@ +--- +redirect_to: /docs/reference/pkg/python/pulumi_policy/ +--- diff --git a/content/docs/reference/pkg/python/providers/pulumi_terraform/_index.md b/content/docs/reference/pkg/python/providers/pulumi_terraform/_index.md new file mode 100644 index 000000000000..6667ddcaa8f3 --- /dev/null +++ b/content/docs/reference/pkg/python/providers/pulumi_terraform/_index.md @@ -0,0 +1,3 @@ +--- +redirect_to: /docs/reference/pkg/python/pulumi_terraform/ +--- diff --git a/content/docs/reference/pkg/python/providers/pulumi_terraform/state/_index.md b/content/docs/reference/pkg/python/providers/pulumi_terraform/state/_index.md new file mode 100644 index 000000000000..6667ddcaa8f3 --- /dev/null +++ b/content/docs/reference/pkg/python/providers/pulumi_terraform/state/_index.md @@ -0,0 +1,3 @@ +--- +redirect_to: /docs/reference/pkg/python/pulumi_terraform/ +--- diff --git a/content/docs/reference/pkg/python/pulumi/_index.md b/content/docs/reference/pkg/python/pulumi/_index.md deleted file mode 100644 index 6d2b5b920333..000000000000 --- a/content/docs/reference/pkg/python/pulumi/_index.md +++ /dev/null @@ -1,2517 +0,0 @@ ---- -title: Package pulumi -title_tag: Package pulumi | Python SDK -linktitle: pulumi -notitle: true ---- - -{{< resource-docs-alert "pulumi" >}} - -
-

Pulumi Python SDK

-

The Pulumi Python SDK (pulumi) is the core package used when writing Pulumi programs in Python. It contains everything -that you’ll need in order to interact with Pulumi resource providers and express infrastructure using Python code. -Pulumi resource providers all depend on this library and express their resources in terms of the types defined in this -module.

-
-

Note: The Pulumi Python SDK requires an officially supported version of Python. See -Pulumi & Python for details on how to get started with -Python.

-
-
-

The Pulumi Python Resource Model

-

Like most languages usable with Pulumi, Pulumi represents cloud resources as classes and Python programs can instantiate -those classes. All classes that can be instantiated to produce actual resources derive from the pulumi.Resource class.

-

A class that derives from pulumi.Resource will, when instantiated, communicate with the Pulumi Engine and record that -a piece of infrastructure that the instantiated class represents should be provisioned. All resources whose provisioning -is implemented in a resource provider derive from the pulumi.CustomResource class.

-

It is also possible to write your own resources, written in Python, that are themselves composed of custom resources. -Resources written in Python are called “component resources” and they are written by deriving from the -pulumi.ComponentResource class.

-

Finally, Pulumi allows for resource providers to directly project themselves into Python, so that provider instances -can be instantiated and used to create other resources. These “provider resources” derive from the -pulumi.ProviderResource class.

-
-
-class pulumi.Resource(t: str, name: str, custom: bool, props: Inputs | None = None, opts: ResourceOptions | None = None, remote: bool = False, dependency: bool = False)
-

Resource represents a class whose CRUD operations are implemented by a provider plugin.

-
-
Parameters:
-
    -
  • t (str) – The type of this resource.

  • -
  • name (str) – The name of this resource.

  • -
  • custom (bool) – True if this resource is a custom resource.

  • -
  • props (Optional[Inputs]) – An optional list of input properties to use as inputs for the resource. -If props is an input type (decorated with @input_type), dict keys will be translated using -the type’s and resource’s type/name metadata rather than using the translate_input_property -and translate_output_property methods.

  • -
  • opts (Optional[ResourceOptions]) – Optional set of pulumi.ResourceOptions to use for this -resource.

  • -
  • remote (bool) – True if this is a remote component resource.

  • -
  • dependency (bool) – True if this is a synthetic resource used internally for dependency tracking.

  • -
-
-
-
-
-property urn: Output[str]
-

The stable, logical URN used to distinctly address a resource, both before and after -deployments.

-
- -
-
-translate_output_property(prop: str) str
-

Provides subclasses of Resource an opportunity to translate names of output properties -into a format of their choosing before writing those properties to the resource object.

-

If the props passed to __init__ is an input type (decorated with @input_type), the -type/name metadata of the resource will be used to translate names instead of calling this -method.

-
-
Parameters:
-

prop (str) – A property name.

-
-
Returns:
-

A potentially transformed property name.

-
-
Return type:
-

str

-
-
-
- -
-
-translate_input_property(prop: str) str
-

Provides subclasses of Resource an opportunity to translate names of input properties into -a format of their choosing before sending those properties to the Pulumi engine.

-

If the props passed to __init__ is an input type (decorated with @input_type), the -type/name metadata of props will be used to translate names instead of calling this -method.

-
-
Parameters:
-

prop (str) – A property name.

-
-
Returns:
-

A potentially transformed property name.

-
-
Return type:
-

str

-
-
-
- -
-
-get_provider(module_member: str) ProviderResource | None
-

Fetches the provider for the given module member, if this resource has been provided a specific -provider for the given module member.

-

Returns None if no provider was provided.

-
-
Parameters:
-

module_member (str) – The requested module member.

-
-
Returns:
-

The ProviderResource associated with the given module member, or None if one does not exist.

-
-
Return type:
-

Optional[ProviderResource]

-
-
-
- -
- -
-
-class pulumi.CustomResource(t: str, name: str, props: Inputs | None = None, opts: ResourceOptions | None = None, dependency: bool = False)
-

CustomResource is a resource whose create, read, update, and delete (CRUD) operations are -managed by performing external operations on some physical entity. The engine understands how -to diff and perform partial updates of them, and these CRUD operations are implemented in a -dynamically loaded plugin for the defining package.

-
-
Parameters:
-
    -
  • t (str) – The type of this resource.

  • -
  • name (str) – The name of this resource.

  • -
  • props (Optional[dict]) – An optional list of input properties to use as inputs for the resource.

  • -
  • opts (Optional[ResourceOptions]) – Optional set of pulumi.ResourceOptions to use for this -resource.

  • -
  • dependency (bool) – True if this is a synthetic resource used internally for dependency tracking.

  • -
-
-
-
-
-property id: Output[str]
-

id is the provider-assigned unique ID for this managed resource. It is set during -deployments and may be missing (undefined) during planning phases.

-
- -
- -
-
-class pulumi.ComponentResource(t: str, name: str, props: Inputs | None = None, opts: ResourceOptions | None = None, remote: bool = False)
-

ComponentResource is a resource that aggregates one or more other child resources into a higher -level abstraction. The component itself is a resource, but does not require custom CRUD -operations for provisioning.

-
-
Parameters:
-
    -
  • t (str) – The type of this resource.

  • -
  • name (str) – The name of this resource.

  • -
  • props (Optional[dict]) – An optional list of input properties to use as inputs for the resource.

  • -
  • opts (Optional[ResourceOptions]) – Optional set of pulumi.ResourceOptions to use for this -resource.

  • -
  • remote (bool) – True if this is a remote component resource.

  • -
-
-
-
-
-register_outputs(outputs: Inputs)
-

Register synthetic outputs that a component has initialized, usually by allocating other child -sub-resources and propagating their resulting property values.

-
-
Parameters:
-

output (dict) – A dictionary of outputs to associate with this resource.

-
-
-
- -
- -
-
-class pulumi.ProviderResource(pkg: str, name: str, props: Inputs | None = None, opts: ResourceOptions | None = None, dependency: bool = False)
-

ProviderResource is a resource that implements CRUD operations for other custom resources. These resources are -managed similarly to other resources, including the usual diffing and update semantics.

-
-
Parameters:
-
    -
  • pkg (str) – The package type of this provider resource.

  • -
  • name (str) – The name of this resource.

  • -
  • props (Optional[dict]) – An optional list of input properties to use as inputs for the resource.

  • -
  • opts (Optional[ResourceOptions]) – Optional set of pulumi.ResourceOptions to use for this -resource.

  • -
  • dependency (bool) – True if this is a synthetic resource used internally for dependency tracking.

  • -
-
-
-
-
-package: str
-

package is the name of the package this is provider for. Common examples are “aws” and “azure”.

-
- -
- -
-
-class pulumi.ResourceOptions(parent: Resource | None = None, depends_on: Input[Sequence[Input[Resource]] | Resource] | None = None, protect: bool | None = None, provider: ProviderResource | None = None, providers: Mapping[str, ProviderResource] | List[ProviderResource] | None = None, delete_before_replace: bool | None = None, ignore_changes: List[str] | None = None, version: str | None = None, aliases: Sequence[Input[str | Alias]] | None = None, additional_secret_outputs: List[str] | None = None, id: Input[str] | None = None, import_: str | None = None, custom_timeouts: CustomTimeouts | None = None, transformations: List[Callable[[ResourceTransformationArgs], ResourceTransformationResult | None]] | None = None, urn: str | None = None, replace_on_changes: List[str] | None = None, plugin_download_url: str | None = None, retain_on_delete: bool | None = None, deleted_with: Resource | None = None)
-

ResourceOptions is a bag of optional settings that control a resource’s behavior.

-
-
Parameters:
-
    -
  • parent (Optional[Resource]) – If provided, the currently-constructing resource should be the child of -the provided parent resource.

  • -
  • depends_on (Optional[Input[Union[List[Input[Resource]],Resource]]]) – If provided, declares that the -currently-constructing resource depends on the given resources.

  • -
  • protect (Optional[bool]) – If provided and True, this resource is not allowed to be deleted.

  • -
  • provider (Optional[ProviderResource]) – An optional provider to use for this resource’s CRUD operations. -If no provider is supplied, the default provider for the resource’s package will be used. The default -provider is pulled from the providers field, then the parent’s provider bag.

  • -
  • providers (Optional[Union[Mapping[str, ProviderResource], List[ProviderResource]]]) – An optional set of -providers to use for this resource and child resources. Keyed by package name (e.g. “aws”), or just -provided as a list. In the latter case, the package name will be retrieved from the provider itself. -Note: Only a list should be used. Mapping keys are not respected.

  • -
  • delete_before_replace (Optional[bool]) – If provided and True, this resource must be deleted before it is replaced.

  • -
  • ignore_changes (Optional[List[str]]) – If provided, a list of property names to ignore for purposes of updates -or replacements.

  • -
  • version (Optional[str]) – An optional version. If provided, the engine loads a provider with exactly the -requested version to operate on this resource. This version overrides the version information inferred -from the current package and should rarely be used.

  • -
  • aliases (Optional[List[Input[Union[str, Alias]]]]) – An optional list of aliases to treat this resource as -matching.

  • -
  • additional_secret*outputs (Optional[List[str]]) –

    If provided, a list of output property names that should -also be treated as secret.

    -

  • -
  • id (Optional[Input[str]]) – If provided, an existing resource ID to read, rather than create.

  • -
-
-
-
-
:param Optional[str] import*When provided with a resource ID, import indicates that this resource’s provider should

import its state from the cloud resource with the given ID. The inputs to the resource’s constructor must align -with the resource’s current state. Once a resource has been imported, the import property must be removed from -the resource’s options.

-
-
-
-
Parameters:
-
    -
  • custom_timeouts (Optional[CustomTimeouts]) – If provided, a config block for custom timeout information.

  • -
  • transformations (Optional[List[ResourceTransformation]]) – If provided, a list of transformations to apply -to this resource during construction.

  • -
  • urn (Optional[str]) – The URN of a previously-registered resource of this type to read from the engine.

  • -
  • replace_on_changes (Optional[List[str]]) – Changes to any of these property paths will force a replacement. -If this list includes "*", changes to any properties will force a replacement. Initialization errors -from previous deployments will require replacement instead of update only if "*" is passed.

  • -
  • plugin_download_url (Optional[str]) – An optional url. If provided, the engine loads a provider with downloaded -from the provided url. This url overrides the plugin download url inferred from the current package and should -rarely be used.

  • -
  • retain_on_delete (Optional[bool]) – If set to True, the providers Delete method will not be called for this resource.

  • -
  • deleted_with (Optional[Resource]) – If set, the providers Delete method will not be called for this resource -if specified resource is being deleted as well.

  • -
-
-
-
-
-parent: Resource | None
-

If provided, the currently-constructing resource should be the child of the provided parent -resource.

-
- -
-
-protect: bool | None
-

If provided and True, this resource is not allowed to be deleted.

-
- -
-
-provider: ProviderResource | None
-

An optional provider to use for this resource’s CRUD operations. If no provider is supplied, the -default provider for the resource’s package will be used. The default provider is pulled from -the parent’s provider bag (see also ResourceOptions.providers).

-
- -
-
-providers: Mapping[str, ProviderResource] | Sequence[ProviderResource] | None
-

An optional set of providers to use for this resource and child resources. Keyed by package name -(e.g. “aws”), or just provided as a list. In the latter case, the package name will be retrieved -from the provider itself. -Note: Only a list should be used. Mapping keys are not respected.

-
- -
-
-delete_before_replace: bool | None
-

If provided and True, this resource must be deleted before it is replaced.

-
- -
-
-ignore_changes: List[str] | None
-

If provided, ignore changes to any of the specified properties.

-
- -
-
-version: str | None
-

An optional version. If provided, the engine loads a provider with exactly the requested version -to operate on this resource. This version overrides the version information inferred from the -current package and should rarely be used.

-
- -
-
-plugin_download_url: str | None
-

An optional url. If provided, the engine loads a provider with downloaded from the provided url. -This url overrides the plugin download url inferred from the current package and should rarely -be used.

-
- -
-
-aliases: Sequence[Input[str | Alias]] | None
-

An optional list of aliases to treat this resource as matching.

-
- -
-
-additional_secret_outputs: List[str] | None
-

The names of outputs for this resource that should be treated as secrets. This augments the list -that the resource provider and pulumi engine already determine based on inputs to your resource. -It can be used to mark certain outputs as a secrets on a per resource basis.

-
- -
-
-custom_timeouts: CustomTimeouts | None
-

An optional customTimeouts config block.

-
- -
-
-id: Input[str] | None
-

An optional existing ID to load, rather than create.

-
- -
-
-import_: str | None
-

When provided with a resource ID, import indicates that this resource’s provider should import -its state from the cloud resource with the given ID. The inputs to the resource’s constructor -must align with the resource’s current state. Once a resource has been imported, the import -property must be removed from the resource’s options.

-
- -
-
-transformations: List[Callable[[ResourceTransformationArgs], ResourceTransformationResult | None]] | None
-

Optional list of transformations to apply to this resource during construction. The -transformations are applied in order, and are applied prior to transformation applied to -parents walking from the resource up to the stack.

-
- -
-
-urn: str | None
-

The URN of a previously-registered resource of this type to read from the engine.

-
- -
-
-replace_on_changes: List[str] | None
-

Changes to any of these property paths will force a replacement. If this list includes "*", changes -to any properties will force a replacement. Initialization errors from previous deployments will -require replacement instead of update only if "*" is passed.

-
- -
-
-depends_on: Input[Sequence[Input[Resource]] | Resource] | None
-

If provided, declares that the currently-constructing resource depends on the given resources.

-
- -
-
-retain_on_delete: bool | None
-

If set to True, the providers Delete method will not be called for this resource.

-
- -
-
-deleted_with: Resource | None
-

If set, the providers Delete method will not be called for this resource -if specified resource is being deleted as well.

-
- -
-
-static merge(opts1: ResourceOptions | None, opts2: ResourceOptions | None) ResourceOptions
-

merge produces a new ResourceOptions object with the respective attributes of the opts1 -instance in it with the attributes of opts2 merged over them.

-

Both the opts1 instance and the opts2 instance will be unchanged. Both of opts1 and -opts2 can be None, in which case its attributes are ignored.

-

Conceptually attributes merging follows these basic rules:

-
    -
  1. If the attributes is a collection, the final value will be a collection containing the -values from each options object. Both original collections in each options object will -be unchanged.

  2. -
  3. Simple scalar values from opts2 (i.e. strings, numbers, bools) will replace the values -from opts1.

  4. -
  5. For the purposes of merging depends_on is always treated -as collections, even if only a single value was provided.

  6. -
  7. Attributes with value ‘None’ will not be copied over.

  8. -
-

This method can be called either as static-method like ResourceOptions.merge(opts1, opts2) -or as an instance-method like opts1.merge(opts2). The former is useful for cases where -opts1 may be None so the caller does not need to check for this case.

-
- -
- -
-
-class pulumi.InvokeOptions(parent: Resource | None = None, provider: ProviderResource | None = None, version: str | None = '', plugin_download_url: str | None = None)
-

InvokeOptions is a bag of options that control the behavior of a call to runtime.invoke.

-
-
Parameters:
-
    -
  • parent (Optional[Resource]) – An optional parent to use for default options for this invoke (e.g. the -default provider to use).

  • -
  • provider (Optional[ProviderResource]) – An optional provider to use for this invocation. If no provider is -supplied, the default provider for the invoked function’s package will be used.

  • -
  • version (Optional[str]) – An optional version. If provided, the provider plugin with exactly this version -will be used to service the invocation.

  • -
  • plugin_download_url (Optional[str]) – An optional URL. If provided, the provider plugin with this download -URL will be used to service the invocation. This will override the URL sourced from the host package, and -should be rarely used.

  • -
-
-
-
-
-parent: Resource | None
-

An optional parent to use for default options for this invoke (e.g. the default provider to use).

-
- -
-
-provider: ProviderResource | None
-

An optional provider to use for this invocation. If no provider is supplied, the default provider for the -invoked function’s package will be used.

-
- -
-
-version: str | None
-

An optional version. If provided, the provider plugin with exactly this version will be used to service -the invocation.

-
- -
-
-plugin_download_url: str | None
-

An optional URL. If provided, the provider plugin with exactly this download URL will be used to service -the invocation. This will override the URL sourced from the host package, and should be rarely used.

-
- -
-
-static merge(opts1: InvokeOptions | None, opts2: InvokeOptions | None) InvokeOptions
-

merge produces a new InvokeOptions object with the respective attributes of the opts1 -instance in it with the attributes of opts2 merged over them.

-

Both the opts1 instance and the opts2 instance will be unchanged. Both of opts1 and -opts2 can be None, in which case its attributes are ignored.

-

Conceptually attributes merging follows these basic rules:

-
    -
  1. If the attributes is a collection, the final value will be a collection containing the -values from each options object. Both original collections in each options object will -be unchanged.

  2. -
  3. Simple scalar values from opts2 (i.e. strings, numbers, bools) will replace the values -from opts1.

  4. -
  5. For the purposes of merging depends_on is always treated -as collections, even if only a single value was provided.

  6. -
  7. Attributes with value ‘None’ will not be copied over.

  8. -
-

This method can be called either as static-method like InvokeOptions.merge(opts1, opts2) -or as an instance-method like opts1.merge(opts2). The former is useful for cases where -opts1 may be None so the caller does not need to check for this case.

-
- -
- -
-
-exception pulumi.RunError
-

Can be used for terminating a program abruptly, but resulting in a clean exit rather than the usual -verbose unhandled error logic which emits the source program text and complete stack trace.

-
- -
-
-

Configuration and Metadata

-

Pulumi programs can receive configuration that is specified by the command-line using pulumi config. This -configuration information can be retrieved at runtime using the pulumi.Config class:

-
import pulumi
-# After running `pulumi config set myconfig 42`
-
-conf = pulumi.Config()
-print(conf.get_int("myconfig")) # prints 42
-
-
-

Pulumi programs also have the ability to query the current project and stack, as well as whether or not the current run -of the program is a preview or not.

-
-
-class pulumi.Config(name: str | None = None)
-

Config is a bag of related configuration state. Each bag contains any number of configuration variables, indexed by -simple keys, and each has a name that uniquely identifies it; two bags with different names do not share values for -variables that otherwise share the same key. For example, a bag whose name is pulumi:foo, with keys a, b, -and c, is entirely separate from a bag whose name is pulumi:bar with the same simple key names. Each key has a -fully qualified names, such as pulumi:foo:a, …, and pulumi:bar:a, respectively.

-
-
Parameters:
-

name (str) – The configuration bag’s logical name that uniquely identifies it. If not provided, the name -of the current project is used.

-
-
-
-
-name: str
-

The configuration bag’s logical name that uniquely identifies it. The default is the name of the current project.

-
- -
-
-get(key: str, default: str | None = None) str | None
-

Returns an optional configuration value by its key, -a default value if that key is unset and a default is provided, -or None if it doesn’t exist.

-
-
Parameters:
-
    -
  • key (str) – The requested configuration key.

  • -
  • default (Optional[str]) – An optional fallback value to use if the given configuration key is not set.

  • -
-
-
Returns:
-

The configuration key’s value, or None if one does not exist.

-
-
Return type:
-

Optional[str]

-
-
-
- -
-
-get_secret(key: str, default: str | None = None) Output[str] | None
-

Returns an optional configuration value by its key, marked as a secret, -a default value if that key is unset and a default is provided, -or None if it doesn’t exist.

-
-
Parameters:
-
    -
  • key (str) – The requested configuration key.

  • -
  • default (Optional[str]) – An optional fallback value to use if the given configuration key is not set.

  • -
-
-
Returns:
-

The configuration key’s value, or None if one does not exist.

-
-
Return type:
-

Optional[str]

-
-
-
- -
-
-get_bool(key: str, default: bool | None = None) bool | None
-

Returns an optional configuration value, as a bool, by its key, -a default value if that key is unset and a default is provided, -or None if it doesn’t exist. -If the configuration value isn’t a legal boolean, this function will throw an error.

-
-
Parameters:
-
    -
  • key (str) – The requested configuration key.

  • -
  • default (Optional[bool]) – An optional fallback value to use if the given configuration key is not set.

  • -
-
-
Returns:
-

The configuration key’s value, or None if one does not exist.

-
-
Return type:
-

Optional[bool]

-
-
Raises:
-

ConfigTypeError – The configuration value existed but couldn’t be coerced to bool.

-
-
-
- -
-
-get_secret_bool(key: str, default: bool | None = None) Output[bool] | None
-

Returns an optional configuration value, as a bool, by its key, marked as a secret, -a default value if that key is unset and a default is provided, -or None if it doesn’t exist. -If the configuration value isn’t a legal boolean, this function will throw an error.

-
-
Parameters:
-
    -
  • key (str) – The requested configuration key.

  • -
  • default (Optional[bool]) – An optional fallback value to use if the given configuration key is not set.

  • -
-
-
Returns:
-

The configuration key’s value, or None if one does not exist.

-
-
Return type:
-

Optional[bool]

-
-
Raises:
-

ConfigTypeError – The configuration value existed but couldn’t be coerced to bool.

-
-
-
- -
-
-get_int(key: str, default: int | None = None) int | None
-

Returns an optional configuration value, as an int, by its key, -a default value if that key is unset and a default is provided, -or None if it doesn’t exist. -If the configuration value isn’t a legal int, this function will throw an error.

-
-
Parameters:
-
    -
  • key (str) – The requested configuration key.

  • -
  • default (Optional[int]) – An optional fallback value to use if the given configuration key is not set.

  • -
-
-
Returns:
-

The configuration key’s value, or None if one does not exist.

-
-
Return type:
-

Optional[int]

-
-
Raises:
-

ConfigTypeError – The configuration value existed but couldn’t be coerced to int.

-
-
-
- -
-
-get_secret_int(key: str, default: int | None = None) Output[int] | None
-

Returns an optional configuration value, as an int, by its key, marked as a secret, -a default value if that key is unset and a default is provided, -or None if it doesn’t exist. -If the configuration value isn’t a legal int, this function will throw an error.

-
-
Parameters:
-
    -
  • key (str) – The requested configuration key.

  • -
  • default (Optional[int]) – An optional fallback value to use if the given configuration key is not set.

  • -
-
-
Returns:
-

The configuration key’s value, or None if one does not exist.

-
-
Return type:
-

Optional[int]

-
-
Raises:
-

ConfigTypeError – The configuration value existed but couldn’t be coerced to int.

-
-
-
- -
-
-get_float(key: str, default: float | None = None) float | None
-

Returns an optional configuration value, as a float, by its key, marked as a secret, -a default value if that key is unset and a default is provided, -or None if it doesn’t exist. -If the configuration value isn’t a legal float, this function will throw an error.

-
-
Parameters:
-
    -
  • key (str) – The requested configuration key.

  • -
  • default (Optional[float]) – An optional fallback value to use if the given configuration key is not set.

  • -
-
-
Returns:
-

The configuration key’s value, or None if one does not exist.

-
-
Return type:
-

Optional[float]

-
-
Raises:
-

ConfigTypeError – The configuration value existed but couldn’t be coerced to float.

-
-
-
- -
-
-get_secret_float(key: str, default: float | None = None) Output[float] | None
-

Returns an optional configuration value, as a float, by its key, marked as a secret, -a default value if that key is unset and a default is provided, -or None if it doesn’t exist. -If the configuration value isn’t a legal float, this function will throw an error.

-
-
Parameters:
-
    -
  • key (str) – The requested configuration key.

  • -
  • default (Optional[float]) – An optional fallback value to use if the given configuration key is not set.

  • -
-
-
Returns:
-

The configuration key’s value, or None if one does not exist.

-
-
Return type:
-

Optional[float]

-
-
Raises:
-

ConfigTypeError – The configuration value existed but couldn’t be coerced to float.

-
-
-
- -
-
-get_object(key: str, default: Any | None = None) Any | None
-

Returns an optional configuration value, as an object, by its key, -a default value if that key is unset and a default is provided, or undefined if it -doesn’t exist. This routine simply JSON parses and doesn’t validate the shape of the -contents.

-
-
Parameters:
-
    -
  • key (str) – The requested configuration key.

  • -
  • default (Optional[Any]) – An optional fallback value to use if the given configuration key is not set.

  • -
-
-
Returns:
-

The configuration key’s value, or None if one does not exist.

-
-
Return type:
-

Optional[Any]

-
-
Raises:
-

ConfigTypeError – The configuration value existed but couldn’t be coerced to float.

-
-
-
- -
-
-get_secret_object(key: str, default: Any | None = None) Output[Any] | None
-

Returns an optional configuration value, as an object, by its key, marking it as a secret, -a default value if that key is unset and a default is provided, -or undefined if it doesn’t exist. This routine simply JSON parses and doesn’t validate the -shape of the contents.

-
-
Parameters:
-
    -
  • key (str) – The requested configuration key.

  • -
  • default (Optional[Any]) – An optional fallback value to use if the given configuration key is not set.

  • -
-
-
Returns:
-

The configuration key’s value, or None if one does not exist.

-
-
Return type:
-

Optional[Any]

-
-
Raises:
-

ConfigTypeError – The configuration value existed but couldn’t be coerced to float.

-
-
-
- -
-
-require(key: str) str
-

Returns a configuration value by its given key. If it doesn’t exist, an error is thrown.

-
-
Parameters:
-

key (str) – The requested configuration key.

-
-
Returns:
-

The configuration key’s value.

-
-
Return type:
-

str

-
-
Raises:
-

ConfigMissingError – The configuration value did not exist.

-
-
-
- -
-
-require_secret(key: str) Output[str]
-

Returns a configuration value, marked as a secret by its given key. If it doesn’t exist, an error is thrown.

-
-
Parameters:
-

key (str) – The requested configuration key.

-
-
Returns:
-

The configuration key’s value.

-
-
Return type:
-

str

-
-
Raises:
-

ConfigMissingError – The configuration value did not exist.

-
-
-
- -
-
-require_bool(key: str) bool
-

Returns a configuration value, as a bool, by its given key. If it doesn’t exist, or the -configuration value is not a legal bool, an error is thrown.

-
-
Parameters:
-

key (str) – The requested configuration key.

-
-
Returns:
-

The configuration key’s value.

-
-
Return type:
-

bool

-
-
Raises:
-
-
-
-
- -
-
-require_secret_bool(key: str) Output[bool]
-

Returns a configuration value, as a bool, marked as a secret by its given key. If it doesn’t exist, or the -configuration value is not a legal bool, an error is thrown.

-
-
Parameters:
-

key (str) – The requested configuration key.

-
-
Returns:
-

The configuration key’s value.

-
-
Return type:
-

bool

-
-
Raises:
-
-
-
-
- -
-
-require_int(key: str) int
-

Returns a configuration value, as an int, by its given key. If it doesn’t exist, or the -configuration value is not a legal int, an error is thrown.

-
-
Parameters:
-

key (str) – The requested configuration key.

-
-
Returns:
-

The configuration key’s value.

-
-
Return type:
-

int

-
-
Raises:
-
-
-
-
- -
-
-require_secret_int(key: str) Output[int]
-

Returns a configuration value, as an int, marked as a secret by its given key. If it doesn’t exist, or the -configuration value is not a legal int, an error is thrown.

-
-
Parameters:
-

key (str) – The requested configuration key.

-
-
Returns:
-

The configuration key’s value.

-
-
Return type:
-

int

-
-
Raises:
-
-
-
-
- -
-
-require_float(key: str) float
-

Returns a configuration value, as a float, by its given key. If it doesn’t exist, or the -configuration value is not a legal number, an error is thrown.

-
-
Parameters:
-

key (str) – The requested configuration key.

-
-
Returns:
-

The configuration key’s value.

-
-
Return type:
-

float

-
-
Raises:
-
-
-
-
- -
-
-require_secret_float(key: str) Output[float]
-

Returns a configuration value, as a float, marked as a secret by its given key. If it doesn’t exist, or the -configuration value is not a legal number, an error is thrown.

-
-
Parameters:
-

key (str) – The requested configuration key.

-
-
Returns:
-

The configuration key’s value.

-
-
Return type:
-

float

-
-
Raises:
-
-
-
-
- -
-
-require_object(key: str) Any
-

Returns a configuration value as a JSON string and deserializes the JSON into a Python -object. If it doesn’t exist, or the configuration value is not a legal JSON string, an error -is thrown.

-
- -
-
-require_secret_object(key: str) Output[Any]
-

Returns a configuration value as a JSON string and deserializes the JSON into a Python -object, marking it as a secret. If it doesn’t exist, or the configuration value is not a -legal JSON string, an error is thrown.

-
- -
-
-full_key(key: str) str
-

Turns a simple configuration key into a fully resolved one, by prepending the bag’s name.

-
-
Parameters:
-

key (str) – The name of the configuration key.

-
-
Returns:
-

The name of the configuration key, prefixed with the bag’s name.

-
-
Return type:
-

str

-
-
-
- -
- -
-
-exception pulumi.ConfigMissingError(key: str, secret: bool)
-

Indicates a configuration value is missing.

-
-
-key: str
-

The name of the missing configuration key.

-
- -
-
-secret: bool
-

If this is a secret configuration key.

-
- -
- -
-
-exception pulumi.ConfigTypeError(key: str, value: str, expect_type: str)
-

Indicates a configuration value is of the wrong type.

-
-
-key: str
-

The name of the key whose value was ill-typed.

-
- -
-
-value: str
-

The ill-typed value.

-
- -
-
-expect_type: str
-

The expected type of this value.

-
- -
- -
-
-pulumi.get_project() str
-

Returns the current project name.

-
- -
-
-pulumi.get_stack() str
-

Returns the current stack name.

-
- -
-
-pulumi.runtime.is_dry_run() bool
-

Returns whether or not we are currently doing a preview.

-

When writing unit tests, you can set this flag via pulumi.runtime.set_mocks by supplying a value -for the argument preview.

-
- -
-
-

Outputs and Inputs

-

Like other languages in the Pulumi ecosystem, all Resources in Python have two kinds of properties: inputs and -outputs. Inputs are specified as arguments to resource constructors, to be used as inputs to the resource itself. -Outputs are returned as properties on the instantiated resource object. Outputs are similar to futures in that they -are resolved asynchronously, but they also contain information about the dependency graph of resources within your -program.

-

Pulumi does not offer direct access to the values contained within Outputs. Instead, you must use the apply function -on the Output class in order to observe the value of an output. See -the documentation for more details on this part of the Pulumi programming model.

-
-
-class pulumi.Output(resources: Awaitable[Set[Resource]] | Set[Resource], future: Awaitable[T_co], is_known: Awaitable[bool], is_secret: Awaitable[bool] | None = None)
-

Output helps encode the relationship between Resources in a Pulumi application. Specifically an -Output holds onto a piece of Data and the Resource it was generated from. An Output value can -then be provided when constructing new Resources, allowing that new Resource to know both the -value as well as the Resource the value came from. This allows for a precise ‘Resource -dependency graph’ to be created, which properly tracks the relationship between resources.

-
-
-__getitem__(key: Any) Output[Any]
-

Syntax sugar for looking up attributes dynamically off of outputs.

-
-
Parameters:
-

key (Any) – Key for the attribute dictionary.

-
-
Returns:
-

An Output of this Output’s underlying value, keyed with the given key as if it were a dictionary.

-
-
Return type:
-

Output[Any]

-
-
-
- -
-
-__getattr__(item: str) Output[Any]
-

Syntax sugar for retrieving attributes off of outputs.

-
-
Parameters:
-

item (str) – An attribute name.

-
-
Returns:
-

An Output of this Output’s underlying value’s property with the given name.

-
-
Return type:
-

Output[Any]

-
-
-
- -
-
-apply(func: Callable[[T_co], U | Awaitable[U] | Output[T]], run_with_unknowns: bool | None = None) Output[U]
-

Transforms the data of the output with the provided func. The result remains an -Output so that dependent resources can be properly tracked.

-

‘func’ is not allowed to make resources.

-

‘func’ can return other Outputs. This can be handy if you have a Output -and you want to get a transitive dependency of it.

-

This function will be called during execution of a pulumi up request. It may not run -during pulumi preview (as the values of resources are of course may not be known then).

-
-
Parameters:
-

func (Callable[[T_co],Input[U]]) – A function that will, given this Output’s value, transform the value to -an Input of some kind, where an Input is either a prompt value, a Future, or another Output of the given -type.

-
-
Returns:
-

A transformed Output obtained from running the transformation function on this Output’s value.

-
-
Return type:
-

Output[U]

-
-
-
- -
-
-static from_input(val: T_co | Awaitable[T_co] | Output[T]) Output[T_co]
-

Takes an Input value and produces an Output value from it, deeply unwrapping nested Input values through nested -lists, dicts, and input classes. Nested objects of other types (including Resources) are not deeply unwrapped.

-
-
Parameters:
-

val (Input[T_co]) – An Input to be converted to an Output.

-
-
Returns:
-

A deeply-unwrapped Output that is guaranteed to not contain any Input values.

-
-
Return type:
-

Output[T_co]

-
-
-
- -
-
-static unsecret(val: Output[T]) Output[T]
-

Takes an existing Output, deeply unwraps the nested values and returns a new Output without any secrets included

-
-
Parameters:
-

val (Output[T]) – An Output to be converted to a non-Secret Output.

-
-
Returns:
-

A deeply-unwrapped Output that is guaranteed to not contain any secret values.

-
-
Return type:
-

Output[T]

-
-
-
- -
-
-static secret(val: T | Awaitable[T] | Output[T]) Output[T]
-

Takes an Input value and produces an Output value from it, deeply unwrapping nested Input values as necessary -given the type. It also marks the returned Output as a secret, so its contents will be persisted in an encrypted -form in state files.

-
-
Parameters:
-

val (Input[T]) – An Input to be converted to an Secret Output.

-
-
Returns:
-

A deeply-unwrapped Output that is guaranteed to not contain any Input values and is marked as a Secret.

-
-
Return type:
-

Output[T]

-
-
-
- -
-
-static all(*args: T | Awaitable[T] | Output[T]) Output[List[T]]
-
-static all(**kwargs: T | Awaitable[T] | Output[T]) Output[Dict[str, T]]
-

Produces an Output of a list (if args i.e a list of inputs are supplied) -or dict (if kwargs i.e. keyworded arguments are supplied).

-

This function can be used to combine multiple, separate Inputs into a single -Output which can then be used as the target of apply. Resource dependencies -are preserved in the returned Output.

-

Examples:

-
Output.all(foo, bar) -> Output[[foo, bar]]
-Output.all(foo=foo, bar=bar) -> Output[{"foo": foo, "bar": bar}]
-
-
-
-
Parameters:
-
    -
  • args (Input[T]) – A list of Inputs to convert.

  • -
  • kwargs (Input[T]) – A list of named Inputs to convert.

  • -
-
-
Returns:
-

An output of list or dict, converted from unnamed or named Inputs respectively.

-
-
-
- -
-
-static concat(*args: str | Awaitable[str] | Output[T]) Output[str]
-

Concatenates a collection of Input[str] into a single Output[str].

-

This function takes a sequence of Input[str], stringifies each, and concatenates all values -into one final string. This can be used like so:

-
url = Output.concat("http://", server.hostname, ":", loadBalancer.port)
-
-
-
-
Parameters:
-

args (Input[str]) – A list of string Inputs to concatenate.

-
-
Returns:
-

A concatenated output string.

-
-
Return type:
-

Output[str]

-
-
-
- -
-
-static format(format_string: str | Awaitable[str] | Output[T], *args: object | Awaitable[object] | Output[T], **kwargs: object | Awaitable[object] | Output[T]) Output[str]
-

Perform a string formatting operation.

-

This has the same semantics as str.format except it handles Input types.

-
-
Parameters:
-
    -
  • format_string (Input[str]) – A formatting string

  • -
  • args (Input[object]) – Positional arguments for the format string

  • -
  • kwargs (Input[object]) – Keyword arguments for the format string

  • -
-
-
Returns:
-

A formatted output string.

-
-
Return type:
-

Output[str]

-
-
-
- -
-
-static json_dumps(obj: Any | Awaitable[Any] | Output[T], *, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, cls: Type[JSONEncoder] | None = None, indent: int | str | None = None, separators: Tuple[str, str] | None = None, default: Callable[[Any], Any] | None = None, sort_keys: bool = False, **kw: Any) Output[str]
-

Uses json.dumps to serialize the given Input[object] value into a JSON string.

-

The arguments have the same meaning as in json.dumps except obj is an Input.

-
- -
-
-static json_loads(s: str | bytes | bytearray | Awaitable[str | bytes | bytearray] | Output[T], *, cls: Type[JSONDecoder] | None = None, object_hook: Callable[[Dict[Any, Any]], Any] | None = None, parse_float: Callable[[str], Any] | None = None, parse_int: Callable[[str], Any] | None = None, parse_constant: Callable[[str], Any] | None = None, object_pairs_hook: Callable[[List[Tuple[Any, Any]]], Any] | None = None, **kwds: Any) Output[Any]
-

Uses json.loads to deserialize the given JSON Input[str] value into a value.

-

The arguments have the same meaning as in json.loads except s is an Input.

-
- -
- -
-
-

Logging

-

The Pulumi SDK contains a few helper functions for logging to the console. Messages logged using these functions are -sent directly to the Pulumi Engine and rendered with the rest of the CLI output.

-
-
-pulumi.debug(msg: str, resource: Resource | None = None, stream_id: int | None = None, ephemeral: bool | None = None) None
-

Logs a message to the Pulumi CLI’s debug channel, associating it with a resource -and stream_id if provided.

-
-
Parameters:
-
    -
  • msg (str) – The message to send to the Pulumi CLI.

  • -
  • resource (Optional[Resource]) – If provided, associate this message with the given resource in the Pulumi CLI.

  • -
  • stream_id (Optional[int]) – If provided, associate this message with a stream of other messages.

  • -
-
-
-
- -
-
-pulumi.info(msg: str, resource: Resource | None = None, stream_id: int | None = None, ephemeral: bool | None = None) None
-

Logs a message to the Pulumi CLI’s info channel, associating it with a resource -and stream_id if provided.

-
-
Parameters:
-
    -
  • msg (str) – The message to send to the Pulumi CLI.

  • -
  • resource (Optional[Resource]) – If provided, associate this message with the given resource in the Pulumi CLI.

  • -
  • stream_id (Optional[int]) – If provided, associate this message with a stream of other messages.

  • -
-
-
-
- -
-
-pulumi.warn(msg: str, resource: Resource | None = None, stream_id: int | None = None, ephemeral: bool | None = None) None
-

Logs a message to the Pulumi CLI’s warning channel, associating it with a resource -and stream_id if provided.

-
-
Parameters:
-
    -
  • msg (str) – The message to send to the Pulumi CLI.

  • -
  • resource (Optional[Resource]) – If provided, associate this message with the given resource in the Pulumi CLI.

  • -
  • stream_id (Optional[int]) – If provided, associate this message with a stream of other messages.

  • -
-
-
-
- -
-
-pulumi.error(msg: str, resource: Resource | None = None, stream_id: int | None = None, ephemeral: bool | None = None)
-

Logs a message to the Pulumi CLI’s error channel, associating it -with a resource and stream_id if provided.

-

Consider raising an exception after calling error to stop the Pulumi program.

-
-
Parameters:
-
    -
  • msg (str) – The message to send to the Pulumi CLI.

  • -
  • resource (Optional[Resource]) – If provided, associate this message with the given resource in the Pulumi CLI.

  • -
  • stream_id (Optional[int]) – If provided, associate this message with a stream of other messages.

  • -
-
-
-
- -
-
-

Stack Exports

-

Python programs can export values. Exported values are attached to the program’s Stack resource and accessed using the -pulumi stack output CLI command:

-
import pulumi
-
-pulumi.export("the-answer", 42)
-
-# pulumi stack export:
-# Current stack outputs (1):
-# OUTPUT      VALUE
-# the-answer  42
-
-
-
-
-pulumi.export(name: str, value: Any)
-

Exports a named stack output.

-
-
Parameters:
-
    -
  • name (str) – The name to assign to this output.

  • -
  • value (Any) – The value of this output.

  • -
-
-
-
- -
-
-

Automation API

-

The automation module contains the Pulumi Automation API, the programmatic interface for driving Pulumi programs -without the CLI. -Generally this can be thought of as encapsulating the functionality of the CLI (pulumi up, pulumi preview, -pulumi destroy, pulumi stack init, etc.) but with more flexibility. This still requires a -CLI binary to be installed and available on your $PATH.

-

In addition to fine-grained building blocks, Automation API provides two out of the box ways to work with Stacks:

-
    -
  1. Programs locally available on-disk and addressed via a filepath (local source):

    -
    stack = create_stack("myOrg/myProj/myStack", work_dir=os.path.join("..", "path", "to", "project"))
    -
    -
    -
  2. -
  3. Programs defined as a function alongside your Automation API code (inline source):

    -
    def pulumi_program():
    -    bucket = s3.Bucket("bucket")
    -    pulumi.export("bucket_name", bucket.Bucket)
    -
    -stack = create_stack("myOrg/myProj/myStack", program=pulumi_program)
    -
    -
    -
  4. -
-

Each of these creates a stack with access to the full range of Pulumi lifecycle methods -(up/preview/refresh/destroy), as well as methods for managing config, stack, and project settings:

-
stack.set_config("key", ConfigValue(value="value", secret=True))
-preview_response = stack.preview()
-
-
-

The Automation API provides a natural way to orchestrate multiple stacks, -feeding the output of one stack as an input to the next as shown in the package-level example below. -The package can be used for a number of use cases:

-
    -
  • Driving pulumi deployments within CI/CD workflows

  • -
  • Integration testing

  • -
  • Multi-stage deployments such as blue-green deployment patterns

  • -
  • Deployments involving application code like database migrations

  • -
  • Building higher level tools, custom CLIs over pulumi, etc.

  • -
  • Using pulumi behind a REST or GRPC API

  • -
  • Debugging Pulumi programs (by using a single main entrypoint with “inline” programs)

  • -
-

To enable a broad range of runtime customization the API defines a Workspace interface. -A Workspace is the execution context containing a single Pulumi project, a program, and multiple stacks. -Workspaces are used to manage the execution environment, providing various utilities such as plugin -installation, environment configuration ($PULUMI_HOME), and creation, deletion, and listing of Stacks. -Every Stack including those in the above examples are backed by a Workspace which can be accessed via:

-
ws = stack.workspace()
-ws.install_plugin("aws", "v3.20.0")
-
-
-

Workspaces can be explicitly created and customized beyond the three Stack creation helpers noted above:

-
ws = LocalWorkspace(work_dir=os.path.join(".", "project", "path"), pulumi_home="~/.pulumi")
-stack = create_stack("org/proj/stack", ws)
-
-
-

A default implementation of workspace is provided as LocalWorkspace. This implementation relies on Pulumi.yaml -and Pulumi.[stack].yaml as the intermediate format for Project and Stack settings. Modifying ProjectSettings will -alter the Workspace Pulumi.yaml file, and setting config on a Stack will modify the Pulumi.[stack].yaml file. -This is identical to the behavior of Pulumi CLI driven workspaces. Custom Workspace -implementations can be used to store Project and Stack settings as well as Config in a different format, -such as an in-memory data structure, a shared persistent SQL database, or cloud object storage. Regardless of -the backing Workspace implementation, the Pulumi SaaS Console will still be able to display configuration -applied to updates as it does with the local version of the Workspace today.

-

The Automation API also provides error handling utilities to detect common cases such as concurrent update -conflicts:

-
try:
-    up_response = stack.up()
-except ConcurrentUpdateError:
-    { /* retry logic here */ }
-
-
-
-
-pulumi.automation.create_stack(stack_name: str, project_name: str | None = None, program: Callable[[], None] | None = None, work_dir: str | None = None, opts: LocalWorkspaceOptions | None = None) Stack
-

Creates a Stack with a LocalWorkspace utilizing the specified inline (in process) Pulumi program or the local -Pulumi CLI program from the specified working dir.

-

Inline Programs

-

For inline programs, the program and project_name keyword arguments must be provided. This program is fully -debuggable and runs in process. The work_dir keyword argument is ignored (but see the note on the work_dir -field of opts, below).

-

If no project_settings option is specified, default project settings will be created on behalf of the user. -Similarly, unless a work_dir option is specified, the working directory will default to a new temporary -directory provided by the OS.

-

Example of creating a stack with an inline program:

-
create_stack('dev', project_name='my-app', program=myAppFn)
-
-
-

Local Programs

-

For local programs, the work_dir keyword argument must be provided, and will override the work_dir field in -opts. Keyword arguments other than work_dir and opts are ignored.

-

This is a way to create drivers on top of pre-existing Pulumi programs. This Workspace will pick up any -available Settings files (Pulumi.yaml, Pulumi.[stack].yaml).

-

Example of creating a stack with a local program:

-
create_stack('dev', work_dir='myapp/')
-
-
-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • project_name – The name of the project - required for inline programs.

  • -
  • program – The inline program - required for inline programs.

  • -
  • work_dir – The directory for a CLI-driven stack - required for local programs.

  • -
  • opts – Extensibility options to configure a LocalWorkspace; e.g: settings to seed and environment -variables to pass through to every command.

  • -
-
-
Returns:
-

Stack

-
-
-
- -
-
-pulumi.automation.select_stack(stack_name: str, project_name: str | None = None, program: Callable[[], None] | None = None, work_dir: str | None = None, opts: LocalWorkspaceOptions | None = None) Stack
-

Selects a Stack with a LocalWorkspace utilizing the specified inline (in process) Pulumi program or the local -Pulumi CLI program from the specified working dir.

-

Inline Programs

-

For inline programs, the program and project_name keyword arguments must be provided. This program is fully -debuggable and runs in process. The work_dir keyword argument is ignored (but see the note on the work_dir -field of opts, below).

-

If no project_settings option is specified, default project settings will be created on behalf of the user. -Similarly, unless a work_dir option is specified, the working directory will default to a new temporary -directory provided by the OS.

-

Example of selecting a stack with an inline program:

-
select_stack('dev', project_name='my-app', program=myAppFn)
-
-
-

Local Programs

-

For local programs, the work_dir keyword argument must be provided, and will override the work_dir field in -opts. Keyword arguments other than work_dir and opts are ignored.

-

This is a way to create drivers on top of pre-existing Pulumi programs. This Workspace will pick up any -available Settings files (Pulumi.yaml, Pulumi.[stack].yaml).

-

Example of selecting a stack with a local program:

-
select_stack('dev', work_dir='myapp/')
-
-
-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • project_name – The name of the project - required for inline programs.

  • -
  • program – The inline program - required for inline programs.

  • -
  • work_dir – The directory for a CLI-driven stack - required for local programs.

  • -
  • opts – Extensibility options to configure a LocalWorkspace; e.g: settings to seed and environment -variables to pass through to every command.

  • -
-
-
Returns:
-

Stack

-
-
-
- -
-
-pulumi.automation.create_or_select_stack(stack_name: str, project_name: str | None = None, program: Callable[[], None] | None = None, work_dir: str | None = None, opts: LocalWorkspaceOptions | None = None) Stack
-

Creates or selects an existing Stack with a LocalWorkspace utilizing the specified inline (in process) Pulumi -program or the local Pulumi CLI program from the specified working dir.

-

Inline Programs

-

For inline programs, the program and project_name keyword arguments must be provided. This program is fully -debuggable and runs in process. The work_dir keyword argument is ignored (but see the note on the work_dir -field of opts, below).

-

If no project_settings option is specified, default project settings will be created on behalf of the user. -Similarly, unless a work_dir option is specified, the working directory will default to a new temporary -directory provided by the OS.

-

Example of selecting a stack with an inline program:

-
create_or_select_stack('dev', project_name='my-app', program=myAppFn)
-
-
-

Local Programs

-

For local programs, the work_dir keyword argument must be provided, and will override the work_dir field in -opts. Keyword arguments other than work_dir and opts are ignored.

-

This is a way to create drivers on top of pre-existing Pulumi programs. This Workspace will pick up any -available Settings files (Pulumi.yaml, Pulumi.[stack].yaml).

-

Example of creating or selecting a stack with a local program:

-
create_or_select_stack('dev', work_dir='myapp/')
-
-
-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • project_name – The name of the project - required for inline programs.

  • -
  • program – The inline program - required for inline programs.

  • -
  • work_dir – The directory for a CLI-driven stack - required for local programs.

  • -
  • opts – Extensibility options to configure a LocalWorkspace; e.g: settings to seed and environment -variables to pass through to every command.

  • -
-
-
Returns:
-

Stack

-
-
-
- -
-
-class pulumi.automation.LocalWorkspace(work_dir: str | None = None, pulumi_home: str | None = None, program: Callable[[], None] | None = None, env_vars: Mapping[str, str] | None = None, secrets_provider: str | None = None, project_settings: ProjectSettings | None = None, stack_settings: Mapping[str, StackSettings] | None = None)
-

LocalWorkspace is a default implementation of the Workspace interface. -A Workspace is the execution context containing a single Pulumi project, a program, -and multiple stacks. Workspaces are used to manage the execution environment, -providing various utilities such as plugin installation, environment configuration -($PULUMI_HOME), and creation, deletion, and listing of Stacks. -LocalWorkspace relies on Pulumi.yaml and Pulumi.[stack].yaml as the intermediate format -for Project and Stack settings. Modifying ProjectSettings will -alter the Workspace Pulumi.yaml file, and setting config on a Stack will modify the Pulumi.[stack].yaml file. -This is identical to the behavior of Pulumi CLI driven workspaces.

-
-
-property pulumi_version: str
-
- -
-
-project_settings() ProjectSettings
-

Returns the settings object for the current project if any.

-
-
Returns:
-

ProjectSettings

-
-
-
- -
-
-save_project_settings(settings: ProjectSettings) None
-

Overwrites the settings object in the current project. -There can only be a single project per workspace. Fails is new project name does not match old.

-
-
Parameters:
-

settings – The project settings to save.

-
-
-
- -
-
-stack_settings(stack_name: str) StackSettings
-

Returns the settings object for the stack matching the specified stack name if any.

-
-
Parameters:
-

stack_name – The name of the stack.

-
-
Returns:
-

StackSettings

-
-
-
- -
-
-save_stack_settings(stack_name: str, settings: StackSettings) None
-

Overwrites the settings object for the stack matching the specified stack name.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • settings – The stack settings to save.

  • -
-
-
-
- -
-
-serialize_args_for_op(stack_name: str) List[str]
-

A hook to provide additional args to CLI commands before they are executed. -Provided with stack name, returns a list of args to append to an invoked command [”–config=…”, ] -LocalWorkspace does not utilize this extensibility point.

-
-
Parameters:
-

stack_name – The name of the stack.

-
-
-
- -
-
-post_command_callback(stack_name: str) None
-

A hook executed after every command. Called with the stack name. -An extensibility point to perform workspace cleanup (CLI operations may create/modify a Pulumi.stack.yaml) -LocalWorkspace does not utilize this extensibility point.

-
-
Parameters:
-

stack_name – The name of the stack.

-
-
-
- -
-
-add_environments(stack_name: str, *environment_names: str) None
-

Adds environments to the end of a stack’s import list. Imported environments are merged in order -per the ESC merge rules. The list of environments behaves as if it were the import list in an anonymous -environment.

-
-
Parameters:
-

environment_names – The names of the environment to add.

-
-
-
- -
-
-remove_environment(stack_name: str, environment_name: str) None
-

Removes the specified environment from the stack configuration.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • environment_name – The name of the environment to remove.

  • -
-
-
-
- -
-
-get_config(stack_name: str, key: str, *, path: bool = False) ConfigValue
-

Returns the value associated with the specified stack name and key, -scoped to the Workspace.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • key – The key for the config item to get.

  • -
  • path – The key contains a path to a property in a map or list to get.

  • -
-
-
Returns:
-

ConfigValue

-
-
-
- -
-
-get_all_config(stack_name: str) MutableMapping[str, ConfigValue]
-

Returns the config map for the specified stack name, scoped to the current Workspace.

-
-
Parameters:
-

stack_name – The name of the stack.

-
-
Returns:
-

ConfigMap

-
-
-
- -
-
-set_config(stack_name: str, key: str, value: ConfigValue, *, path: bool = False) None
-

Sets the specified key-value pair on the provided stack name.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • key – The config key to add.

  • -
  • value – The config value to add.

  • -
  • path – The key contains a path to a property in a map or list to set.

  • -
-
-
-
- -
-
-set_all_config(stack_name: str, config: MutableMapping[str, ConfigValue], *, path: bool = False) None
-

Sets all values in the provided config map for the specified stack name.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • config – A mapping of key to ConfigValue to set to config.

  • -
  • path – The keys contain a path to a property in a map or list to set.

  • -
-
-
-
- -
-
-remove_config(stack_name: str, key: str, *, path: bool = False) None
-

Removes the specified key-value pair on the provided stack name.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • key – The key to remove from config.

  • -
  • path – The key contains a path to a property in a map or list to remove.

  • -
-
-
-
- -
-
-remove_all_config(stack_name: str, keys: List[str], *, path: bool = False) None
-

Removes all values in the provided key list for the specified stack name.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • keys – The keys to remove from config.

  • -
  • path – The keys contain a path to a property in a map or list to remove.

  • -
-
-
-
- -
-
-refresh_config(stack_name: str) None
-

Gets and sets the config map used with the last update for Stack matching stack name.

-
-
Parameters:
-

stack_name – The name of the stack.

-
-
-
- -
-
-get_tag(stack_name: str, key: str) str
-

Returns the value associated with the specified stack name and key, -scoped to the Workspace.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • key – The key to use for the tag lookup.

  • -
-
-
Returns:
-

str

-
-
-
- -
-
-set_tag(stack_name: str, key: str, value: str) None
-

Sets the specified key-value pair on the provided stack name.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • key – The tag key to set.

  • -
  • value – The tag value to set.

  • -
-
-
-
- -
-
-remove_tag(stack_name: str, key: str) None
-

Removes the specified key-value pair on the provided stack name.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • key – The tag key to remove.

  • -
-
-
-
- -
-
-list_tags(stack_name: str) MutableMapping[str, str]
-

Returns the tag map for the specified tag name, scoped to the Workspace.

-
-
Parameters:
-

stack_name – The name of the stack.

-
-
Returns:
-

TagMap

-
-
-
- -
-
-who_am_i() WhoAmIResult
-

Returns the currently authenticated user.

-
-
Returns:
-

WhoAmIResult

-
-
-
- -
-
-stack() StackSummary | None
-

Returns a summary of the currently selected stack, if any.

-
-
Returns:
-

Optional[StackSummary]

-
-
-
- -
-
-create_stack(stack_name: str) None
-

Creates and sets a new stack with the stack name, failing if one already exists.

-
-
Parameters:
-

stack_name (str) – The name of the stack to create

-
-
Returns:
-

None

-
-
-

:raises CommandError Raised if a stack with the same name exists.

-
- -
-
-select_stack(stack_name: str) None
-

Selects and sets an existing stack matching the stack stack_name, failing if none exists.

-
-
Parameters:
-

stack_name – The name of the stack to select

-
-
Returns:
-

None

-
-
-

:raises CommandError Raised if no matching stack exists.

-
- -
-
-remove_stack(stack_name: str) None
-

Deletes the stack and all associated configuration and history.

-
-
Parameters:
-

stack_name – The name of the stack to remove

-
-
-
- -
-
-list_stacks() List[StackSummary]
-

Returns all Stacks created under the current Project. -This queries underlying backend and may return stacks not present in the Workspace -(as Pulumi..yaml files).

-
-
Returns:
-

List[StackSummary]

-
-
-
- -
-
-install_plugin(name: str, version: str, kind: str = 'resource') None
-

Installs a plugin in the Workspace, for example to use cloud providers like AWS or GCP.

-
-
Parameters:
-
    -
  • name – The name of the plugin to install.

  • -
  • version – The version to install.

  • -
  • kind – The kind of plugin.

  • -
-
-
-
- -
-
-install_plugin_from_server(name: str, version: str, server: str) None
-

Installs a plugin in the Workspace from a remote server, for example a third party plugin.

-
-
Parameters:
-
    -
  • name – The name of the plugin to install.

  • -
  • version – The version to install.

  • -
  • server – The server to install from.

  • -
-
-
-
- -
-
-remove_plugin(name: str | None = None, version_range: str | None = None, kind: str = 'resource') None
-

Removes a plugin from the Workspace matching the specified name and version.

-
-
Parameters:
-
    -
  • name – The name of the plugin to remove.

  • -
  • version_range – The version range to remove.

  • -
  • kind – The kind of plugin.

  • -
-
-
-
- -
-
-list_plugins() List[PluginInfo]
-

Returns a list of all plugins installed in the Workspace.

-
-
Returns:
-

List[PluginInfo]

-
-
-
- -
-
-export_stack(stack_name: str) Deployment
-

ExportStack exports the deployment state of the stack matching the given name. -This can be combined with ImportStack to edit a stack’s state (such as recovery from failed deployments).

-
-
Parameters:
-

stack_name – The name of the stack to export.

-
-
Returns:
-

Deployment

-
-
-
- -
-
-import_stack(stack_name: str, state: Deployment) None
-

ImportStack imports the specified deployment state into a pre-existing stack. -This can be combined with ExportStack to edit a stack’s state (such as recovery from failed deployments).

-
-
Parameters:
-
    -
  • stack_name – The name of the stack to import.

  • -
  • state – The deployment state to import.

  • -
-
-
-
- -
-
-stack_outputs(stack_name: str) MutableMapping[str, OutputValue]
-

Gets the current set of Stack outputs from the last Stack.up().

-
-
Parameters:
-

stack_name – The name of the stack.

-
-
Returns:
-

OutputMap

-
-
-
- -
- -
-
-class pulumi.automation.Stack(name: str, workspace: Workspace, mode: StackInitMode)
-

Stack is an isolated, independently configurable instance of a Pulumi program. -Stack exposes methods for the full pulumi lifecycle (up/preview/refresh/destroy), as well as managing configuration. -Multiple Stacks are commonly used to denote different phases of development -(such as development, staging and production) or feature branches (such as feature-x-dev, jane-feature-x-dev).

-
-
-classmethod create(stack_name: str, workspace: Workspace) Stack
-

Creates a new stack using the given workspace, and stack name. -It fails if a stack with that name already exists.

-
-
Parameters:
-
    -
  • stack_name – The name identifying the Stack

  • -
  • workspace – The Workspace the Stack was created from.

  • -
-
-
Returns:
-

Stack

-
-
-
- -
-
-classmethod select(stack_name: str, workspace: Workspace) Stack
-

Selects stack using the given workspace, and stack name. -It returns an error if the given Stack does not exist.

-
-
Parameters:
-
    -
  • stack_name – The name identifying the Stack

  • -
  • workspace – The Workspace the Stack was created from.

  • -
-
-
Returns:
-

Stack

-
-
-
- -
-
-classmethod create_or_select(stack_name: str, workspace: Workspace) Stack
-

Tries to create a new stack using the given workspace and stack name if the stack does not already exist, -or falls back to selecting the existing stack. If the stack does not exist, -it will be created and selected.

-
-
Parameters:
-
    -
  • stack_name – The name identifying the Stack

  • -
  • workspace – The Workspace the Stack was created from.

  • -
-
-
Returns:
-

Stack

-
-
-
- -
-
-up(parallel: int | None = None, message: str | None = None, target: List[str] | None = None, policy_packs: List[str] | None = None, policy_pack_configs: List[str] | None = None, expect_no_changes: bool | None = None, diff: bool | None = None, target_dependents: bool | None = None, replace: List[str] | None = None, color: str | None = None, on_output: Callable[[str], Any] | None = None, on_event: Callable[[EngineEvent], Any] | None = None, program: Callable[[], None] | None = None, plan: str | None = None, show_secrets: bool = True, log_flow: bool | None = None, log_verbosity: int | None = None, log_to_std_err: bool | None = None, tracing: str | None = None, debug: bool | None = None) UpResult
-

Creates or updates the resources in a stack by executing the program in the Workspace. -https://www.pulumi.com/docs/cli/commands/pulumi_up/

-
-
Parameters:
-
    -
  • parallel – Parallel is the number of resource operations to run in parallel at once. -(1 for no parallelism). Defaults to unbounded (2147483647).

  • -
  • message – Message (optional) to associate with the update operation.

  • -
  • target – Specify an exclusive list of resource URNs to destroy.

  • -
  • expect_no_changes – Return an error if any changes occur during this update.

  • -
  • policy_packs – Run one or more policy packs as part of this update.

  • -
  • policy_pack_configs – Path to JSON file containing the config for the policy pack of the corresponding “–policy-pack” flag.

  • -
  • diff – Display operation as a rich diff showing the overall change.

  • -
  • target_dependents – Allows updating of dependent targets discovered but not specified in the Target list.

  • -
  • replace – Specify resources to replace.

  • -
  • on_output – A function to process the stdout stream.

  • -
  • on_event – A function to process structured events from the Pulumi event stream.

  • -
  • program – The inline program.

  • -
  • color – Colorize output. Choices are: always, never, raw, auto (default “auto”)

  • -
  • plan – Plan specifies the path to an update plan to use for the update.

  • -
  • show_secrets – Include config secrets in the UpResult summary.

  • -
  • log_flow – Flow log settings to child processes (like plugins)

  • -
  • log_verbosity – Enable verbose logging (e.g., v=3); anything >3 is very verbose

  • -
  • log_to_std_err – Log to stderr instead of to files

  • -
  • tracing – Emit tracing to the specified endpoint. Use the file: scheme to write tracing data to a local file

  • -
  • debug – Print detailed debugging output during resource operations

  • -
-
-
Returns:
-

UpResult

-
-
-
- -
-
-preview(parallel: int | None = None, message: str | None = None, target: List[str] | None = None, policy_packs: List[str] | None = None, policy_pack_configs: List[str] | None = None, expect_no_changes: bool | None = None, diff: bool | None = None, target_dependents: bool | None = None, replace: List[str] | None = None, color: str | None = None, on_output: Callable[[str], Any] | None = None, on_event: Callable[[EngineEvent], Any] | None = None, program: Callable[[], None] | None = None, plan: str | None = None, log_flow: bool | None = None, log_verbosity: int | None = None, log_to_std_err: bool | None = None, tracing: str | None = None, debug: bool | None = None) PreviewResult
-

Performs a dry-run update to a stack, returning pending changes. -https://www.pulumi.com/docs/cli/commands/pulumi_preview/

-
-
Parameters:
-
    -
  • parallel – Parallel is the number of resource operations to run in parallel at once. -(1 for no parallelism). Defaults to unbounded (2147483647).

  • -
  • message – Message to associate with the preview operation.

  • -
  • target – Specify an exclusive list of resource URNs to update.

  • -
  • policy_packs – Run one or more policy packs as part of this update.

  • -
  • policy_pack_configs – Path to JSON file containing the config for the policy pack of the corresponding “–policy-pack” flag.

  • -
  • expect_no_changes – Return an error if any changes occur during this update.

  • -
  • diff – Display operation as a rich diff showing the overall change.

  • -
  • target_dependents – Allows updating of dependent targets discovered but not specified in the Target list.

  • -
  • replace – Specify resources to replace.

  • -
  • on_output – A function to process the stdout stream.

  • -
  • on_event – A function to process structured events from the Pulumi event stream.

  • -
  • program – The inline program.

  • -
  • color – Colorize output. Choices are: always, never, raw, auto (default “auto”)

  • -
  • plan – Plan specifies the path where the update plan should be saved.

  • -
  • log_flow – Flow log settings to child processes (like plugins)

  • -
  • log_verbosity – Enable verbose logging (e.g., v=3); anything >3 is very verbose

  • -
  • log_to_std_err – Log to stderr instead of to files

  • -
  • tracing – Emit tracing to the specified endpoint. Use the file: scheme to write tracing data to a local file

  • -
  • debug – Print detailed debugging output during resource operations

  • -
-
-
Returns:
-

PreviewResult

-
-
-
- -
-
-refresh(parallel: int | None = None, message: str | None = None, target: List[str] | None = None, expect_no_changes: bool | None = None, color: str | None = None, on_output: Callable[[str], Any] | None = None, on_event: Callable[[EngineEvent], Any] | None = None, show_secrets: bool = True, log_flow: bool | None = None, log_verbosity: int | None = None, log_to_std_err: bool | None = None, tracing: str | None = None, debug: bool | None = None) RefreshResult
-

Compares the current stack’s resource state with the state known to exist in the actual -cloud provider. Any such changes are adopted into the current stack.

-
-
Parameters:
-
    -
  • parallel – Parallel is the number of resource operations to run in parallel at once. -(1 for no parallelism). Defaults to unbounded (2147483647).

  • -
  • message – Message (optional) to associate with the refresh operation.

  • -
  • target – Specify an exclusive list of resource URNs to refresh.

  • -
  • expect_no_changes – Return an error if any changes occur during this update.

  • -
  • on_output – A function to process the stdout stream.

  • -
  • on_event – A function to process structured events from the Pulumi event stream.

  • -
  • color – Colorize output. Choices are: always, never, raw, auto (default “auto”)

  • -
  • show_secrets – Include config secrets in the RefreshResult summary.

  • -
  • log_flow – Flow log settings to child processes (like plugins)

  • -
  • log_verbosity – Enable verbose logging (e.g., v=3); anything >3 is very verbose

  • -
  • log_to_std_err – Log to stderr instead of to files

  • -
  • tracing – Emit tracing to the specified endpoint. Use the file: scheme to write tracing data to a local file

  • -
  • debug – Print detailed debugging output during resource operations

  • -
-
-
Returns:
-

RefreshResult

-
-
-
- -
-
-destroy(parallel: int | None = None, message: str | None = None, target: List[str] | None = None, target_dependents: bool | None = None, color: str | None = None, on_output: Callable[[str], Any] | None = None, on_event: Callable[[EngineEvent], Any] | None = None, show_secrets: bool = True, log_flow: bool | None = None, log_verbosity: int | None = None, log_to_std_err: bool | None = None, tracing: str | None = None, debug: bool | None = None) DestroyResult
-

Destroy deletes all resources in a stack, leaving all history and configuration intact.

-
-
Parameters:
-
    -
  • parallel – Parallel is the number of resource operations to run in parallel at once. -(1 for no parallelism). Defaults to unbounded (2147483647).

  • -
  • message – Message (optional) to associate with the destroy operation.

  • -
  • target – Specify an exclusive list of resource URNs to destroy.

  • -
  • target_dependents – Allows updating of dependent targets discovered but not specified in the Target list.

  • -
  • on_output – A function to process the stdout stream.

  • -
  • on_event – A function to process structured events from the Pulumi event stream.

  • -
  • color – Colorize output. Choices are: always, never, raw, auto (default “auto”)

  • -
  • show_secrets – Include config secrets in the DestroyResult summary.

  • -
  • log_flow – Flow log settings to child processes (like plugins)

  • -
  • log_verbosity – Enable verbose logging (e.g., v=3); anything >3 is very verbose

  • -
  • log_to_std_err – Log to stderr instead of to files

  • -
  • tracing – Emit tracing to the specified endpoint. Use the file: scheme to write tracing data to a local file

  • -
  • debug – Print detailed debugging output during resource operations

  • -
-
-
Returns:
-

DestroyResult

-
-
-
- -
-
-add_environments(*environment_names: str) None
-

Adds environments to the end of a stack’s import list. Imported environments are merged in order -per the ESC merge rules. The list of environments behaves as if it were the import list in an anonymous -environment.

-
-
Parameters:
-

environment_names – The names of the environments to add.

-
-
-
- -
-
-remove_environment(environment_name: str) None
-

Removes an environment from a stack’s import list.

-
- -
-
-get_config(key: str, *, path: bool = False) ConfigValue
-

Returns the config value associated with the specified key.

-
-
Parameters:
-
    -
  • key – The key for the config item to get.

  • -
  • path – The key contains a path to a property in a map or list to get.

  • -
-
-
Returns:
-

ConfigValue

-
-
-
- -
-
-get_all_config() MutableMapping[str, ConfigValue]
-

Returns the full config map associated with the stack in the Workspace.

-
-
Returns:
-

ConfigMap

-
-
-
- -
-
-set_config(key: str, value: ConfigValue, *, path: bool = False) None
-

Sets a config key-value pair on the Stack in the associated Workspace.

-
-
Parameters:
-
    -
  • key – The config key to add.

  • -
  • value – The config value to add.

  • -
  • path – The key contains a path to a property in a map or list to set.

  • -
-
-
-
- -
-
-set_all_config(config: MutableMapping[str, ConfigValue], *, path: bool = False) None
-

Sets all specified config values on the stack in the associated Workspace.

-
-
Parameters:
-
    -
  • config – A mapping of key to ConfigValue to set to config.

  • -
  • path – The keys contain a path to a property in a map or list to set.

  • -
-
-
-
- -
-
-remove_config(key: str, *, path: bool = False) None
-

Removes the specified config key from the Stack in the associated Workspace.

-
-
Parameters:
-
    -
  • key – The key to remove from config.

  • -
  • path – The key contains a path to a property in a map or list to remove.

  • -
-
-
-
- -
-
-remove_all_config(keys: List[str], *, path: bool = False) None
-

Removes the specified config keys from the Stack in the associated Workspace.

-
-
Parameters:
-
    -
  • keys – The keys to remove from config.

  • -
  • path – The keys contain a path to a property in a map or list to remove.

  • -
-
-
-
- -
-
-refresh_config() None
-

Gets and sets the config map used with the last update.

-
- -
-
-get_tag(key: str) str
-

Returns the tag value associated with specified key.

-
-
Parameters:
-

key – The key to use for the tag lookup.

-
-
Returns:
-

str

-
-
-
- -
-
-set_tag(key: str, value: str) None
-

Sets a tag key-value pair on the Stack in the associated Workspace.

-
-
Parameters:
-
    -
  • key – The tag key to set.

  • -
  • value – The tag value to set.

  • -
-
-
-
- -
-
-remove_tag(key: str) None
-

Removes the specified key-value pair on the provided stack name.

-
-
Parameters:
-
    -
  • stack_name – The name of the stack.

  • -
  • key – The tag key to remove.

  • -
-
-
-
- -
-
-list_tags() MutableMapping[str, str]
-

Returns the tag map for the specified tag name, scoped to the Workspace.

-
-
Parameters:
-

stack_name – The name of the stack.

-
-
Returns:
-

TagMap

-
-
-
- -
-
-outputs() MutableMapping[str, OutputValue]
-

Gets the current set of Stack outputs from the last Stack.up().

-
-
Returns:
-

OutputMap

-
-
-
- -
-
-history(page_size: int | None = None, page: int | None = None, show_secrets: bool = True) List[UpdateSummary]
-

Returns a list summarizing all previous and current results from Stack lifecycle operations -(up/preview/refresh/destroy).

-
-
Parameters:
-
    -
  • page_size – Paginate history entries (used in combination with page), defaults to all.

  • -
  • page – Paginate history entries (used in combination with page_size), defaults to all.

  • -
  • show_secrets – Show config secrets when they appear in history.

  • -
-
-
Returns:
-

List[UpdateSummary]

-
-
-
- -
-
-info(show_secrets=True) UpdateSummary | None
-

Returns the current results from Stack lifecycle operations.

-
-
Returns:
-

Optional[UpdateSummary]

-
-
-
- -
-
-cancel() None
-

Cancel stops a stack’s currently running update. It returns an error if no update is currently running. -Note that this operation is very dangerous, and may leave the stack in an inconsistent state -if a resource operation was pending when the update was canceled. -This command is not supported for local backends.

-
- -
-
-export_stack() Deployment
-

export_stack exports the deployment state of the stack. -This can be combined with Stack.import_state to edit a stack’s state (such as recovery from failed deployments).

-
-
Returns:
-

Deployment

-
-
-
- -
-
-import_stack(state: Deployment) None
-

import_stack imports the specified deployment state into a pre-existing stack. -This can be combined with Stack.export_state to edit a stack’s state (such as recovery from failed deployments).

-
-
Parameters:
-

state – The deployment state to import.

-
-
-
- -
- -
-
-class pulumi.automation.LocalWorkspaceOptions(work_dir: str | None = None, pulumi_home: str | None = None, program: Callable[[], None] | None = None, env_vars: Mapping[str, str] | None = None, secrets_provider: str | None = None, project_settings: ProjectSettings | None = None, stack_settings: Mapping[str, StackSettings] | None = None)
-
- -
-
-class pulumi.automation.ProjectSettings(name: str, runtime: str | ProjectRuntimeInfo, main: str | None = None, description: str | None = None, author: str | None = None, website: str | None = None, license: str | None = None, config: str | None = None, template: ProjectTemplate | None = None, backend: ProjectBackend | None = None)
-

A Pulumi project manifest. It describes metadata applying to all sub-stacks created from the project.

-
- -
-
-class pulumi.automation.StackSettings(secrets_provider: str | None = None, encrypted_key: str | None = None, encryption_salt: str | None = None, config: Dict[str, Any] | None = None)
-

A description of the Stack’s configuration and encryption metadata.

-
- -
-
-class pulumi.automation.ConfigValue(value: str, secret: bool = False)
-

ConfigValue is the input/output of a pulumi config command. -It has a plaintext value, and an option boolean indicating secretness.

-
- -
-
diff --git a/content/docs/reference/pkg/python/pulumi_policy/_index.md b/content/docs/reference/pkg/python/pulumi_policy/_index.md deleted file mode 100644 index 701b38e3f0ae..000000000000 --- a/content/docs/reference/pkg/python/pulumi_policy/_index.md +++ /dev/null @@ -1,375 +0,0 @@ ---- -title: Package pulumi_policy -title_tag: Package pulumi_policy | Python SDK -linktitle: pulumi_policy -notitle: true ---- - -{{< resource-docs-alert "policy" >}} - -
-

Pulumi Policy

-

The Pulumi Policy SDK for Python.

-
-
-class pulumi_policy.EnforcementLevel(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)
-

Indicates the impact of a policy violation.

-
- -
-
-class pulumi_policy.Policy(name: str, description: str, enforcement_level: EnforcementLevel | None = None, config_schema: PolicyConfigSchema | None = None)
-

A policy function that returns true if a resource definition violates some policy (e.g., “no -public S3 buckets”), and a set of metadata useful for generating helpful messages when the policy -is violated.

-
-
Parameters:
-
    -
  • name (str) – An ID for the policy. Must be unique within the current policy set.

  • -
  • description (str) – A brief description of the policy rule. e.g., “S3 buckets should have -default encryptionenabled.”

  • -
  • enforcement_level (Optional[EnforcementLevel]) – Indicates what to do on policy violation, -e.g., block deployment but allow override with proper permissions.

  • -
  • config_schema (Optional[PolicyConfigSchema]) – This policy’s configuration schema.

  • -
-
-
-
-
-name: str
-

An ID for the policy. Must be unique within the current policy set.

-
- -
-
-description: str
-

A brief description of the policy rule. e.g., “S3 buckets should have default encryption -enabled.”

-
- -
-
-enforcement_level: EnforcementLevel | None
-

Indicates what to do on policy violation, e.g., block deployment but allow override with -proper permissions.

-
- -
-
-config_schema: PolicyConfigSchema | None
-

This policy’s configuration schema.

-
- -
- -
-
-class pulumi_policy.PolicyConfigSchema(properties: Dict[str, Dict[str, Any]], required: List[str] | None = None)
-

Represents the configuration schema for a policy.

-
-
Parameters:
-
    -
  • properties (Dict[str, Dict[str, Any]]) – The policy’s configuration properties.

  • -
  • required (Optional[List[str]]) – The configuration properties that are required.

  • -
-
-
-
-
-properties: Dict[str, Dict[str, Any]]
-

The policy’s configuration properties.

-
- -
-
-required: List[str] | None
-

The configuration properties that are required.

-
- -
- -
-
-class pulumi_policy.PolicyCustomTimeouts(create_seconds: float, update_seconds: float, delete_seconds: float)
-

Custom timeout options.

-
-
-create_seconds: float
-

The create resource timeout.

-
- -
-
-update_seconds: float
-

The update resource timeout.

-
- -
-
-delete_seconds: float
-

The delete resource timeout.

-
- -
- -
-
-class pulumi_policy.PolicyPack(name: str, policies: List[Policy], enforcement_level: EnforcementLevel | None = None, initial_config: Dict[str, EnforcementLevel | Dict[str, Any]] | None = None)
-

A policy pack contains one or more policies to enforce.

-
-
Parameters:
-
    -
  • name (str) – The name of the policy pack.

  • -
  • policies (List[Policy]) – The policies associated with a policy pack.

  • -
  • enforcement_level (Optional[EnforcementLevel]) – Indicates what to do on policy -violation, e.g., block deployment but allow override with -proper permissions. This is the default used for all policies in the policy pack. -Individual policies can override.

  • -
  • initial_config (Optional[Dict[str, Union['EnforcementLevel', Dict[str, Any]]]]) – Initial -configuration for the policy pack. Allows specifying configuration programmatically from reusable -policy libraries.

  • -
-
-
-
- -
-
-class pulumi_policy.PolicyProviderResource(resource_type: str, props: Mapping[str, Any], urn: str, name: str)
-

Information about the provider.

-
-
-resource_type: str
-

The type of the provider resource.

-
- -
-
-props: Mapping[str, Any]
-

The properties of the provider resource.

-
- -
-
-urn: str
-

The URN of the provider resource.

-
- -
-
-name: str
-

The name of the provider resource.

-
- -
- -
-
-class pulumi_policy.PolicyResource(resource_type: str, props: Mapping[str, Any], urn: str, name: str, opts: PolicyResourceOptions, provider: PolicyProviderResource | None, parent: PolicyResource | None, dependencies: List[PolicyResource], property_dependencies: Dict[str, List[PolicyResource]])
-

PolicyResource represents a resource in the stack.

-
-
-resource_type: str
-

The type of the resource.

-
- -
-
-props: Mapping[str, Any]
-

The outputs of the resource.

-
- -
-
-urn: str
-

The URN of the resource.

-
- -
-
-name: str
-

The name of the resource.

-
- -
-
-opts: PolicyResourceOptions
-

The options of the resource.

-
- -
-
-provider: PolicyProviderResource | None
-

The provider of the resource.

-
- -
-
-parent: PolicyResource | None
-

An optional parent that this resource belongs to.

-
- -
-
-dependencies: List[PolicyResource]
-

The dependencies of the resource.

-
- -
-
-property_dependencies: Dict[str, List[PolicyResource]]
-

The set of dependencies that affect each property.

-
- -
- -
-
-class pulumi_policy.PolicyResourceOptions(protect: bool, ignore_changes: List[str], delete_before_replace: bool | None, aliases: List[str], custom_timeouts: PolicyCustomTimeouts, additional_secret_outputs: List[str])
-

PolicyResourceOptions is the bag of settings that control a resource’s behavior.

-
-
-protect: bool
-

When set to true, protect ensures this resource cannot be deleted.

-
- -
-
-ignore_changes: List[str]
-

Ignore changes to any of the specified properties.

-
- -
-
-delete_before_replace: bool | None
-

When set to true, indicates that this resource should be deleted before -its replacement is created when replacement is necessary.

-
- -
-
-aliases: List[str]
-

Additional URNs that should be aliased to this resource.

-
- -
-
-custom_timeouts: PolicyCustomTimeouts
-

Custom timeouts for resource create, update, and delete operations.

-
- -
-
-additional_secret_outputs: List[str]
-

Outputs that should always be treated as secrets.

-
- -
- -
-
-class pulumi_policy.ResourceValidationArgs(resource_type: str, props: Mapping[str, Any], urn: str, name: str, opts: PolicyResourceOptions, provider: PolicyProviderResource | None, config: Mapping[str, Any] | None = None)
-

ResourceValidationArgs is the argument bag passed to a resource validation.

-
-
-get_config() Mapping[str, Any]
-

Returns configuration for the policy.

-
- -
-
-resource_type: str
-

The type of the resource.

-
- -
-
-props: Mapping[str, Any]
-

The inputs of the resource.

-
- -
-
-urn: str
-

The URN of the resource.

-
- -
-
-name: str
-

The name of the resource.

-
- -
-
-opts: PolicyResourceOptions
-

The options of the resource.

-
- -
-
-provider: PolicyProviderResource | None
-

The provider of the resource.

-
- -
- -
-
-class pulumi_policy.ResourceValidationPolicy(name: str, description: str, validate: Callable[[ResourceValidationArgs, Callable[[str, str | None], None]], Awaitable | None] | List[Callable[[ResourceValidationArgs, Callable[[str, str | None], None]], Awaitable | None]] | None = None, enforcement_level: EnforcementLevel | None = None, config_schema: PolicyConfigSchema | None = None)
-

ResourceValidationPolicy is a policy that validates a resource definition.

-
-
Parameters:
-
    -
  • name (str) – An ID for the policy. Must be unique within the current policy set.

  • -
  • description (str) – A brief description of the policy rule. e.g., “S3 buckets should have -default encryptionenabled.”

  • -
  • validate (Optional[Union[ResourceValidation, List[ResourceValidation]]]) – A callback function -that validates if a resource definition violates a policy (e.g. “S3 buckets can’t be public”). -A single callback function can be specified, or multiple functions, which are called in order.

  • -
  • enforcement_level (Optional[EnforcementLevel]) – Indicates what to do on policy violation, -e.g., block deployment but allow override with proper permissions.

  • -
  • config_schema (Optional[PolicyConfigSchema]) – This policy’s configuration schema.

  • -
-
-
-
- -
-
-class pulumi_policy.StackValidationArgs(resources: List[PolicyResource], config: Mapping[str, Any] | None = None)
-

StackValidationArgs is the argument bag passed to a stack validation.

-
-
-get_config() Mapping[str, Any]
-

Returns configuration for the policy.

-
- -
-
-resources: List[PolicyResource]
-

The resources in the stack.

-
- -
- -
-
-class pulumi_policy.StackValidationPolicy(name: str, description: str, validate: Callable[[StackValidationArgs, Callable[[str, str | None], None]], Awaitable | None] | None = None, enforcement_level: EnforcementLevel | None = None, config_schema: PolicyConfigSchema | None = None)
-

StackValidationPolicy is a policy that validates a stack.

-
-
Parameters:
-
    -
  • name (str) – An ID for the policy. Must be unique within the current policy set.

  • -
  • description (str) – A brief description of the policy rule. e.g., “S3 buckets should have -default encryptionenabled.”

  • -
  • validate (Optional[StackValidation]) – A callback function that validates if a stack violates a policy.

  • -
  • enforcement_level (Optional[EnforcementLevel]) – Indicates what to do on policy violation, -e.g., block deployment but allow override with proper permissions.

  • -
  • config_schema (Optional[PolicyConfigSchema]) – This policy’s configuration schema.

  • -
-
-
-
- -
diff --git a/content/docs/reference/pkg/python/pulumi_terraform/_index.md b/content/docs/reference/pkg/python/pulumi_terraform/_index.md deleted file mode 100644 index f4f66288efb4..000000000000 --- a/content/docs/reference/pkg/python/pulumi_terraform/_index.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Package pulumi_terraform -title_tag: Package pulumi_terraform | Python SDK -linktitle: pulumi_terraform -notitle: true ---- - -{{< resource-docs-alert "terraform" >}} - -
-

Pulumi Terraform

-
-

This provider is a derived work of the Terraform Provider distributed under -MPL 2.0. If you encounter a bug or missing feature, first check the -pulumi/pulumi-terraform repo; however, if that doesn’t turn up -anything, please consult the source terraform-providers/terraform-provider-terraform repo.

-
- -
diff --git a/content/docs/reference/pkg/python/pulumi_terraform/state/_index.md b/content/docs/reference/pkg/python/pulumi_terraform/state/_index.md index 1e8faabd22b3..6667ddcaa8f3 100644 --- a/content/docs/reference/pkg/python/pulumi_terraform/state/_index.md +++ b/content/docs/reference/pkg/python/pulumi_terraform/state/_index.md @@ -1,504 +1,3 @@ --- -title: Module state -title_tag: Module state | Package pulumi_terraform | Python SDK -linktitle: state -notitle: true +redirect_to: /docs/reference/pkg/python/pulumi_terraform/ --- - -{{< resource-docs-alert "terraform" >}} - -
-

state

-
-

This provider is a derived work of the Terraform Provider distributed under -MPL 2.0. If you encounter a bug or missing feature, first check the -pulumi/pulumi-terraform repo; however, if that doesn’t turn up -anything, please consult the source terraform-providers/terraform-provider-terraform repo.

-
-
-
-class pulumi_terraform.state.Any(*args, **kwargs)
-

Special type indicating an unconstrained type.

-
    -
  • Any is compatible with every type.

  • -
  • Any assumed to have all methods.

  • -
  • All values assumed to be instances of Any.

  • -
-

Note that all the above statements are true from the point of view of -static type checkers. At runtime, Any should not be used with instance -checks.

-
- -
-
-class pulumi_terraform.state.ArtifactoryBackendArgs(repo: str | Awaitable[str] | Output[T], subpath: str | Awaitable[str] | Output[T], url: str | Awaitable[str] | Output[T] = None, username: str | Awaitable[str] | Output[T] = None, password: str | Awaitable[str] | Output[T] = None, workspace: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the Artifactory backend.

-

Constructs an ArtifactoryBackendArgs.

-
-
Parameters:
-
    -
  • repo – The username with which to authenticate to Artifactory. Sourced from ARTIFACTORY_USERNAME in the -environment, if unset

  • -
  • subpath – Path within the repository.

  • -
  • url – The Artifactory URL. Note that this is the base URL to artifactory, not the full repo and subpath.

  • -
-
-
-

However, it must include the path to the artifactory installation - likely this will end in /artifactory. -Sourced from ARTIFACTORY_URL in the environment, if unset. -:param username: The username with which to authenticate to Artifactory. Sourced from ARTIFACTORY_USERNAME -in the environment, if unset. -:param password: The password with which to authenticate to Artifactory. Sourced from ARTIFACTORY_PASSWORD -in the environment, if unset. -:param workspace: The Terraform workspace from which to read state.

-
- -
-
-class pulumi_terraform.state.AzureRMBackendArgs(storage_account_name: str | Awaitable[str] | Output[T], container_name: str | Awaitable[str] | Output[T], key: str | Awaitable[str] | Output[T] = None, environment: str | Awaitable[str] | Output[T] = None, endpoint: str | Awaitable[str] | Output[T] = None, use_msi: bool | Awaitable[bool] | Output[T] = None, subscription_id: str | Awaitable[str] | Output[T] = None, tenant_id: str | Awaitable[str] | Output[T] = None, msi_endpoint: str | Awaitable[str] | Output[T] = None, sas_token: str | Awaitable[str] | Output[T] = None, access_key: str | Awaitable[str] | Output[T] = None, resource_group_name: str | Awaitable[str] | Output[T] = None, client_id: str | Awaitable[str] | Output[T] = None, client_secret: str | Awaitable[str] | Output[T] = None, workspace: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the AzureRM backend.

-
-

Constructs an AzureRMBackendArgs

-
-
param storage_account_name:
-

The name of the storage account.

-
-
param container_name:
-

The name of the storage container within the storage account.

-
-
param key:
-

The name of the blob in representing the Terraform State file inside the storage container.

-
-
param environment:
-

The Azure environment which should be used. Possible values are public (default), china,

-
-
-
-
-
german, stack and usgovernment. Sourced from ARM_ENVIRONMENT, if unset.
-
param endpoint:
-

The custom endpoint for Azure Resource Manager. Sourced from ARM_ENDPOINT, if unset.

-
-
param use_msi:
-

Whether to authenticate using Managed Service Identity (MSI). Sourced from ARM_USE_MSI if

-
-
-

unset. Defaults to false if no value is specified. -:param subscription_id: The Subscription ID in which the Storage Account exists. Used when authenticating using -the Managed Service Identity (MSI) or a service principal. Sourced from ARM_SUBSCRIPTION_ID, if unset. -:param tenant_id: The Tenant ID in which the Subscription exists. Used when authenticating using the -Managed Service Identity (MSI) or a service principal. Sourced from ARM_TENANT_ID, if unset. -:param msi_endpoint: The path to a custom Managed Service Identity endpoint. Used when authenticating using the -Managed Service Identity (MSI). Sourced from ARM_MSI_ENDPOINT in the environment, if unset. Automatically -determined, if no value is provided. -:param sas_token: The SAS Token used to access the Blob Storage Account. Used when authenticating using a SAS -Token. Sourced from ARM_SAS_TOKEN in the environment, if unset. -:param access_key: The Access Key used to access the blob storage account. Used when authenticating using an -access key. Sourced from ARM_ACCESS_KEY in the environment, if unset. -:param resource_group_name: The name of the resource group in which the storage account exists. Used when -authenticating using a service principal. -:param client_id: The client ID of the service principal. Used when authenticating using a service principal. -Sourced from ARM_CLIENT_ID in the environment, if unset. -:param client_secret: The client secret of the service principal. Used when authenticating using a service -principal. Sourced from ARM_CLIENT_SECRET in the environment, if unset. -:param workspace: The Terraform workspace from which to read state.

-
-
-
- -
-
-class pulumi_terraform.state.ConsulBackendArgs(path: str | Awaitable[str] | Output[T], access_token: str | Awaitable[str] | Output[T], address: str | Awaitable[str] | Output[T] = None, scheme: str | Awaitable[str] | Output[T] = None, datacenter: str | Awaitable[str] | Output[T] = None, http_auth: str | Awaitable[str] | Output[T] = None, gzip: bool | Awaitable[bool] | Output[T] = None, ca_file: str | Awaitable[str] | Output[T] = None, cert_file: str | Awaitable[str] | Output[T] = None, key_file: str | Awaitable[str] | Output[T] = None, workspace: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the Consul backend.

-

Constructs a ConsulBackendArgs.

-
-
Parameters:
-
    -
  • path – Path in the Consul KV store.

  • -
  • access_token – Consul Access Token. Sourced from CONSUL_HTTP_TOKEN in the environment, if unset.

  • -
  • address – DNS name and port of the Consul HTTP endpoint specified in the format dnsname:port. Defaults

  • -
-
-
-

to the local agent HTTP listener. -:param scheme: Specifies which protocol to use when talking to the given address - either http or https. TLS -support can also be enabled by setting the environment variable CONSUL_HTTP_SSL to true. -:param datacenter: The datacenter to use. Defaults to that of the agent. -:param http_auth: HTTP Basic Authentication credentials to be used when communicating with Consul, in the format -of either user or user:pass. Sourced from CONSUL_HTTP_AUTH, if unset. -:param gzip: Whether to compress the state data using gzip. Set to true to compress the state data using gzip, -or false (default) to leave it uncompressed. -:param ca_file: A path to a PEM-encoded certificate authority used to verify the remote agent’s certificate. -Sourced from CONSUL_CAFILE in the environment, if unset. -:param cert_file: A path to a PEM-encoded certificate provided to the remote agent; requires use of key_file. -Sourced from CONSUL_CLIENT_CERT in the environment, if unset. -:param key_file: A path to a PEM-encoded private key, required if cert_file is specified. Sourced from -CONSUL_CLIENT_KEY in the environment, if unset. -:param workspace: The Terraform workspace from which to read state.

-
- -
-
-class pulumi_terraform.state.EtcdV2BackendArgs(path: str | Awaitable[str] | Output[T], endpoints: str | Awaitable[str] | Output[T], username: str | Awaitable[str] | Output[T] = None, password: str | Awaitable[str] | Output[T] = None, workspace: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the etcd v2 backend. Note that there is a separate -configuration class for state stored in the ectd v3 backend.

-

Constructs an EtcdV2BackendArgs.

-
-
Parameters:
-
    -
  • path – The path at which to store the state.

  • -
  • endpoints – A space-separated list of the etcd endpoints.

  • -
  • username – The username with which to authenticate to etcd.

  • -
  • password – The username with which to authenticate to etcd.

  • -
  • workspace – The Terraform workspace from which to read state.

  • -
-
-
-
- -
-
-class pulumi_terraform.state.EtcdV3BackendArgs(endpoints: Sequence[str | Awaitable[str] | Output[T]] | Awaitable[Sequence[str | Awaitable[str] | Output[T]]] | Output[T], username: str | Awaitable[str] | Output[T] = None, password: str | Awaitable[str] | Output[T] = None, prefix: str | Awaitable[str] | Output[T] = None, cacert_path: str | Awaitable[str] | Output[T] = None, cert_path: str | Awaitable[str] | Output[T] = None, key_path: str | Awaitable[str] | Output[T] = None, workspace: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the etcd v3 backend. Note that there is a separate -configuration class for state stored in the ectd v2 backend.

-

Constructs an EtcdV3BackendArgs.

-
-
Parameters:
-
    -
  • endpoints – A list of the etcd endpoints.

  • -
  • username – The username with which to authenticate to etcd. Sourced from ETCDV3_USERNAME in the

  • -
-
-
-

environment, if unset. -:param password: The username with which to authenticate to etcd. Sourced from ETCDV3_PASSWORD in the -environment, if unset. -:param prefix: An optional prefix to be added to keys when storing state in etcd. -:param cacert_path: Path to a PEM-encoded certificate authority bundle with which to verify certificates of -TLS-enabled etcd servers. -:param cert_path: Path to a PEM-encoded certificate to provide to etcd for client authentication. -:param key_path: Path to a PEM-encoded key to use for client authentication. -:param workspace: The Terraform workspace from which to read state.

-
- -
-
-class pulumi_terraform.state.GcsBackendArgs(bucket: str | Awaitable[str] | Output[T], credentials: str | Awaitable[str] | Output[T] = None, prefix: str | Awaitable[str] | Output[T] = None, encryption_key: str | Awaitable[str] | Output[T] = None, workspace: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the Google Cloud Storage backend.

-

Constructs a GcsBackendArgs.

-
-
Parameters:
-
    -
  • bucket – The name of the Google Cloud Storage bucket.

  • -
  • credentials – Local path to Google Cloud Platform account credentials in JSON format. Sourced from

  • -
-
-
-

GOOGLE_CREDENTIALS in the environment if unset. If no value is provided Google Application Default Credentials -are used. -:param prefix: Prefix used inside the Google Cloud Storage bucket. Named states for workspaces are stored in an -object named <prefix>/<name>.tfstate. -:param encryption_key: A 32 byte, base64-encoded customer supplied encryption key used to encrypt the state. -Sourced from GOOGLE_ENCRYPTION_KEY in the environment, if unset. -:param workspace: The Terraform workspace from which to read state.

-
- -
-
-class pulumi_terraform.state.HttpBackendArgs(address: str | Awaitable[str] | Output[T], update_method: str | Awaitable[str] | Output[T] = None, lock_address: str | Awaitable[str] | Output[T] = None, lock_method: str | Awaitable[str] | Output[T] = None, unlock_address: str | Awaitable[str] | Output[T] = None, unlock_method: str | Awaitable[str] | Output[T] = None, username: str | Awaitable[str] | Output[T] = None, password: str | Awaitable[str] | Output[T] = None, skip_cert_validation: bool | Awaitable[bool] | Output[T] = None, workspace: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the HTTP backend.

-

Constructs an HttpBackendArgs.

-
-
Parameters:
-
    -
  • address – The address of the HTTP endpoint.

  • -
  • update_method – HTTP method to use when updating state. Defaults to POST.

  • -
  • lock_address – The address of the lock REST endpoint. Not setting a value disables locking.

  • -
  • lock_method – The HTTP method to use when locking. Defaults to LOCK.

  • -
  • unlock_address – The address of the unlock REST endpoint. Not setting a value disables locking.

  • -
  • unlock_method – The HTTP method to use when unlocking. Defaults to UNLOCK.

  • -
  • username – The username used for HTTP basic authentication.

  • -
  • password – The password used for HTTP basic authentication.

  • -
  • skip_cert_validation – Whether to skip TLS verification. Defaults to false.

  • -
  • workspace – The Terraform workspace from which to read state.

  • -
-
-
-
- -
-
-class pulumi_terraform.state.LocalBackendArgs(path: str | Awaitable[str] | Output[T])
-

The configuration options for a Terraform Remote State stored in the local enhanced backend.

-

Constructs a LocalBackendArgs.

-
-
Parameters:
-

path – The path to the Terraform state file.

-
-
-
- -
-
-class pulumi_terraform.state.MantaBackendArgs(account: str | Awaitable[str] | Output[T], user: str | Awaitable[str] | Output[T] = None, url: str | Awaitable[str] | Output[T] = None, key_material: str | Awaitable[str] | Output[T] = None, key_id: str | Awaitable[str] | Output[T] = None, path: str | Awaitable[str] | Output[T] = None, insecure_skip_tls_verify: bool | Awaitable[bool] | Output[T] = None, workspace: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the Manta backend.

-

Constructs a MantaBackendArgs.

-
-
Parameters:
-

account – The name of the Manta account. Sourced from SDC_ACCOUNT or _ACCOUNT in the environment, if

-
-
-

unset. -:param user: The username of the Manta account with which to authenticate. -:param url: The Manta API Endpoint. Sourced from MANTA_URL in the environment, if unset. Defaults to -https://us-east.manta.joyent.com. -:param key_material: The private key material corresponding with the SSH key whose fingerprint is specified in -keyId. Sourced from SDC_KEY_MATERIAL or TRITON_KEY_MATERIAL in the environment, if unset. If no value is -specified, the local SSH agent is used for signing requests. -:param key_id: The fingerprint of the public key matching the key material specified in keyMaterial, or in the -local SSH agent. -:param path: The path relative to your private storage directory (/$MANTA_USER/stor) where the state file -will be stored. -:param insecure_skip_tls_verify: Skip verifying the TLS certificate presented by the Manta endpoint. This can be

-
-

useful for installations which do not have a certificate signed by a trusted root CA. Defaults to false.

-
-
-
Parameters:
-

workspace – The Terraform workspace from which to read state.

-
-
-
- -
-
-class pulumi_terraform.state.OssBackendArgs(bucket: str | Awaitable[str] | Output[T], access_key: str | Awaitable[str] | Output[T] = None, secret_key: str | Awaitable[str] | Output[T] = None, security_token: str | Awaitable[str] | Output[T] = None, ecs_role_name: str | Awaitable[str] | Output[T] = None, region: str | Awaitable[str] | Output[T] = None, endpoint: str | Awaitable[str] | Output[T] = None, prefix: str | Awaitable[str] | Output[T] = None, key: str | Awaitable[str] | Output[T] = None, profile: str | Awaitable[str] | Output[T] = None, shared_credentials_file: str | Awaitable[str] | Output[T] = None, role_arn: str | Awaitable[str] | Output[T] = None, policy: str | Awaitable[str] | Output[T] = None, session_name: str | Awaitable[str] | Output[T] = None, session_expiration: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the OSS backend.

-

Constructs an OssBackendArgs.

-
-
Parameters:
-
    -
  • bucket – The name of the OSS bucket.

  • -
  • access_key – Alibaba Cloud access key. It supports environment variables ALICLOUD_ACCESS_KEY and

  • -
-
-
-

ALICLOUD_ACCESS_KEY_ID -:param secret_key: Alibaba Cloud secret access key. It supports environment variables ALICLOUD_SECRET_KEY -and ALICLOUD_ACCESS_KEY_SECRET. -:param security_token: STS access token. It supports environment variable ALICLOUD_SECURITY_TOKEN. -:param ecs_role_name: The RAM Role Name attached on a ECS instance for API operations. You can retrieve this -from the ‘Access Control’ section of the Alibaba Cloud console. -:param region: The region of the OSS bucket. It supports environment variables ALICLOUD_REGION and -ALICLOUD_DEFAULT_REGION. -:param endpoint: A custom endpoint for the OSS API. It supports environment variables ALICLOUD_OSS_ENDPOINT -and OSS_ENDPOINT. -:param prefix: The path directory of the state file will be stored. Default to env:. -:param key: The name of the state file. Defaults to terraform.tfstate. -:param profile: This is the Alibaba Cloud profile name as set in the shared credentials file. It can also be -sourced from the ALICLOUD_PROFILE environment variable. -:param shared_credentials_file: This is the path to the shared credentials file. It can also be sourced from the -ALICLOUD_SHARED_CREDENTIALS_FILE environment variable. If this is not set and a profile is specified, -~/.aliyun/config.json will be used. -:param role_arn: The ARN of the role to assume. If ARN is set to an empty string, it does not perform role switching. -It supports environment variable ALICLOUD_ASSUME_ROLE_ARN. -:param policy: A more restrictive policy to apply to the temporary credentials. This gives you a way to further -restrict the permissions for the resulting temporary security credentials. You cannot use this policy to grant -permissions which exceed those of the role that is being assumed. -:param session_name: The session name to use when assuming the role. It supports environment variable -ALICLOUD_ASSUME_ROLE_SESSION_NAME. -:param session_expiration: The time after which the established session for assuming role expires. Valid value -range: [900-3600] seconds. Default to 3600. It supports environment variable ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION.

-
- -
-
-class pulumi_terraform.state.PostgresBackendArgs(conn_str: str | Awaitable[str] | Output[T], schema_name: str | Awaitable[str] | Output[T] = None, workspace: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the Postgres backend.

-

Constructs a PostgresBackendArgs.

-
-
Parameters:
-
    -
  • conn_str – Postgres connection string; a postgres:// URL.

  • -
  • schema_name – Name of the automatically-managed Postgres schema. Defaults to terraform_remote_state.

  • -
  • workspace – The Terraform workspace from which to read state.

  • -
-
-
-
- -
-
-class pulumi_terraform.state.RemoteBackendArgs(organization: str | Awaitable[str] | Output[T], token: str | Awaitable[str] | Output[T] = None, hostname: str | Awaitable[str] | Output[T] = None, workspace_name: str | Awaitable[str] | Output[T] = None, workspace_prefix: str | Awaitable[str] | Output[T] = None)
-

Configuration options for a workspace for use with the remote enhanced backend.

-

Constructs a RemoteBackendArgs.

-
-
Parameters:
-
    -
  • organization – The name of the organization containing the targeted workspace(s).

  • -
  • token – The token used to authenticate with the remote backend.

  • -
  • hostname – The remote backend hostname to which to connect. Defaults to app.terraform.io.

  • -
  • workspace_name – The full name of one remote workspace. When configured, only the default workspace can

  • -
-
-
-

be used. This option conflicts with workspace_prefix. -:param workspace_prefix: A prefix used in the names of one or more remote workspaces, all of which can be used -with this configuration. If unset, only the default workspace can be used. This option conflicts with -workspace_name.

-
- -
-
-class pulumi_terraform.state.RemoteStateReference(resource_name: str, backend_type: str, args: ArtifactoryBackendArgs | AzureRMBackendArgs | ConsulBackendArgs | EtcdV2BackendArgs | EtcdV3BackendArgs | GcsBackendArgs | HttpBackendArgs | LocalBackendArgs | MantaBackendArgs | OssBackendArgs | PostgresBackendArgs | RemoteBackendArgs | S3BackendArgs | SwiftBackendArgs, opts: ResourceOptions = None)
-

Manages a reference to a Terraform Remote State. The root outputs of the remote state are available via the -outputs property or the getOutput method.

-

Create a RemoteStateReference resource with the given unique name, props, and options.

-
-
Parameters:
-
    -
  • resource_name (str) – The name of the resource.

  • -
  • opts (pulumi.ResourceOptions) – Options for the resource.

  • -
  • backend_type (str) – The name of the Remote State Backend

  • -
  • args (BackendArgs) – The arguments for the Remote State backend, which must match the given backend_type.

  • -
-
-
-
-
-outputs: Output[Mapping[str, Any]]
-

The root outputs of the referenced Terraform state.

-
- -
-
-get_output(name: str | Awaitable[str] | Output[T])
-

Fetches the value of a root output from the Terraform Remote State.

-
-
Parameters:
-

name – The name of the output to fetch. The name is formatted exactly as per the “output” block in the

-
-
-

Terraform configuration. -:return: A pulumi.Output representing the value.

-
- -
-
-translate_output_property(prop)
-

Provides subclasses of Resource an opportunity to translate names of output properties -into a format of their choosing before writing those properties to the resource object.

-

If the props passed to __init__ is an input type (decorated with @input_type), the -type/name metadata of the resource will be used to translate names instead of calling this -method.

-
-
Parameters:
-

prop (str) – A property name.

-
-
Returns:
-

A potentially transformed property name.

-
-
Return type:
-

str

-
-
-
- -
-
-translate_input_property(prop)
-

Provides subclasses of Resource an opportunity to translate names of input properties into -a format of their choosing before sending those properties to the Pulumi engine.

-

If the props passed to __init__ is an input type (decorated with @input_type), the -type/name metadata of props will be used to translate names instead of calling this -method.

-
-
Parameters:
-

prop (str) – A property name.

-
-
Returns:
-

A potentially transformed property name.

-
-
Return type:
-

str

-
-
-
- -
- -
-
-class pulumi_terraform.state.S3BackendArgs(bucket: str | Awaitable[str] | Output[T], key: str | Awaitable[str] | Output[T], region: str | Awaitable[str] | Output[T] = None, endpoint: str | Awaitable[str] | Output[T] = None, access_key: str | Awaitable[str] | Output[T] = None, secret_key: str | Awaitable[str] | Output[T] = None, profile: str | Awaitable[str] | Output[T] = None, shared_credentials_file: str | Awaitable[str] | Output[T] = None, token: str | Awaitable[str] | Output[T] = None, role_arn: str | Awaitable[str] | Output[T] = None, external_id: str | Awaitable[str] | Output[T] = None, session_name: str | Awaitable[str] | Output[T] = None, workspace_key_prefix: str | Awaitable[str] | Output[T] = None, iam_endpoint: str | Awaitable[str] | Output[T] = None, sts_endpoint: str | Awaitable[str] | Output[T] = None, skip_credentials_validation: bool | Awaitable[bool] | Output[T] = None, skip_region_validation: bool | Awaitable[bool] | Output[T] = None, skip_metadata_api_check: bool | Awaitable[bool] | Output[T] = None, force_path_style: bool | Awaitable[bool] | Output[T] = None, workspace: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the S3 backend.

-

Constructs an S3BackendArgs.

-
-
Parameters:
-
    -
  • bucket – The name of the S3 bucket.

  • -
  • key – The path to the state file inside the bucket. When using a non-default workspace, the state path

  • -
-
-
-

will be /workspace_key_prefix/workspace_name/key. -:param region: The region of the S3 bucket. Also sourced from AWS_DEFAULT_REGION in the environment, if unset. -:param endpoint: A custom endpoint for the S3 API. Also sourced from AWS_S3_ENDPOINT in the environment, if -unset. -:param access_key: AWS Access Key. Sourced from the standard credentials pipeline, if unset. -:param secret_key: AWS Secret Access Key. Sourced from the standard credentials pipeline, if unset. -:param profile: The AWS profile name as set in the shared credentials file. -:param shared_credentials_file: The path to the shared credentials file. If this is not set and a profile is -specified, ~/.aws/credentials will be used by default. -:param token: An MFA token. Sourced from AWS_SESSION_TOKEN in the environment if needed and unset. -:param role_arn: The ARN of an IAM Role to be assumed in order to read the state from S3. -:param external_id: The external ID to use when assuming the IAM role. -:param session_name: The session name to use when assuming the IAM role. -:param workspace_key_prefix: The prefix applied to the state path inside the bucket. This is only relevant when -using a non-default workspace, and defaults to env:. -:param iam_endpoint: A custom endpoint for the IAM API. Sourced from AWS_IAM_ENDPOINT, if unset. -:param sts_endpoint: A custom endpoint for the STS API. Sourced from AWS_STS_ENDPOINT, if unset. -:param skip_credentials_validation: Skip the credentials validation via STS API. -:param skip_region_validation: Skip static validation of region name. -:param skip_metadata_api_check: Skip the AWS Metadata API check. -:param force_path_style: Force s3 to use path style api. -:param workspace: The Terraform workspace from which to read state.

-
- -
-
-class pulumi_terraform.state.SwiftBackendArgs(auth_url: str | Awaitable[str] | Output[T], container: str | Awaitable[str] | Output[T], username: str | Awaitable[str] | Output[T] = None, user_id: str | Awaitable[str] | Output[T] = None, password: str | Awaitable[str] | Output[T] = None, token: str | Awaitable[str] | Output[T] = None, region_name: str | Awaitable[str] | Output[T] = None, tenant_id: str | Awaitable[str] | Output[T] = None, tenant_name: str | Awaitable[str] | Output[T] = None, domain_id: str | Awaitable[str] | Output[T] = None, domain_name: str | Awaitable[str] | Output[T] = None, insecure: bool | Awaitable[bool] | Output[T] = None, cacert_file: str | Awaitable[str] | Output[T] = None, cert: str | Awaitable[str] | Output[T] = None, key: str | Awaitable[str] | Output[T] = None)
-

The configuration options for a Terraform Remote State stored in the Swift backend.

-

Constructs a SwiftBackendArgs.

-
-
Parameters:
-
    -
  • auth_url – The Identity authentication URL. Sourced from OS_AUTH_URL in the environment, if unset.

  • -
  • container – The name of the container in which the Terraform state file is stored.

  • -
  • username – The username with which to log in. Sourced from OS_USERNAME in the environment, if unset.

  • -
  • user_id – The user ID with which to log in. Sourced from OS_USER_ID in the environment, if unset.

  • -
  • password – The password with which to log in. Sourced from OS_PASSWORD in the environment, if unset.

  • -
  • token – Access token with which to log in in stead of a username and password. Sourced from

  • -
-
-
-

OS_AUTH_TOKEN in the environment, if unset. -:param region_name: The region in which the state file is stored. Sourced from OS_REGION_NAME, if unset. -:param tenant_id: The ID of the tenant (for identity v2) or project (identity v3) which which to log in. Sourced -from OS_TENANT_ID or OS_PROJECT_ID in the environment, if unset. -:param tenant_name: The name of the tenant (for identity v2) or project (identity v3) which which to log in. -Sourced from OS_TENANT_NAME or OS_PROJECT_NAME in the environment, if unset. -:param domain_id: The ID of the domain to scope the log in to (identity v3). Sourced from OS_USER_DOMAIN_ID, -OS_PROJECT_DOMAIN_ID or OS_DOMAIN_ID in the environment, if unset. -:param domain_name: The name of the domain to scope the log in to (identity v3). Sourced from -OS_USER_DOMAIN_NAME, OS_PROJECT_DOMAIN_NAME or OS_DOMAIN_NAME in the environment, if unset. -:param insecure: Whether to disable verification of the server TLS certificate. Sourced from OS_INSECURE in -the environment, if unset. -:param cacert_file: A path to a CA root certificate for verifying the server TLS certificate. Sourced from -OS_CACERT in the environment, if unset. -:param cert: A path to a client certificate for TLS client authentication. Sourced from OS_CERT in the -environment, if unset. -:param key: A path to the private key corresponding to the client certificate for TLS client authentication. -Sourced from OS_KEY in the environment, if unset.

-
- -
diff --git a/cypress/integration/site_spec.js b/cypress/integration/site_spec.js index 06678a159568..f9f0066e3c61 100644 --- a/cypress/integration/site_spec.js +++ b/cypress/integration/site_spec.js @@ -47,18 +47,4 @@ describe("www.pulumi.com", () => { }); }); }); - - describe("python SDK docs", () => { - beforeEach(() => { - cy.visit("/docs/reference/pkg/python/pulumi"); - }); - - // Regression test for https://github.com/pulumi/docs/issues/1396, which has happened multiple times. - // The CSS is applied by targeting specific node structures due to the way our Python docs are generated. - it("is styled correctly", () => { - cy.get("#pulumi-python-sdk") - .invoke("css", "--pulumi-python-sdk") - .should("equal", "true"); - }); - }); }); diff --git a/scripts/generate_python_docs.sh b/scripts/generate_python_docs.sh index 014ea7c8ee0e..2d37bfe06d16 100755 --- a/scripts/generate_python_docs.sh +++ b/scripts/generate_python_docs.sh @@ -3,40 +3,27 @@ set -o errexit -o pipefail set -x -# Optional argument to generate docs for just a single provider. -REPO_OVERRIDE="${1:-}" - PACKAGES=( "pulumi" "pulumi_policy" "pulumi_terraform" ) +OUTDIR="../../static-prebuilt/docs/reference/pkg/python" + pushd "tools/pydocgen" + pipenv --python 3 pipenv install - pipenv run pip install sphinx-rtd-theme -if [ -z "${REPO_OVERRIDE:-}" ]; then - echo "Building all Python docs..." - # Install the Python package for all the providers. - for PACKAGE in "${PACKAGES[@]}" ; do \ - pipenv run pip install "${PACKAGE}" - done - - # Run the pydocgen to generate the docs for all the packages. - pipenv run python -m pydocgen "../../static-prebuilt/docs/reference/pkg/python" "../../content/docs/reference/pkg" -else - # Install the Python package and run the pydocgen tool for just the provider that - # was requested. - echo "Building Python docs for ${REPO_OVERRIDE}..." - PACKAGE="pulumi" - if [ "${REPO_OVERRIDE}" != "pulumi" ]; then - PACKAGE="pulumi_${REPO_OVERRIDE}" - fi +echo "Building all Python docs..." +# Install each package. +for PACKAGE in "${PACKAGES[@]}" ; do \ pipenv run pip install "${PACKAGE}" - pipenv run python -m pydocgen "../../static-prebuilt/docs/reference/pkg/python" "../../content/docs/reference/pkg" "${PACKAGE}" -fi +done + +rm -rf "$OUTDIR" +pipenv run sphinx-build -j auto -b dirhtml ./source "$OUTDIR" popd diff --git a/static-prebuilt/docs/reference/pkg/python/.buildinfo b/static-prebuilt/docs/reference/pkg/python/.buildinfo deleted file mode 100644 index 739b34ed257b..000000000000 --- a/static-prebuilt/docs/reference/pkg/python/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: edcc9e077a96ca0498be0e12cfa8fe72 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/static-prebuilt/docs/reference/pkg/python/.doctrees/environment.pickle b/static-prebuilt/docs/reference/pkg/python/.doctrees/environment.pickle deleted file mode 100644 index 7e8b056fb29b0f2a8f5a5edbe3d27f2777ae49db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2739002 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
Y5@*wD8bll2*5;|`VyQjY9~dYBABVTQe~jZ* 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 PKcgDSf8xp(>m&ac5Icj+ diff --git a/static-prebuilt/docs/reference/pkg/python/.doctrees/index.doctree b/static-prebuilt/docs/reference/pkg/python/.doctrees/index.doctree deleted file mode 100644 index 4577ddd71d1c02a17922b48e5a762e85282e2d53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2540 zcmZWrOK%%D5O(57mTXIY_!S#!xP$+e|J zfcDTL26zkm1N%$bkGre2tq2gn84hPSGv7DdKYIWCJ6x-OVaJt1>iHpMOdG~s3s3)pU=A6Hpbs4C46h!tFB4ys#JzmMU*;E+x_F1yp^$f!)I1*F5}%9hYD&dD zv`0KZJ0GGYJ8eS`E-WoeZX*?su=N=K&rV|{UWrYdTMt9h!Ah))*W!(Md%Usg?fTI! z5%DH@xfRA)Wm9KKo8U>R{cgi;8Xx zbFR6i-q<8C3JiK$ln}O>U<47)Aa1r|Wfi0mawiFUX%|6zsV9pV_GiX;Z9KoWd3-C3 z9M3$OO6E0mpcy+Lvm_u);+uoZPa6$ayw;El=>=Ib01?{*EhSI_%S&TDQT&{%czio- z3aUD>7xwsEqGF!<$}Nq0p~v{N$`NjSL9Ir`U|~5epc#5gGoF%)@55N?vhsxM%rIER zFs%IS;O&8vSUkGh=cwV4A9_<)FfAGc8OVo30XW5GTq`7kcZ0R0M zr3tTR+#X8qXLSrPev`O%dqPf+S54^G8YQ} zdiI%w`)yZHuefxin}L2&L7$8!%K zc<|Co9rkZ%n@1UHc$;-XKT!zpIrJMz*{+9a?H46#`YwtG*d1MOPi;TSB$}K8!bhV? zEL_?(7rU-$>`qY{w){QL!)4U^(Ebhon5Nd_Jq-6(eYHDyt}!Dr zd;GZ8M#T;FR;R9;wAFqx02F!Z S&n8RLtR=qqPOMkc!~X%#0splC diff --git a/static-prebuilt/docs/reference/pkg/python/.doctrees/providers/pulumi.doctree b/static-prebuilt/docs/reference/pkg/python/.doctrees/providers/pulumi.doctree deleted file mode 100644 index 9b9aeede75ead512e74d91442d31cb3fc30de492..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1192810 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

@T{e*l>Rv*YynCz#Sz&_0|y-uv>c34 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 IAyD`K0jX_AfB*mh diff --git a/static-prebuilt/docs/reference/pkg/python/.doctrees/providers/pulumi_policy.doctree b/static-prebuilt/docs/reference/pkg/python/.doctrees/providers/pulumi_policy.doctree deleted file mode 100644 index cf233a9b28daf5fc986227858e2bb62e5522721b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210654 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 PB5s>|I1){EMuz@BP!#IU diff --git a/static-prebuilt/docs/reference/pkg/python/.doctrees/providers/pulumi_terraform.doctree b/static-prebuilt/docs/reference/pkg/python/.doctrees/providers/pulumi_terraform.doctree deleted file mode 100644 index cf3d0dd32d95224a11d91c36cb072b08badfb2b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5619 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 z 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 for details on how to get started with - Python. - -The Pulumi Python Resource Model --------------------------------- - -Like most languages usable with Pulumi, Pulumi represents cloud resources as classes and Python programs can instantiate -those classes. All classes that can be instantiated to produce actual resources derive from the `pulumi.Resource` class. - -A class that derives from `pulumi.Resource` will, when instantiated, communicate with the Pulumi Engine and record that -a piece of infrastructure that the instantiated class represents should be provisioned. All resources whose provisioning -is implemented in a resource provider derive from the `pulumi.CustomResource` class. - -It is also possible to write your own resources, written in Python, that are themselves composed of custom resources. -Resources written in Python are called "component resources" and they are written by deriving from the -`pulumi.ComponentResource` class. - -Finally, Pulumi allows for resource providers to directly project themselves into Python, so that provider instances -can be instantiated and used to create other resources. These "provider resources" derive from the -`pulumi.ProviderResource` class. - -.. autoclass:: pulumi.Resource - :members: - -.. autoclass:: pulumi.CustomResource - :members: - -.. autoclass:: pulumi.ComponentResource - :members: - -.. autoclass:: pulumi.ProviderResource - :members: - -.. autoclass:: pulumi.ResourceOptions - :members: - -.. autoclass:: pulumi.InvokeOptions - :members: - -.. autoexception:: pulumi.RunError - :members: - -Configuration and Metadata --------------------------- - -Pulumi programs can receive configuration that is specified by the command-line using `pulumi config`. This -configuration information can be retrieved at runtime using the `pulumi.Config` class: - -.. code:: python - - import pulumi - # After running `pulumi config set myconfig 42` - - conf = pulumi.Config() - print(conf.get_int("myconfig")) # prints 42 - -Pulumi programs also have the ability to query the current project and stack, as well as whether or not the current run -of the program is a preview or not. - -.. autoclass:: pulumi.Config - :members: - -.. autoexception:: pulumi.ConfigMissingError - :members: - -.. autoexception:: pulumi.ConfigTypeError - :members: - -.. autofunction:: pulumi.get_project - -.. autofunction:: pulumi.get_stack - -.. autofunction:: pulumi.runtime.is_dry_run - -Outputs and Inputs ------------------- - -Like other languages in the Pulumi ecosystem, all Resources in Python have two kinds of properties: *inputs* and -*outputs*. Inputs are specified as arguments to resource constructors, to be used as inputs to the resource itself. -Outputs are *returned* as properties on the instantiated resource object. Outputs are similar to futures in that they -are resolved asynchronously, but they also contain information about the dependency graph of resources within your -program. - -Pulumi does not offer direct access to the values contained within Outputs. Instead, you must use the `apply` function -on the Output class in order to observe the value of an output. See -`the documentation `_ for more details on this part of the Pulumi programming model. - -.. autoclass:: pulumi.Output - :members: - - .. automethod:: __getitem__ - - .. automethod:: __getattr__ - -Logging -------- - -The Pulumi SDK contains a few helper functions for logging to the console. Messages logged using these functions are -sent directly to the Pulumi Engine and rendered with the rest of the CLI output. - -.. autofunction:: pulumi.debug - -.. autofunction:: pulumi.info - -.. autofunction:: pulumi.warn - -.. autofunction:: pulumi.error - -Stack Exports -------------- - -Python programs can export values. Exported values are attached to the program's Stack resource and accessed using the -`pulumi stack output` CLI command: - -.. code:: python - - import pulumi - - pulumi.export("the-answer", 42) - - # pulumi stack export: - # Current stack outputs (1): - # OUTPUT VALUE - # the-answer 42 - -.. autofunction:: pulumi.export - -Automation API --------------- - -.. automodule:: pulumi.automation - -.. autofunction:: pulumi.automation.create_stack - -.. autofunction:: pulumi.automation.select_stack - -.. autofunction:: pulumi.automation.create_or_select_stack - -.. autoclass:: pulumi.automation.LocalWorkspace - :members: - -.. autoclass:: pulumi.automation.Stack - :members: - -.. autoclass:: pulumi.automation.LocalWorkspaceOptions - -.. autoclass:: pulumi.automation.ProjectSettings - -.. autoclass:: pulumi.automation.StackSettings - -.. autoclass:: pulumi.automation.ConfigValue \ No newline at end of file diff --git a/static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_policy.rst.txt b/static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_policy.rst.txt deleted file mode 100644 index ef1faf38cd0f..000000000000 --- a/static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_policy.rst.txt +++ /dev/null @@ -1,8 +0,0 @@ -Pulumi Policy -==================================== - - -.. automodule:: pulumi_policy - :ignore-module-all: - :members: - :imported-members: \ No newline at end of file diff --git a/static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_terraform.rst.txt b/static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_terraform.rst.txt deleted file mode 100644 index 9a1efebbedbe..000000000000 --- a/static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_terraform.rst.txt +++ /dev/null @@ -1,15 +0,0 @@ -Pulumi Terraform -==================================== - - This provider is a derived work of the `Terraform Provider - `__ distributed under - `MPL 2.0 `__. If you encounter a bug or missing feature, first check the - `pulumi/pulumi-terraform repo - `__; however, if that doesn't turn up - anything, please consult the source `terraform-providers/terraform-provider-terraform repo - `__. - - -.. toctree:: - - pulumi_terraform/state \ No newline at end of file diff --git a/static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_terraform/state.rst.txt b/static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_terraform/state.rst.txt deleted file mode 100644 index 2404945b7029..000000000000 --- a/static-prebuilt/docs/reference/pkg/python/_sources/providers/pulumi_terraform/state.rst.txt +++ /dev/null @@ -1,16 +0,0 @@ -state -==================================== - - This provider is a derived work of the `Terraform Provider - `__ distributed under - `MPL 2.0 `__. If you encounter a bug or missing feature, first check the - `pulumi/pulumi-terraform repo - `__; however, if that doesn't turn up - anything, please consult the source `terraform-providers/terraform-provider-terraform repo - `__. - - -.. automodule:: pulumi_terraform.state - :ignore-module-all: - :members: - :imported-members: \ No newline at end of file diff --git a/static-prebuilt/docs/reference/pkg/python/_static/basic.css b/static-prebuilt/docs/reference/pkg/python/_static/basic.css index 7577acb1ad17..cfc60b86c7c6 100644 --- a/static-prebuilt/docs/reference/pkg/python/_static/basic.css +++ b/static-prebuilt/docs/reference/pkg/python/_static/basic.css @@ -670,6 +670,16 @@ dd { margin-left: 30px; } +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + dl > dd:last-child, dl > dd:last-child > :last-child { margin-bottom: 0; @@ -738,6 +748,14 @@ abbr, acronym { cursor: help; } +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + /* -- code displays --------------------------------------------------------- */ pre { diff --git a/static-prebuilt/docs/reference/pkg/python/_static/documentation_options.js b/static-prebuilt/docs/reference/pkg/python/_static/documentation_options.js index b57ae3b83936..44341e08640d 100644 --- a/static-prebuilt/docs/reference/pkg/python/_static/documentation_options.js +++ b/static-prebuilt/docs/reference/pkg/python/_static/documentation_options.js @@ -3,10 +3,10 @@ var DOCUMENTATION_OPTIONS = { VERSION: '', LANGUAGE: 'en', COLLAPSE_INDEX: false, - BUILDER: 'html', + BUILDER: 'dirhtml', FILE_SUFFIX: '.html', LINK_SUFFIX: '.html', - HAS_SOURCE: true, + HAS_SOURCE: false, SOURCELINK_SUFFIX: '.txt', NAVIGATION_WITH_KEYS: false, SHOW_SEARCH_SUMMARY: true, diff --git a/static-prebuilt/docs/reference/pkg/python/_static/jquery-3.5.1.js b/static-prebuilt/docs/reference/pkg/python/_static/jquery-3.5.1.js deleted file mode 100644 index 50937333b99a..000000000000 --- a/static-prebuilt/docs/reference/pkg/python/_static/jquery-3.5.1.js +++ /dev/null @@ -1,10872 +0,0 @@ -/*! - * jQuery JavaScript Library v3.5.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2020-05-04T22:49Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var flat = arr.flat ? function( array ) { - return arr.flat.call( array ); -} : function( array ) { - return arr.concat.apply( [], array ); -}; - - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - -var document = window.document; - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.5.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - even: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return ( i + 1 ) % 2; - } ) ); - }, - - odd: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return i % 2; - } ) ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a provided context; falls back to the global one - // if not specified. - globalEval: function( code, options, doc ) { - DOMEval( code, { nonce: options && options.nonce }, doc ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return flat( ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.5 - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://js.foundation/ - * - * Date: 2020-03-14 - */ -( function( window ) { -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ( {} ).hasOwnProperty, - arr = [], - pop = arr.pop, - pushNative = arr.push, - push = arr.push, - slice = arr.slice, - - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[ i ] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + - "ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram - identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - - // "Attribute values must be CSS identifiers [capture 5] - // or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + - whitespace + "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + - whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + - "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + - whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + - whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + - "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + - "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rhtml = /HTML$/i, - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), - funescape = function( escape, nonHex ) { - var high = "0x" + escape.slice( 1 ) - 0x10000; - - return nonHex ? - - // Strip the backslash prefix from a non-hex escape sequence - nonHex : - - // Replace a hexadecimal escape sequence with the encoded Unicode code point - // Support: IE <=11+ - // For values outside the Basic Multilingual Plane (BMP), manually construct a - // surrogate pair - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + - ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - ( arr = slice.call( preferredDoc.childNodes ) ), - preferredDoc.childNodes - ); - - // Support: Android<4.0 - // Detect silently failing push.apply - // eslint-disable-next-line no-unused-expressions - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - pushNative.apply( target, slice.call( els ) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - - // Can't trust NodeList.length - while ( ( target[ j++ ] = els[ i++ ] ) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - setDocument( context ); - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { - - // ID selector - if ( ( m = match[ 1 ] ) ) { - - // Document context - if ( nodeType === 9 ) { - if ( ( elem = context.getElementById( m ) ) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && ( elem = newContext.getElementById( m ) ) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[ 2 ] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && - - // Support: IE 8 only - // Exclude object elements - ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // The technique has to be used as well when a leading combinator is used - // as such selectors are not recognized by querySelectorAll. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && - ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - - // We can use :scope instead of the ID hack if the browser - // supports it & if we're not changing the context. - if ( newContext !== context || !support.scope ) { - - // Capture the context ID, setting it first if necessary - if ( ( nid = context.getAttribute( "id" ) ) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", ( nid = expando ) ); - } - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + - toSelector( groups[ i ] ); - } - newSelector = groups.join( "," ); - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return ( cache[ key + " " ] = value ); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement( "fieldset" ); - - try { - return !!fn( el ); - } catch ( e ) { - return false; - } finally { - - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split( "|" ), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[ i ] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( ( cur = cur.nextSibling ) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return ( name === "input" || name === "button" ) && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction( function( argument ) { - argument = +argument; - return markFunction( function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ ( j = matchIndexes[ i ] ) ] ) { - seed[ j ] = !( matches[ j ] = seed[ j ] ); - } - } - } ); - } ); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = ( elem.ownerDocument || elem ).documentElement; - - // Support: IE <=8 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9 - 11+, Edge 12 - 18+ - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( preferredDoc != document && - ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, - // Safari 4 - 5 only, Opera <=11.6 - 12.x only - // IE/Edge & older browsers don't support the :scope pseudo-class. - // Support: Safari 6.0 only - // Safari 6.0 supports :scope but it's an alias of :root there. - support.scope = assert( function( el ) { - docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); - return typeof el.querySelectorAll !== "undefined" && - !el.querySelectorAll( ":scope fieldset div" ).length; - } ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert( function( el ) { - el.className = "i"; - return !el.getAttribute( "className" ); - } ); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert( function( el ) { - el.appendChild( document.createComment( "" ) ); - return !el.getElementsByTagName( "*" ).length; - } ); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert( function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - } ); - - // ID filter and find - if ( support.getById ) { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute( "id" ) === attrId; - }; - }; - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode( "id" ); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( ( elem = elems[ i++ ] ) ) { - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find[ "TAG" ] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { - - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert( function( el ) { - - var input; - - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll( "[selected]" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push( "~=" ); - } - - // Support: IE 11+, Edge 15 - 18+ - // IE 11/Edge don't find elements on a `[name='']` query in some cases. - // Adding a temporary attribute to the document before the selection works - // around the issue. - // Interestingly, IE 10 & older don't seem to have the issue. - input = document.createElement( "input" ); - input.setAttribute( "name", "" ); - el.appendChild( input ); - if ( !el.querySelectorAll( "[name='']" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + - whitespace + "*(?:''|\"\")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll( ":checked" ).length ) { - rbuggyQSA.push( ":checked" ); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push( ".#.+[+~]" ); - } - - // Support: Firefox <=3.6 - 5 only - // Old Firefox doesn't throw on a badly-escaped identifier. - el.querySelectorAll( "\\\f" ); - rbuggyQSA.push( "[\\r\\n\\f]" ); - } ); - - assert( function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement( "input" ); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll( "[name=d]" ).length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: Opera 10 - 11 only - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll( "*,:x" ); - rbuggyQSA.push( ",.*:" ); - } ); - } - - if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector ) ) ) ) { - - assert( function( el ) { - - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - } ); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); - } : - function( a, b ) { - if ( b ) { - while ( ( b = b.parentNode ) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { - - // Choose the first element that is related to our preferred document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( a == document || a.ownerDocument == preferredDoc && - contains( preferredDoc, a ) ) { - return -1; - } - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( b == document || b.ownerDocument == preferredDoc && - contains( preferredDoc, b ) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - return a == document ? -1 : - b == document ? 1 : - /* eslint-enable eqeqeq */ - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( ( cur = cur.parentNode ) ) { - ap.unshift( cur ); - } - cur = b; - while ( ( cur = cur.parentNode ) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[ i ] === bp[ i ] ) { - i++; - } - - return i ? - - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[ i ], bp[ i ] ) : - - // Otherwise nodes in our document sort first - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - ap[ i ] == preferredDoc ? -1 : - bp[ i ] == preferredDoc ? 1 : - /* eslint-enable eqeqeq */ - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - setDocument( elem ); - - if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch ( e ) { - nonnativeSelectorCache( expr, true ); - } - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( context.ownerDocument || context ) != document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( elem.ownerDocument || elem ) != document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - - // If no nodeType, this is expected to be an array - while ( ( node = elem[ i++ ] ) ) { - - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[ 1 ] = match[ 1 ].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[ 3 ] = ( match[ 3 ] || match[ 4 ] || - match[ 5 ] || "" ).replace( runescape, funescape ); - - if ( match[ 2 ] === "~=" ) { - match[ 3 ] = " " + match[ 3 ] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[ 1 ] = match[ 1 ].toLowerCase(); - - if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - - // nth-* requires argument - if ( !match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[ 4 ] = +( match[ 4 ] ? - match[ 5 ] + ( match[ 6 ] || 1 ) : - 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); - match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - - // other types prohibit arguments - } else if ( match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[ 6 ] && match[ 2 ]; - - if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[ 3 ] ) { - match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - - // Get excess from tokenize (recursively) - ( excess = tokenize( unquoted, true ) ) && - - // advance to the next closing parenthesis - ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { - - // excess is a negative index - match[ 0 ] = match[ 0 ].slice( 0, excess ); - match[ 2 ] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { - return true; - } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - ( pattern = new RegExp( "(^|" + whitespace + - ")" + className + "(" + whitespace + "|$)" ) ) && classCache( - className, function( elem ) { - return pattern.test( - typeof elem.className === "string" && elem.className || - typeof elem.getAttribute !== "undefined" && - elem.getAttribute( "class" ) || - "" - ); - } ); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - /* eslint-disable max-len */ - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - /* eslint-enable max-len */ - - }; - }, - - "CHILD": function( type, what, _argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, _context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( ( node = node[ dir ] ) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( ( node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - - // Use previously-cached element index if available - if ( useCache ) { - - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - - // Use the same loop as above to seek `elem` from the start - while ( ( node = ++nodeIndex && node && node[ dir ] || - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || - ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction( function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[ i ] ); - seed[ idx ] = !( matches[ idx ] = matched[ i ] ); - } - } ) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - - // Potentially complex pseudos - "not": markFunction( function( selector ) { - - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction( function( seed, matches, _context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( ( elem = unmatched[ i ] ) ) { - seed[ i ] = !( matches[ i ] = elem ); - } - } - } ) : - function( elem, _context, xml ) { - input[ 0 ] = elem; - matcher( input, null, xml, results ); - - // Don't keep the element (issue #299) - input[ 0 ] = null; - return !results.pop(); - }; - } ), - - "has": markFunction( function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - } ), - - "contains": markFunction( function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; - }; - } ), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - - // lang value must be a valid identifier - if ( !ridentifier.test( lang || "" ) ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( ( elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); - return false; - }; - } ), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && - ( !document.hasFocus || document.hasFocus() ) && - !!( elem.type || elem.href || ~elem.tabIndex ); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return ( nodeName === "input" && !!elem.checked ) || - ( nodeName === "option" && !!elem.selected ); - }, - - "selected": function( elem ) { - - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - // eslint-disable-next-line no-unused-expressions - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos[ "empty" ]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( ( attr = elem.getAttribute( "type" ) ) == null || - attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo( function() { - return [ 0 ]; - } ), - - "last": createPositionalPseudo( function( _matchIndexes, length ) { - return [ length - 1 ]; - } ), - - "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - } ), - - "even": createPositionalPseudo( function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "odd": createPositionalPseudo( function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ) - } -}; - -Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || ( match = rcomma.exec( soFar ) ) ) { - if ( match ) { - - // Don't consume trailing commas as valid - soFar = soFar.slice( match[ 0 ].length ) || soFar; - } - groups.push( ( tokens = [] ) ); - } - - matched = false; - - // Combinators - if ( ( match = rcombinators.exec( soFar ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - - // Cast descendant combinators to space - type: match[ 0 ].replace( rtrim, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || - ( match = preFilters[ type ]( match ) ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[ i ].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || - ( outerCache[ elem.uniqueID ] = {} ); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( ( oldCache = uniqueCache[ key ] ) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return ( newCache[ 2 ] = oldCache[ 2 ] ); - } else { - - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[ i ]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[ 0 ]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[ i ], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( ( elem = unmatched[ i ] ) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction( function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( - selector || "*", - context.nodeType ? [ context ] : context, - [] - ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( ( elem = temp[ i ] ) ) { - matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) ) { - - // Restore matcherIn since elem is not yet a final match - temp.push( ( matcherIn[ i ] = elem ) ); - } - } - postFinder( null, ( matcherOut = [] ), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) && - ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { - - seed[ temp ] = !( results[ temp ] = elem ); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - } ); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[ 0 ].type ], - implicitRelative = leadingRelative || Expr.relative[ " " ], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - ( checkContext = context ).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { - matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; - } else { - matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[ j ].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens - .slice( 0, i - 1 ) - .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), - - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), - len = elems.length; - - if ( outermost ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - outermostContext = context == document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( !context && elem.ownerDocument != document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( ( matcher = elementMatchers[ j++ ] ) ) { - if ( matcher( elem, context || document, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - - // They will have gone through all possible matchers - if ( ( elem = !matcher && elem ) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( ( matcher = setMatchers[ j++ ] ) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !( unmatched[ i ] || setMatched[ i ] ) ) { - setMatched[ i ] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[ i ] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( - selector, - matcherFromGroupMatchers( elementMatchers, setMatchers ) - ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( ( selector = compiled.selector || selector ) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[ 0 ] = match[ 0 ].slice( 0 ); - if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - - context = ( Expr.find[ "ID" ]( token.matches[ 0 ] - .replace( runescape, funescape ), context ) || [] )[ 0 ]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[ i ]; - - // Abort if we hit a combinator - if ( Expr.relative[ ( type = token.type ) ] ) { - break; - } - if ( ( find = Expr.find[ type ] ) ) { - - // Search, expanding context for leading sibling combinators - if ( ( seed = find( - token.matches[ 0 ].replace( runescape, funescape ), - rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || - context - ) ) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert( function( el ) { - - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; -} ); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert( function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute( "href" ) === "#"; -} ) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - } ); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert( function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -} ) ) { - addHandle( "value", function( elem, _name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - } ); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert( function( el ) { - return el.getAttribute( "disabled" ) == null; -} ) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; - } - } ); -} - -return Sizzle; - -} )( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, _i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, _i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, _i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( elem.contentDocument != null && - - // Support: IE 11+ - // elements with no `data` attribute has an object - // `contentDocument` with a `null` prototype. - getProto( elem.contentDocument ) ) { - - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( _i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, _key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( _all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - support.option = !!div.lastChild; -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: IE <=9 only -if ( !support.option ) { - wrapMap.optgroup = wrapMap.option = [ 1, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( nativeEvent ), - - handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - return result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - - // Support: IE 9 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Behavior in IE 9 is more subtle than in newer versions & it passes - // some versions of this test; make sure not to make it pass there! - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if ( reliableTrDimensionsVal == null ) { - table = document.createElement( "table" ); - tr = document.createElement( "tr" ); - trChild = document.createElement( "div" ); - - table.style.cssText = "position:absolute;left:-11111px"; - tr.style.height = "1px"; - trChild.style.height = "9px"; - - documentElement - .appendChild( table ) - .appendChild( tr ) - .appendChild( trChild ); - - trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; - - documentElement.removeChild( table ); - } - return reliableTrDimensionsVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Support: IE 9 - 11 only - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - if ( ( !support.boxSizingReliable() && isBorderBox || - - // Support: IE 10 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Interestingly, in some cases IE 9 doesn't suffer from this issue. - !support.reliableTrDimensions() && nodeName( elem, "tr" ) || - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - val === "auto" || - - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - - // Make sure the element is visible & connected - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( - dataPriv.get( cur, "events" ) || Object.create( null ) - )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - - // Handle: regular nodes (via `this.ownerDocument`), window - // (via `this.document`) & document (via `this`). - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( _i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - 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" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Use a noop converter for missing script - if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { - s.converters[ "text script" ] = function() {}; - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -jQuery.ajaxPrefilter( function( s ) { - var i; - for ( i in s.headers ) { - if ( i.toLowerCase() === "content-type" ) { - s.contentType = s.headers[ i ] || ""; - } - } -} ); - - -jQuery._evalUrl = function( url, options, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - - - - - - - - - -
- - -
- -
-
-
-
    -
  • - -
  • -
  • -
-
-
-
-
- - -

Index

- -
- _ - | A - | C - | D - | E - | F - | G - | H - | I - | J - | K - | L - | M - | N - | O - | P - | R - | S - | T - | U - | V - | W - -
-

_

- - - -
- -

A

- - - -
- -

C

- - - -
- -

D

- - - -
- -

E

- - - -
- -

F

- - - -
- -

G

- - - -
- -

H

- - - -
- -

I

- - - -
- -

J

- - - -
- -

K

- - -
- -

L

- - - -
- -

M

- - - -
- -

N

- - -
- -

O

- - - -
- -

P

- - - -
- -

R

- - - -
- -

S

- - - -
- -

T

- - - -
- -

U

- - -
- -

V

- - - -
- -

W

- - - -
- - - -
-
- -
-
-
-
- - - - \ No newline at end of file diff --git a/static-prebuilt/docs/reference/pkg/python/genindex/index.html b/static-prebuilt/docs/reference/pkg/python/genindex/index.html index 6e2a47b8ae37..6ba65a096f2a 100644 --- a/static-prebuilt/docs/reference/pkg/python/genindex/index.html +++ b/static-prebuilt/docs/reference/pkg/python/genindex/index.html @@ -3,15 +3,18 @@ - Index — Pulumi documentation - + Index — Pulumi documentation + + - - - - + + + + + + @@ -22,23 +25,23 @@